diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index bc82e3835864..bc39bb20de31 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -319,7 +319,7 @@ contract Rollup is IStaking, IValidatorSelection, IRollup, RollupCore { external view override(IRollup) - returns (bytes32[] memory, bytes32, bytes32) + returns (bytes32[] memory, bytes32, bytes[] memory) { return ExtRollupLib.validateBlobs(_blobsInput, checkBlob); } @@ -360,13 +360,18 @@ contract Rollup is IStaking, IValidatorSelection, IRollup, RollupCore { return FeeHeaderLib.decompress(FeeLib.getStorage().feeHeaders[_blockNumber]); } - function getBlobPublicInputsHash(uint256 _blockNumber) + function getBlobCommitmentsHash(uint256 _blockNumber) external view override(IRollup) returns (bytes32) { - return STFLib.getStorage().blobPublicInputsHashes[_blockNumber]; + return STFLib.getStorage().blocks[_blockNumber].blobCommitmentsHash; + } + + function getCurrentBlobCommitmentsHash() external view override(IRollup) returns (bytes32) { + RollupStore storage rollupStore = STFLib.getStorage(); + return rollupStore.blocks[rollupStore.tips.pendingBlockNumber].blobCommitmentsHash; } function getConfig(address _attester) diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index 4a590ce500a7..648ef94ce615 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -28,13 +28,21 @@ struct SubmitEpochRootProofArgs { uint256 end; // inclusive PublicInputArgs args; bytes32[] fees; - bytes blobPublicInputs; + bytes blobInputs; bytes proof; } +/** + * @notice Struct for storing block data, set in proposal. + * @param archive - Archive tree root of the block + * @param headerHash - Hash of the proposed block header + * @param blobCommitmentsHash - H(...H(H(commitment_0), commitment_1).... commitment_n) - used to validate we are using the same blob commitments on L1 and in the rollup circuit + * @param slotNumber - This block's slot + */ struct BlockLog { bytes32 archive; - bytes32 headerHash; // hash of the proposed block header + bytes32 headerHash; + bytes32 blobCommitmentsHash; // TODO(#14646): Keep a running hash we iteratively overwrite, instead of per block. Slot slotNumber; } @@ -94,12 +102,9 @@ struct RollupConfig { uint256 version; } -// The below blobPublicInputsHashes are filled when proposing a block, then used to verify an epoch proof. -// TODO(#8955): When implementing batched kzg proofs, store one instance per epoch rather than block struct RollupStore { ChainTips tips; // put first such that the struct slot structure is easy to follow for cheatcodes mapping(uint256 blockNumber => BlockLog log) blocks; - mapping(uint256 blockNumber => bytes32) blobPublicInputsHashes; mapping(address => uint256) sequencerRewards; mapping(Epoch => EpochRewards) epochRewards; // @todo Below can be optimised with a bitmap as we can benefit from provers likely proving for epochs close @@ -179,7 +184,7 @@ interface IRollup is IRollupCore { function validateBlobs(bytes calldata _blobsInputs) external view - returns (bytes32[] memory, bytes32, bytes32); + returns (bytes32[] memory, bytes32, bytes[] memory); function getManaBaseFeeComponentsAt(Timestamp _timestamp, bool _inFeeAsset) external @@ -198,7 +203,8 @@ interface IRollup is IRollupCore { function getPendingBlockNumber() external view returns (uint256); function getBlock(uint256 _blockNumber) external view returns (BlockLog memory); function getFeeHeader(uint256 _blockNumber) external view returns (FeeHeader memory); - function getBlobPublicInputsHash(uint256 _blockNumber) external view returns (bytes32); + function getBlobCommitmentsHash(uint256 _blockNumber) external view returns (bytes32); + function getCurrentBlobCommitmentsHash() external view returns (bytes32); function getSequencerRewards(address _sequencer) external view returns (uint256); function getCollectiveProverRewardsForEpoch(Epoch _epoch) external view returns (uint256); diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index e73af0e137aa..ac57fe7570ec 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -23,10 +23,9 @@ library Constants { uint256 internal constant GENESIS_ARCHIVE_ROOT = 1002640778211850180189505934749257244705296832326768971348723156503780793518; uint256 internal constant FEE_JUICE_ADDRESS = 5; - uint256 internal constant BLOB_PUBLIC_INPUTS = 6; - uint256 internal constant BLOB_PUBLIC_INPUTS_BYTES = 112; + uint256 internal constant BLS12_POINT_COMPRESSED_BYTES = 48; uint256 internal constant PROPOSED_BLOCK_HEADER_LENGTH_BYTES = 316; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1015; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 158; uint256 internal constant NUM_MSGS_PER_BASE_PARITY = 4; uint256 internal constant NUM_BASE_PARITY_PER_ROOT_PARITY = 4; } diff --git a/l1-contracts/src/core/libraries/Errors.sol b/l1-contracts/src/core/libraries/Errors.sol index 0911f2238f10..177c4426f7d8 100644 --- a/l1-contracts/src/core/libraries/Errors.sol +++ b/l1-contracts/src/core/libraries/Errors.sol @@ -57,9 +57,8 @@ library Errors { error Rollup__InvalidProof(); // 0xa5b2ba17 error Rollup__InvalidProposedArchive(bytes32 expected, bytes32 actual); // 0x32532e73 error Rollup__InvalidTimestamp(Timestamp expected, Timestamp actual); // 0x3132e895 - error Rollup__InvalidBlobHash(bytes32 blobHash); // 0xc4a168c6 + error Rollup__InvalidBlobHash(bytes32 expected, bytes32 actual); // 0x13031e6a error Rollup__InvalidBlobProof(bytes32 blobHash); // 0x5ca17bef - error Rollup__InvalidBlobPublicInputsHash(bytes32 expected, bytes32 actual); // 0xfe6b4994 error Rollup__NoEpochToProve(); // 0xcbaa3951 error Rollup__NonSequentialProving(); // 0x1e5be132 error Rollup__NothingToPrune(); // 0x850defd3 @@ -71,9 +70,10 @@ library Errors { error Rollup__NonZeroDaFee(); // 0xd9c75f52 error Rollup__InvalidBasisPointFee(uint256 basisPointFee); // 0x4292d136 error Rollup__InvalidManaBaseFee(uint256 expected, uint256 actual); // 0x73b6d896 - error Rollup__StartAndEndNotSameEpoch(Epoch start, Epoch end); - error Rollup__StartIsNotFirstBlockOfEpoch(); - error Rollup__StartIsNotBuildingOnProven(); + error Rollup__StartAndEndNotSameEpoch(Epoch start, Epoch end); // 0xb64ec33e + error Rollup__StartIsNotFirstBlockOfEpoch(); // 0x4ef11e0d + error Rollup__StartIsNotBuildingOnProven(); // 0x4a59f42e + error Rollup__TooManyBlocksInEpoch(uint256 expected, uint256 actual); // 0x7d5b1408 error Rollup__AlreadyClaimed(address prover, Epoch epoch); error Rollup__NotPastDeadline(Slot deadline, Slot currentSlot); error Rollup__PastDeadline(Slot deadline, Slot currentSlot); diff --git a/l1-contracts/src/core/libraries/rollup/BlobLib.sol b/l1-contracts/src/core/libraries/rollup/BlobLib.sol index 4e48e4878eed..9e78b5e35b35 100644 --- a/l1-contracts/src/core/libraries/rollup/BlobLib.sol +++ b/l1-contracts/src/core/libraries/rollup/BlobLib.sol @@ -9,6 +9,9 @@ import {Vm} from "forge-std/Vm.sol"; library BlobLib { address public constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); + uint256 internal constant VERSIONED_HASH_VERSION_KZG = + 0x0100000000000000000000000000000000000000000000000000000000000000; // 0x01 << 248 to be used in blobHashCheck + uint256 internal constant MAX_BLOBS_PER_BLOCK = 6; // Increasing to 9 with Pectra /** * @notice Get the blob base fee @@ -26,77 +29,156 @@ library BlobLib { } /** - * @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs. + * @notice Validate an L2 block's blobs and return the blobHashes, the hashed blobHashes, and blob commitments. + * @notice We assume that this propose transaction contains only Aztec blobs * Input bytes: - * input[:1] - num blobs in block - * input[1:] - 192 * num blobs of the above _blobInput - * @param _blobsInput - The above bytes to verify a blob + * input[0] - num blobs in block + * input[1:] - blob commitments (48 bytes * num blobs in block) + * @param _blobsInput - The above bytes to verify our input blob commitments match real blobs + * @param _checkBlob - Whether to skip blob related checks. Hardcoded to true (See RollupCore.sol -> checkBlob), exists only to be overriden in tests. + * Returns for proposal: + * @return blobHashes - All of the blob hashes included in this block, to be emitted in L2BlockProposed event. + * @return blobsHashesCommitment - A hash of all blob hashes in this block, to be included in the block header. See comment at the end of this fn for more info. + * @return blobCommitments - All of the blob commitments included in this block, to be stored then validated against those used in the rollup in epoch proof verification. */ function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) internal view returns ( - // All of the blob hashes included in this blob bytes32[] memory blobHashes, bytes32 blobsHashesCommitment, - bytes32 blobPublicInputsHash + bytes[] memory blobCommitments ) { // We cannot input the incorrect number of blobs below, as the blobsHash // and epoch proof verification will fail. uint8 numBlobs = uint8(_blobsInput[0]); blobHashes = new bytes32[](numBlobs); - bytes memory blobPublicInputs; + blobCommitments = new bytes[](numBlobs); + bytes32 blobHash; + // Add 1 for the numBlobs prefix + uint256 blobInputStart = 1; for (uint256 i = 0; i < numBlobs; i++) { - // Add 1 for the numBlobs prefix - uint256 blobInputStart = i * 192 + 1; - // Since an invalid blob hash here would fail the consensus checks of - // the header, the `blobInput` is implicitly accepted by consensus as well. - blobHashes[i] = validateBlob(_blobsInput[blobInputStart:blobInputStart + 192], i, _checkBlob); - // We want to extract the 112 bytes we use for public inputs: - // * input[32:64] - z - // * input[64:96] - y - // * input[96:144] - commitment C - // Out of 192 bytes per blob. - blobPublicInputs = abi.encodePacked( - blobPublicInputs, - _blobsInput[blobInputStart + 32:blobInputStart + 32 + Constants.BLOB_PUBLIC_INPUTS_BYTES] + // Commitments = arrays of bytes48 compressed points + blobCommitments[i] = abi.encodePacked( + _blobsInput[blobInputStart:blobInputStart + Constants.BLS12_POINT_COMPRESSED_BYTES] ); + blobInputStart += Constants.BLS12_POINT_COMPRESSED_BYTES; + + bytes32 blobHashCheck = calculateBlobHash(blobCommitments[i]); + if (_checkBlob) { + assembly { + blobHash := blobhash(i) + } + // The below check ensures that our injected blobCommitments indeed match the real + // blobs submitted with this block. They are then used in the blobCommitmentsHash (see below). + require(blobHash == blobHashCheck, Errors.Rollup__InvalidBlobHash(blobHash, blobHashCheck)); + } else { + blobHash = blobHashCheck; + } + blobHashes[i] = blobHash; + } + // Ensure no non-Aztec blobs have been emitted in this tx: + for (uint256 i = numBlobs; i < MAX_BLOBS_PER_BLOCK; i++) { + assembly { + blobHash := blobhash(i) + } + require(blobHash == 0, Errors.Rollup__InvalidBlobHash(blobHash, 0)); } - // Return the hash of all z, y, and Cs, so we can use them in proof verification later - blobPublicInputsHash = sha256(blobPublicInputs); // Hash the EVM blob hashes for the block header + // TODO(#13430): The below blobsHashesCommitment known as blobsHash elsewhere in the code. The name blobsHashesCommitment is confusingly similar to blobCommitmentsHash + // which are different values: + // - blobsHash := sha256([blobhash_0, ..., blobhash_m]) = a hash of all blob hashes in a block with m+1 blobs inserted into the header, exists so a user can cross check blobs. + // - blobCommitmentsHash := sha256( ...sha256(sha256(C_0), C_1) ... C_n) = iteratively calculated hash of all blob commitments in an epoch with n+1 blobs (see calculateBlobCommitmentsHash()), + // exists so we can validate injected commitments to the rollup circuits correspond to the correct real blobs. + // We may be able to combine these values e.g. blobCommitmentsHash := sha256( ...sha256(sha256(blobshash_0), blobshash_1) ... blobshash_l) for an epoch with l+1 blocks. blobsHashesCommitment = Hash.sha256ToField(abi.encodePacked(blobHashes)); } /** - * @notice Validate a blob. + * @notice Validate a batched blob. * Input bytes: - * input[:32] - versioned_hash - * input[32:64] - z - * input[64:96] - y - * input[96:144] - commitment C - * input[144:192] - proof (a commitment to the quotient polynomial q(X)) - * - This can be relaxed to happen at the time of `submitProof` instead - * @notice Apparently there is no guarantee that the blobs will be processed in the order sent - * so the use of blobhash(_blobNumber) may fail in production - * @param _blobInput - The above bytes to verify a blob + * input[:32] - versioned_hash - NB for a batched blob, this is simply the versioned hash of the batched commitment + * input[32:64] - z = poseidon2( ...poseidon2(poseidon2(z_0, z_1), z_2) ... z_n) + * input[64:96] - y = y_0 + gamma * y_1 + gamma^2 * y_2 + ... + gamma^n * y_n + * input[96:144] - commitment C = C_0 + gamma * C_1 + gamma^2 * C_2 + ... + gamma^n * C_n + * input[144:192] - proof (a commitment to the quotient polynomial q(X)) = Q_0 + gamma * Q_1 + gamma^2 * Q_2 + ... + gamma^n * Q_n + * @param _blobInput - The above bytes to verify a batched blob + * + * If this function passes where the values of z, y, and C are valid public inputs to the final epoch root proof, then + * we know that the data in each blob of the epoch corresponds to the tx effects of all our proven txs in the epoch. + * + * The rollup circuits calculate each z_i and y_i as above, so if this function passes but they do not match the values from the + * circuit, then proof verification will fail. + * + * Each commitment C_i is injected into the circuits and their correctness is validated using the blobCommitmentsHash, as + * explained below in calculateBlobCommitmentsHash(). + * */ - function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob) - internal - view - returns (bytes32 blobHash) - { - if (!_checkBlob) { - return bytes32(_blobInput[0:32]); + function validateBatchedBlob(bytes calldata _blobInput) internal view returns (bool success) { + // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : + (success,) = address(0x0a).staticcall(_blobInput); + require(success, Errors.Rollup__InvalidBlobProof(bytes32(_blobInput[0:32]))); + } + + /** + * @notice Calculate the current state of the blobCommitmentsHash. Called for each new proposed block. + * @param _previousblobCommitmentsHash - The previous block's blobCommitmentsHash. + * @param _blobCommitments - The commitments corresponding to this block's blobs. + * @param _isFirstBlockOfEpoch - Whether this block is the first of an epoch (see below). + * + * The blobCommitmentsHash is an accumulated value calculated in the rollup circuits as: + * blobCommitmentsHash_i := sha256(blobCommitmentsHash_(i - 1), C_i) + * for each blob commitment C_i in an epoch. For the first blob in the epoch (i = 0): + * blobCommitmentsHash_i := sha256(C_0) + * which is why we require _isFirstBlockOfEpoch here. + * + * Each blob commitment is injected into the rollup circuits and we rely on the L1 contracts to validate + * these commitments correspond to real blobs. The input _blobCommitments below come from validateBlobs() + * so we know they are valid commitments here. + * + * We recalculate the same blobCommitmentsHash (which encompasses all claimed blobs in the epoch) + * as in the rollup circuits, then use the final value as a public input to the root rollup proof + * verification in EpochProofLib.sol. + * + * If the proof verifies, we know that the injected commitments used in the rollup circuits match + * the real commitments to L1 blobs. + * + */ + function calculateBlobCommitmentsHash( + bytes32 _previousblobCommitmentsHash, + bytes[] memory _blobCommitments, + bool _isFirstBlockOfEpoch + ) internal pure returns (bytes32 currentblobCommitmentsHash) { + uint256 i = 0; + currentblobCommitmentsHash = _previousblobCommitmentsHash; + // If we are at the first block of an epoch, we reinitialise the blobCommitmentsHash. + // Blob commitments are collected and proven per root rollup proof => per epoch. + if (_isFirstBlockOfEpoch) { + // Initialise the blobCommitmentsHash + currentblobCommitmentsHash = Hash.sha256ToField(abi.encodePacked(_blobCommitments[i++])); } - assembly { - blobHash := blobhash(_blobNumber) + for (i; i < _blobCommitments.length; i++) { + currentblobCommitmentsHash = + Hash.sha256ToField(abi.encodePacked(currentblobCommitmentsHash, _blobCommitments[i])); } - require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); + } - // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : - (bool success,) = address(0x0a).staticcall(_blobInput); - require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + /** + * @notice Calculate the expected blob hash given a blob commitment + * @dev TODO(#14646): Use kzg_to_versioned_hash & VERSIONED_HASH_VERSION_KZG + * Until we use an external kzg_to_versioned_hash(), calculating it here: + * EIP-4844 spec blobhash is 32 bytes: [version, ...sha256(commitment)[1:32]] + * The version = VERSIONED_HASH_VERSION_KZG, currently 0x01. + * @param _blobCommitment - The 48 byte blob commitment + * @return bytes32 - The blob hash + */ + function calculateBlobHash(bytes memory _blobCommitment) internal pure returns (bytes32) { + return bytes32( + ( + uint256(sha256(_blobCommitment)) + & 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + ) | VERSIONED_HASH_VERSION_KZG + ); } } diff --git a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol index 1ef239d2b1af..8438cb0dbc90 100644 --- a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol @@ -12,6 +12,7 @@ import { import {RollupStore, SubmitEpochRootProofArgs} from "@aztec/core/interfaces/IRollup.sol"; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; import {Errors} from "@aztec/core/libraries/Errors.sol"; +import {BlobLib} from "@aztec/core/libraries/rollup/BlobLib.sol"; import { CompressedFeeHeader, FeeHeaderLib, @@ -66,16 +67,19 @@ library EpochProofLib { * - The block number is past the pending chain * - The last archive root of the header does not match the archive root of parent block * - The archive root of the header does not match the archive root of the proposed block + * - The batched blob proof is invalid + * - The batched blob proof does not correspond to the rollup data * - The proof is invalid * * @dev We provide the `_archive` even if it could be read from storage itself because it allow for better error * messages. Without passing it, we would just have a proof verification failure. * * @param _args - The arguments to submit the epoch root proof: - * _epochSize - The size of the epoch (to be promoted to a constant) + * _start - The block number at the start of the epoch + * _end - The block number at the end of the epoch * _args - Array of public inputs to the proof (previousArchive, endArchive, endTimestamp, outHash, proverId) * _fees - Array of recipient-value pairs with fees to be distributed for the epoch - * _blobPublicInputs - The blob public inputs for the proof + * _blobInputs - The batched blob inputs for the EVM point evaluation precompile and as public inputs for the proof * _proof - The proof to verify */ function submitEpochRootProof(SubmitEpochRootProofArgs calldata _args) internal { @@ -152,7 +156,7 @@ library EpochProofLib { // vk_tree_root: Field, // protocol_contract_tree_root: Field, // prover_id: Field, - // blob_public_inputs: [BlockBlobPublicInputs; Constants.AZTEC_MAX_EPOCH_DURATION], // <--This will be reduced to 1 if/when we implement multi-opening for blob verification + // blob_public_inputs: FinalBlobAccumulatorPublicInputs, // } { // previous_archive.root: the previous archive tree root @@ -195,36 +199,33 @@ library EpochProofLib { publicInputs[offset] = addressToField(_args.proverId); offset += 1; - { - BlobVarsTemp memory tmp = BlobVarsTemp({blobOffset: 0, offset: offset, i: 0}); - // blob_public_inputs - for (; tmp.i < numBlocks; tmp.i++) { - uint8 blobsInBlock = uint8(_blobPublicInputs[tmp.blobOffset++]); - for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { - if (j < blobsInBlock) { - // z - publicInputs[tmp.offset++] = - bytes32(_blobPublicInputs[tmp.blobOffset:tmp.blobOffset += 32]); - // y - (publicInputs[tmp.offset++], publicInputs[tmp.offset++], publicInputs[tmp.offset++]) = - bytes32ToBigNum(bytes32(_blobPublicInputs[tmp.blobOffset:tmp.blobOffset += 32])); - // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers - // See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() - // TODO: The below left pads, possibly inefficiently - // c[0] - publicInputs[tmp.offset++] = bytes32( - uint256(uint248(bytes31(_blobPublicInputs[tmp.blobOffset:tmp.blobOffset += 31]))) - ); - // c[1] - publicInputs[tmp.offset++] = bytes32( - uint256(uint136(bytes17(_blobPublicInputs[tmp.blobOffset:tmp.blobOffset += 17]))) - ); - } else { - tmp.offset += Constants.BLOB_PUBLIC_INPUTS; - } - } - } - } + // FinalBlobAccumulatorPublicInputs: + // The blob public inputs do not require the versioned hash of the batched commitment, which is stored in _blobPublicInputs[0:32] + // or the KZG opening 'proof' (commitment Q) stored in _blobPublicInputs[144:]. They are used in validateBatchedBlob(). + // See BlobLib.sol -> validateBatchedBlob() and calculateBlobCommitmentsHash() for documentation on the below blob related inputs. + + // blobCommitmentsHash + publicInputs[offset] = rollupStore.blocks[_end].blobCommitmentsHash; + offset += 1; + + // z + publicInputs[offset] = bytes32(_blobPublicInputs[32:64]); + offset += 1; + + // y + (publicInputs[offset], publicInputs[offset + 1], publicInputs[offset + 2]) = + bytes32ToBigNum(bytes32(_blobPublicInputs[64:96])); + offset += 3; + + // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers + // See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() + // TODO: The below left pads, possibly inefficiently + // c[0] + publicInputs[offset] = bytes32(uint256(uint248(bytes31((_blobPublicInputs[96:127]))))); + // c[1] + publicInputs[offset + 1] = bytes32(uint256(uint136(bytes17((_blobPublicInputs[127:144]))))); + offset += 2; + return publicInputs; } @@ -326,6 +327,12 @@ library EpochProofLib { bool isStartBuildingOnProven = _start - 1 <= rollupStore.tips.provenBlockNumber; require(isStartBuildingOnProven, Errors.Rollup__StartIsNotBuildingOnProven()); + bool claimedNumBlocksInEpoch = _end - _start + 1 <= Constants.AZTEC_MAX_EPOCH_DURATION; + require( + claimedNumBlocksInEpoch, + Errors.Rollup__TooManyBlocksInEpoch(Constants.AZTEC_MAX_EPOCH_DURATION, _end - _start) + ); + return endEpoch; } @@ -336,22 +343,10 @@ library EpochProofLib { { RollupStore storage rollupStore = STFLib.getStorage(); - uint256 size = _args.end - _args.start + 1; - - for (uint256 i = 0; i < size; i++) { - uint256 blobOffset = i * Constants.BLOB_PUBLIC_INPUTS_BYTES + i; - uint8 blobsInBlock = uint8(_args.blobPublicInputs[blobOffset++]); - checkBlobPublicInputsHashes( - _args.blobPublicInputs, - rollupStore.blobPublicInputsHashes[_args.start + i], - blobOffset, - blobsInBlock - ); - } + BlobLib.validateBatchedBlob(_args.blobInputs); - bytes32[] memory publicInputs = getEpochProofPublicInputs( - _args.start, _args.end, _args.args, _args.fees, _args.blobPublicInputs - ); + bytes32[] memory publicInputs = + getEpochProofPublicInputs(_args.start, _args.end, _args.args, _args.fees, _args.blobInputs); require( rollupStore.config.epochProofVerifier.verify(_args.proof, publicInputs), @@ -361,30 +356,6 @@ library EpochProofLib { return true; } - /** - * Helper fn to prevent stack too deep. Checks blob public input hashes match for a block: - * @param _blobPublicInputs - The provided blob public inputs bytes array - * @param _blobPublicInputsHash - The stored blob public inputs hash - * @param _index - The index to start in _blobPublicInputs - * @param _blobsInBlock - The number of blobs in this block - */ - function checkBlobPublicInputsHashes( - bytes calldata _blobPublicInputs, - bytes32 _blobPublicInputsHash, - uint256 _index, - uint8 _blobsInBlock - ) private pure { - bytes32 calcBlobPublicInputsHash = sha256( - abi.encodePacked( - _blobPublicInputs[_index:_index + Constants.BLOB_PUBLIC_INPUTS_BYTES * _blobsInBlock] - ) - ); - require( - calcBlobPublicInputsHash == _blobPublicInputsHash, - Errors.Rollup__InvalidBlobPublicInputsHash(_blobPublicInputsHash, calcBlobPublicInputsHash) - ); - } - /** * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: diff --git a/l1-contracts/src/core/libraries/rollup/ExtRollupLib.sol b/l1-contracts/src/core/libraries/rollup/ExtRollupLib.sol index a95280f8fbd0..7fac9be63ef5 100644 --- a/l1-contracts/src/core/libraries/rollup/ExtRollupLib.sol +++ b/l1-contracts/src/core/libraries/rollup/ExtRollupLib.sol @@ -87,7 +87,7 @@ library ExtRollupLib { returns ( bytes32[] memory blobHashes, bytes32 blobsHashesCommitment, - bytes32 blobPublicInputsHash + bytes[] memory blobCommitments ) { return BlobLib.validateBlobs(_blobsInput, _checkBlob); diff --git a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol index e38cf22848e1..75683229d59e 100644 --- a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol +++ b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol @@ -43,7 +43,7 @@ struct ProposePayload { struct InterimProposeValues { bytes32[] blobHashes; bytes32 blobsHashesCommitment; - bytes32 blobPublicInputsHash; + bytes[] blobCommitments; bytes32 inHash; uint256 outboxMinsize; bytes32 headerHash; @@ -78,12 +78,16 @@ library ProposeLib { * * @param _args - The arguments to propose the block * @param _attestations - Signatures (or empty) from the validators - * @param _blobInput - The blob evaluation KZG proof, challenge, and opening required for the precompile. + * Input _blobsInput bytes: + * input[:1] - num blobs in block + * input[1:] - blob commitments (48 bytes * num blobs in block) + * @param _blobsInput - The above bytes to verify our input blob commitments match real blobs + * @param _checkBlob - Whether to skip blob related checks. Hardcoded to true (See RollupCore.sol -> checkBlob), exists only to be overriden in tests. */ function propose( ProposeArgs calldata _args, CommitteeAttestation[] memory _attestations, - bytes calldata _blobInput, + bytes calldata _blobsInput, bool _checkBlob ) internal { if (STFLib.canPruneAtTime(Timestamp.wrap(block.timestamp))) { @@ -92,10 +96,11 @@ library ProposeLib { FeeLib.updateL1GasFeeOracle(); InterimProposeValues memory v; - // Since an invalid blob hash here would fail the consensus checks of - // the header, the `blobInput` is implicitly accepted by consensus as well. - (v.blobHashes, v.blobsHashesCommitment, v.blobPublicInputsHash) = - BlobLib.validateBlobs(_blobInput, _checkBlob); + + // TODO(#13430): The below blobsHashesCommitment known as blobsHash elsewhere in the code. The name is confusingly similar to blobCommitmentsHash, + // see comment in BlobLib.sol -> validateBlobs(). + (v.blobHashes, v.blobsHashesCommitment, v.blobCommitments) = + BlobLib.validateBlobs(_blobsInput, _checkBlob); ProposedHeader memory header = _args.header; v.headerHash = ProposedHeaderLib.hash(_args.header); @@ -129,8 +134,21 @@ library ProposeLib { RollupStore storage rollupStore = STFLib.getStorage(); uint256 blockNumber = ++rollupStore.tips.pendingBlockNumber; - rollupStore.blocks[blockNumber] = - BlockLog({archive: _args.archive, headerHash: v.headerHash, slotNumber: header.slotNumber}); + // Blob commitments are collected and proven per root rollup proof (=> per epoch), so we need to know whether we are at the epoch start: + bool isFirstBlockOfEpoch = + currentEpoch > STFLib.getEpochForBlock(blockNumber - 1) || blockNumber == 1; + bytes32 blobCommitmentsHash = BlobLib.calculateBlobCommitmentsHash( + rollupStore.blocks[blockNumber - 1].blobCommitmentsHash, + v.blobCommitments, + isFirstBlockOfEpoch + ); + + rollupStore.blocks[blockNumber] = BlockLog({ + archive: _args.archive, + headerHash: v.headerHash, + blobCommitmentsHash: blobCommitmentsHash, + slotNumber: header.slotNumber + }); FeeLib.writeFeeHeader( blockNumber, @@ -140,8 +158,6 @@ library ProposeLib { components.proverCost ); - rollupStore.blobPublicInputsHashes[blockNumber] = v.blobPublicInputsHash; - // @note The block number here will always be >=1 as the genesis block is at 0 v.inHash = rollupStore.config.inbox.consume(blockNumber); require( diff --git a/l1-contracts/src/core/libraries/rollup/STFLib.sol b/l1-contracts/src/core/libraries/rollup/STFLib.sol index 68cefdaf3102..7a4ff3afbc5c 100644 --- a/l1-contracts/src/core/libraries/rollup/STFLib.sol +++ b/l1-contracts/src/core/libraries/rollup/STFLib.sol @@ -22,8 +22,12 @@ library STFLib { rollupStore.config.vkTreeRoot = _genesisState.vkTreeRoot; rollupStore.config.protocolContractTreeRoot = _genesisState.protocolContractTreeRoot; - rollupStore.blocks[0] = - BlockLog({archive: _genesisState.genesisArchiveRoot, headerHash: 0, slotNumber: Slot.wrap(0)}); + rollupStore.blocks[0] = BlockLog({ + archive: _genesisState.genesisArchiveRoot, + headerHash: 0, + blobCommitmentsHash: 0, + slotNumber: Slot.wrap(0) + }); } function prune() internal { diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 8d5a2257388a..c5024b46a422 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -254,26 +254,23 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); - rollup.propose(args, attestations, data.blobInputs); + bytes32 realBlobHash = this.getBlobHashes(data.blobCommitments)[0]; + vm.expectRevert( + abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0], realBlobHash) + ); + rollup.propose(args, attestations, data.blobCommitments); } - function testInvalidBlobProof() public setUpFor("mixed_block_1") { + function testTooManyBlobs() public setUpFor("mixed_block_1") { DecoderBase.Data memory data = load("mixed_block_1").block; - bytes memory blobInput = data.blobInputs; - - // We set the blobHash to the correct value - bytes32[] memory blobHashes = new bytes32[](1); - // The below is the blob hash == bytes [1:33] of _blobInput - bytes32 blobHash; - assembly { - blobHash := mload(add(blobInput, 0x21)) + bytes32[] memory realBlobHashes = this.getBlobHashes(data.blobCommitments); + bytes32[] memory blobHashes = new bytes32[](realBlobHashes.length + 1); + for (uint256 i = 0; i < realBlobHashes.length; i++) { + blobHashes[i] = realBlobHashes[i]; } - blobHashes[0] = blobHash; + // Add an extra blob which shouldn't exist + blobHashes[realBlobHashes.length] = bytes32(uint256(1)); vm.blobhashes(blobHashes); - - // We mess with the blob input bytes - blobInput[100] = 0x01; ProposeArgs memory args = ProposeArgs({ header: data.header, archive: data.archive, @@ -281,8 +278,12 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); - rollup.propose(args, attestations, blobInput); + vm.expectRevert( + abi.encodeWithSelector( + Errors.Rollup__InvalidBlobHash.selector, blobHashes[realBlobHashes.length], 0 + ) + ); + rollup.propose(args, attestations, data.blobCommitments); } function testRevertPrune() public setUpFor("mixed_block_1") { @@ -346,7 +347,7 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, attestations, data.blobInputs); + rollup.propose(args, attestations, data.blobCommitments); } function testInvalidL2Fee() public setUpFor("mixed_block_1") { @@ -376,7 +377,7 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, attestations, data.blobInputs); + rollup.propose(args, attestations, data.blobCommitments); } function testProvingFeeUpdates() public setUpFor("mixed_block_1") { @@ -488,7 +489,7 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); - rollup.propose(args, attestations, data.blobInputs); + rollup.propose(args, attestations, data.blobCommitments); assertEq(testERC20.balanceOf(header.coinbase), 0, "invalid coinbase balance"); } @@ -498,7 +499,6 @@ contract RollupTest is RollupBase { address prover = address(0x1234); { - bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); vm.expectRevert( abi.encodeWithSelector( IERC20Errors.ERC20InsufficientBalance.selector, @@ -512,7 +512,7 @@ contract RollupTest is RollupBase { 1, blockLog.archive, data.archive, - blobPublicInputs, + data.batchedBlobInputs, prover, header.coinbase, interim.feeAmount @@ -532,7 +532,7 @@ contract RollupTest is RollupBase { 1, blockLog.archive, data.archive, - this.getBlobPublicInputs(data.blobInputs), + data.batchedBlobInputs, address(42), header.coinbase, interim.feeAmount @@ -647,8 +647,6 @@ contract RollupTest is RollupBase { bytes memory proof = ""; - bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); - vm.expectRevert( abi.encodeWithSelector( Errors.Rollup__StartAndEndNotSameEpoch.selector, Epoch.wrap(0), Epoch.wrap(1) @@ -661,7 +659,7 @@ contract RollupTest is RollupBase { end: 2, args: args, fees: fees, - blobPublicInputs: blobPublicInputs, + blobInputs: data.batchedBlobInputs, proof: proof }) ); @@ -678,11 +676,7 @@ contract RollupTest is RollupBase { assertEq(rollup.getProvenBlockNumber(), 0, "Invalid initial proven block number"); BlockLog memory blockLog = rollup.getBlock(0); - bytes memory blobPublicInputs = abi.encodePacked( - this.getBlobPublicInputs(load("mixed_block_1").block.blobInputs), - this.getBlobPublicInputs(data.blobInputs) - ); - _submitEpochProof(1, 2, blockLog.archive, data.archive, blobPublicInputs, address(0)); + _submitEpochProof(1, 2, blockLog.archive, data.archive, data.batchedBlobInputs, address(0)); assertEq(rollup.getPendingBlockNumber(), 2, "Invalid pending block number"); assertEq(rollup.getProvenBlockNumber(), 2, "Invalid proven block number"); @@ -758,7 +752,6 @@ contract RollupTest is RollupBase { function testSubmitProofNonExistentBlock() public setUpFor("empty_block_1") { _proposeBlock("empty_block_1", 1); DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); BlockLog memory blockLog = rollup.getBlock(0); bytes32 wrong = bytes32(uint256(0xdeadbeef)); @@ -767,42 +760,65 @@ contract RollupTest is RollupBase { Errors.Rollup__InvalidPreviousArchive.selector, blockLog.archive, wrong ) ); - _submitEpochProof(1, 1, wrong, data.archive, blobPublicInputs, address(0)); + _submitEpochProof(1, 1, wrong, data.archive, data.batchedBlobInputs, address(0)); } function testSubmitProofInvalidArchive() public setUpFor("empty_block_1") { _proposeBlock("empty_block_1", 1); DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); bytes32 wrongArchive = bytes32(uint256(0xdeadbeef)); BlockLog memory blockLog = rollup.getBlock(0); vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidArchive.selector, data.archive, 0xdeadbeef) ); - _submitEpochProof(1, 1, blockLog.archive, wrongArchive, blobPublicInputs, address(0)); + _submitEpochProof(1, 1, blockLog.archive, wrongArchive, data.batchedBlobInputs, address(0)); } - function _testSubmitProofInvalidBlobPublicInput() public setUpFor("empty_block_1") { - _proposeBlock({_name: "empty_block_1", _slotNumber: 0}); + function testInvalidBlobProof() public setUpFor("mixed_block_1") { + _proposeBlock({_name: "mixed_block_1", _slotNumber: 0}); - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); + DecoderBase.Data memory data = load("mixed_block_1").block; + bytes memory blobProofInputs = data.batchedBlobInputs; // mess with the data - blobPublicInputs[100] = 0x01; + blobProofInputs[100] = 0x01; + // The below is the "blob hash" == bytes [0:32] of batchedBlobInputs = VERSIONED_HASH_VERSION_KZG + sha256(batchedBlobCommitment)[1:] + bytes32 blobHash; + assembly { + blobHash := mload(add(blobProofInputs, 0x20)) + } + + BlockLog memory blockLog = rollup.getBlock(0); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHash)); + _submitEpochProof(1, 1, blockLog.archive, data.archive, blobProofInputs, address(0)); + } + + function testTooManyBlocks() public setUpFor("mixed_block_1") { + _proposeBlock("mixed_block_1", 1); + DecoderBase.Data memory data = load("mixed_block_1").block; + + // Set the pending block number to be Constants.AZTEC_MAX_EPOCH_DURATION + 2, so we don't revert early with a different case + stdstore.target(address(rollup)).sig("getPendingBlockNumber()").checked_write( + Constants.AZTEC_MAX_EPOCH_DURATION + 2 + ); BlockLog memory blockLog = rollup.getBlock(0); - bytes32 actualBlobPublicInputsHash = rollup.getBlobPublicInputsHash(data.blockNumber); - bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); vm.expectRevert( abi.encodeWithSelector( - Errors.Rollup__InvalidBlobPublicInputsHash.selector, - actualBlobPublicInputsHash, - wrongBlobPublicInputsHash + Errors.Rollup__TooManyBlocksInEpoch.selector, + Constants.AZTEC_MAX_EPOCH_DURATION, + Constants.AZTEC_MAX_EPOCH_DURATION + 1 ) ); - _submitEpochProof(1, 1, blockLog.archive, data.archive, blobPublicInputs, address(0)); + _submitEpochProof( + 1, + Constants.AZTEC_MAX_EPOCH_DURATION + 2, + blockLog.archive, + data.archive, + data.batchedBlobInputs, + address(0) + ); } function _submitEpochProof( @@ -810,11 +826,11 @@ contract RollupTest is RollupBase { uint256 _end, bytes32 _prevArchive, bytes32 _archive, - bytes memory _blobPublicInputs, + bytes memory _blobInputs, address _prover ) internal { _submitEpochProofWithFee( - _start, _end, _prevArchive, _archive, _blobPublicInputs, _prover, address(0), 0 + _start, _end, _prevArchive, _archive, _blobInputs, _prover, address(0), 0 ); } @@ -823,7 +839,7 @@ contract RollupTest is RollupBase { uint256 _end, bytes32 _prevArchive, bytes32 _archive, - bytes memory _blobPublicInputs, + bytes memory _blobInputs, address _prover, address _coinbase, uint256 _fee @@ -841,7 +857,7 @@ contract RollupTest is RollupBase { end: _end, args: args, fees: fees, - blobPublicInputs: _blobPublicInputs, + blobInputs: _blobInputs, proof: "" }) ); diff --git a/l1-contracts/test/base/DecoderBase.sol b/l1-contracts/test/base/DecoderBase.sol index 2f60ace98903..a076ee134caa 100644 --- a/l1-contracts/test/base/DecoderBase.sol +++ b/l1-contracts/test/base/DecoderBase.sol @@ -63,7 +63,12 @@ contract DecoderBase is TestBase { struct Data { bytes32 archive; - bytes blobInputs; + // Note: batchedBlobInputs is usually per epoch, rather than per block. For testing, these batchedBlobInputs assume that + // an epoch contains blobs including and up to the 'current' block. + // e.g. mixed_block_2's batchedBlobInputs assumes that the epoch consists of 2 blocks, mixed_block_1 and mixed_block_2, and their blobs. + // e.g. mixed_block_1's batchedBlobInputs assumes the epoch contains only mixed_block_1 and its blob(s). + bytes batchedBlobInputs; // EVM point evaluation precompile inputs for verifying an epoch's batch of blobs + bytes blobCommitments; // [numBlobs, ...blobCommitments], used in proposing blocks uint256 blockNumber; bytes body; ProposedHeader header; @@ -73,7 +78,8 @@ contract DecoderBase is TestBase { struct AlphabeticalData { bytes32 archive; - bytes blobInputs; + bytes batchedBlobInputs; + bytes blobCommitments; uint256 blockNumber; bytes body; AlphabeticalHeader header; @@ -99,7 +105,8 @@ contract DecoderBase is TestBase { Full memory result = Full({ block: Data({ archive: full.block.archive, - blobInputs: full.block.blobInputs, + blobCommitments: full.block.blobCommitments, + batchedBlobInputs: full.block.batchedBlobInputs, blockNumber: full.block.blockNumber, body: full.block.body, header: ProposedHeader({ diff --git a/l1-contracts/test/base/RollupBase.sol b/l1-contracts/test/base/RollupBase.sol index 0322e966acaa..af7d6a4bcf24 100644 --- a/l1-contracts/test/base/RollupBase.sol +++ b/l1-contracts/test/base/RollupBase.sol @@ -20,6 +20,7 @@ import { Timestamp, Slot, Epoch, SlotLib, EpochLib, TimeLib } from "@aztec/core/libraries/TimeLib.sol"; import {DataStructures} from "@aztec/core/libraries/DataStructures.sol"; +import {BlobLib} from "@aztec/core/libraries/rollup/BlobLib.sol"; import {ProposeArgs, OracleInput, ProposeLib} from "@aztec/core/libraries/rollup/ProposeLib.sol"; import {CommitteeAttestation} from "@aztec/core/libraries/crypto/SignatureLib.sol"; import {Inbox} from "@aztec/core/messagebridge/Inbox.sol"; @@ -70,6 +71,7 @@ contract RollupBase is DecoderBase { BlockLog memory parentBlockLog = rollup.getBlock(startBlockNumber - 1); // What are these even? + // ^ public inputs to the root proof? PublicInputArgs memory args = PublicInputArgs({ previousArchive: parentBlockLog.archive, endArchive: endFull.block.archive, @@ -77,17 +79,11 @@ contract RollupBase is DecoderBase { }); bytes32[] memory fees = new bytes32[](Constants.AZTEC_MAX_EPOCH_DURATION * 2); - bytes memory blobPublicInputs; uint256 size = endBlockNumber - startBlockNumber + 1; for (uint256 i = 0; i < size; i++) { fees[i * 2] = bytes32(uint256(uint160(bytes20(("sequencer"))))); // Need the address to be left padded within the bytes32 fees[i * 2 + 1] = bytes32(uint256(blockFees[startBlockNumber + i])); - - string memory blockName = string.concat(_name, Strings.toString(startBlockNumber + i)); - DecoderBase.Full memory blockFull = load(blockName); - blobPublicInputs = - abi.encodePacked(blobPublicInputs, this.getBlobPublicInputs(blockFull.block.blobInputs)); } // All the way down here if reverting. @@ -102,7 +98,7 @@ contract RollupBase is DecoderBase { end: endBlockNumber, args: args, fees: fees, - blobPublicInputs: blobPublicInputs, + blobInputs: endFull.block.batchedBlobInputs, proof: "" }) ); @@ -132,7 +128,7 @@ contract RollupBase is DecoderBase { bytes memory _revertMsg ) private { DecoderBase.Full memory full = load(_name); - bytes memory blobInputs = full.block.blobInputs; + bytes memory blobCommitments = full.block.blobCommitments; Slot slotNumber = Slot.wrap(_slotNumber); @@ -157,13 +153,7 @@ contract RollupBase is DecoderBase { full.block.header.contentCommitment.inHash = rollup.getInbox().getRoot(full.block.blockNumber); { - bytes32[] memory blobHashes = new bytes32[](1); - // The below is the blob hash == bytes [1:33] of _blobInput - bytes32 blobHash; - assembly { - blobHash := mload(add(blobInputs, 0x21)) - } - blobHashes[0] = blobHash; + bytes32[] memory blobHashes = this.getBlobHashes(blobCommitments); // https://github.com/foundry-rs/foundry/issues/10074 // don't add blob hashes if forge gas report is true if (!vm.envOr("FORGE_GAS_REPORT", false)) { @@ -185,7 +175,7 @@ contract RollupBase is DecoderBase { if (_revertMsg.length > 0) { vm.expectRevert(_revertMsg); } - rollup.propose(args, attestations, blobInputs); + rollup.propose(args, attestations, blobCommitments); if (_revertMsg.length > 0) { return; @@ -246,32 +236,23 @@ contract RollupBase is DecoderBase { } } - function getBlobPublicInputs(bytes calldata _blobsInput) + function getBlobHashes(bytes calldata _blobCommitments) public pure - returns (bytes memory blobPublicInputs) + returns (bytes32[] memory blobHashes) { - uint8 numBlobs = uint8(_blobsInput[0]); - blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); + uint8 numBlobs = uint8(_blobCommitments[0]); + blobHashes = new bytes32[](numBlobs); + // Add 1 for the numBlobs prefix + uint256 blobInputStart = 1; for (uint256 i = 0; i < numBlobs; i++) { - // Add 1 for the numBlobs prefix - uint256 blobInputStart = i * 192 + 1; - // We want to extract the bytes we use for public inputs: - // * input[32:64] - z - // * input[64:96] - y - // * input[96:144] - commitment C - // Out of 192 bytes per blob. - blobPublicInputs = - abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + // blobInputs = [numBlobs, ...blobCommitments], numBlobs is one byte, each commitment is 48 + blobHashes[i] = BlobLib.calculateBlobHash( + abi.encodePacked( + _blobCommitments[blobInputStart:blobInputStart + Constants.BLS12_POINT_COMPRESSED_BYTES] + ) + ); + blobInputStart += Constants.BLS12_POINT_COMPRESSED_BYTES; } } - - function getBlobPublicInputsHash(bytes calldata _blobPublicInputs) - public - pure - returns (bytes32 publicInputsHash) - { - uint8 numBlobs = uint8(_blobPublicInputs[0]); - publicInputsHash = sha256(abi.encodePacked(_blobPublicInputs[1:1 + numBlobs * 112])); - } } diff --git a/l1-contracts/test/benchmark/happy.t.sol b/l1-contracts/test/benchmark/happy.t.sol index 3419aac9af2d..48c7dc3d99d7 100644 --- a/l1-contracts/test/benchmark/happy.t.sol +++ b/l1-contracts/test/benchmark/happy.t.sol @@ -266,7 +266,7 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { return Block({ proposeArgs: proposeArgs, - blobInputs: full.block.blobInputs, + blobInputs: full.block.blobCommitments, attestations: attestations }); } @@ -360,14 +360,6 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { proverId: address(0) }); - bytes memory blobPublicInputs; - for (uint256 j = 0; j < epochSize; j++) { - // For each block in the epoch, add its blob public inputs - // Since we are reusing the same block, they are the same - blobPublicInputs = - abi.encodePacked(blobPublicInputs, this.getBlobPublicInputs(full.block.blobInputs)); - } - { rollup.submitEpochRootProof( SubmitEpochRootProofArgs({ @@ -375,7 +367,7 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { end: start + epochSize - 1, args: args, fees: fees, - blobPublicInputs: blobPublicInputs, + blobInputs: full.block.batchedBlobInputs, proof: "" }) ); @@ -383,26 +375,4 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { } } } - - // This is duplicated from Rollup.t.sol because we need to call it as this.getBlobPublicInputs - // so it accepts the input as calldata - function getBlobPublicInputs(bytes calldata _blobsInput) - public - pure - returns (bytes memory blobPublicInputs) - { - uint8 numBlobs = uint8(_blobsInput[0]); - blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); - for (uint256 i = 0; i < numBlobs; i++) { - // Add 1 for the numBlobs prefix - uint256 blobInputStart = i * 192 + 1; - // We want to extract the bytes we use for public inputs: - // * input[32:64] - z - // * input[64:96] - y - // * input[96:144] - commitment C - // Out of 192 bytes per blob. - blobPublicInputs = - abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); - } - } } diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index 6b33f0245be5..35f08ddd2a6f 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -180,7 +180,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { archive: archiveRoot, header: header, body: body, - blobInputs: full.block.blobInputs, + blobInputs: full.block.blobCommitments, txHashes: txHashes, attestations: attestations }); @@ -392,14 +392,6 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { proverId: address(0) }); - bytes memory blobPublicInputs; - for (uint256 j = 0; j < epochSize; j++) { - // For each block in the epoch, add its blob public inputs - // Since we are reusing the same block, they are the same - blobPublicInputs = - abi.encodePacked(blobPublicInputs, this.getBlobPublicInputs(full.block.blobInputs)); - } - { rollup.submitEpochRootProof( SubmitEpochRootProofArgs({ @@ -407,7 +399,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { end: start + epochSize - 1, args: args, fees: fees, - blobPublicInputs: blobPublicInputs, + blobInputs: full.block.batchedBlobInputs, proof: "" }) ); @@ -458,26 +450,4 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { }); assertEq(a, bModel, _message); } - - // This is duplicated from Rollup.t.sol because we need to call it as this.getBlobPublicInputs - // so it accepts the input as calldata - function getBlobPublicInputs(bytes calldata _blobsInput) - public - pure - returns (bytes memory blobPublicInputs) - { - uint8 numBlobs = uint8(_blobsInput[0]); - blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); - for (uint256 i = 0; i < numBlobs; i++) { - // Add 1 for the numBlobs prefix - uint256 blobInputStart = i * 192 + 1; - // We want to extract the bytes we use for public inputs: - // * input[32:64] - z - // * input[64:96] - y - // * input[96:144] - commitment C - // Out of 192 bytes per blob. - blobPublicInputs = - abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); - } - } } diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index dceeb8bcb1c2..a920a3a04881 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -25,8 +25,9 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x152c553794180654240558cfaa9454fbda93f467f7c8733cc5b57d491c6121c5", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x2da1fdddddc2040525b9f2fd521f4f0f482b4ea0251f6634f87353f2e47690f5", + "blobCommitments": "0x01c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "batchedBlobInputs": "0x010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 1, "body": "0x00000000", "header": { @@ -38,16 +39,16 @@ "numTxs": 0 }, "slotNumber": 70, - "timestamp": 1749238438, - "coinbase": "0x8405e507217bd5cb734bcf0dba2b2ee60a0e8792", - "feeRecipient": "0x167d17ec96bec3c98dcbef24ec08f8d0b08828d1ae2a9033510ca504a4e23d7f", + "timestamp": 1749475223, + "coinbase": "0xf99f10bf3b258febcb05d13bec966bc4b889653c", + "feeRecipient": "0x024d073cb1ea3455602c6a2c55bb4da6b03f4af17c9d79dc5cc9894bf053b42f", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 36000 + "feePerL2Gas": 36180 }, "totalManaUsed": 0 }, - "headerHash": "0x00483fe5f0975c1730644500257ac2892ddfc8c7ca977944f2365f4ac434b68f", + "headerHash": "0x00e6a751ff76adbfbdd5b31ac0509fa6c91eb65fbbf6f5cb1570b2f3a8c3afd5", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index 0abf39b52a28..1268811b977a 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -25,29 +25,30 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1a6d8c6fac6c6518f6652d78b5a6b95b03fd4688dac71591f4ed45e5670f51d4", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x0c06d4795053fa3b1c1537288a7d0e19269f14dba94c22c558905bf4c50ce9ce", + "blobCommitments": "0x01c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "batchedBlobInputs": "0x010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401416743433c1b3d551429cfbc09ab7899d4e14d2b5786a3243e29bc9c6c0d76bf10000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 2, "body": "0x00000000", "header": { - "lastArchiveRoot": "0x152c553794180654240558cfaa9454fbda93f467f7c8733cc5b57d491c6121c5", + "lastArchiveRoot": "0x2da1fdddddc2040525b9f2fd521f4f0f482b4ea0251f6634f87353f2e47690f5", "contentCommitment": { "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", - "inHash": "0x00230a1edbddd51950a62b283c513d8bdedd2c8a873b5cc1f00ecdaba756a2b7", + "inHash": "0x008ee8a97d9ff1006cbc1dea58fe6a2c6e58c9e1ed48cf827d92141f3645da8a", "outHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 }, "slotNumber": 76, - "timestamp": 1749238654, - "coinbase": "0x8405e507217bd5cb734bcf0dba2b2ee60a0e8792", - "feeRecipient": "0x167d17ec96bec3c98dcbef24ec08f8d0b08828d1ae2a9033510ca504a4e23d7f", + "timestamp": 1749475439, + "coinbase": "0xf99f10bf3b258febcb05d13bec966bc4b889653c", + "feeRecipient": "0x024d073cb1ea3455602c6a2c55bb4da6b03f4af17c9d79dc5cc9894bf053b42f", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 3060 + "feePerL2Gas": 3070 }, "totalManaUsed": 0 }, - "headerHash": "0x00e07a055ebd55c60cb1d6fce53c85aaf1787a6251deb793f70ed7fec9ad2f97", + "headerHash": "0x006b77d24600fc20dc1c08675b7467307bc6429ae032a76aafdbe0d6fd57a161", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index ef9cb120891f..6b9b70b95cd6 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -58,29 +58,30 @@ ] }, "block": { - "archive": "0x2b42d331e40b26fc7dcf989e21948292081f105628f84c58212de3685b993c2f", - "blobInputs": "0x0101bbffe67357c09f6c287d05c99a3762fd7a068b38859d0315d99ee144e992e608070327a2899ff91d711579c63defb51520530141fdc4428efb62e04b2a23614674bfb995eda826c929b7e4089d7cba491f8f8e592011229549b00c38935c05a6bcdb32f5977a9e590255a7be24b47f1be8b5010d63e170133efdbf1801d64dd890b5d3086c643ef1685a448f3a5fa892610a660e05d6290f29702194f0dba1fb4984c02884c1fad713ef0c312e33684fff615da1d9338911bd01fdf42ef4fa", + "archive": "0x2b0c8a333c99eca635086720b2ca9bc70c334a524ba19f9a1f01fb96f936c1b9", + "blobCommitments": "0x01b1adbad6eee21fe5e7cdf6e2d786b734ec10161bfa9391a263b98dc76d00d4302505714b0c106322032fc62a137872c5", + "batchedBlobInputs": "0x019636f961da338cdf1ea868d963c052671af2c49619c2a0e5ef79982a8969170f2231c024ac37c814166e3ca13d37acd1e775fdb12d9d3275d90d2ad10ef33f461e413ca605caac4059e4208d543d8e51867d825e3cc0eff4b611ace9d53995b1adbad6eee21fe5e7cdf6e2d786b734ec10161bfa9391a263b98dc76d00d4302505714b0c106322032fc62a137872c5b6a8796879f861602671ddb524e6f9ca3576957798c8e5886022ccc8a2171d5654d39080adcd52f727ecec03a50d5adf", "blockNumber": 1, - "body": "0x000000040022cffa693199e1f44be788a13d0273ae493cfda0ab761f7a087cdcc3dcf04f390000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e08004b8b814288544866292d9d0e66869207628fb0ef8120c59ec1d969a085d5d50075c5d0fc08d5578600928d2fc6cd1e63a2b87266a45558135a2912c5a7d6e60019574cfd6834b8c08012b12c6b178d65c27335e1001c1337996f4f460c2cf1000624d1d08e5c487711876584ae580b46b81854bc8e45e42e822ef18df136ff00b78383bdbff11e85552243f1429b8d83334d734dc92e1062b8a04371de5f88005b33017fa3cd1861669d2fd5621ba61db7a72646a9b459897a55780eeeb64e00a1d3d6c8bc4848ef2e4d256253773447d1b39deedd2d70248a2160c765afc200e1d211a34da229f26780fc7baa5a6ca0a35b7e0fea52ea082e35cd064db33d400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000012000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000001200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000120000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000012000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000001200000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000120000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000012000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000001200000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000120000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a00000012000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b00000012000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c00000012000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d00000012000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e00000012000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000012000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000120000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000012000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000001200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000012000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000001200000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000120000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000012000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000001200000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000120000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a00000012000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b00000012000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c00000012000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d00000012000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e00000012000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000012000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f0000000000000000000000000000000000000000000000000000000000041730000000120000002d5e23c39a571d3d0c940f3d9d2716f913f4e40eb7b83e144376ba04b667835c0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e0800265fc26cc330a0a6a8e801430f967c7ed1e58be49f854f0cad6732943f88e20071874f590a2dadb3658c9ab56b3fcf8c43098157070e4c5f724dfa3f22337d00ae67efa2446c41039723a7f780b2d317dc0fe70741ad4b180ed3e69206acb70022e6e6d8999655a395c3d51de207120646c5acfe3c55f06fd12e2bf579816300479bb81c7d06f66baed706c75fa44967ac97960303fbad4f4bdc77f475e68f00ac60795e5b5c80c95c88f6b236bd97aba1156483effa087e56719d8eee599700af23557f2f6de3d1c09b4aad782fffa5457af68d87e778d73de1b921eb41dc00c7c86fa31cdf6f4ce9036bdbee033e09194bf5739a66928d2e3d2ac2703649400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000012000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000001200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000120000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000012000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000001200000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000120000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000012000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000001200000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000120000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a00000012000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b00000012000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c00000012000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d00000012000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e00000012000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000012000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000120000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000012000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000001200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000012000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000001200000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000120000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000012000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000001200000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000120000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a00000012000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b00000012000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c00000012000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d00000012000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e00000012000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000012000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f0000000000000000000000000000000000000000000000000000000000081730000000120000000b9beae6e9a2217ce0238a0fa551d235b462011f389b0f25a02bb698bc6431ee00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e08007740254fc3203c599b97e5049f81ecb8acf39bddfbeae8ce74298e4ea87efe00bde1f60e5339304ca4b53d8b845c6e7d293f6841c1b62c07c2eb231593c4d100204739a2456e89e1353337ea45977dd7dcca61921869c7c6871ade16c5b680006d06063ef1b29afa07e57f756435cf5d48e822d678b7a913b5838aa3443cbf0083ecac1aa2e9e8402a9810b7590d4b76945b41df2cb7c999ba354ea087c06c003d7e1311d740b160e04897e91bb1a4e85d22b5ff438622f18eb090ef494a75007788b07cf04ef30ff0196f111a0486011eaef85bf336a76a3fb6c7b3388117009fffd2100e9e3d9d7002c2f3bd4dd44dadcf24d8b0c3d74c62206460a8142e4000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c17110000001200000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c17120000001200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c17130000001200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c17140000001200000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c17150000001200000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c17160000001200000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c17170000001200000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c17180000001200000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c17190000001200000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a0000001200000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b0000001200000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c0000001200000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d0000001200000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e0000001200000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f0000001200000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c17200000001200000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c17210000001200000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c17220000001200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c17230000001200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c17240000001200000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c17250000001200000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c17260000001200000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c17270000001200000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c17280000001200000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c17290000001200000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a0000001200000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b0000001200000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c0000001200000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d0000001200000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e0000001200000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f0000001200000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c173000000012000000133f151bb4af047dc100e8b32e0ac4aa1b7a8311f52f3fd2bee18bf837597b5d0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e08001790a679d3716b68fe4923616e234005918acd822bcc4ee8391ee526366e6000e29a714f3a1481f66d186077e4471803e542f4a8c165a5dc51359b0b5c04220050dbc735880ca3e38c57fd0510fb34541b132ae9eb6d7b88ae69fc16df197500cc7847321bda78d6d60dc09b0e3d75b350174e8ad07eb2a51c0a9afeb3c51700cd0fa6b6fc4c5859760aba07f5f5e0c714b57e55b13692fbbfe48f9e6bee5d00d4e93fc3e1a3d729afc451308365e07a5ec3fe8a220a4bcf93d09801703d3c00f7facd28c2650b9391380a08a9f583db4deed48993279a2253980d7a7c84d300e6143b86a0332ebe75bf78307054245c7b8ce8dd7130d477bcb691e1e51d82400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000012000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000001200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000120000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000012000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000001200000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000120000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000012000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000001200000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000120000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a00000012000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b00000012000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c00000012000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d00000012000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e00000012000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000012000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000120000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000012000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000001200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000012000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000001200000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000120000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000012000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000001200000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000120000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a00000012000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b00000012000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c00000012000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d00000012000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e00000012000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000012000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f0000000000000000000000000000000000000000000000000000000000101730000000120000", + "body": "0x00000004001ec43bfb0fabee20f38e091c16d040f41a0d67da3ac258e8ec66b8b01338f6c80000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e08004b8b814288544866292d9d0e66869207628fb0ef8120c59ec1d969a085d5d50075c5d0fc08d5578600928d2fc6cd1e63a2b87266a45558135a2912c5a7d6e60019574cfd6834b8c08012b12c6b178d65c27335e1001c1337996f4f460c2cf1000624d1d08e5c487711876584ae580b46b81854bc8e45e42e822ef18df136ff00b78383bdbff11e85552243f1429b8d83334d734dc92e1062b8a04371de5f88005b33017fa3cd1861669d2fd5621ba61db7a72646a9b459897a55780eeeb64e00a1d3d6c8bc4848ef2e4d256253773447d1b39deedd2d70248a2160c765afc200e1d211a34da229f26780fc7baa5a6ca0a35b7e0fea52ea082e35cd064db33d400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000012000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000001200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000120000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000012000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000001200000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000120000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000012000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000001200000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000120000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a00000012000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b00000012000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c00000012000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d00000012000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e00000012000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000012000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000120000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000012000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000001200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000012000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000001200000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000120000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000012000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000001200000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000120000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a00000012000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b00000012000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c00000012000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d00000012000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e00000012000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000012000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004173000000012000000096d4e574d33115b395cd6b5713ff2bf56967d4a8b8a7433b3cf9f821bea41620000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e0800265fc26cc330a0a6a8e801430f967c7ed1e58be49f854f0cad6732943f88e20071874f590a2dadb3658c9ab56b3fcf8c43098157070e4c5f724dfa3f22337d00ae67efa2446c41039723a7f780b2d317dc0fe70741ad4b180ed3e69206acb70022e6e6d8999655a395c3d51de207120646c5acfe3c55f06fd12e2bf579816300479bb81c7d06f66baed706c75fa44967ac97960303fbad4f4bdc77f475e68f00ac60795e5b5c80c95c88f6b236bd97aba1156483effa087e56719d8eee599700af23557f2f6de3d1c09b4aad782fffa5457af68d87e778d73de1b921eb41dc00c7c86fa31cdf6f4ce9036bdbee033e09194bf5739a66928d2e3d2ac2703649400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000012000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000001200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000120000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000012000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000001200000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000120000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000012000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000001200000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000120000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a00000012000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b00000012000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c00000012000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d00000012000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e00000012000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000012000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000120000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000012000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000001200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000012000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000001200000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000120000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000012000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000001200000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000120000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a00000012000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b00000012000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c00000012000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d00000012000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e00000012000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000012000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008173000000012000000268c128933600c73b74370c19d84edf0e670df5750e52594c39fbcf8f4d850d200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e08007740254fc3203c599b97e5049f81ecb8acf39bddfbeae8ce74298e4ea87efe00bde1f60e5339304ca4b53d8b845c6e7d293f6841c1b62c07c2eb231593c4d100204739a2456e89e1353337ea45977dd7dcca61921869c7c6871ade16c5b680006d06063ef1b29afa07e57f756435cf5d48e822d678b7a913b5838aa3443cbf0083ecac1aa2e9e8402a9810b7590d4b76945b41df2cb7c999ba354ea087c06c003d7e1311d740b160e04897e91bb1a4e85d22b5ff438622f18eb090ef494a75007788b07cf04ef30ff0196f111a0486011eaef85bf336a76a3fb6c7b3388117009fffd2100e9e3d9d7002c2f3bd4dd44dadcf24d8b0c3d74c62206460a8142e4000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c17110000001200000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c17120000001200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c17130000001200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c17140000001200000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c17150000001200000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c17160000001200000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c17170000001200000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c17180000001200000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c17190000001200000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a0000001200000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b0000001200000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c0000001200000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d0000001200000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e0000001200000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f0000001200000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c17200000001200000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c17210000001200000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c17220000001200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c17230000001200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c17240000001200000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c17250000001200000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c17260000001200000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c17270000001200000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c17280000001200000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c17290000001200000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a0000001200000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b0000001200000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c0000001200000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d0000001200000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e0000001200000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f0000001200000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c17300000001200000003570b7cb9dca43275efbeb0803d0f06059de776b6c3c282e465ff5f32b473810000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e08001790a679d3716b68fe4923616e234005918acd822bcc4ee8391ee526366e6000e29a714f3a1481f66d186077e4471803e542f4a8c165a5dc51359b0b5c04220050dbc735880ca3e38c57fd0510fb34541b132ae9eb6d7b88ae69fc16df197500cc7847321bda78d6d60dc09b0e3d75b350174e8ad07eb2a51c0a9afeb3c51700cd0fa6b6fc4c5859760aba07f5f5e0c714b57e55b13692fbbfe48f9e6bee5d00d4e93fc3e1a3d729afc451308365e07a5ec3fe8a220a4bcf93d09801703d3c00f7facd28c2650b9391380a08a9f583db4deed48993279a2253980d7a7c84d300e6143b86a0332ebe75bf78307054245c7b8ce8dd7130d477bcb691e1e51d82400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000012000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000001200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000120000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000012000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000001200000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000120000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000012000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000001200000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000120000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a00000012000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b00000012000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c00000012000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d00000012000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e00000012000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000012000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000120000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000012000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000001200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000012000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000001200000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000120000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000012000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000001200000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000120000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a00000012000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b00000012000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c00000012000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d00000012000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e00000012000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000012000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f0000000000000000000000000000000000000000000000000000000000101730000000120000", "header": { "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x007922fb30d465a6e51bd9197c623297dfd932bad8b2966b898fc391f7d2cdf1", + "blobsHash": "0x00e70ada023b01940c5523ba641e90e02d0bc1484ea99e2d0f1243f89faae5a5", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x002e82477c606d2d8bb80411071ccf6db1287e945cedd17517268115e94a693c", "numTxs": 4 }, "slotNumber": 70, - "timestamp": 1749244438, - "coinbase": "0x0bcc885cd394d94215992db4624d3a75638461e1", - "feeRecipient": "0x2021312e19a9e4ede6b202b401250c69d73e9ef5c5a2ef18821419ad6a2ce4d4", + "timestamp": 1749481223, + "coinbase": "0x769373b721c3251e7b47ba77d712f3dea99dfad0", + "feeRecipient": "0x1e672bceeebd7854d31b190885ee3fbd2b8e69213d3c0d6f474c21c45a0666d0", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 1020 }, "totalManaUsed": 0 }, - "headerHash": "0x00f33eba63e19cb2d950b2abaae94eebf7dd4ad2d4356b5686a0a91f2bcdc3c6", + "headerHash": "0x0008cbb100f8dcb1b80dae2285ea7c92dea2a8edc6c8a97597cf4764826a40b0", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index 4ab2bae88219..bf13e6444c31 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -58,29 +58,30 @@ ] }, "block": { - "archive": "0x21dd59ce27b1d1ee7abfeb41c45b3aba0e8de2c886c01d865441d7b6c973ae2a", - "blobInputs": "0x01018289b3167d44723d0c932f06ee1d2e527a2ad63ad3873d16311947b29bcc3c06a9d855d25ed140c258ead0b0fd5c6f4abb0e9e46a1cd5d77a22c3b8bf4875145930fbf7bb30203381dc2ae2a8d6d5808e91a2e64ee1b180c18330b373738e9a49f8efd54d199e8d218a64a016171d1bb3d52bba35fb179d764a7e2efa315a7191926fe6f637bf1c117d578f834b1d98416a25debbe4836a088b33f6634b1d10250c9191c616e25dba204c48d664ae03d916192c9d14cdec5c1d52870a45b99", + "archive": "0x22d480caf069f557fb0255211c1bc886edba15183033b1451ccd18d3d40ea7bc", + "blobCommitments": "0x0189f03c930436ec0b95fcacf2d65c6b40c21919a157c67ac796950701c20b67566e13ae26741035062f5f14c0cebd1881", + "batchedBlobInputs": "0x01e5c7fc009035cb6c89d78a2ea9c2ba5730cc7f9601fe650ce6c75d54e7bcb40775e655afe86cbc506a2697191505899a7cba251b6d790f955ed412ec1dbe5d2f09714299c59755f96d67564fd9cf43495d7975c9c48f500ff7c2b32d94ff2f94bcc30666c53515119c430c9e9dda7853b5507fbfcdfcfd96143f11365efb030d6e126fefb27d90cb810dc6d7d813c6ae8db0ab498a7df49b8955f0ab4adcf035d7486ba2b5c67a1517ecd6d99e5ea5ec3942924f71fecd98d05f401e967531", "blockNumber": 2, - "body": "0x000000040020f55d81e09dca118c9af46322c8b2fc66f327e6b013d399a30694648aead10c0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e080057602f85fdccac3117547ae1e9feedac263299a34f02b19ca229f6c203209000400355a496b2961dd5954f30f214fa0c5b7b9c4598ccc7882a3fc69dec50bb005c04946202e37fca2fa0bd7d0504c730ac1a707a410c0ed70bd65ad2adb15100dfea6f9eee8d32378436d7ca9e4dda0d48a5ccfb1c6f8ddec286fdf0cb9c81004f5ae4240cb04e72cf44cddb835bc0b5e7f100c01dc3f6678f979e27f19ede00f8ff8aa1edd0f0237d277f829b0847f656ee797c3adf2e7b1074d36f3f63ad00c90a15e3b4697bc2b603d24b615ed869c0f2b61ec8d8e316351996854246b600f24c2cff7402d9d57bd2791337df5a65f0b2f59a4ce3255d94c35f7cf13374400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000012000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000001200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000120000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000012000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000001200000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000120000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000012000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000001200000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000120000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a00000012000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b00000012000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c00000012000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d00000012000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e00000012000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000012000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000120000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000012000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000001200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000012000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000001200000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000120000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000012000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000001200000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000120000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a00000012000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b00000012000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c00000012000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d00000012000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e00000012000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000012000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000120000001b4c93b36a06d49db52279b789dd5cc4a2c0cb0526487cc49fb2d6328ff99e640000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e08001311d7be859fe766205679180604a937a8d4bd870d6d12edb2db749345b51c006a36f23a5cb4d19f855238d418170e140300192ead60f7ab35312e9c2513b800b26b2c0e63909e88d537840ceb7fc2e3ba764efc546dcccf0fe4c2cfd28c7100025242c4a697eccd73273bf6c4d1b5821c7dcf22789c590b7295100d20ccde00ef98046ac0b4095051c64b82fd69d051a08c3ac20e073f5656e3057b3eccbe00daa2f457ab065009361f9276765fa37f21053db780ce11b9a363dabfc735cf00443966d01fe9717b46d36f729e652c2657e2e7d56d5117ef966cfbd3add32e00ee29f87f39ab1c4c1201bdd331fa5a9a254a1030c1cbdbf6ee82d3fce25c2a400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000012000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000001200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000120000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000012000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000001200000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000120000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000012000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000001200000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000120000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a00000012000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b00000012000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c00000012000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d00000012000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e00000012000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000012000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000120000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000012000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000001200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000012000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000001200000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000120000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000012000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000001200000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000120000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a00000012000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b00000012000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c00000012000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d00000012000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e00000012000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f00000012000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018173000000012000000292d4a3247f3730dbde521a734950f8ba2747e95da5f80f07fb6abef1074bb9900000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e080032724de1d6ec869c131859afe6fd33f6f9671c22cb571cc5e694deb1866ccc00b42f417479d2716d26461d44cec542d856294c55df755cbaafb6d731d0102c000a929c0dc3f37349c75878e678bb82cd3f2ada39b278bb841812ec290aca3b00dfbe7d369fe3222f98c449724614c53b1fe2cab20e0ef5b32fa5e3a16756a500790e7c8e3dfe2b8148b0f8c85f89cab718bd1704af7413f510f6697c4baa3100a77eca326aa2a2c4b2c9ec7c2af94aa5f89ed7f5adda05b2c9312adfafac48005b58ed9e335da74a33db99830d12be3dc16a1515dc5538f2337167b9fe6c79007e2c83d687b981fe73fce5ea00b64d859548997e68c1d97ad7bbb62cc56b014000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c17110000001200000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c17120000001200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c17130000001200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c17140000001200000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c17150000001200000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c17160000001200000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c17170000001200000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c17180000001200000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c17190000001200000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a0000001200000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b0000001200000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c0000001200000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d0000001200000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e0000001200000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f0000001200000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c17200000001200000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c17210000001200000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c17220000001200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c17230000001200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c17240000001200000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c17250000001200000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c17260000001200000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c17270000001200000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c17280000001200000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c17290000001200000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a0000001200000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b0000001200000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c0000001200000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d0000001200000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e0000001200000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f0000001200000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c1730000000120000000b7eb630f7d721ca0bdd136ea88160e242ff810adab95ad8bc7e3437486f68880000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e08007028edb640521e1ff4bad393203e4295b7a3d56e56bb1f521e5c4e9b4005300036797701c3aaf3565c51441e1e5380670d18b202fe37553ecabfe7dc0b8f83009f8a18280b8f8a6ade36f92424bb3832d4a5f781a599db2443d893e9f6ade900b6f46198c6138158211376e12e634fe8277e87890072320d1cc11b9212526e007c1fd1abdb6e87968aa2bccf1a4ac7c7784a416ec5e3279f1c16c81b04f59300d54f3523d1db359f5666c0dd5d7fa65ff4d5a07a83e23899f327c34d872dc8006ad2dc7beeefd5dd6b474b723b971e2d0f5cf6a9b109b56480319d5afdd44e001b0acdd069674a0168231de30523bff9854818cd631fdd1c90622117acf7f8400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000012000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000001200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000120000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000012000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000001200000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000120000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000012000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000001200000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000120000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a00000012000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b00000012000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c00000012000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d00000012000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e00000012000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000012000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000120000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000012000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000001200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000012000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000001200000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000120000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000012000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000001200000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000120000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a00000012000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b00000012000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c00000012000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d00000012000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e00000012000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000012000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f0000000000000000000000000000000000000000000000000000000000201730000000120000", + "body": "0x000000040000ec322d4567b7414d8391743d51c83038c324c81cbe3ec32b12248c0455b9220000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e080057602f85fdccac3117547ae1e9feedac263299a34f02b19ca229f6c203209000400355a496b2961dd5954f30f214fa0c5b7b9c4598ccc7882a3fc69dec50bb005c04946202e37fca2fa0bd7d0504c730ac1a707a410c0ed70bd65ad2adb15100dfea6f9eee8d32378436d7ca9e4dda0d48a5ccfb1c6f8ddec286fdf0cb9c81004f5ae4240cb04e72cf44cddb835bc0b5e7f100c01dc3f6678f979e27f19ede00f8ff8aa1edd0f0237d277f829b0847f656ee797c3adf2e7b1074d36f3f63ad00c90a15e3b4697bc2b603d24b615ed869c0f2b61ec8d8e316351996854246b600f24c2cff7402d9d57bd2791337df5a65f0b2f59a4ce3255d94c35f7cf13374400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000012000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000001200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000120000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000012000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000001200000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000120000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000012000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000001200000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000120000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a00000012000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b00000012000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c00000012000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d00000012000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e00000012000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000012000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000120000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000012000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000001200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000012000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000001200000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000120000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000012000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000001200000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000120000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a00000012000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b00000012000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c00000012000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d00000012000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e00000012000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000012000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000000000000000000000000000000000000000000000000000000001417300000001200000001ff1e290a773caaee40a4743929de90ac1bb3a69b7cc1d1cb685b65084fe6330000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e08001311d7be859fe766205679180604a937a8d4bd870d6d12edb2db749345b51c006a36f23a5cb4d19f855238d418170e140300192ead60f7ab35312e9c2513b800b26b2c0e63909e88d537840ceb7fc2e3ba764efc546dcccf0fe4c2cfd28c7100025242c4a697eccd73273bf6c4d1b5821c7dcf22789c590b7295100d20ccde00ef98046ac0b4095051c64b82fd69d051a08c3ac20e073f5656e3057b3eccbe00daa2f457ab065009361f9276765fa37f21053db780ce11b9a363dabfc735cf00443966d01fe9717b46d36f729e652c2657e2e7d56d5117ef966cfbd3add32e00ee29f87f39ab1c4c1201bdd331fa5a9a254a1030c1cbdbf6ee82d3fce25c2a400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000012000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000001200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000120000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000012000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000001200000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000120000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000012000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000001200000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000120000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a00000012000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b00000012000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c00000012000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d00000012000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e00000012000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000012000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000120000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000012000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000001200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000012000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000001200000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000120000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000012000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000001200000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000120000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a00000012000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b00000012000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c00000012000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d00000012000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e00000012000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f00000012000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f00000000000000000000000000000000000000000000000000000000001817300000001200000020ab5bb6b1891b86f062364ea293efab643f54f8be3fc17e33c6fd57d1c0906300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e080032724de1d6ec869c131859afe6fd33f6f9671c22cb571cc5e694deb1866ccc00b42f417479d2716d26461d44cec542d856294c55df755cbaafb6d731d0102c000a929c0dc3f37349c75878e678bb82cd3f2ada39b278bb841812ec290aca3b00dfbe7d369fe3222f98c449724614c53b1fe2cab20e0ef5b32fa5e3a16756a500790e7c8e3dfe2b8148b0f8c85f89cab718bd1704af7413f510f6697c4baa3100a77eca326aa2a2c4b2c9ec7c2af94aa5f89ed7f5adda05b2c9312adfafac48005b58ed9e335da74a33db99830d12be3dc16a1515dc5538f2337167b9fe6c79007e2c83d687b981fe73fce5ea00b64d859548997e68c1d97ad7bbb62cc56b014000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c17110000001200000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c17120000001200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c17130000001200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c17140000001200000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c17150000001200000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c17160000001200000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c17170000001200000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c17180000001200000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c17190000001200000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a0000001200000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b0000001200000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c0000001200000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d0000001200000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e0000001200000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f0000001200000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c17200000001200000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c17210000001200000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c17220000001200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c17230000001200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c17240000001200000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c17250000001200000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c17260000001200000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c17270000001200000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c17280000001200000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c17290000001200000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a0000001200000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b0000001200000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c0000001200000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d0000001200000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e0000001200000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f0000001200000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c17300000001200000008d55ca3d2ebde27e4accc97be8a8a506aae731f78d5ad2276be2cb27a1f96850000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e08007028edb640521e1ff4bad393203e4295b7a3d56e56bb1f521e5c4e9b4005300036797701c3aaf3565c51441e1e5380670d18b202fe37553ecabfe7dc0b8f83009f8a18280b8f8a6ade36f92424bb3832d4a5f781a599db2443d893e9f6ade900b6f46198c6138158211376e12e634fe8277e87890072320d1cc11b9212526e007c1fd1abdb6e87968aa2bccf1a4ac7c7784a416ec5e3279f1c16c81b04f59300d54f3523d1db359f5666c0dd5d7fa65ff4d5a07a83e23899f327c34d872dc8006ad2dc7beeefd5dd6b474b723b971e2d0f5cf6a9b109b56480319d5afdd44e001b0acdd069674a0168231de30523bff9854818cd631fdd1c90622117acf7f8400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000012000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000001200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000120000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000012000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000001200000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000120000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000012000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000001200000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000120000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a00000012000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b00000012000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c00000012000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d00000012000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e00000012000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000012000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000120000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000012000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000001200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000012000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000001200000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000120000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000012000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000001200000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000120000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a00000012000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b00000012000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c00000012000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d00000012000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e00000012000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000012000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f0000000000000000000000000000000000000000000000000000000000201730000000120000", "header": { - "lastArchiveRoot": "0x2b42d331e40b26fc7dcf989e21948292081f105628f84c58212de3685b993c2f", + "lastArchiveRoot": "0x2b0c8a333c99eca635086720b2ca9bc70c334a524ba19f9a1f01fb96f936c1b9", "contentCommitment": { - "blobsHash": "0x00c5f9e4fa4915b81f8c809c40752e5fbd7dbaee84b1eead585b80ad54d84294", - "inHash": "0x0033eec717ef560e2c2c0f8f651246ee98d1a294ac379667a5b9857c2ed1f888", + "blobsHash": "0x008d9a8056b7f325a63bfcbfa08aee7353e4535c7402927ee1cf4573b1bcd451", + "inHash": "0x0063a7398a0929db92549bc4808e3cc7790fb7b63e88d6f3becad01243bb5e53", "outHash": "0x00a0e3c0aef9ca2096edfe9ab8e9098092a6e933d45061a842b50c2714375303", "numTxs": 4 }, "slotNumber": 76, - "timestamp": 1749244654, - "coinbase": "0x0bcc885cd394d94215992db4624d3a75638461e1", - "feeRecipient": "0x2021312e19a9e4ede6b202b401250c69d73e9ef5c5a2ef18821419ad6a2ce4d4", + "timestamp": 1749481439, + "coinbase": "0x769373b721c3251e7b47ba77d712f3dea99dfad0", + "feeRecipient": "0x1e672bceeebd7854d31b190885ee3fbd2b8e69213d3c0d6f474c21c45a0666d0", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 1020 }, "totalManaUsed": 0 }, - "headerHash": "0x00b22b5b2aa077b6a10c1bca90c1a6b7f6dbd809dd561175305a8f3d1c975297", + "headerHash": "0x002094204159112ba2b29648057a4abfdc5850c6530d929764fc1d1c779666d3", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_1.json b/l1-contracts/test/fixtures/single_tx_block_1.json index 4a46b5b225eb..8f677647f6f5 100644 --- a/l1-contracts/test/fixtures/single_tx_block_1.json +++ b/l1-contracts/test/fixtures/single_tx_block_1.json @@ -34,29 +34,30 @@ ] }, "block": { - "archive": "0x2ee8022543959bb656ea622794f3a1071baef72db38510c05ede11cc09f9e3fc", - "blobInputs": "0x010148e2492594d62e5e3aac530f278240dcbe847e2a6942d035a8582efeeb81110272199204879926866d813fb428aa55d6c0317d6c8291380e78c4d3334c59040ca3a007bc234f03988dc8834ff7d547f58952655b1c213b6477e1cbc0dae5c799e8fef2832c3c2286fe0c244b3cbc8a814ff42ea9ab6ff980a5d3bfcc9166e936fd5ec1f53264c1dd5f77ab5e040db8800b833219e1177331af0f3651803830314dc0aa547c161e71e0fb5f81ea9a38a1075c825166aba2cd6c3ebc38e78979", + "archive": "0x2ef1f7be868694b0cf78c9a3d63a17e4d6b034223c02c5d2ea1079e3cd5db871", + "blobCommitments": "0x01a844c7769d3c4dcda0d7a42e6da0487957c17cb6d8b120f0450753b1145e9c346e0f523fc0f80dd7cd4a3747510cc5b7", + "batchedBlobInputs": "0x01b8e0f7347c1ac5af365c4c857abf34c0cb681183f82b64d809044bd3360b152727407400b409bbac68d94c0eb4e2274c6cf0bfee54632615534c69715da3ba6c89d0f851291bfa047a001de80020616fde13c368a25ba9ba902591f8f049fba844c7769d3c4dcda0d7a42e6da0487957c17cb6d8b120f0450753b1145e9c346e0f523fc0f80dd7cd4a3747510cc5b7981f2789dea99948db23531cdb70c451cfd7219be868fabc9813c13fc6cbb1207cee9f9a26f74b5fa4117cebc7ba98e8", "blockNumber": 1, - "body": "0x00000001001427a4f929f7a4ae1f8112d9b582c0aa4276b9c74b6031a8081622b5569a79c80000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e08004b8b814288544866292d9d0e66869207628fb0ef8120c59ec1d969a085d5d50075c5d0fc08d5578600928d2fc6cd1e63a2b87266a45558135a2912c5a7d6e60019574cfd6834b8c08012b12c6b178d65c27335e1001c1337996f4f460c2cf1000624d1d08e5c487711876584ae580b46b81854bc8e45e42e822ef18df136ff00b78383bdbff11e85552243f1429b8d83334d734dc92e1062b8a04371de5f88005b33017fa3cd1861669d2fd5621ba61db7a72646a9b459897a55780eeeb64e00a1d3d6c8bc4848ef2e4d256253773447d1b39deedd2d70248a2160c765afc200e1d211a34da229f26780fc7baa5a6ca0a35b7e0fea52ea082e35cd064db33d400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000012000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000001200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000120000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000012000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000001200000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000120000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000012000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000001200000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000120000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a00000012000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b00000012000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c00000012000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d00000012000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e00000012000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000012000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000120000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000012000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000001200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000012000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000001200000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000120000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000012000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000001200000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000120000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a00000012000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b00000012000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c00000012000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d00000012000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e00000012000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000012000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f0000000000000000000000000000000000000000000000000000000000041730000000120000", + "body": "0x00000001002fe000922377ecd325d4c3900246f25150275d04aa5621883d153bf428b9c71f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e08004b8b814288544866292d9d0e66869207628fb0ef8120c59ec1d969a085d5d50075c5d0fc08d5578600928d2fc6cd1e63a2b87266a45558135a2912c5a7d6e60019574cfd6834b8c08012b12c6b178d65c27335e1001c1337996f4f460c2cf1000624d1d08e5c487711876584ae580b46b81854bc8e45e42e822ef18df136ff00b78383bdbff11e85552243f1429b8d83334d734dc92e1062b8a04371de5f88005b33017fa3cd1861669d2fd5621ba61db7a72646a9b459897a55780eeeb64e00a1d3d6c8bc4848ef2e4d256253773447d1b39deedd2d70248a2160c765afc200e1d211a34da229f26780fc7baa5a6ca0a35b7e0fea52ea082e35cd064db33d400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000012000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000001200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000120000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000012000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000001200000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000120000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000012000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000001200000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000120000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a00000012000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b00000012000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c00000012000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d00000012000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e00000012000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000012000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000120000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000012000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000001200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000012000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000001200000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000120000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000012000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000001200000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000120000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a00000012000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b00000012000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c00000012000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d00000012000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e00000012000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000012000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f0000000000000000000000000000000000000000000000000000000000041730000000120000", "header": { "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x0060594a9aeb7e2b5b33996d75accef083c423ba69d1cfca3b9a468930260269", + "blobsHash": "0x0093d27f1dde2beb0433c8baba328600510115bcbf8967c65d2e60c8250ea97b", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x00acc57711ce750ff9b2cfa69050883a7b23bf59d2ccf3cfc9bbff4e93a85a8f", "numTxs": 1 }, "slotNumber": 70, - "timestamp": 1749241438, - "coinbase": "0xa3795f9f348962353ebc389deda960e5895f0317", - "feeRecipient": "0x137e10e81328977edf6a03ceb2aee4a420eee4efb8c4e207165bc02be4b8a974", + "timestamp": 1749478223, + "coinbase": "0xd16c29e5c60d16b4d962810487236b6f48ad3ae2", + "feeRecipient": "0x05400e781f4436d55eac2649f1e106a24506b8f83fcee1a38b3dabd811510197", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 1030 }, "totalManaUsed": 0 }, - "headerHash": "0x00301e2c22ec558bf5c18d25382cf6c62b503224d85a1e6344e30c5507ccc1d3", + "headerHash": "0x00cb0636d40d4cb18865751c5d31a8852fc048b7073fbbcee5549bcf2d6ff05f", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_2.json b/l1-contracts/test/fixtures/single_tx_block_2.json index 37c3563b16b9..103642301b86 100644 --- a/l1-contracts/test/fixtures/single_tx_block_2.json +++ b/l1-contracts/test/fixtures/single_tx_block_2.json @@ -34,29 +34,30 @@ ] }, "block": { - "archive": "0x0a5afdc4379827f91ead51e5e785b13740c5dde8448efd6cf5a5b419e484b26c", - "blobInputs": "0x0101a39b96ca3406af983a1d892707d17b5fc7d71e363f17a62102114b29593246018c05d5e17d406b630957e76d09f357a4e9e5138d976f2d0745208c4e51148257bd9c7bb4bb511dea77b252dab65a0996bc697600e925e6f80f8eb69a06595b93688534f277806b3d6f8ea3626d7b03914b955a7114eee29ba9aea5d20f10138668993cd5d5ecc684538ca7ca25cf0ab37f5def8b1c0bdacae83bf5ed312eeb81afabf11301d4549621ef57442f70d1e9fd3758ad4242555190b6fac6cc5465", + "archive": "0x07476edb31ff168198d922f6f3f829f492c0c6cb6d7399a2cc6be450146578bc", + "blobCommitments": "0x018899f86e4d864cf62f322cd1ba80b6b6b6a20abaed9d5002bb98468dd080c5b4490a349d7cd4b3f52f1d04b70744b5ed", + "batchedBlobInputs": "0x01100b03af11057193bab924a212961cc7f99c00eba06f5991be3bb7f0e1f9cb1a90d63442ccb4a553f0dc87ab39a24720dca09ae1db50c67702cc2e03deb9013020bfc82931e4e0fe86ccda9d1cbda59efa82fa438d35eca35156dc6a0d507a845bb88dc8cc85478d3da44f1718367169164cd4572087dd17b5b38c5da6c1eedbf925473e8d58c09925e16478b9f40490b3104700f754e8144b48aac099bb48e116584a0ef06104c4cbfa26a1b6eb189cd10551f0a9e5e894945d49719c751b", "blockNumber": 2, - "body": "0x0000000100089f1eba510fbe4e282479847f877d0ee9a8d57a7f48a3611e2bd6629d85eb160000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e080057602f85fdccac3117547ae1e9feedac263299a34f02b19ca229f6c203209000400355a496b2961dd5954f30f214fa0c5b7b9c4598ccc7882a3fc69dec50bb005c04946202e37fca2fa0bd7d0504c730ac1a707a410c0ed70bd65ad2adb15100dfea6f9eee8d32378436d7ca9e4dda0d48a5ccfb1c6f8ddec286fdf0cb9c81004f5ae4240cb04e72cf44cddb835bc0b5e7f100c01dc3f6678f979e27f19ede00f8ff8aa1edd0f0237d277f829b0847f656ee797c3adf2e7b1074d36f3f63ad00c90a15e3b4697bc2b603d24b615ed869c0f2b61ec8d8e316351996854246b600f24c2cff7402d9d57bd2791337df5a65f0b2f59a4ce3255d94c35f7cf13374400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000012000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000001200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000120000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000012000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000001200000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000120000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000012000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000001200000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000120000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a00000012000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b00000012000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c00000012000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d00000012000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e00000012000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000012000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000120000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000012000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000001200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000012000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000001200000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000120000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000012000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000001200000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000120000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a00000012000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b00000012000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c00000012000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d00000012000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e00000012000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000012000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000120000", + "body": "0x00000001001b7e11ab25a2097ab25ce8d578449e3860cb30c9989236f000377bd6395264df0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e080057602f85fdccac3117547ae1e9feedac263299a34f02b19ca229f6c203209000400355a496b2961dd5954f30f214fa0c5b7b9c4598ccc7882a3fc69dec50bb005c04946202e37fca2fa0bd7d0504c730ac1a707a410c0ed70bd65ad2adb15100dfea6f9eee8d32378436d7ca9e4dda0d48a5ccfb1c6f8ddec286fdf0cb9c81004f5ae4240cb04e72cf44cddb835bc0b5e7f100c01dc3f6678f979e27f19ede00f8ff8aa1edd0f0237d277f829b0847f656ee797c3adf2e7b1074d36f3f63ad00c90a15e3b4697bc2b603d24b615ed869c0f2b61ec8d8e316351996854246b600f24c2cff7402d9d57bd2791337df5a65f0b2f59a4ce3255d94c35f7cf13374400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000012000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000001200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000120000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000012000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000001200000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000120000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000012000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000001200000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000120000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a00000012000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b00000012000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c00000012000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d00000012000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e00000012000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000012000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000120000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000012000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000001200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000012000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000001200000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000120000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000012000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000001200000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000120000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a00000012000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b00000012000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c00000012000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d00000012000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e00000012000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000012000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000120000", "header": { - "lastArchiveRoot": "0x2ee8022543959bb656ea622794f3a1071baef72db38510c05ede11cc09f9e3fc", + "lastArchiveRoot": "0x2ef1f7be868694b0cf78c9a3d63a17e4d6b034223c02c5d2ea1079e3cd5db871", "contentCommitment": { - "blobsHash": "0x0071d09a07af121b6dec4229460d5090ac6d0e1777403af29f6c67b1f8a5f90d", - "inHash": "0x005b407b142a8f9b537eb840a6019fd94b4615a747683fb3f8915cb81c39eb78", + "blobsHash": "0x00e79718fb6ebe16b2a21b648d9ec603810eba19f1fb10314dc17125b0e9e83d", + "inHash": "0x005c1a941e9aa1f96fb91a95eccaf1d0b2ea627507ef97f98fad4fc5169f07d2", "outHash": "0x0069c807d82366cd295b261cdb94fc01dc4487b2cd2ae873b18ffb8be4f297ed", "numTxs": 1 }, "slotNumber": 76, - "timestamp": 1749241654, - "coinbase": "0xa3795f9f348962353ebc389deda960e5895f0317", - "feeRecipient": "0x137e10e81328977edf6a03ceb2aee4a420eee4efb8c4e207165bc02be4b8a974", + "timestamp": 1749478439, + "coinbase": "0xd16c29e5c60d16b4d962810487236b6f48ad3ae2", + "feeRecipient": "0x05400e781f4436d55eac2649f1e106a24506b8f83fcee1a38b3dabd811510197", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 1020 }, "totalManaUsed": 0 }, - "headerHash": "0x0022ae715778471fe9b678f4938379ccf60672c70e82becf9ee29f72254b4919", + "headerHash": "0x00d304b115e67c5091445bd1dd33d5976b0ab6f86752c4dfa43560e56e449362", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol index aab6b73ea915..7cd9e8b9e17c 100644 --- a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol +++ b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol @@ -434,7 +434,7 @@ contract ValidatorSelectionTest is ValidatorSelectionTestBase { emit log("Time to propose"); vm.prank(ree.proposer); - rollup.propose(args, attestations, full.block.blobInputs); + rollup.propose(args, attestations, full.block.blobCommitments); if (ree.shouldRevert) { return; @@ -451,7 +451,7 @@ contract ValidatorSelectionTest is ValidatorSelectionTestBase { ); ree.shouldRevert = true; } - rollup.propose(args, attestations, full.block.blobInputs); + rollup.propose(args, attestations, full.block.blobCommitments); } assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation"); diff --git a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml index b0e722476733..4f60115e56fe 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml @@ -6,5 +6,6 @@ compiler_version = ">=0.30.0" [dependencies] bigint = { tag = "v0.7.3", git = "https://github.com/noir-lang/noir-bignum" } +bigcurve = { tag = "mw/bump", git = "https://github.com/noir-lang/noir_bigcurve" } types = { path = "../types" } poseidon = { tag = "v0.1.1", git = "https://github.com/noir-lang/poseidon" } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index 42879efe2a52..66ba3b361bf9 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -13,7 +13,10 @@ use types::{ utils::arrays::array_splice, }; -fn convert_blob_fields(blob_as_fields: [Field; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { +// TODO(MW): remove pub when fully moved to batching +pub(crate) fn convert_blob_fields( + blob_as_fields: [Field; FIELDS_PER_BLOB], +) -> [F; FIELDS_PER_BLOB] { let mut blob: [F; FIELDS_PER_BLOB] = [F::zero(); FIELDS_PER_BLOB]; for i in 0..FIELDS_PER_BLOB { blob[i] = F::from(blob_as_fields[i]); @@ -42,7 +45,11 @@ pub fn check_block_blob_sponge( sponge_hash } -fn compute_challenge(hashed_blobs_fields: Field, kzg_commitment: BlobCommitment) -> Field { +// TODO(MW): remove pub when fully moved to batching +pub(crate) fn compute_challenge( + hashed_blobs_fields: Field, + kzg_commitment: BlobCommitment, +) -> Field { let preimage = [hashed_blobs_fields, kzg_commitment.inner[0], kzg_commitment.inner[1]]; let challenge = poseidon::poseidon2::Poseidon2::hash(preimage, 3); challenge @@ -52,7 +59,8 @@ fn compute_challenge(hashed_blobs_fields: Field, kzg_commitment: BlobCommitment) // we don't actually need to operate on it so we've simply encoded it as fitting inside a // [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. // See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() for encoding -fn evaluate_blob( +// TODO(MW): remove pub when fully moved to batching +pub(crate) fn evaluate_blob( blob_as_fields: [Field; FIELDS_PER_BLOB], kzg_commitment: BlobCommitment, hashed_blobs_fields: Field, @@ -112,8 +120,9 @@ pub fn evaluate_blobs( * @param ys - the many y_i's of the blob. * * @return y = p(z) + * TODO(MW): remove pub when fully moved to batching */ -fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { +pub(crate) fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // Note: it's more efficient (saving 30k constraints) to compute: // ___d-1 // \ / y_i \ diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching.nr new file mode 100644 index 000000000000..edcb6f396339 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching.nr @@ -0,0 +1,312 @@ +use crate::{ + blob::{ + barycentric_evaluate_blob_at_z, check_block_blob_sponge, compute_challenge, + convert_blob_fields, + }, + blob_batching_public_inputs::{ + BatchingBlobCommitment, BlobAccumulationInputs, BlobAccumulatorPublicInputs, BLSPoint, + compress_to_blob_commitment, FinalBlobBatchingChallenges, + }, + blob_public_inputs::BlobCommitment, +}; +use bigint::{BigNum, BLS12_381_Fr as F}; +use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + traits::is_empty, + utils::arrays::array_splice, +}; + +// Evaluates a single blob: +// - Evaluates the blob at shared challenge z and returns result y_i +// - Calculates this blob's challenge z_i (= H(H(blob_i), C_i)), where C_i = kzg_commitment, and blob_i = blob_as_fields[i]. +fn evaluate_blob_for_batching( + blob_as_fields: [Field; FIELDS_PER_BLOB], + kzg_commitment: BatchingBlobCommitment, + hashed_blobs_fields: Field, + challenge_z: Field, +) -> (Field, F) { + let challenge_z_as_bignum = F::from(challenge_z); + let blob = convert_blob_fields(blob_as_fields); + + let y_i: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); + let z_i: Field = compute_challenge( + hashed_blobs_fields, + // TODO(MW): At some point BatchingBlobCommitment will replace BlobCommitment and we won't need this silly conversion + BlobCommitment { inner: kzg_commitment.to_compressed_fields() }, + ); + + (z_i, y_i) +} + +// Evaluates each blob required for a block: +// - Hashes all fields in the block's blobs (to use for the challenges z_i) +// - Compresses each of the blob's injected commitments (") +// - Evaluates each blob individually to find its challenge z_i & evaluation y_i +// - Updates the batched blob accumulator +pub fn evaluate_blobs_and_batch( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + kzg_commitments_points: [BLSPoint; BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, + final_blob_challenges: FinalBlobBatchingChallenges, + start_accumulator: BlobAccumulatorPublicInputs, +) -> BlobAccumulatorPublicInputs { + // See components.nr out_sponge definition as to why we copy here: + let mut end_accumulator = start_accumulator; + // Note that with multiple blobs per block, each blob uses the same hashed_blobs_fields in: + // z_i = H(hashed_blobs_fields, kzg_commitment[0], kzg_commitment[1]) + // This is ok, because each commitment is unique to the blob, and we need hashed_blobs_fields to encompass + // all fields in the blob, which it does. + let hashed_blobs_fields = check_block_blob_sponge(blobs_as_fields, sponge_blob); + for i in 0..BLOBS_PER_BLOCK { + let single_blob_fields = array_splice(blobs_as_fields, i * FIELDS_PER_BLOB); + let c_i = compress_to_blob_commitment(kzg_commitments_points[i]); + let (z_i, y_i) = evaluate_blob_for_batching( + single_blob_fields, + c_i, + hashed_blobs_fields, + final_blob_challenges.z, + ); + // TODO(#14646): If the evaluation being zero is sufficient to say the blob i is empty, remove the range check. + // The range check exists because we cannot use c_i (it's injected and L1 relies on this circuit to check whether the blob is + // empty for c_i = O) or z_i (z_i relies on the hashed_blobs_fields, which is the hash of the items in ALL block blobs, not just i). + let is_empty_blob = sponge_blob.fields <= i * FIELDS_PER_BLOB; + if (!y_i.is_zero()) & (!is_empty_blob) { + // Only accumulate if the blob is non empty + if (is_empty(end_accumulator)) & (i == 0) { + // Init only if accumulator is empty: + // - This will be checked in root, where the left input's start acc will be constrained to be zero + // - No other accs can be zero since each block_merge checks left's end acc == right's start acc + // This can only happen at blob i = 0 for the first block of the epoch. Note: i == 0 was only added above in the hope + // that noir would be able to optimise out init gates for i > 0! + end_accumulator = BlobAccumulatorPublicInputs::init( + BlobAccumulationInputs { z_i, y_i, c_i }, + final_blob_challenges.gamma, + ); + } else { + end_accumulator = end_accumulator.accumulate( + BlobAccumulationInputs { z_i, y_i, c_i }, + final_blob_challenges.gamma, + ); + } + } + } + end_accumulator +} + +mod tests { + use crate::{ + blob_batching::evaluate_blobs_and_batch, + blob_batching_public_inputs::{ + BatchingBlobCommitment, BlobAccumulatorPublicInputs, compress_to_blob_commitment, + }, + }; + use crate::blob_batching_public_inputs::FinalBlobBatchingChallenges; + use bigcurve::{BigCurveTrait, curves::bls12_381::BLS12_381 as BLSPoint}; + use bigint::{BigNum, BLS12_381_Fr as F}; + use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + hash::sha256_to_field, + tests::utils::pad_end, + traits::Empty, + }; + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob_batching.test.ts -> 'should construct and verify a batched blob of 400 items' + #[test] + unconstrained fn test_400_batched() { + // We evaluate 1 blob of 400 items using the batch methods. + // This ensures a block with a single blob will work: + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + for i in 0..400 { + blob[i] = 3; + } + let mut sponge_blob = SpongeBlob::new(400); + sponge_blob.absorb(blob, 400); + let kzg_commitment_in = BatchingBlobCommitment::from_limbs( + [ + 0xa971c7e8d8292be943d05bccebcfea, + 0xcddefc3721a54895a7a45e77504dd1, + 0x5fe972914ba3616033e2748bbaa6db, + 0x12803d, + ], + [ + 0x71bde5210b6cae1530202c8a928127, + 0x5e7d987fb4afc5bcee960c6fc0628c, + 0x64801e9aff2901eb6916e65c51f280, + 0x1996ca, + ], + ) + .point; + let kzg_commitments_in = + [kzg_commitment_in, BLSPoint::point_at_infinity(), BLSPoint::point_at_infinity()]; + + let final_challenges = FinalBlobBatchingChallenges { + // = z_0 + z: 0x135d767e8b86b949d264be7a6b71d257c538893f3cef60c95d76ba420df18c3c, + // = H(y_0, z_0) + gamma: F::from_limbs([ + 0xda0ebb0c577c62d5954852cf7a8863, + 0xaac05db8dabf148f011d29f2d308e4, + 0x0b28, + ]), + }; + // Evaluation + let res = evaluate_blobs_and_batch( + pad_end(blob, 0), + kzg_commitments_in, + sponge_blob, + final_challenges, + BlobAccumulatorPublicInputs::empty(), + ); + let final_acc = res.finalize_and_validate(final_challenges); + + assert_eq(final_acc.z, final_challenges.z); + // Since i = 1, gamma_pow = gamma^1 = gamma: + assert_eq(res.gamma_pow_acc, final_challenges.gamma); + + // y is a BLS field with value 0x212c4f0c0ee5e7dd037110686a4639d191dde7b57ab99b51e4b06e7d827b6c4c + let expected_y: F = F::from_limbs([ + 0xdde7b57ab99b51e4b06e7d827b6c4c, + 0x4f0c0ee5e7dd037110686a4639d191, + 0x212c, + ]); + assert_eq(final_acc.y, expected_y); + + let blob_commitment = compress_to_blob_commitment(kzg_commitments_in[0]); + + // Since i = 1, blob_commitments_hash is just the sha256 hash of the single (compressed) commitment + let expected_blob_commitments_hash = sha256_to_field(blob_commitment.compressed); + assert_eq(final_acc.blob_commitments_hash, expected_blob_commitments_hash); + + // Since i = 1, C = gamma^0 * C_0 = C_0 + assert_eq(final_acc.c, blob_commitment.to_compressed_fields()); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob_batching.test.ts -> 'should construct and verify a batch of 3 full blobs' + #[test] + unconstrained fn test_full_blobs_batched() { + // Fill three blobs completely with different values (to avoid a constant polynomial) + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + for j in 0..BLOBS_PER_BLOCK { + for i in 0..FIELDS_PER_BLOB { + blob[j * FIELDS_PER_BLOB + i] = ((j + 3) * (i + 1)) as Field; + } + } + // Absorb the values into a sponge + let mut sponge_blob = SpongeBlob::new(FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + sponge_blob.absorb(blob, FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + // Init. injected values: + // - Commitments are injected and checked for correctness on L1 via acc.v + let kzg_commitments_in = [ + BatchingBlobCommitment::from_limbs( + [ + 0x2627fc88755984d7f002e5ef0e6b3e, + 0x0ea98f6a26672e17f919eb020b00ee, + 0xea6e5173f2ef1bedbb07bfa9ac6ed8, + 0x01c6e6, + ], + [ + 0xaa96f04ba1d419683f218cc4f15a3f, + 0x8887c5e719583b765309e4b3d18752, + 0x9ff512de37b8582f7167fdfbb29539, + 0x18f531, + ], + ) + .point, + BatchingBlobCommitment::from_limbs( + [ + 0x71556bb7217816fbb3f822fc873740, + 0x9c57d93d7fd33a388e13e95cfdba95, + 0x4f0ddbdc9d6a3653cd825ebd9f5730, + 0x12324e, + ], + [ + 0xabf9f60fc773ef1802a706d6b170a4, + 0x788f9000166d54151ac05df44e63be, + 0x0a8b45ead129885bb12837fb59033b, + 0x12aadd, + ], + ) + .point, + BatchingBlobCommitment::from_limbs( + [ + 0x69afb94a09e713e7fb94e26f33c3ed, + 0x8161293f65480c3b7bad57aaef1984, + 0xc34d68dc32d1ecd46f46ec4c969bb1, + 0x0d97ef, + ], + [ + 0x9837a79d9fa4d0370198419b273360, + 0x9e7340f07732e2cb3d51db22b1dcb3, + 0x8285e8cad42f634bb51ad7d2c68a12, + 0x07db3c, + ], + ) + .point, + ]; + + let final_challenges = FinalBlobBatchingChallenges { + // - The final z value is injected and checked for correctness in root (see below final_acc) + z: 0x02d6a54e591ada73e5eea35188a02ac87779f4293ea3e7d675fa50ae7ff332ce, + // - The final gamma value is injected and checked for correctness in root (see below final_acc) + gamma: F::from_limbs([ + 0x281287a8d44071d216177e06a02327, + 0x16571aa3dcfef75c2447c705c6c68a, + 0x16f2, + ]), + }; + // Init. the accumulator + let start_acc = BlobAccumulatorPublicInputs::empty(); + // Evaluate all three blobs and iteratively accumulate the results + let output = evaluate_blobs_and_batch( + blob, + kzg_commitments_in, + sponge_blob, + final_challenges, + start_acc, + ); + // Finalize the output (actually done in the root circuit) + let final_acc = output.finalize_and_validate(final_challenges); + + assert_eq(final_acc.z, final_challenges.z); + assert_eq( + output.gamma_pow_acc, + final_challenges.gamma.__pow(F::from(BLOBS_PER_BLOCK as Field)), + ); + + // y is a BLS Fr field with value 0x0cd2fd9a46ba70fd7f212d08ec7283024b0b1ff9446b1f78a482fb7443e49b57 + let expected_y = F::from_limbs([ + 0x0b1ff9446b1f78a482fb7443e49b57, + 0xfd9a46ba70fd7f212d08ec7283024b, + 0x0cd2, + ]); + + // C is a BLS point with value: + // x: 0x0f2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93e, + // y: 0x0af1e4abfa449daf65201c2b24507b1058d8ea9bf82ff948a1d01912615c4a8e507160da282e6c41bab917c868923254, + let expected_c = BatchingBlobCommitment::from_limbs( + [ + 0x2616100269935afcb1b98c85d5e93e, + 0x96a76064f68c0d4f659f25a046a6d4, + 0x62cc6c3ab4c1ac1abcb9da9677e127, + 0x0f2f5f, + ], + [ + 0x7160da282e6c41bab917c868923254, + 0xea9bf82ff948a1d01912615c4a8e50, + 0xabfa449daf65201c2b24507b1058d8, + 0x0af1e4, + ], + ); + + // blob_commitments_hash is a BN Fr field with value 0x00d2f7bffbc5a9008207a188e348e753087f54557a686efd7f74c90cac52a9a1 + let expected_blob_commitments_hash = + 0xd2f7bffbc5a9008207a188e348e753087f54557a686efd7f74c90cac52a9a1; + + assert_eq(final_acc.y, expected_y); + assert_eq(final_acc.c, expected_c.to_compressed_fields()); + assert_eq(final_acc.blob_commitments_hash, expected_blob_commitments_hash); + } +} diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr new file mode 100644 index 000000000000..d350405e5c03 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr @@ -0,0 +1,565 @@ +use bigcurve::{ + BigCurveTrait, + curves::bls12_381::{BLS12_381, BLS12_381Scalar}, + scalar_field::ScalarFieldTrait, +}; +use bigint::{BigNum, BLS12_381_Fq as Q, BLS12_381_Fr as F}; +use std::ops::{Add, Mul}; +use types::{ + constants::{ + BLOB_ACCUMULATOR_PUBLIC_INPUTS, BLOCK_BLOB_PUBLIC_INPUTS, BLS12_FR_LIMBS, + BLS12_POINT_COMPRESSED_BYTES, + }, + hash::{poseidon2_hash, sha256_to_field}, + traits::{Deserialize, Empty, Serialize}, + utils::{arrays::array_splice, field::{byte_to_bits_be, field_from_bytes}, reader::Reader}, +}; + +pub type BLSPoint = BLS12_381; + +pub struct BatchingBlobCommitment { + pub point: BLSPoint, + pub compressed: [u8; BLS12_POINT_COMPRESSED_BYTES], +} + +impl BatchingBlobCommitment { + // The compressed form is a BLS12Fq field encoded as 2 BN254Fr fields. + // The first is the first 31 bytes, and the second is the next 17 bytes: + pub fn to_compressed_fields(self) -> [Field; 2] { + [ + // field 0 is bytes 0..31 + field_from_bytes::<31>(array_splice(self.compressed, 0), true), + // field 1 is bytes 31..48 + field_from_bytes::<17>(array_splice(self.compressed, 31), true), + ] + } + + // Helper fn largely used in testing to simplify fixtures + pub fn from_limbs(x_limbs: [u128; 4], y_limbs: [u128; 4]) -> Self { + let x = Q::from_limbs(x_limbs); + let y = Q::from_limbs(y_limbs); + let point = BLSPoint { x, y, is_infinity: (x.is_zero()) & (y.is_zero()) }; + compress_to_blob_commitment(point) + } + + // The commitment for an empty blob is (0, 0), which is compressed to [192, 0, ..., 0] + // NOT [0, 0, ..., 0] due to the is_compressed flag: + pub fn empty_blob() -> Self { + Self { + point: BLSPoint { x: Q::zero(), y: Q::zero(), is_infinity: true }, + compressed: [ + 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + } + } +} + +impl Eq for BatchingBlobCommitment { + fn eq(self, other: Self) -> bool { + (self.point.eq(other.point)) & (self.compressed.eq(other.compressed)) + } +} + +impl Empty for BatchingBlobCommitment { + fn empty() -> Self { + Self { point: BLSPoint::point_at_infinity(), compressed: [0; BLS12_POINT_COMPRESSED_BYTES] } + } +} + +// TODO(MW): get_flags() and compress_to_bytes() will eventually be part of BigCurve. +/** + * Create a compressed representation of a BLS12Point. + * @dev NOTE: The compression standard for BLS12-381 differs from BN curves. Instead of + * one is_positive flag, we have three flags to prepend: + * - is_compressed: indicator that the point is compressed + * - is_infinity: whether the point the point at infinity + * - is_greater: only set if is_compressed && !is_infinity && y > (p - 1)/2 + * See https://github.com/arkworks-rs/algebra/blob/master/curves/bls12_381/src/curves/g1.rs -> serialize_with_mode() -> encoding + * and noble-curves/src/bls12-381.ts -> setMask() + */ +pub fn compress_to_blob_commitment(point: BLSPoint) -> (BatchingBlobCommitment) { + let (flags, x) = get_flags(point); + let mut compressed = x.to_be_bytes(); + let most_sig_bits = byte_to_bits_be(compressed[0]); + // TODO(MW): May not need to assert this since Bignum may check it's 381 bits? + for i in 0..3 { + assert_eq(most_sig_bits[i], 0, "Invalid BLS12-381 x coordinate given to compress()."); + } + compressed[0] = set_flags(flags, compressed[0]); + BatchingBlobCommitment { point, compressed } +} + +// TODO: Will be part of bigcurve's compression functionality +// Given a point in BLS12-381, returns [is_compressed, is_infinity, is_greater] and the point's x coordinate +fn get_flags(point: BLSPoint) -> ([bool; 3], Q) { + let x = point.x; + let y = point.y; + let is_compressed = true; + let is_infinity = point.is_infinity; + let is_greater = y > -y; + let flags = [is_compressed, is_infinity, is_greater]; + (flags, x) +} + +// TODO(MW): Will be part of bigcurve's compression functionality +// Given [is_compressed, is_infinity, is_greater] and the point's most significant byte, returns that +// byte with the flags set. +fn set_flags(flags: [bool; 3], byte: u8) -> u8 { + // Flip some bits (NB: this is probably not efficient but just easier to log/visualise for now) + let mut flip = 0; + // flags = [is_compressed, is_infinity, is_greater] + // if (is_compressed) { flip most sig bit in u8 => byte |= 2**7 => byte |= 2 << 6 } + // if (is_infinity) { flip next most sig bit in u8 => byte |= 2**6 => byte |= 2 << 5 } + // if (is_greater) { flip next most sig bit in u8 => byte |= 2**5 => byte |= 2 << 4 } + for i in 0..3 { + if flags[i] { + flip += 2 << (6 - (i as u8)); + } + } + byte | flip +} + +/** +* The outputs we care about from using the barycentric to evaluate blob i at z: +* - z_i = Challenge for one blob (=H(H(blob_i), C_i)) +* - y_i = Evaluation for one blob (=p_i(z)) +* - c_i = Commitment for one blob (=C_i) +*/ +pub struct BlobAccumulationInputs { + pub z_i: Field, + pub y_i: F, + pub c_i: BatchingBlobCommitment, +} + +impl Empty for BlobAccumulationInputs { + fn empty() -> Self { + Self { z_i: 0, y_i: BigNum::zero(), c_i: BatchingBlobCommitment::empty() } + } +} + +/** +* Contains all fields required to construct a batched KZG proof of ALL blobs in the epoch. +* Instead of calling the point evaluation precompile on L1 for each blob, we create a multi-opening proof +* with the scheme below, and call it just once: +* point_evaluation_precompile(b, z, y, C, Q) +* Where b (= kzg_to_versioned_hash(C)) and Q (= KZG proof) are computed outside the circuit. The other params are +* calculated here across the rollup circuits (until root, when .finalize() is called). +* Other notes: +* - We use blob_commitments_hash to validate the commitments injected here correspond to blobs published on L1. +* - We use gamma as the challenge for multi opening, so it can be discarded once the rollup is complete. +* - We already know that the elements in each blob correspond to validated data from the kernels from the use of +* the blob_sponge and validating blob_sponge.squeeze() vs H(input_elements). +* - We encompass all the blob elements in challenges (z_i) unique to each blob by using the above H(input_elements) +* and the blob's commitment (c_i). +* +* TODO(#14646): Compress F and Q values to reduce number of public inputs (BLOB_ACCUMULATOR_PUBLIC_INPUTS) +*/ +pub struct BlobAccumulatorPublicInputs { + pub blob_commitments_hash_acc: Field, // Hash of Cs (to link to L1 blob hashes) (BN254Fr) + pub z_acc: Field, // Challenge at which the batched blob polynomial is evaluated (BN254Fr) + pub y_acc: F, // Current state of y's linear combination (sum_i {gamma^i * y_i}) where y_i is blob_i's evaluation y (BLS12Fr) + pub c_acc: BLSPoint, // Current state of C's linear combination (sum_i {gamma^i * C_i}) where C_i is blob_i's commitment C (BLS12 point: { x: BLS12Fq, y: BLS12Fq }) + pub gamma_acc: Field, // Challenge for linear combination of each blob's y and C (BLS12Fr but represented here as BN254Fr, since it is hashed natively) + pub gamma_pow_acc: F, // gamma^i for current blob, used above (BLS12Fr) +} + +impl BlobAccumulatorPublicInputs { + /** + * Init the first accumulation state of the epoch. + * + * First state of the accumulator: + * - v_acc := sha256(C_0) + * - z_acc := z_0 + * - y_acc := gamma^0 * y_0 = y_0 + * - c_acc := gamma^0 * c_0 = c_0 + * - gamma_acc := poseidon2(y_0.limbs) + * - gamma^(i + 1) = gamma^1 = gamma // denoted gamma_pow_acc + * + * For all blobs i > 0 accumulated, see the below documentation for accumulate(). + * + */ + pub fn init(first_output: BlobAccumulationInputs, final_gamma: F) -> Self { + // TODO(#13608): use a BLS12 based hash? Is using BN based safe - since the output is smaller is there a skew? + let hashed_y_0 = poseidon2_hash(first_output.y_i.get_limbs().map(|l| l as Field)); + Self { + blob_commitments_hash_acc: sha256_to_field(first_output.c_i.compressed), + z_acc: first_output.z_i, + y_acc: first_output.y_i, + c_acc: first_output.c_i.point, + gamma_acc: hashed_y_0, + gamma_pow_acc: final_gamma, + } + } + + /** + * LHS Accumulator: Current state of param accumulation from blob 0 to i-1 + * RHS Accumulator: Outputs from evaluation of blob i + * + * NB: blob_commitments_hash is written as v below + * + * Each accumulation: + * - v_acc := sha256(v_acc, C_i) + * - z_acc := poseidon2(z_acc, z_i) + * - y_acc := y_acc + (gamma^i * y_i) + * - c_acc := c_acc + (gamma^i * c_i) + * - gamma_acc := poseidon2(gamma_acc, poseidon2(y_i.limbs)) + * - gamma^(i + 1) = gamma^i * gamma // denoted gamma_pow_acc + * + * Final accumulated values (from last blob of last block of epoch): + * - v := v_acc (hash of all commitments (C_i s) to be checked on L1) + * - z := z_acc (final challenge, at which all blobs are evaluated) + * - y := y_acc (final opening to be checked on L1) + * - c := c_acc (final commitment to be checked on L1) + * - gamma := poseidon2(gamma_acc, z) (challenge for linear combination of y and C, above) + * + * Final values z and gamma are injected into each block root circuit. We ensure they are correct by: + * - Checking equality in each block merge circuit and propagating up + * - Checking final z_acc == z in root circuit + * - Checking final gamma_acc == gamma in root circuit + * + */ + pub fn accumulate(self, other: BlobAccumulationInputs, final_gamma: F) -> Self { + // TODO(#13608): use a BLS12 based hash? Is using BN based safe - since the output is smaller is there a skew? + let hashed_y_i = poseidon2_hash(other.y_i.get_limbs().map(|l| l as Field)); + Self { + blob_commitments_hash_acc: sha256_to_field(self + .blob_commitments_hash_acc + .to_be_bytes::<32>() + .concat(other.c_i.compressed)), + z_acc: poseidon2_hash([self.z_acc, other.z_i]), + y_acc: self.y_acc.add(other.y_i.mul(self.gamma_pow_acc)), + c_acc: self.c_acc.add(other.c_i.point.mul(BLS12_381Scalar::from_bignum( + self.gamma_pow_acc, + ))), + gamma_acc: poseidon2_hash([self.gamma_acc, hashed_y_i]), + gamma_pow_acc: self.gamma_pow_acc.mul(final_gamma), + } + } + + // Completes the final checks for the last accumulator state. This is called in the root rollup and + // exists here to avoid importing bignum's to_field in the rollup_lib. + pub fn finalize_and_validate( + self, + injected: FinalBlobBatchingChallenges, + ) -> FinalBlobAccumulatorPublicInputs { + assert(self.z_acc == injected.z, "Final blob challenge z mismatch."); + let gamma = poseidon2_hash([self.gamma_acc, self.z_acc]); + assert( + gamma == bigint::bignum::to_field(injected.gamma), + "Final blob challenge gamma mismatch.", + ); + // TODO(MW): Refactor BlobBatchingCommitment once BlobCommitment can be safely deleted + let c = compress_to_blob_commitment(self.c_acc).to_compressed_fields(); + FinalBlobAccumulatorPublicInputs { + blob_commitments_hash: self.blob_commitments_hash_acc, + z: self.z_acc, + y: self.y_acc, + c, + } + } +} + +impl Empty for BlobAccumulatorPublicInputs { + fn empty() -> Self { + Self { + blob_commitments_hash_acc: 0, + z_acc: 0, + y_acc: F::zero(), + c_acc: BLSPoint::point_at_infinity(), + gamma_acc: 0, + gamma_pow_acc: F::zero(), + } + } +} + +impl Eq for BlobAccumulatorPublicInputs { + fn eq(self, other: Self) -> bool { + (self.blob_commitments_hash_acc.eq(other.blob_commitments_hash_acc)) + & (self.z_acc.eq(other.z_acc)) + & (self.y_acc.eq(other.y_acc)) + & (self.c_acc.eq(other.c_acc)) + & (self.gamma_acc.eq(other.gamma_acc)) + & (self.gamma_pow_acc.eq(other.gamma_pow_acc)) + } +} + +impl Serialize for BlobAccumulatorPublicInputs { + fn serialize(self) -> [Field; BLOB_ACCUMULATOR_PUBLIC_INPUTS] { + let mut fields: BoundedVec = BoundedVec::new(); + fields.push(self.blob_commitments_hash_acc); + fields.push(self.z_acc); + fields.extend_from_array(self.y_acc.get_limbs().map(|l| l as Field)); + fields.extend_from_array(self.c_acc.x.get_limbs().map(|l| l as Field)); + fields.extend_from_array(self.c_acc.y.get_limbs().map(|l| l as Field)); + fields.push(self.c_acc.is_infinity as Field); + fields.push(self.gamma_acc); + fields.extend_from_array(self.gamma_pow_acc.get_limbs().map(|l| l as Field)); + fields.storage() + } +} + +impl Deserialize for BlobAccumulatorPublicInputs { + fn deserialize(fields: [Field; BLOB_ACCUMULATOR_PUBLIC_INPUTS]) -> Self { + let mut reader = Reader::new(fields); + let mut item = Self { + blob_commitments_hash_acc: reader.read(), + z_acc: reader.read(), + y_acc: F::from_limbs(reader.read_array().map(|e| e as u128)), + c_acc: BLSPoint { + x: Q::from_limbs(reader.read_array().map(|e| e as u128)), + y: Q::from_limbs(reader.read_array().map(|e| e as u128)), + is_infinity: reader.read_bool(), + }, + gamma_acc: reader.read(), + gamma_pow_acc: F::from_limbs(reader.read_array().map(|e| e as u128)), + }; + item + } +} + +/** +* Final values z and gamma are injected into each block root circuit. We ensure they are correct by: +* - Checking equality in each block merge circuit and propagating up +* - Checking final z_acc == z in root circuit +* - Checking final gamma_acc == gamma in root circuit +* +* - z = H(...H(H(z_0, z_1) z_2)..z_n) +* - where z_i = H(H(fields of blob_i), C_i), +* - used such that p_i(z) = y_i = Blob.evaluationY for all n blob polynomials p_i(). +* - gamma = H(H(...H(H(y_0, y_1) y_2)..y_n), z) +* - used such that y = sum_i { gamma^i * y_i }, and C = sum_i { gamma^i * C_i } +* for all blob evaluations y_i (see above) and commitments C_i. +* +* Iteratively calculated by BlobAccumulatorPublicInputs.accumulate() above. See also precomputeBatchedBlobChallenges() in ts. +*/ +pub struct FinalBlobBatchingChallenges { + pub z: Field, + pub gamma: F, +} + +impl Empty for FinalBlobBatchingChallenges { + fn empty() -> Self { + Self { z: 0, gamma: F::zero() } + } +} + +impl Eq for FinalBlobBatchingChallenges { + fn eq(self, other: Self) -> bool { + (self.z.eq(other.z)) & (self.gamma.eq(other.gamma)) + } +} + +impl Serialize for FinalBlobBatchingChallenges { + fn serialize(self) -> [Field; BLS12_FR_LIMBS + 1] { + let mut fields: BoundedVec = BoundedVec::new(); + fields.push(self.z); + fields.extend_from_array(self.gamma.get_limbs().map(|l| l as Field)); + fields.storage() + } +} + +impl Deserialize for FinalBlobBatchingChallenges { + fn deserialize(fields: [Field; BLS12_FR_LIMBS + 1]) -> Self { + let mut reader = Reader::new(fields); + let mut item = + Self { z: reader.read(), gamma: F::from_limbs(reader.read_array().map(|e| e as u128)) }; + item + } +} + +/** +* Final values of a batched blob. Output in the root rollup circuit and validated on L1. +* +* - blob_commitments_hash = sha256( ...sha256(sha256(C_0), C_1) ... C_n) +* - z = poseidon2( ...poseidon2(poseidon2(z_0, z_1), z_2) ... z_n) +* - y = y_0 + gamma * y_1 + gamma^2 * y_2 + ... + gamma^n * y_n +* - c = C_0 + gamma * C_1 + gamma^2 * C_2 + ... + gamma^n * C_n +* +* Gamma has served its purpose in the 'random' linear combination and is not required as a public input. +*/ +pub struct FinalBlobAccumulatorPublicInputs { + pub blob_commitments_hash: Field, // Hash of Cs (to link to L1 blob hashes) (BN254Fr) + pub z: Field, // Challenge at which the batched blob polynomial is evaluated (BN254Fr) + pub y: F, // Batched blob's evaluation y (BLS12Fr) + pub c: [Field; 2], // Batched blob's commitment C (BLS12 point: { x: BLS12Fq, y: BLS12Fq }) compressed to 48 bytes, stored in 2 fields of 31 and 17 bytes +} + +impl Eq for FinalBlobAccumulatorPublicInputs { + fn eq(self, other: Self) -> bool { + (self.blob_commitments_hash.eq(other.blob_commitments_hash)) + & (self.z.eq(other.z)) + & (self.y.eq(other.y)) + & (self.c.eq(other.c)) + } +} + +/** +* - start_blob_accumulator: Accumulated opening proofs for all blobs before this block range. +* - end_blob_accumulator: Accumulated opening proofs for all blobs after adding this block range. +* - final_blob_challenges: Final values z and gamma, shared across the epoch. +*/ +pub struct BlockBlobPublicInputs { + pub start_blob_accumulator: BlobAccumulatorPublicInputs, + pub end_blob_accumulator: BlobAccumulatorPublicInputs, + pub final_blob_challenges: FinalBlobBatchingChallenges, +} + +impl Empty for BlockBlobPublicInputs { + fn empty() -> Self { + Self { + start_blob_accumulator: BlobAccumulatorPublicInputs::empty(), + end_blob_accumulator: BlobAccumulatorPublicInputs::empty(), + final_blob_challenges: FinalBlobBatchingChallenges::empty(), + } + } +} + +impl Eq for BlockBlobPublicInputs { + fn eq(self, other: Self) -> bool { + (self.start_blob_accumulator.eq(other.start_blob_accumulator)) + & (self.end_blob_accumulator.eq(other.end_blob_accumulator)) + & (self.final_blob_challenges.eq(other.final_blob_challenges)) + } +} + +impl Serialize for BlockBlobPublicInputs { + fn serialize(self) -> [Field; BLOCK_BLOB_PUBLIC_INPUTS] { + let mut fields: BoundedVec = BoundedVec::new(); + fields.extend_from_array(self.start_blob_accumulator.serialize()); + fields.extend_from_array(self.end_blob_accumulator.serialize()); + fields.extend_from_array(self.final_blob_challenges.serialize()); + fields.storage() + } +} + +impl Deserialize for BlockBlobPublicInputs { + fn deserialize(fields: [Field; BLOCK_BLOB_PUBLIC_INPUTS]) -> Self { + let mut reader = Reader::new(fields); + let mut item = Self { + start_blob_accumulator: reader.read_struct(BlobAccumulatorPublicInputs::deserialize), + end_blob_accumulator: reader.read_struct(BlobAccumulatorPublicInputs::deserialize), + final_blob_challenges: reader.read_struct(FinalBlobBatchingChallenges::deserialize), + }; + item + } +} + +mod tests { + use crate::blob_batching_public_inputs::{ + BatchingBlobCommitment, BlockBlobPublicInputs, BLSPoint, compress_to_blob_commitment, + get_flags, + }; + use bigcurve::{ + BigCurveTrait, + CurveParamsTrait, + curves::bls12_381::{BLS12_381 as Point, BLS12_381_Params}, + }; + use bigint::{BigNum, BLS12_381_Fq as Q}; + use std::ops::{Add, Mul}; + use types::traits::{Deserialize, Empty, Serialize}; + + #[test] + unconstrained fn point_compression() { + let point = Point::offset_generator(); + let (flags, x) = get_flags(point); + // is_compressed = true + assert_eq(flags[0], true); + // is_infinity = false + assert_eq(flags[1], false); + // is_greater = false (point.y < -point.y for G) + assert_eq(flags[2], false); + // Decompress back to the same point: + let mut bytes = compress_to_blob_commitment(point).compressed; + // Same as &= 0b0001_1111 - clear first three bits of our flags + bytes[0] &= 31; + let reconstructed_x = Q::from_be_bytes(bytes); + assert_eq(reconstructed_x, x); + let (a, b) = (BLS12_381_Params::a(), BLS12_381_Params::b()); + // y^2 = x^3 + ax + b + let reconstructed_y_squared = + reconstructed_x.__pow(Q::from(3)).add(a.mul(reconstructed_x)).add(b); + let mut reconstructed_y = reconstructed_y_squared.__tonelli_shanks_sqrt().unwrap(); + // If the sqrt returned is the 'greater' one, negate it (since here is_greater = false): + reconstructed_y = if reconstructed_y > -reconstructed_y { + -reconstructed_y + } else { + reconstructed_y + }; + assert_eq(reconstructed_y, point.y); + } + + #[test] + unconstrained fn test_point_compression_greater() { + // Note that this p is the negation of p from the test test_point_compression_not_greater... + let p = BLSPoint { + x: Q::from_limbs([ + 0x2616100269935afcb1b98c85d5e93e, + 0x96a76064f68c0d4f659f25a046a6d4, + 0x62cc6c3ab4c1ac1abcb9da9677e127, + 0x0f2f5f, + ]), + y: Q::from_limbs([ + 0x3a9f24892593bdff45e837976d7857, + 0x60e8fb551976c560b98e9554ab95ce, + 0x3e3f3b48eae5fb8b8b1efb31c70b9e, + 0x0f0f2d, + ]), + is_infinity: false, + }; + + let compressed_point = compress_to_blob_commitment(p).compressed; + + // ...so the compressed point only differs in the first byte, where the is_greater flag is stored. + let expected_compressed_point_greater = [ + 175, 47, 95, 98, 204, 108, 58, 180, 193, 172, 26, 188, 185, 218, 150, 119, 225, 39, 150, + 167, 96, 100, 246, 140, 13, 79, 101, 159, 37, 160, 70, 166, 212, 38, 22, 16, 2, 105, + 147, 90, 252, 177, 185, 140, 133, 213, 233, 62, + ]; + assert_eq(expected_compressed_point_greater, compressed_point); + } + + #[test] + unconstrained fn test_point_compression_not_greater() { + // Note that this p is the negation of p from the test test_point_compression_greater... + let p = BLSPoint { + x: Q::from_limbs([ + 0x2616100269935afcb1b98c85d5e93e, + 0x96a76064f68c0d4f659f25a046a6d4, + 0x62cc6c3ab4c1ac1abcb9da9677e127, + 0x0f2f5f, + ]), + y: Q::from_limbs([ + 0x7160da282e6c41bab917c868923254, + 0xea9bf82ff948a1d01912615c4a8e50, + 0xabfa449daf65201c2b24507b1058d8, + 0x0af1e4, + ]), + is_infinity: false, + }; + + let compressed_point = compress_to_blob_commitment(p).compressed; + + // ...so the compressed point only differs in the first byte, where the is_greater flag is stored. + let expected_compressed_point_not_greater = [ + 143, 47, 95, 98, 204, 108, 58, 180, 193, 172, 26, 188, 185, 218, 150, 119, 225, 39, 150, + 167, 96, 100, 246, 140, 13, 79, 101, 159, 37, 160, 70, 166, 212, 38, 22, 16, 2, 105, + 147, 90, 252, 177, 185, 140, 133, 213, 233, 62, + ]; + assert_eq(expected_compressed_point_not_greater, compressed_point); + } + + #[test] + unconstrained fn empty_blob_commitment() { + let expected = compress_to_blob_commitment(BLSPoint::point_at_infinity()); + assert_eq(expected, BatchingBlobCommitment::empty_blob()); + } + + #[test] + unconstrained fn serialization_of_empty() { + let item = BlockBlobPublicInputs::empty(); + let serialized = item.serialize(); + let deserialized = BlockBlobPublicInputs::deserialize(serialized); + assert(item.eq(deserialized)); + } +} diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr index 1222d8c19bab..fcb8f062c11f 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr @@ -6,6 +6,8 @@ use types::{ utils::reader::Reader, }; +// TODO(MW): delete + // NB: This only exists because a nested array of [[Field; 2]; N] did not build with ci2.5, but was fine otherwise // For blobs, we use the compressed 48 byte BLS12 commitment to compute the challenge. We never need to operate on it, // so it's encoded as 2 fields. The first is the first 31 bytes, and the second is the next 17 bytes. diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr index 7e3e493991c7..31b51ca51fff 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr @@ -1,5 +1,7 @@ pub mod blob_public_inputs; +pub mod blob_batching_public_inputs; mod blob; +mod blob_batching; mod mock_blob_oracle; mod config; mod unconstrained_config; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr index 85693f7caf3d..58c1be0d1363 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr @@ -1,25 +1,37 @@ -use crate::blob_public_inputs::{BlobCommitment, BlockBlobPublicInputs}; +use crate::blob_batching_public_inputs::{ + BlobAccumulatorPublicInputs, BLSPoint, FinalBlobBatchingChallenges, +}; use types::{ abis::sponge_blob::SpongeBlob, - constants::{BLOB_PUBLIC_INPUTS, BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, - traits::Deserialize, + constants::{BLOB_ACCUMULATOR_PUBLIC_INPUTS, BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + traits::{Deserialize, Serialize}, }; // TODO(#10323): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). // The use of bignum adds a lot of unconstrained code which overloads limits when simulating. // If/when simulation times of unconstrained are improved, remove this. -pub unconstrained fn evaluate_blobs( +pub unconstrained fn evaluate_blobs_and_batch( blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + kzg_commitments: [BLSPoint; BLOBS_PER_BLOCK], mut sponge_blob: SpongeBlob, -) -> BlockBlobPublicInputs { - let fields = evaluate_blobs_oracle(blobs_as_fields, kzg_commitments, sponge_blob); - BlockBlobPublicInputs::deserialize(fields) + final_blob_challenges: FinalBlobBatchingChallenges, + start_accumulator: BlobAccumulatorPublicInputs, +) -> BlobAccumulatorPublicInputs { + let fields = evaluate_blobs_oracle( + blobs_as_fields, + kzg_commitments, + sponge_blob, + final_blob_challenges, + start_accumulator.serialize(), // Serialize makes reading info easier in foreign_call_handler + ); + BlobAccumulatorPublicInputs::deserialize(fields) } #[oracle(evaluateBlobs)] unconstrained fn evaluate_blobs_oracle( blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + kzg_commitments: [BLSPoint; BLOBS_PER_BLOCK], mut sponge_blob: SpongeBlob, -) -> [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK] {} + final_blob_challenges: FinalBlobBatchingChallenges, + start_accumulator: [Field; BLOB_ACCUMULATOR_PUBLIC_INPUTS], +) -> [Field; BLOB_ACCUMULATOR_PUBLIC_INPUTS] {} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml index 5941c49021d2..f56b2a45e181 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml @@ -2,7 +2,7 @@ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" proposed_block_header_hashes = [ - "0x00ae491129cc4d31ff9ff02b16fbcbc99b6127e91b4136e2e2fa76236e9b3487", + "0x00f601c89eb607707bc46ea5d22cf6d6556fa8858d09a71f18ae504a87dfd3d7", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -53,57 +53,57 @@ proposed_block_header_hashes = [ ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x01e7d7a6151303fd8707679cb6760f5e359ae62f02399691382389a11053b1f5" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" + root = "0x27dfcbca2cdc6e2e94f7ac5d5d652fbc48d6735b554679c115c00057c18e5ed9" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2a63bcce4105e7b7c0960a1baa9ad44f0f80f34f7888b35baa79bf0a2c0d65ce" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + root = "0x1dd101b1f4d09f1a51ea33850ce2b2e712ab47e38e3bdf5214e6f4cf9bd30bb6" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000021" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b718" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000041" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320c4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000021" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b718" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000041" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320c4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000012818078" + value = "0x0000000000000000000000000000000000000000000000000000000001afbcb0" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -387,5765 +387,1233 @@ proposed_block_header_hashes = [ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x116114138548294f873f4a32003494680e41c6b802519281f9afbf093eb1c818" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x394a77ad9bcff4f5f4f096b34cf6a2", - "0xd5afd1fd986ecf79fe36d4a208bdec", - "0x4c0f" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x00b952fad467ee512db8cd5db49bcfa674bb5ba2a8694c43af5850e0b7cf205f", - "0x0000000000000000000000000000009e1f2ca2245cf15e8dc9c91a09d9fc4293" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator] +blob_commitments_hash_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" +z_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" +gamma_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.y_acc] limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", "0x0000" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc] + is_infinity = true - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.x] + limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x000000" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.y] + limbs = [ "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" + "0x000000" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.gamma_pow_acc] limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", "0x0000" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator] +blob_commitments_hash_acc = "0x00be044db88ceee39efdc47cedad851d9b1dc4e4b4272935e6de6da093abb3c3" +z_acc = "0x0d12a012b6c05b78773a549210a174406434552e362528cd1c2c1d031acb1d02" +gamma_acc = "0x128f1b5265eff011209236b41b571b4d8319d0c5c3e90d81aa380c228e23ab64" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xcb7e7ce6b998f22b905112367dde7c", + "0x2a1774901196c680a276b45cf53c0b", + "0x5d62" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.x] + limbs = [ + "0x8b968c6b0d2dd286d828ebfb4171c1", + "0x680bc6b6470feccc4d9d385105830b", + "0x564d37b9f4a72ce27df06d51dfd234", + "0x0883ee" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.y] + limbs = [ + "0xafe1bc16d0cfec75cc5d842e9c245f", + "0x6f1b2d5fc0886f40adfdf8d72f7b2a", + "0xdeebdbc3bd45de655d959cf06da350", + "0x06378f" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges] +z = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.gamma] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[inputs.previous_rollup_data.proof] -fields = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000000000000000000000000000000000000004", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000007", - "0x0000000000000000000000000000000000000000000000000000000000000008", - "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000b", - "0x000000000000000000000000000000000000000000000000000000000000000c", - "0x000000000000000000000000000000000000000000000000000000000000000d", - "0x000000000000000000000000000000000000000000000000000000000000000e", - "0x000000000000000000000000000000000000000000000000000000000000000f", - "0x0000000000000000000000000000000000000000000000000000000000000010", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x0000000000000000000000000000000000000000000000000000000000000013", - "0x0000000000000000000000000000000000000000000000000000000000000014", - "0x0000000000000000000000000000000000000000000000000000000000000015", - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000017", - "0x0000000000000000000000000000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000019", - "0x000000000000000000000000000000000000000000000000000000000000001a", - "0x000000000000000000000000000000000000000000000000000000000000001b", - "0x000000000000000000000000000000000000000000000000000000000000001c", - "0x000000000000000000000000000000000000000000000000000000000000001d", - "0x000000000000000000000000000000000000000000000000000000000000001e", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x000000000000000000000000000000000000000000000000000000000000002f", - "0x0000000000000000000000000000000000000000000000000000000000000030", - "0x0000000000000000000000000000000000000000000000000000000000000031", - "0x0000000000000000000000000000000000000000000000000000000000000032", - "0x0000000000000000000000000000000000000000000000000000000000000033", - "0x0000000000000000000000000000000000000000000000000000000000000034", - "0x0000000000000000000000000000000000000000000000000000000000000035", - "0x0000000000000000000000000000000000000000000000000000000000000036", - "0x0000000000000000000000000000000000000000000000000000000000000037", - "0x0000000000000000000000000000000000000000000000000000000000000038", - "0x0000000000000000000000000000000000000000000000000000000000000039", - "0x000000000000000000000000000000000000000000000000000000000000003a", - "0x000000000000000000000000000000000000000000000000000000000000003b", - "0x000000000000000000000000000000000000000000000000000000000000003c", - "0x000000000000000000000000000000000000000000000000000000000000003d", - "0x000000000000000000000000000000000000000000000000000000000000003e", - "0x000000000000000000000000000000000000000000000000000000000000003f", - "0x0000000000000000000000000000000000000000000000000000000000000040", - "0x0000000000000000000000000000000000000000000000000000000000000041", - "0x0000000000000000000000000000000000000000000000000000000000000042", - "0x0000000000000000000000000000000000000000000000000000000000000043", - "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x000000000000000000000000000000000000000000000000000000000000004e", - "0x000000000000000000000000000000000000000000000000000000000000004f", - "0x0000000000000000000000000000000000000000000000000000000000000050", - "0x0000000000000000000000000000000000000000000000000000000000000051", - "0x0000000000000000000000000000000000000000000000000000000000000052", - "0x0000000000000000000000000000000000000000000000000000000000000053", - "0x0000000000000000000000000000000000000000000000000000000000000054", - "0x0000000000000000000000000000000000000000000000000000000000000055", - "0x0000000000000000000000000000000000000000000000000000000000000056", - "0x0000000000000000000000000000000000000000000000000000000000000057", - "0x0000000000000000000000000000000000000000000000000000000000000058", - "0x0000000000000000000000000000000000000000000000000000000000000059", - "0x000000000000000000000000000000000000000000000000000000000000005a", - "0x000000000000000000000000000000000000000000000000000000000000005b", - "0x000000000000000000000000000000000000000000000000000000000000005c", - "0x000000000000000000000000000000000000000000000000000000000000005d", - "0x000000000000000000000000000000000000000000000000000000000000005e", - "0x000000000000000000000000000000000000000000000000000000000000005f", - "0x0000000000000000000000000000000000000000000000000000000000000060", - "0x0000000000000000000000000000000000000000000000000000000000000061", - "0x0000000000000000000000000000000000000000000000000000000000000062", - "0x0000000000000000000000000000000000000000000000000000000000000063", - "0x0000000000000000000000000000000000000000000000000000000000000064", - "0x0000000000000000000000000000000000000000000000000000000000000065", - "0x0000000000000000000000000000000000000000000000000000000000000066", - "0x0000000000000000000000000000000000000000000000000000000000000067", - "0x0000000000000000000000000000000000000000000000000000000000000068", - "0x0000000000000000000000000000000000000000000000000000000000000069", - "0x000000000000000000000000000000000000000000000000000000000000006a", - "0x000000000000000000000000000000000000000000000000000000000000006b", - "0x000000000000000000000000000000000000000000000000000000000000006c", - "0x000000000000000000000000000000000000000000000000000000000000006d", - "0x000000000000000000000000000000000000000000000000000000000000006e", - "0x000000000000000000000000000000000000000000000000000000000000006f", - "0x0000000000000000000000000000000000000000000000000000000000000070", - "0x0000000000000000000000000000000000000000000000000000000000000071", - "0x0000000000000000000000000000000000000000000000000000000000000072", - "0x0000000000000000000000000000000000000000000000000000000000000073", - "0x0000000000000000000000000000000000000000000000000000000000000074", - "0x0000000000000000000000000000000000000000000000000000000000000075", - "0x0000000000000000000000000000000000000000000000000000000000000076", - "0x0000000000000000000000000000000000000000000000000000000000000077", - "0x0000000000000000000000000000000000000000000000000000000000000078", - "0x0000000000000000000000000000000000000000000000000000000000000079", - "0x000000000000000000000000000000000000000000000000000000000000007a", - "0x000000000000000000000000000000000000000000000000000000000000007b", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x000000000000000000000000000000000000000000000000000000000000008d", - "0x000000000000000000000000000000000000000000000000000000000000008e", - "0x000000000000000000000000000000000000000000000000000000000000008f", - "0x0000000000000000000000000000000000000000000000000000000000000090", - "0x0000000000000000000000000000000000000000000000000000000000000091", - "0x0000000000000000000000000000000000000000000000000000000000000092", - "0x0000000000000000000000000000000000000000000000000000000000000093", - "0x0000000000000000000000000000000000000000000000000000000000000094", - "0x0000000000000000000000000000000000000000000000000000000000000095", - "0x0000000000000000000000000000000000000000000000000000000000000096", - "0x0000000000000000000000000000000000000000000000000000000000000097", - "0x0000000000000000000000000000000000000000000000000000000000000098", - "0x0000000000000000000000000000000000000000000000000000000000000099", - "0x000000000000000000000000000000000000000000000000000000000000009a", - "0x000000000000000000000000000000000000000000000000000000000000009b", - "0x000000000000000000000000000000000000000000000000000000000000009c", - "0x000000000000000000000000000000000000000000000000000000000000009d", - "0x000000000000000000000000000000000000000000000000000000000000009e", - "0x000000000000000000000000000000000000000000000000000000000000009f", - "0x00000000000000000000000000000000000000000000000000000000000000a0", - "0x00000000000000000000000000000000000000000000000000000000000000a1", - "0x00000000000000000000000000000000000000000000000000000000000000a2", - "0x00000000000000000000000000000000000000000000000000000000000000a3", - "0x00000000000000000000000000000000000000000000000000000000000000a4", - "0x00000000000000000000000000000000000000000000000000000000000000a5", - "0x00000000000000000000000000000000000000000000000000000000000000a6", - "0x00000000000000000000000000000000000000000000000000000000000000a7", - "0x00000000000000000000000000000000000000000000000000000000000000a8", - "0x00000000000000000000000000000000000000000000000000000000000000a9", - "0x00000000000000000000000000000000000000000000000000000000000000aa", - "0x00000000000000000000000000000000000000000000000000000000000000ab", - "0x00000000000000000000000000000000000000000000000000000000000000ac", - "0x00000000000000000000000000000000000000000000000000000000000000ad", - "0x00000000000000000000000000000000000000000000000000000000000000ae", - "0x00000000000000000000000000000000000000000000000000000000000000af", - "0x00000000000000000000000000000000000000000000000000000000000000b0", - "0x00000000000000000000000000000000000000000000000000000000000000b1", - "0x00000000000000000000000000000000000000000000000000000000000000b2", - "0x00000000000000000000000000000000000000000000000000000000000000b3", - "0x00000000000000000000000000000000000000000000000000000000000000b4", - "0x00000000000000000000000000000000000000000000000000000000000000b5", - "0x00000000000000000000000000000000000000000000000000000000000000b6", - "0x00000000000000000000000000000000000000000000000000000000000000b7", - "0x00000000000000000000000000000000000000000000000000000000000000b8", - "0x00000000000000000000000000000000000000000000000000000000000000b9", - "0x00000000000000000000000000000000000000000000000000000000000000ba", - "0x00000000000000000000000000000000000000000000000000000000000000bb", - "0x00000000000000000000000000000000000000000000000000000000000000bc", - "0x00000000000000000000000000000000000000000000000000000000000000bd", - "0x00000000000000000000000000000000000000000000000000000000000000be", - "0x00000000000000000000000000000000000000000000000000000000000000bf", - "0x00000000000000000000000000000000000000000000000000000000000000c0", - "0x00000000000000000000000000000000000000000000000000000000000000c1", - "0x00000000000000000000000000000000000000000000000000000000000000c2", - "0x00000000000000000000000000000000000000000000000000000000000000c3", - "0x00000000000000000000000000000000000000000000000000000000000000c4", - "0x00000000000000000000000000000000000000000000000000000000000000c5", - "0x00000000000000000000000000000000000000000000000000000000000000c6", - "0x00000000000000000000000000000000000000000000000000000000000000c7", - "0x00000000000000000000000000000000000000000000000000000000000000c8", - "0x00000000000000000000000000000000000000000000000000000000000000c9", - "0x00000000000000000000000000000000000000000000000000000000000000ca", - "0x00000000000000000000000000000000000000000000000000000000000000cb", - "0x00000000000000000000000000000000000000000000000000000000000000cc", - "0x00000000000000000000000000000000000000000000000000000000000000cd", - "0x00000000000000000000000000000000000000000000000000000000000000ce", - "0x00000000000000000000000000000000000000000000000000000000000000cf", - "0x00000000000000000000000000000000000000000000000000000000000000d0", - "0x00000000000000000000000000000000000000000000000000000000000000d1", - "0x00000000000000000000000000000000000000000000000000000000000000d2", - "0x00000000000000000000000000000000000000000000000000000000000000d3", - "0x00000000000000000000000000000000000000000000000000000000000000d4", - "0x00000000000000000000000000000000000000000000000000000000000000d5", - "0x00000000000000000000000000000000000000000000000000000000000000d6", - "0x00000000000000000000000000000000000000000000000000000000000000d7", - "0x00000000000000000000000000000000000000000000000000000000000000d8", - "0x00000000000000000000000000000000000000000000000000000000000000d9", - "0x00000000000000000000000000000000000000000000000000000000000000da", - "0x00000000000000000000000000000000000000000000000000000000000000db", - "0x00000000000000000000000000000000000000000000000000000000000000dc", - "0x00000000000000000000000000000000000000000000000000000000000000dd", - "0x00000000000000000000000000000000000000000000000000000000000000de", - "0x00000000000000000000000000000000000000000000000000000000000000df", - "0x00000000000000000000000000000000000000000000000000000000000000e0", - "0x00000000000000000000000000000000000000000000000000000000000000e1", - "0x00000000000000000000000000000000000000000000000000000000000000e2", - "0x00000000000000000000000000000000000000000000000000000000000000e3", - "0x00000000000000000000000000000000000000000000000000000000000000e4", - "0x00000000000000000000000000000000000000000000000000000000000000e5", - "0x00000000000000000000000000000000000000000000000000000000000000e6", - "0x00000000000000000000000000000000000000000000000000000000000000e7", - "0x00000000000000000000000000000000000000000000000000000000000000e8", - "0x00000000000000000000000000000000000000000000000000000000000000e9", - "0x00000000000000000000000000000000000000000000000000000000000000ea", - "0x00000000000000000000000000000000000000000000000000000000000000eb", - "0x00000000000000000000000000000000000000000000000000000000000000ec", - "0x00000000000000000000000000000000000000000000000000000000000000ed", - "0x00000000000000000000000000000000000000000000000000000000000000ee", - "0x00000000000000000000000000000000000000000000000000000000000000ef", - "0x00000000000000000000000000000000000000000000000000000000000000f0", - "0x00000000000000000000000000000000000000000000000000000000000000f1", - "0x00000000000000000000000000000000000000000000000000000000000000f2", - "0x00000000000000000000000000000000000000000000000000000000000000f3", - "0x00000000000000000000000000000000000000000000000000000000000000f4", - "0x00000000000000000000000000000000000000000000000000000000000000f5", - "0x00000000000000000000000000000000000000000000000000000000000000f6", - "0x00000000000000000000000000000000000000000000000000000000000000f7", - "0x00000000000000000000000000000000000000000000000000000000000000f8", - "0x00000000000000000000000000000000000000000000000000000000000000f9", - "0x00000000000000000000000000000000000000000000000000000000000000fa", - "0x00000000000000000000000000000000000000000000000000000000000000fb", - "0x00000000000000000000000000000000000000000000000000000000000000fc", - "0x00000000000000000000000000000000000000000000000000000000000000fd", - "0x00000000000000000000000000000000000000000000000000000000000000fe", - "0x00000000000000000000000000000000000000000000000000000000000000ff", - "0x0000000000000000000000000000000000000000000000000000000000000100", - "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000102", - "0x0000000000000000000000000000000000000000000000000000000000000103", - "0x0000000000000000000000000000000000000000000000000000000000000104", - "0x0000000000000000000000000000000000000000000000000000000000000105", - "0x0000000000000000000000000000000000000000000000000000000000000106", - "0x0000000000000000000000000000000000000000000000000000000000000107", - "0x0000000000000000000000000000000000000000000000000000000000000108", - "0x0000000000000000000000000000000000000000000000000000000000000109", - "0x000000000000000000000000000000000000000000000000000000000000010a", - "0x000000000000000000000000000000000000000000000000000000000000010b", - "0x000000000000000000000000000000000000000000000000000000000000010c", - "0x000000000000000000000000000000000000000000000000000000000000010d", - "0x000000000000000000000000000000000000000000000000000000000000010e", - "0x000000000000000000000000000000000000000000000000000000000000010f", - "0x0000000000000000000000000000000000000000000000000000000000000110", - "0x0000000000000000000000000000000000000000000000000000000000000111", - "0x0000000000000000000000000000000000000000000000000000000000000112", - "0x0000000000000000000000000000000000000000000000000000000000000113", - "0x0000000000000000000000000000000000000000000000000000000000000114", - "0x0000000000000000000000000000000000000000000000000000000000000115", - "0x0000000000000000000000000000000000000000000000000000000000000116", - "0x0000000000000000000000000000000000000000000000000000000000000117", - "0x0000000000000000000000000000000000000000000000000000000000000118", - "0x0000000000000000000000000000000000000000000000000000000000000119", - "0x000000000000000000000000000000000000000000000000000000000000011a", - "0x000000000000000000000000000000000000000000000000000000000000011b", - "0x000000000000000000000000000000000000000000000000000000000000011c", - "0x000000000000000000000000000000000000000000000000000000000000011d", - "0x000000000000000000000000000000000000000000000000000000000000011e", - "0x000000000000000000000000000000000000000000000000000000000000011f", - "0x0000000000000000000000000000000000000000000000000000000000000120", - "0x0000000000000000000000000000000000000000000000000000000000000121", - "0x0000000000000000000000000000000000000000000000000000000000000122", - "0x0000000000000000000000000000000000000000000000000000000000000123", - "0x0000000000000000000000000000000000000000000000000000000000000124", - "0x0000000000000000000000000000000000000000000000000000000000000125", - "0x0000000000000000000000000000000000000000000000000000000000000126", - "0x0000000000000000000000000000000000000000000000000000000000000127", - "0x0000000000000000000000000000000000000000000000000000000000000128", - "0x0000000000000000000000000000000000000000000000000000000000000129", - "0x000000000000000000000000000000000000000000000000000000000000012a", - "0x000000000000000000000000000000000000000000000000000000000000012b", - "0x000000000000000000000000000000000000000000000000000000000000012c", - "0x000000000000000000000000000000000000000000000000000000000000012d", - "0x000000000000000000000000000000000000000000000000000000000000012e", - "0x000000000000000000000000000000000000000000000000000000000000012f", - "0x0000000000000000000000000000000000000000000000000000000000000130", - "0x0000000000000000000000000000000000000000000000000000000000000131", - "0x0000000000000000000000000000000000000000000000000000000000000132", - "0x0000000000000000000000000000000000000000000000000000000000000133", - "0x0000000000000000000000000000000000000000000000000000000000000134", - "0x0000000000000000000000000000000000000000000000000000000000000135", - "0x0000000000000000000000000000000000000000000000000000000000000136", - "0x0000000000000000000000000000000000000000000000000000000000000137", - "0x0000000000000000000000000000000000000000000000000000000000000138", - "0x0000000000000000000000000000000000000000000000000000000000000139", - "0x000000000000000000000000000000000000000000000000000000000000013a", - "0x000000000000000000000000000000000000000000000000000000000000013b", - "0x000000000000000000000000000000000000000000000000000000000000013c", - "0x000000000000000000000000000000000000000000000000000000000000013d", - "0x000000000000000000000000000000000000000000000000000000000000013e", - "0x000000000000000000000000000000000000000000000000000000000000013f", - "0x0000000000000000000000000000000000000000000000000000000000000140", - "0x0000000000000000000000000000000000000000000000000000000000000141", - "0x0000000000000000000000000000000000000000000000000000000000000142", - "0x0000000000000000000000000000000000000000000000000000000000000143", - "0x0000000000000000000000000000000000000000000000000000000000000144", - "0x0000000000000000000000000000000000000000000000000000000000000145", - "0x0000000000000000000000000000000000000000000000000000000000000146", - "0x0000000000000000000000000000000000000000000000000000000000000147", - "0x0000000000000000000000000000000000000000000000000000000000000148", - "0x0000000000000000000000000000000000000000000000000000000000000149", - "0x000000000000000000000000000000000000000000000000000000000000014a", - "0x000000000000000000000000000000000000000000000000000000000000014b", - "0x000000000000000000000000000000000000000000000000000000000000014c", - "0x000000000000000000000000000000000000000000000000000000000000014d", - "0x000000000000000000000000000000000000000000000000000000000000014e", - "0x000000000000000000000000000000000000000000000000000000000000014f", - "0x0000000000000000000000000000000000000000000000000000000000000150", - "0x0000000000000000000000000000000000000000000000000000000000000151", - "0x0000000000000000000000000000000000000000000000000000000000000152", - "0x0000000000000000000000000000000000000000000000000000000000000153", - "0x0000000000000000000000000000000000000000000000000000000000000154", - "0x0000000000000000000000000000000000000000000000000000000000000155", - "0x0000000000000000000000000000000000000000000000000000000000000156", - "0x0000000000000000000000000000000000000000000000000000000000000157", - "0x0000000000000000000000000000000000000000000000000000000000000158", - "0x0000000000000000000000000000000000000000000000000000000000000159", - "0x000000000000000000000000000000000000000000000000000000000000015a", - "0x000000000000000000000000000000000000000000000000000000000000015b", - "0x000000000000000000000000000000000000000000000000000000000000015c", - "0x000000000000000000000000000000000000000000000000000000000000015d", - "0x000000000000000000000000000000000000000000000000000000000000015e", - "0x000000000000000000000000000000000000000000000000000000000000015f", - "0x0000000000000000000000000000000000000000000000000000000000000160", - "0x0000000000000000000000000000000000000000000000000000000000000161", - "0x0000000000000000000000000000000000000000000000000000000000000162", - "0x0000000000000000000000000000000000000000000000000000000000000163", - "0x0000000000000000000000000000000000000000000000000000000000000164", - "0x0000000000000000000000000000000000000000000000000000000000000165", - "0x0000000000000000000000000000000000000000000000000000000000000166", - "0x0000000000000000000000000000000000000000000000000000000000000167", - "0x0000000000000000000000000000000000000000000000000000000000000168", - "0x0000000000000000000000000000000000000000000000000000000000000169", - "0x000000000000000000000000000000000000000000000000000000000000016a", - "0x000000000000000000000000000000000000000000000000000000000000016b", - "0x000000000000000000000000000000000000000000000000000000000000016c", - "0x000000000000000000000000000000000000000000000000000000000000016d", - "0x000000000000000000000000000000000000000000000000000000000000016e", - "0x000000000000000000000000000000000000000000000000000000000000016f", - "0x0000000000000000000000000000000000000000000000000000000000000170", - "0x0000000000000000000000000000000000000000000000000000000000000171", - "0x0000000000000000000000000000000000000000000000000000000000000172", - "0x0000000000000000000000000000000000000000000000000000000000000173", - "0x0000000000000000000000000000000000000000000000000000000000000174", - "0x0000000000000000000000000000000000000000000000000000000000000175", - "0x0000000000000000000000000000000000000000000000000000000000000176", - "0x0000000000000000000000000000000000000000000000000000000000000177", - "0x0000000000000000000000000000000000000000000000000000000000000178", - "0x0000000000000000000000000000000000000000000000000000000000000179", - "0x000000000000000000000000000000000000000000000000000000000000017a", - "0x000000000000000000000000000000000000000000000000000000000000017b", - "0x000000000000000000000000000000000000000000000000000000000000017c", - "0x000000000000000000000000000000000000000000000000000000000000017d", - "0x000000000000000000000000000000000000000000000000000000000000017e", - "0x000000000000000000000000000000000000000000000000000000000000017f", - "0x0000000000000000000000000000000000000000000000000000000000000180", - "0x0000000000000000000000000000000000000000000000000000000000000181", - "0x0000000000000000000000000000000000000000000000000000000000000182", - "0x0000000000000000000000000000000000000000000000000000000000000183", - "0x0000000000000000000000000000000000000000000000000000000000000184", - "0x0000000000000000000000000000000000000000000000000000000000000185", - "0x0000000000000000000000000000000000000000000000000000000000000186", - "0x0000000000000000000000000000000000000000000000000000000000000187", - "0x0000000000000000000000000000000000000000000000000000000000000188", - "0x0000000000000000000000000000000000000000000000000000000000000189", - "0x000000000000000000000000000000000000000000000000000000000000018a", - "0x000000000000000000000000000000000000000000000000000000000000018b", - "0x000000000000000000000000000000000000000000000000000000000000018c", - "0x000000000000000000000000000000000000000000000000000000000000018d", - "0x000000000000000000000000000000000000000000000000000000000000018e", - "0x000000000000000000000000000000000000000000000000000000000000018f", - "0x0000000000000000000000000000000000000000000000000000000000000190", - "0x0000000000000000000000000000000000000000000000000000000000000191", - "0x0000000000000000000000000000000000000000000000000000000000000192", - "0x0000000000000000000000000000000000000000000000000000000000000193", - "0x0000000000000000000000000000000000000000000000000000000000000194", - "0x0000000000000000000000000000000000000000000000000000000000000195", - "0x0000000000000000000000000000000000000000000000000000000000000196", - "0x0000000000000000000000000000000000000000000000000000000000000197", - "0x0000000000000000000000000000000000000000000000000000000000000198", - "0x0000000000000000000000000000000000000000000000000000000000000199", - "0x000000000000000000000000000000000000000000000000000000000000019a", - "0x000000000000000000000000000000000000000000000000000000000000019b", - "0x000000000000000000000000000000000000000000000000000000000000019c", - "0x000000000000000000000000000000000000000000000000000000000000019d", - "0x000000000000000000000000000000000000000000000000000000000000019e", - "0x000000000000000000000000000000000000000000000000000000000000019f", - "0x00000000000000000000000000000000000000000000000000000000000001a0", - "0x00000000000000000000000000000000000000000000000000000000000001a1", - "0x00000000000000000000000000000000000000000000000000000000000001a2", - "0x00000000000000000000000000000000000000000000000000000000000001a3", - "0x00000000000000000000000000000000000000000000000000000000000001a4", - "0x00000000000000000000000000000000000000000000000000000000000001a5", - "0x00000000000000000000000000000000000000000000000000000000000001a6", - "0x00000000000000000000000000000000000000000000000000000000000001a7", - "0x00000000000000000000000000000000000000000000000000000000000001a8", - "0x00000000000000000000000000000000000000000000000000000000000001a9", - "0x00000000000000000000000000000000000000000000000000000000000001aa", - "0x00000000000000000000000000000000000000000000000000000000000001ab", - "0x00000000000000000000000000000000000000000000000000000000000001ac", - "0x00000000000000000000000000000000000000000000000000000000000001ad", - "0x00000000000000000000000000000000000000000000000000000000000001ae", - "0x00000000000000000000000000000000000000000000000000000000000001af", - "0x00000000000000000000000000000000000000000000000000000000000001b0", - "0x00000000000000000000000000000000000000000000000000000000000001b1", - "0x00000000000000000000000000000000000000000000000000000000000001b2", - "0x00000000000000000000000000000000000000000000000000000000000001b3", - "0x00000000000000000000000000000000000000000000000000000000000001b4", - "0x00000000000000000000000000000000000000000000000000000000000001b5", - "0x00000000000000000000000000000000000000000000000000000000000001b6", - "0x00000000000000000000000000000000000000000000000000000000000001b7", - "0x00000000000000000000000000000000000000000000000000000000000001b8", - "0x00000000000000000000000000000000000000000000000000000000000001b9", - "0x00000000000000000000000000000000000000000000000000000000000001ba", - "0x00000000000000000000000000000000000000000000000000000000000001bb", - "0x00000000000000000000000000000000000000000000000000000000000001bc", - "0x00000000000000000000000000000000000000000000000000000000000001bd", - "0x00000000000000000000000000000000000000000000000000000000000001be", - "0x00000000000000000000000000000000000000000000000000000000000001bf", - "0x00000000000000000000000000000000000000000000000000000000000001c0", - "0x00000000000000000000000000000000000000000000000000000000000001c1", - "0x00000000000000000000000000000000000000000000000000000000000001c2", - "0x00000000000000000000000000000000000000000000000000000000000001c3", - "0x00000000000000000000000000000000000000000000000000000000000001c4", - "0x00000000000000000000000000000000000000000000000000000000000001c5", - "0x00000000000000000000000000000000000000000000000000000000000001c6", - "0x00000000000000000000000000000000000000000000000000000000000001c7", - "0x00000000000000000000000000000000000000000000000000000000000001c8", - "0x00000000000000000000000000000000000000000000000000000000000001c9", - "0x00000000000000000000000000000000000000000000000000000000000001ca", - "0x00000000000000000000000000000000000000000000000000000000000001cb", - "0x00000000000000000000000000000000000000000000000000000000000001cc", - "0x00000000000000000000000000000000000000000000000000000000000001cd", - "0x00000000000000000000000000000000000000000000000000000000000001ce", - "0x00000000000000000000000000000000000000000000000000000000000001cf", - "0x00000000000000000000000000000000000000000000000000000000000001d0", - "0x00000000000000000000000000000000000000000000000000000000000001d1", - "0x00000000000000000000000000000000000000000000000000000000000001d2", - "0x00000000000000000000000000000000000000000000000000000000000001d3", - "0x00000000000000000000000000000000000000000000000000000000000001d4", - "0x00000000000000000000000000000000000000000000000000000000000001d5", - "0x00000000000000000000000000000000000000000000000000000000000001d6", - "0x00000000000000000000000000000000000000000000000000000000000001d7", - "0x00000000000000000000000000000000000000000000000000000000000001d8", - "0x00000000000000000000000000000000000000000000000000000000000001d9", - "0x00000000000000000000000000000000000000000000000000000000000001da", - "0x00000000000000000000000000000000000000000000000000000000000001db", - "0x00000000000000000000000000000000000000000000000000000000000001dc", - "0x00000000000000000000000000000000000000000000000000000000000001dd", - "0x00000000000000000000000000000000000000000000000000000000000001de", - "0x00000000000000000000000000000000000000000000000000000000000001df", - "0x00000000000000000000000000000000000000000000000000000000000001e0", - "0x00000000000000000000000000000000000000000000000000000000000001e1", - "0x00000000000000000000000000000000000000000000000000000000000001e2", - "0x00000000000000000000000000000000000000000000000000000000000001e3", - "0x00000000000000000000000000000000000000000000000000000000000001e4", - "0x00000000000000000000000000000000000000000000000000000000000001e5", - "0x00000000000000000000000000000000000000000000000000000000000001e6", - "0x00000000000000000000000000000000000000000000000000000000000001e7", - "0x00000000000000000000000000000000000000000000000000000000000001e8", - "0x00000000000000000000000000000000000000000000000000000000000001e9", - "0x00000000000000000000000000000000000000000000000000000000000001ea", - "0x00000000000000000000000000000000000000000000000000000000000001eb", - "0x00000000000000000000000000000000000000000000000000000000000001ec", - "0x00000000000000000000000000000000000000000000000000000000000001ed", - "0x00000000000000000000000000000000000000000000000000000000000001ee", - "0x00000000000000000000000000000000000000000000000000000000000001ef", - "0x00000000000000000000000000000000000000000000000000000000000001f0", - "0x00000000000000000000000000000000000000000000000000000000000001f1", - "0x00000000000000000000000000000000000000000000000000000000000001f2", - "0x00000000000000000000000000000000000000000000000000000000000001f3", - "0x00000000000000000000000000000000000000000000000000000000000001f4", - "0x00000000000000000000000000000000000000000000000000000000000001f5", - "0x00000000000000000000000000000000000000000000000000000000000001f6", - "0x00000000000000000000000000000000000000000000000000000000000001f7", - "0x00000000000000000000000000000000000000000000000000000000000001f8", - "0x00000000000000000000000000000000000000000000000000000000000001f9", - "0x00000000000000000000000000000000000000000000000000000000000001fa", - "0x00000000000000000000000000000000000000000000000000000000000001fb", - "0x00000000000000000000000000000000000000000000000000000000000001fc", - "0x00000000000000000000000000000000000000000000000000000000000001fd", - "0x00000000000000000000000000000000000000000000000000000000000001fe", - "0x00000000000000000000000000000000000000000000000000000000000001ff", - "0x0000000000000000000000000000000000000000000000000000000000000200", - "0x0000000000000000000000000000000000000000000000000000000000000201", - "0x0000000000000000000000000000000000000000000000000000000000000202", - "0x0000000000000000000000000000000000000000000000000000000000000203", - "0x0000000000000000000000000000000000000000000000000000000000000204", - "0x0000000000000000000000000000000000000000000000000000000000000205", - "0x0000000000000000000000000000000000000000000000000000000000000206", - "0x0000000000000000000000000000000000000000000000000000000000000207", - "0x0000000000000000000000000000000000000000000000000000000000000208", - "0x0000000000000000000000000000000000000000000000000000000000000209", - "0x000000000000000000000000000000000000000000000000000000000000020a", - "0x000000000000000000000000000000000000000000000000000000000000020b", - "0x000000000000000000000000000000000000000000000000000000000000020c", - "0x000000000000000000000000000000000000000000000000000000000000020d", - "0x000000000000000000000000000000000000000000000000000000000000020e", - "0x000000000000000000000000000000000000000000000000000000000000020f", - "0x0000000000000000000000000000000000000000000000000000000000000210", - "0x0000000000000000000000000000000000000000000000000000000000000211", - "0x0000000000000000000000000000000000000000000000000000000000000212", - "0x0000000000000000000000000000000000000000000000000000000000000213", - "0x0000000000000000000000000000000000000000000000000000000000000214", - "0x0000000000000000000000000000000000000000000000000000000000000215", - "0x0000000000000000000000000000000000000000000000000000000000000216", - "0x0000000000000000000000000000000000000000000000000000000000000217" -] - -[inputs.previous_rollup_data.vk_data] -leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" -sibling_path = [ - "0x2c15a460b3f346727afbabb2d24dc170f733df9a80710421e488c9f75466c38f", - "0x2e6263cc45f5d44844d6635c67b1e190a7b7f913e65117c72146eff2a682a90b", - "0x23bb283d0b2b45895ded7cd528d814a4de4b493a15c8acd40d4e7cb43d4b419d", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", - "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", - "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" -] - - [inputs.previous_rollup_data.vk_data.vk] - key = [ - "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x0000000000000000000000000000000000000000000000000000000000000424", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000040a", - "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000604db4eb35fa49f73d9bf9847da4c2794a", - "0x000000000000000000000000000000000013bdff7be51d3abd9773fb6910edfc", - "0x000000000000000000000000000000560d968c63ffd32a04a63820151c560ff7", - "0x000000000000000000000000000000000000ce7b8947ced7aaa14034ad599415", - "0x0000000000000000000000000000009b1d35ad5588ff427282ef7671a6844e04", - "0x00000000000000000000000000000000002447feb337b2d8dcd0c678ff3ab850", - "0x0000000000000000000000000000006cd997e8dc725b7307cddc80e85286b81a", - "0x00000000000000000000000000000000002baf277a1dd6600311384fa3b32197", - "0x0000000000000000000000000000006682a04a1ef072699003e7487de8d69e98", - "0x00000000000000000000000000000000002347441a1fb60b635810ad6ce9eb74", - "0x000000000000000000000000000000ad829d26c2ba430631f2a5f0863120227d", - "0x0000000000000000000000000000000000189137bffc08bde2644791248da37a", - "0x000000000000000000000000000000e4635bd390719528329c8cc09f4c2401fb", - "0x00000000000000000000000000000000000914766b529b8b1545a4d397ad5c1d", - "0x0000000000000000000000000000004e7a5f7401674eecfd18f6dff4d8771536", - "0x00000000000000000000000000000000000856d8c3a021bb6bba590f590a92c2", - "0x000000000000000000000000000000816c972cc6e12405d8e6afd7f8d82ecd1e", - "0x0000000000000000000000000000000000074969da7b7406716102be558fe679", - "0x000000000000000000000000000000cad823dd389c27e48a897c6444c2400dca", - "0x000000000000000000000000000000000020e5259b55223f566158388cd0bedc", - "0x000000000000000000000000000000374ba069f1947b161a5ab4eb51d502b20f", - "0x000000000000000000000000000000000010a26e66325c0a3711e7f0d3de9925", - "0x0000000000000000000000000000007eb30d9eadf279f30c491a502e1fb8702e", - "0x000000000000000000000000000000000001f620b20da0b7107aad711925c925", - "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", - "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", - "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", - "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", - "0x000000000000000000000000000000d779e4f53da96163c2a104260ff067aaca", - "0x0000000000000000000000000000000000220ee7d17b840a95c8385481c0e3af", - "0x0000000000000000000000000000009c6dfbbe5e8b89fa7842cccfcc4b24069f", - "0x00000000000000000000000000000000000b3d8dee0f4695d143e46eeacf1fef", - "0x000000000000000000000000000000e58de982831390e4f4fc0d0526385aa320", - "0x000000000000000000000000000000000002a21635ea4cfedfbcd5faf8335ce7", - "0x000000000000000000000000000000fa0a03f49d2ba2475b6a2e5214e26a8515", - "0x00000000000000000000000000000000000e3b53875682829a0b6f1e6bc18d79", - "0x000000000000000000000000000000a04a8f0ad1d4d28b707adc67f19c350752", - "0x00000000000000000000000000000000001ddd69157786f00cabbaf591215deb", - "0x0000000000000000000000000000004972ebf81388e67e8c65df463d677e9cb7", - "0x000000000000000000000000000000000023efcf2b5b38721e5d18909e61b23c", - "0x0000000000000000000000000000001fe4afb5afa89f9b9786b0619a181ba52b", - "0x0000000000000000000000000000000000119599de83b8d11f99b30fbe00d9bd", - "0x000000000000000000000000000000aa116befb48f10ca32c569d7ef0a416dea", - "0x000000000000000000000000000000000010deea6149f9626e061c3d9bae444a", - "0x0000000000000000000000000000002fa6c45aa2d4d9f211ce7de237e6e371bc", - "0x0000000000000000000000000000000000085501312a0251ca7af2273adf7589", - "0x000000000000000000000000000000f2ff5fab3eab6ba101a4a0d3bdc6b090b9", - "0x00000000000000000000000000000000000c95ef5d99f441d5e99a53fe551acb", - "0x000000000000000000000000000000efc4da5db53ef1bf85a46ff1349234956c", - "0x00000000000000000000000000000000001ae3aa7c100b2d02eb2bc003e3a4e8", - "0x000000000000000000000000000000bcd5c4f546e5f8a6cbaca84ae85a1d1cf9", - "0x00000000000000000000000000000000002bfd3ba12a4bb7e4f4a7c7f80d4afb", - "0x00000000000000000000000000000040e2d0dd1401be475fd89735ba2c3da259", - "0x00000000000000000000000000000000000800870be3d900c5a674dc76c1dc30", - "0x000000000000000000000000000000e43a5ac5382128ee89a58ca0e39a986991", - "0x0000000000000000000000000000000000088db526b9a8c41e60afe16f7917fc", - "0x000000000000000000000000000000c454925162ca4aa67a393b4daebe937ede", - "0x0000000000000000000000000000000000286569a2f9b4b847a4a15016a86070", - "0x000000000000000000000000000000fb036dd09f2cccacff00e8c05c750e7b9c", - "0x00000000000000000000000000000000000235dd10a25a2c7721946bc316fd88", - "0x000000000000000000000000000000badee2004bce6fab1719465da95034d3f4", - "0x00000000000000000000000000000000002425612e4a4f4b323d11e9113390f9", - "0x00000000000000000000000000000093f1b06d0fb7759d837f8389b0be35e152", - "0x000000000000000000000000000000000016e9ad1ab11f0333a2fc2730bff5b1", - "0x00000000000000000000000000000086d3e5cc692dba4a02884822f70fa15843", - "0x00000000000000000000000000000000000d6292c39f0aa57e8c7537823eb11f", - "0x0000000000000000000000000000007285ecbf639aa082c72b4f04de5b4ed81f", - "0x0000000000000000000000000000000000278cfabe8ae1d626fff281616b75ba", - "0x000000000000000000000000000000f19d404432af369997b81c225284f85bfc", - "0x000000000000000000000000000000000024ed1d357f726fb577ac805cef7e17", - "0x000000000000000000000000000000ed5df02aa9d468dd0134e7ba8441ed6f4c", - "0x00000000000000000000000000000000001e480018f281f6fbea9ff092f1b2fc", - "0x0000000000000000000000000000006e46103b3747edbed26818a3f1ad475dbe", - "0x000000000000000000000000000000000016371e759535195aad4691f045278b", - "0x000000000000000000000000000000091cccec2bb1de89ead52badfdfc36ca01", - "0x00000000000000000000000000000000000a2dff630479a0644a03765438b612", - "0x0000000000000000000000000000006382a28661b801e5b3d64666d955d1b001", - "0x00000000000000000000000000000000000c465492ba9052d42e1284b82cbbae", - "0x0000000000000000000000000000005a430e375a270f0ccaf7888d85ff7221c3", - "0x00000000000000000000000000000000000c8af91a138e46a9537435ebb01525", - "0x000000000000000000000000000000850c8dc798ea3cb3bbcda5cd4722b80ce1", - "0x000000000000000000000000000000000011dbf7e863e0d151baf8de62bfc943", - "0x0000000000000000000000000000009c66211cd25f530ff802cba88a864e61bd", - "0x000000000000000000000000000000000007592d0832ac5fb7161c91429c85ee", - "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", - "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", - "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", - "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", - "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", - "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", - "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", - "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", - "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", - "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", - "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", - "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", - "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", - "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", - "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", - "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000f7a456c9fd2a06f094e2c6196bd0632331", - "0x000000000000000000000000000000000023f5b0d82ff583c9904c2e87da2840", - "0x00000000000000000000000000000085f9c7733fb65988b5b6bb0ad2a20203e7", - "0x00000000000000000000000000000000002ab3c95c0603eec9783e23f41fe320" -] - hash = "0x25fd6308a2ca3341d249ad96851c14b8948c99a7c4c6e3a0f9fbe10aefb5d834" - -[[inputs.previous_rollup_data]] -[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" -proposed_block_header_hashes = [ - "0x004efd99df444edac44b758ea284dc1e9819620cbada4224b1572feb8dec5f99", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" - prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x2a63bcce4105e7b7c0960a1baa9ad44f0f80f34f7888b35baa79bf0a2c0d65ce" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x0feb7aa308aa4111e7e1bbe93aa9ae2478e89bdc8dcc9d96bd90e5763c94a6a0" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b73c" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b73c" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000c92b9f48" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x22dcabb08067982a3037d4e192e088c691dd8e8e743f65d039cb9b44f8f39e54" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0xc6e04f483f053123786e218fbd7768", - "0xd87f94ae067c69d3fd302cc86e7033", - "0x2bae" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x00a4e334b63a4e8fc8a8a55248f3d5534674eaef2e83f60cea15e7b0bf46e314", - "0x0000000000000000000000000000008fbb4d32db2827838194ec2461c428f843" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.proof] +fields = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000015", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x000000000000000000000000000000000000000000000000000000000000001a", + "0x000000000000000000000000000000000000000000000000000000000000001b", + "0x000000000000000000000000000000000000000000000000000000000000001c", + "0x000000000000000000000000000000000000000000000000000000000000001d", + "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x000000000000000000000000000000000000000000000000000000000000001f", + "0x0000000000000000000000000000000000000000000000000000000000000020", + "0x0000000000000000000000000000000000000000000000000000000000000021", + "0x0000000000000000000000000000000000000000000000000000000000000022", + "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000026", + "0x0000000000000000000000000000000000000000000000000000000000000027", + "0x0000000000000000000000000000000000000000000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000029", + "0x000000000000000000000000000000000000000000000000000000000000002a", + "0x000000000000000000000000000000000000000000000000000000000000002b", + "0x000000000000000000000000000000000000000000000000000000000000002c", + "0x000000000000000000000000000000000000000000000000000000000000002d", + "0x000000000000000000000000000000000000000000000000000000000000002e", + "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x0000000000000000000000000000000000000000000000000000000000000031", + "0x0000000000000000000000000000000000000000000000000000000000000032", + "0x0000000000000000000000000000000000000000000000000000000000000033", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000044", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000000000000000000000000000000000004e", + "0x000000000000000000000000000000000000000000000000000000000000004f", + "0x0000000000000000000000000000000000000000000000000000000000000050", + "0x0000000000000000000000000000000000000000000000000000000000000051", + "0x0000000000000000000000000000000000000000000000000000000000000052", + "0x0000000000000000000000000000000000000000000000000000000000000053", + "0x0000000000000000000000000000000000000000000000000000000000000054", + "0x0000000000000000000000000000000000000000000000000000000000000055", + "0x0000000000000000000000000000000000000000000000000000000000000056", + "0x0000000000000000000000000000000000000000000000000000000000000057", + "0x0000000000000000000000000000000000000000000000000000000000000058", + "0x0000000000000000000000000000000000000000000000000000000000000059", + "0x000000000000000000000000000000000000000000000000000000000000005a", + "0x000000000000000000000000000000000000000000000000000000000000005b", + "0x000000000000000000000000000000000000000000000000000000000000005c", + "0x000000000000000000000000000000000000000000000000000000000000005d", + "0x000000000000000000000000000000000000000000000000000000000000005e", + "0x000000000000000000000000000000000000000000000000000000000000005f", + "0x0000000000000000000000000000000000000000000000000000000000000060", + "0x0000000000000000000000000000000000000000000000000000000000000061", + "0x0000000000000000000000000000000000000000000000000000000000000062", + "0x0000000000000000000000000000000000000000000000000000000000000063", + "0x0000000000000000000000000000000000000000000000000000000000000064", + "0x0000000000000000000000000000000000000000000000000000000000000065", + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0x0000000000000000000000000000000000000000000000000000000000000067", + "0x0000000000000000000000000000000000000000000000000000000000000068", + "0x0000000000000000000000000000000000000000000000000000000000000069", + "0x000000000000000000000000000000000000000000000000000000000000006a", + "0x000000000000000000000000000000000000000000000000000000000000006b", + "0x000000000000000000000000000000000000000000000000000000000000006c", + "0x000000000000000000000000000000000000000000000000000000000000006d", + "0x000000000000000000000000000000000000000000000000000000000000006e", + "0x000000000000000000000000000000000000000000000000000000000000006f", + "0x0000000000000000000000000000000000000000000000000000000000000070", + "0x0000000000000000000000000000000000000000000000000000000000000071", + "0x0000000000000000000000000000000000000000000000000000000000000072", + "0x0000000000000000000000000000000000000000000000000000000000000073", + "0x0000000000000000000000000000000000000000000000000000000000000074", + "0x0000000000000000000000000000000000000000000000000000000000000075", + "0x0000000000000000000000000000000000000000000000000000000000000076", + "0x0000000000000000000000000000000000000000000000000000000000000077", + "0x0000000000000000000000000000000000000000000000000000000000000078", + "0x0000000000000000000000000000000000000000000000000000000000000079", + "0x000000000000000000000000000000000000000000000000000000000000007a", + "0x000000000000000000000000000000000000000000000000000000000000007b", + "0x000000000000000000000000000000000000000000000000000000000000007c", + "0x000000000000000000000000000000000000000000000000000000000000007d", + "0x000000000000000000000000000000000000000000000000000000000000007e", + "0x000000000000000000000000000000000000000000000000000000000000007f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000081", + "0x0000000000000000000000000000000000000000000000000000000000000082", + "0x0000000000000000000000000000000000000000000000000000000000000083", + "0x0000000000000000000000000000000000000000000000000000000000000084", + "0x0000000000000000000000000000000000000000000000000000000000000085", + "0x0000000000000000000000000000000000000000000000000000000000000086", + "0x0000000000000000000000000000000000000000000000000000000000000087", + "0x0000000000000000000000000000000000000000000000000000000000000088", + "0x0000000000000000000000000000000000000000000000000000000000000089", + "0x000000000000000000000000000000000000000000000000000000000000008a", + "0x000000000000000000000000000000000000000000000000000000000000008b", + "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x000000000000000000000000000000000000000000000000000000000000008d", + "0x000000000000000000000000000000000000000000000000000000000000008e", + "0x000000000000000000000000000000000000000000000000000000000000008f", + "0x0000000000000000000000000000000000000000000000000000000000000090", + "0x0000000000000000000000000000000000000000000000000000000000000091", + "0x0000000000000000000000000000000000000000000000000000000000000092", + "0x0000000000000000000000000000000000000000000000000000000000000093", + "0x0000000000000000000000000000000000000000000000000000000000000094", + "0x0000000000000000000000000000000000000000000000000000000000000095", + "0x0000000000000000000000000000000000000000000000000000000000000096", + "0x0000000000000000000000000000000000000000000000000000000000000097", + "0x0000000000000000000000000000000000000000000000000000000000000098", + "0x0000000000000000000000000000000000000000000000000000000000000099", + "0x000000000000000000000000000000000000000000000000000000000000009a", + "0x000000000000000000000000000000000000000000000000000000000000009b", + "0x000000000000000000000000000000000000000000000000000000000000009c", + "0x000000000000000000000000000000000000000000000000000000000000009d", + "0x000000000000000000000000000000000000000000000000000000000000009e", + "0x000000000000000000000000000000000000000000000000000000000000009f", + "0x00000000000000000000000000000000000000000000000000000000000000a0", + "0x00000000000000000000000000000000000000000000000000000000000000a1", + "0x00000000000000000000000000000000000000000000000000000000000000a2", + "0x00000000000000000000000000000000000000000000000000000000000000a3", + "0x00000000000000000000000000000000000000000000000000000000000000a4", + "0x00000000000000000000000000000000000000000000000000000000000000a5", + "0x00000000000000000000000000000000000000000000000000000000000000a6", + "0x00000000000000000000000000000000000000000000000000000000000000a7", + "0x00000000000000000000000000000000000000000000000000000000000000a8", + "0x00000000000000000000000000000000000000000000000000000000000000a9", + "0x00000000000000000000000000000000000000000000000000000000000000aa", + "0x00000000000000000000000000000000000000000000000000000000000000ab", + "0x00000000000000000000000000000000000000000000000000000000000000ac", + "0x00000000000000000000000000000000000000000000000000000000000000ad", + "0x00000000000000000000000000000000000000000000000000000000000000ae", + "0x00000000000000000000000000000000000000000000000000000000000000af", + "0x00000000000000000000000000000000000000000000000000000000000000b0", + "0x00000000000000000000000000000000000000000000000000000000000000b1", + "0x00000000000000000000000000000000000000000000000000000000000000b2", + "0x00000000000000000000000000000000000000000000000000000000000000b3", + "0x00000000000000000000000000000000000000000000000000000000000000b4", + "0x00000000000000000000000000000000000000000000000000000000000000b5", + "0x00000000000000000000000000000000000000000000000000000000000000b6", + "0x00000000000000000000000000000000000000000000000000000000000000b7", + "0x00000000000000000000000000000000000000000000000000000000000000b8", + "0x00000000000000000000000000000000000000000000000000000000000000b9", + "0x00000000000000000000000000000000000000000000000000000000000000ba", + "0x00000000000000000000000000000000000000000000000000000000000000bb", + "0x00000000000000000000000000000000000000000000000000000000000000bc", + "0x00000000000000000000000000000000000000000000000000000000000000bd", + "0x00000000000000000000000000000000000000000000000000000000000000be", + "0x00000000000000000000000000000000000000000000000000000000000000bf", + "0x00000000000000000000000000000000000000000000000000000000000000c0", + "0x00000000000000000000000000000000000000000000000000000000000000c1", + "0x00000000000000000000000000000000000000000000000000000000000000c2", + "0x00000000000000000000000000000000000000000000000000000000000000c3", + "0x00000000000000000000000000000000000000000000000000000000000000c4", + "0x00000000000000000000000000000000000000000000000000000000000000c5", + "0x00000000000000000000000000000000000000000000000000000000000000c6", + "0x00000000000000000000000000000000000000000000000000000000000000c7", + "0x00000000000000000000000000000000000000000000000000000000000000c8", + "0x00000000000000000000000000000000000000000000000000000000000000c9", + "0x00000000000000000000000000000000000000000000000000000000000000ca", + "0x00000000000000000000000000000000000000000000000000000000000000cb", + "0x00000000000000000000000000000000000000000000000000000000000000cc", + "0x00000000000000000000000000000000000000000000000000000000000000cd", + "0x00000000000000000000000000000000000000000000000000000000000000ce", + "0x00000000000000000000000000000000000000000000000000000000000000cf", + "0x00000000000000000000000000000000000000000000000000000000000000d0", + "0x00000000000000000000000000000000000000000000000000000000000000d1", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000d3", + "0x00000000000000000000000000000000000000000000000000000000000000d4", + "0x00000000000000000000000000000000000000000000000000000000000000d5", + "0x00000000000000000000000000000000000000000000000000000000000000d6", + "0x00000000000000000000000000000000000000000000000000000000000000d7", + "0x00000000000000000000000000000000000000000000000000000000000000d8", + "0x00000000000000000000000000000000000000000000000000000000000000d9", + "0x00000000000000000000000000000000000000000000000000000000000000da", + "0x00000000000000000000000000000000000000000000000000000000000000db", + "0x00000000000000000000000000000000000000000000000000000000000000dc", + "0x00000000000000000000000000000000000000000000000000000000000000dd", + "0x00000000000000000000000000000000000000000000000000000000000000de", + "0x00000000000000000000000000000000000000000000000000000000000000df", + "0x00000000000000000000000000000000000000000000000000000000000000e0", + "0x00000000000000000000000000000000000000000000000000000000000000e1", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000000000000000000000000000000000000e3", + "0x00000000000000000000000000000000000000000000000000000000000000e4", + "0x00000000000000000000000000000000000000000000000000000000000000e5", + "0x00000000000000000000000000000000000000000000000000000000000000e6", + "0x00000000000000000000000000000000000000000000000000000000000000e7", + "0x00000000000000000000000000000000000000000000000000000000000000e8", + "0x00000000000000000000000000000000000000000000000000000000000000e9", + "0x00000000000000000000000000000000000000000000000000000000000000ea", + "0x00000000000000000000000000000000000000000000000000000000000000eb", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x00000000000000000000000000000000000000000000000000000000000000ed", + "0x00000000000000000000000000000000000000000000000000000000000000ee", + "0x00000000000000000000000000000000000000000000000000000000000000ef", + "0x00000000000000000000000000000000000000000000000000000000000000f0", + "0x00000000000000000000000000000000000000000000000000000000000000f1", + "0x00000000000000000000000000000000000000000000000000000000000000f2", + "0x00000000000000000000000000000000000000000000000000000000000000f3", + "0x00000000000000000000000000000000000000000000000000000000000000f4", + "0x00000000000000000000000000000000000000000000000000000000000000f5", + "0x00000000000000000000000000000000000000000000000000000000000000f6", + "0x00000000000000000000000000000000000000000000000000000000000000f7", + "0x00000000000000000000000000000000000000000000000000000000000000f8", + "0x00000000000000000000000000000000000000000000000000000000000000f9", + "0x00000000000000000000000000000000000000000000000000000000000000fa", + "0x00000000000000000000000000000000000000000000000000000000000000fb", + "0x00000000000000000000000000000000000000000000000000000000000000fc", + "0x00000000000000000000000000000000000000000000000000000000000000fd", + "0x00000000000000000000000000000000000000000000000000000000000000fe", + "0x00000000000000000000000000000000000000000000000000000000000000ff", + "0x0000000000000000000000000000000000000000000000000000000000000100", + "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000102", + "0x0000000000000000000000000000000000000000000000000000000000000103", + "0x0000000000000000000000000000000000000000000000000000000000000104", + "0x0000000000000000000000000000000000000000000000000000000000000105", + "0x0000000000000000000000000000000000000000000000000000000000000106", + "0x0000000000000000000000000000000000000000000000000000000000000107", + "0x0000000000000000000000000000000000000000000000000000000000000108", + "0x0000000000000000000000000000000000000000000000000000000000000109", + "0x000000000000000000000000000000000000000000000000000000000000010a", + "0x000000000000000000000000000000000000000000000000000000000000010b", + "0x000000000000000000000000000000000000000000000000000000000000010c", + "0x000000000000000000000000000000000000000000000000000000000000010d", + "0x000000000000000000000000000000000000000000000000000000000000010e", + "0x000000000000000000000000000000000000000000000000000000000000010f", + "0x0000000000000000000000000000000000000000000000000000000000000110", + "0x0000000000000000000000000000000000000000000000000000000000000111", + "0x0000000000000000000000000000000000000000000000000000000000000112", + "0x0000000000000000000000000000000000000000000000000000000000000113", + "0x0000000000000000000000000000000000000000000000000000000000000114", + "0x0000000000000000000000000000000000000000000000000000000000000115", + "0x0000000000000000000000000000000000000000000000000000000000000116", + "0x0000000000000000000000000000000000000000000000000000000000000117", + "0x0000000000000000000000000000000000000000000000000000000000000118", + "0x0000000000000000000000000000000000000000000000000000000000000119", + "0x000000000000000000000000000000000000000000000000000000000000011a", + "0x000000000000000000000000000000000000000000000000000000000000011b", + "0x000000000000000000000000000000000000000000000000000000000000011c", + "0x000000000000000000000000000000000000000000000000000000000000011d", + "0x000000000000000000000000000000000000000000000000000000000000011e", + "0x000000000000000000000000000000000000000000000000000000000000011f", + "0x0000000000000000000000000000000000000000000000000000000000000120", + "0x0000000000000000000000000000000000000000000000000000000000000121", + "0x0000000000000000000000000000000000000000000000000000000000000122", + "0x0000000000000000000000000000000000000000000000000000000000000123", + "0x0000000000000000000000000000000000000000000000000000000000000124", + "0x0000000000000000000000000000000000000000000000000000000000000125", + "0x0000000000000000000000000000000000000000000000000000000000000126", + "0x0000000000000000000000000000000000000000000000000000000000000127", + "0x0000000000000000000000000000000000000000000000000000000000000128", + "0x0000000000000000000000000000000000000000000000000000000000000129", + "0x000000000000000000000000000000000000000000000000000000000000012a", + "0x000000000000000000000000000000000000000000000000000000000000012b", + "0x000000000000000000000000000000000000000000000000000000000000012c", + "0x000000000000000000000000000000000000000000000000000000000000012d", + "0x000000000000000000000000000000000000000000000000000000000000012e", + "0x000000000000000000000000000000000000000000000000000000000000012f", + "0x0000000000000000000000000000000000000000000000000000000000000130", + "0x0000000000000000000000000000000000000000000000000000000000000131", + "0x0000000000000000000000000000000000000000000000000000000000000132", + "0x0000000000000000000000000000000000000000000000000000000000000133", + "0x0000000000000000000000000000000000000000000000000000000000000134", + "0x0000000000000000000000000000000000000000000000000000000000000135", + "0x0000000000000000000000000000000000000000000000000000000000000136", + "0x0000000000000000000000000000000000000000000000000000000000000137", + "0x0000000000000000000000000000000000000000000000000000000000000138", + "0x0000000000000000000000000000000000000000000000000000000000000139", + "0x000000000000000000000000000000000000000000000000000000000000013a", + "0x000000000000000000000000000000000000000000000000000000000000013b", + "0x000000000000000000000000000000000000000000000000000000000000013c", + "0x000000000000000000000000000000000000000000000000000000000000013d", + "0x000000000000000000000000000000000000000000000000000000000000013e", + "0x000000000000000000000000000000000000000000000000000000000000013f", + "0x0000000000000000000000000000000000000000000000000000000000000140", + "0x0000000000000000000000000000000000000000000000000000000000000141", + "0x0000000000000000000000000000000000000000000000000000000000000142", + "0x0000000000000000000000000000000000000000000000000000000000000143", + "0x0000000000000000000000000000000000000000000000000000000000000144", + "0x0000000000000000000000000000000000000000000000000000000000000145", + "0x0000000000000000000000000000000000000000000000000000000000000146", + "0x0000000000000000000000000000000000000000000000000000000000000147", + "0x0000000000000000000000000000000000000000000000000000000000000148", + "0x0000000000000000000000000000000000000000000000000000000000000149", + "0x000000000000000000000000000000000000000000000000000000000000014a", + "0x000000000000000000000000000000000000000000000000000000000000014b", + "0x000000000000000000000000000000000000000000000000000000000000014c", + "0x000000000000000000000000000000000000000000000000000000000000014d", + "0x000000000000000000000000000000000000000000000000000000000000014e", + "0x000000000000000000000000000000000000000000000000000000000000014f", + "0x0000000000000000000000000000000000000000000000000000000000000150", + "0x0000000000000000000000000000000000000000000000000000000000000151", + "0x0000000000000000000000000000000000000000000000000000000000000152", + "0x0000000000000000000000000000000000000000000000000000000000000153", + "0x0000000000000000000000000000000000000000000000000000000000000154", + "0x0000000000000000000000000000000000000000000000000000000000000155", + "0x0000000000000000000000000000000000000000000000000000000000000156", + "0x0000000000000000000000000000000000000000000000000000000000000157", + "0x0000000000000000000000000000000000000000000000000000000000000158", + "0x0000000000000000000000000000000000000000000000000000000000000159", + "0x000000000000000000000000000000000000000000000000000000000000015a", + "0x000000000000000000000000000000000000000000000000000000000000015b", + "0x000000000000000000000000000000000000000000000000000000000000015c", + "0x000000000000000000000000000000000000000000000000000000000000015d", + "0x000000000000000000000000000000000000000000000000000000000000015e", + "0x000000000000000000000000000000000000000000000000000000000000015f", + "0x0000000000000000000000000000000000000000000000000000000000000160", + "0x0000000000000000000000000000000000000000000000000000000000000161", + "0x0000000000000000000000000000000000000000000000000000000000000162", + "0x0000000000000000000000000000000000000000000000000000000000000163", + "0x0000000000000000000000000000000000000000000000000000000000000164", + "0x0000000000000000000000000000000000000000000000000000000000000165", + "0x0000000000000000000000000000000000000000000000000000000000000166", + "0x0000000000000000000000000000000000000000000000000000000000000167", + "0x0000000000000000000000000000000000000000000000000000000000000168", + "0x0000000000000000000000000000000000000000000000000000000000000169", + "0x000000000000000000000000000000000000000000000000000000000000016a", + "0x000000000000000000000000000000000000000000000000000000000000016b", + "0x000000000000000000000000000000000000000000000000000000000000016c", + "0x000000000000000000000000000000000000000000000000000000000000016d", + "0x000000000000000000000000000000000000000000000000000000000000016e", + "0x000000000000000000000000000000000000000000000000000000000000016f", + "0x0000000000000000000000000000000000000000000000000000000000000170", + "0x0000000000000000000000000000000000000000000000000000000000000171", + "0x0000000000000000000000000000000000000000000000000000000000000172", + "0x0000000000000000000000000000000000000000000000000000000000000173", + "0x0000000000000000000000000000000000000000000000000000000000000174", + "0x0000000000000000000000000000000000000000000000000000000000000175", + "0x0000000000000000000000000000000000000000000000000000000000000176", + "0x0000000000000000000000000000000000000000000000000000000000000177", + "0x0000000000000000000000000000000000000000000000000000000000000178", + "0x0000000000000000000000000000000000000000000000000000000000000179", + "0x000000000000000000000000000000000000000000000000000000000000017a", + "0x000000000000000000000000000000000000000000000000000000000000017b", + "0x000000000000000000000000000000000000000000000000000000000000017c", + "0x000000000000000000000000000000000000000000000000000000000000017d", + "0x000000000000000000000000000000000000000000000000000000000000017e", + "0x000000000000000000000000000000000000000000000000000000000000017f", + "0x0000000000000000000000000000000000000000000000000000000000000180", + "0x0000000000000000000000000000000000000000000000000000000000000181", + "0x0000000000000000000000000000000000000000000000000000000000000182", + "0x0000000000000000000000000000000000000000000000000000000000000183", + "0x0000000000000000000000000000000000000000000000000000000000000184", + "0x0000000000000000000000000000000000000000000000000000000000000185", + "0x0000000000000000000000000000000000000000000000000000000000000186", + "0x0000000000000000000000000000000000000000000000000000000000000187", + "0x0000000000000000000000000000000000000000000000000000000000000188", + "0x0000000000000000000000000000000000000000000000000000000000000189", + "0x000000000000000000000000000000000000000000000000000000000000018a", + "0x000000000000000000000000000000000000000000000000000000000000018b", + "0x000000000000000000000000000000000000000000000000000000000000018c", + "0x000000000000000000000000000000000000000000000000000000000000018d", + "0x000000000000000000000000000000000000000000000000000000000000018e", + "0x000000000000000000000000000000000000000000000000000000000000018f", + "0x0000000000000000000000000000000000000000000000000000000000000190", + "0x0000000000000000000000000000000000000000000000000000000000000191", + "0x0000000000000000000000000000000000000000000000000000000000000192", + "0x0000000000000000000000000000000000000000000000000000000000000193", + "0x0000000000000000000000000000000000000000000000000000000000000194", + "0x0000000000000000000000000000000000000000000000000000000000000195", + "0x0000000000000000000000000000000000000000000000000000000000000196", + "0x0000000000000000000000000000000000000000000000000000000000000197", + "0x0000000000000000000000000000000000000000000000000000000000000198", + "0x0000000000000000000000000000000000000000000000000000000000000199", + "0x000000000000000000000000000000000000000000000000000000000000019a", + "0x000000000000000000000000000000000000000000000000000000000000019b", + "0x000000000000000000000000000000000000000000000000000000000000019c", + "0x000000000000000000000000000000000000000000000000000000000000019d", + "0x000000000000000000000000000000000000000000000000000000000000019e", + "0x000000000000000000000000000000000000000000000000000000000000019f", + "0x00000000000000000000000000000000000000000000000000000000000001a0", + "0x00000000000000000000000000000000000000000000000000000000000001a1", + "0x00000000000000000000000000000000000000000000000000000000000001a2", + "0x00000000000000000000000000000000000000000000000000000000000001a3", + "0x00000000000000000000000000000000000000000000000000000000000001a4", + "0x00000000000000000000000000000000000000000000000000000000000001a5", + "0x00000000000000000000000000000000000000000000000000000000000001a6", + "0x00000000000000000000000000000000000000000000000000000000000001a7", + "0x00000000000000000000000000000000000000000000000000000000000001a8", + "0x00000000000000000000000000000000000000000000000000000000000001a9", + "0x00000000000000000000000000000000000000000000000000000000000001aa", + "0x00000000000000000000000000000000000000000000000000000000000001ab", + "0x00000000000000000000000000000000000000000000000000000000000001ac", + "0x00000000000000000000000000000000000000000000000000000000000001ad", + "0x00000000000000000000000000000000000000000000000000000000000001ae", + "0x00000000000000000000000000000000000000000000000000000000000001af", + "0x00000000000000000000000000000000000000000000000000000000000001b0", + "0x00000000000000000000000000000000000000000000000000000000000001b1", + "0x00000000000000000000000000000000000000000000000000000000000001b2", + "0x00000000000000000000000000000000000000000000000000000000000001b3", + "0x00000000000000000000000000000000000000000000000000000000000001b4", + "0x00000000000000000000000000000000000000000000000000000000000001b5", + "0x00000000000000000000000000000000000000000000000000000000000001b6", + "0x00000000000000000000000000000000000000000000000000000000000001b7", + "0x00000000000000000000000000000000000000000000000000000000000001b8", + "0x00000000000000000000000000000000000000000000000000000000000001b9", + "0x00000000000000000000000000000000000000000000000000000000000001ba", + "0x00000000000000000000000000000000000000000000000000000000000001bb", + "0x00000000000000000000000000000000000000000000000000000000000001bc", + "0x00000000000000000000000000000000000000000000000000000000000001bd", + "0x00000000000000000000000000000000000000000000000000000000000001be", + "0x00000000000000000000000000000000000000000000000000000000000001bf", + "0x00000000000000000000000000000000000000000000000000000000000001c0", + "0x00000000000000000000000000000000000000000000000000000000000001c1", + "0x00000000000000000000000000000000000000000000000000000000000001c2", + "0x00000000000000000000000000000000000000000000000000000000000001c3", + "0x00000000000000000000000000000000000000000000000000000000000001c4", + "0x00000000000000000000000000000000000000000000000000000000000001c5", + "0x00000000000000000000000000000000000000000000000000000000000001c6", + "0x00000000000000000000000000000000000000000000000000000000000001c7", + "0x00000000000000000000000000000000000000000000000000000000000001c8", + "0x00000000000000000000000000000000000000000000000000000000000001c9", + "0x00000000000000000000000000000000000000000000000000000000000001ca", + "0x00000000000000000000000000000000000000000000000000000000000001cb", + "0x00000000000000000000000000000000000000000000000000000000000001cc", + "0x00000000000000000000000000000000000000000000000000000000000001cd", + "0x00000000000000000000000000000000000000000000000000000000000001ce", + "0x00000000000000000000000000000000000000000000000000000000000001cf", + "0x00000000000000000000000000000000000000000000000000000000000001d0", + "0x00000000000000000000000000000000000000000000000000000000000001d1", + "0x00000000000000000000000000000000000000000000000000000000000001d2", + "0x00000000000000000000000000000000000000000000000000000000000001d3", + "0x00000000000000000000000000000000000000000000000000000000000001d4", + "0x00000000000000000000000000000000000000000000000000000000000001d5", + "0x00000000000000000000000000000000000000000000000000000000000001d6", + "0x00000000000000000000000000000000000000000000000000000000000001d7", + "0x00000000000000000000000000000000000000000000000000000000000001d8", + "0x00000000000000000000000000000000000000000000000000000000000001d9", + "0x00000000000000000000000000000000000000000000000000000000000001da", + "0x00000000000000000000000000000000000000000000000000000000000001db", + "0x00000000000000000000000000000000000000000000000000000000000001dc", + "0x00000000000000000000000000000000000000000000000000000000000001dd", + "0x00000000000000000000000000000000000000000000000000000000000001de", + "0x00000000000000000000000000000000000000000000000000000000000001df", + "0x00000000000000000000000000000000000000000000000000000000000001e0", + "0x00000000000000000000000000000000000000000000000000000000000001e1", + "0x00000000000000000000000000000000000000000000000000000000000001e2", + "0x00000000000000000000000000000000000000000000000000000000000001e3", + "0x00000000000000000000000000000000000000000000000000000000000001e4", + "0x00000000000000000000000000000000000000000000000000000000000001e5", + "0x00000000000000000000000000000000000000000000000000000000000001e6", + "0x00000000000000000000000000000000000000000000000000000000000001e7", + "0x00000000000000000000000000000000000000000000000000000000000001e8", + "0x00000000000000000000000000000000000000000000000000000000000001e9", + "0x00000000000000000000000000000000000000000000000000000000000001ea", + "0x00000000000000000000000000000000000000000000000000000000000001eb", + "0x00000000000000000000000000000000000000000000000000000000000001ec", + "0x00000000000000000000000000000000000000000000000000000000000001ed", + "0x00000000000000000000000000000000000000000000000000000000000001ee", + "0x00000000000000000000000000000000000000000000000000000000000001ef", + "0x00000000000000000000000000000000000000000000000000000000000001f0", + "0x00000000000000000000000000000000000000000000000000000000000001f1", + "0x00000000000000000000000000000000000000000000000000000000000001f2", + "0x00000000000000000000000000000000000000000000000000000000000001f3", + "0x00000000000000000000000000000000000000000000000000000000000001f4", + "0x00000000000000000000000000000000000000000000000000000000000001f5", + "0x00000000000000000000000000000000000000000000000000000000000001f6", + "0x00000000000000000000000000000000000000000000000000000000000001f7", + "0x00000000000000000000000000000000000000000000000000000000000001f8", + "0x00000000000000000000000000000000000000000000000000000000000001f9", + "0x00000000000000000000000000000000000000000000000000000000000001fa", + "0x00000000000000000000000000000000000000000000000000000000000001fb", + "0x00000000000000000000000000000000000000000000000000000000000001fc", + "0x00000000000000000000000000000000000000000000000000000000000001fd", + "0x00000000000000000000000000000000000000000000000000000000000001fe", + "0x00000000000000000000000000000000000000000000000000000000000001ff", + "0x0000000000000000000000000000000000000000000000000000000000000200", + "0x0000000000000000000000000000000000000000000000000000000000000201", + "0x0000000000000000000000000000000000000000000000000000000000000202", + "0x0000000000000000000000000000000000000000000000000000000000000203", + "0x0000000000000000000000000000000000000000000000000000000000000204", + "0x0000000000000000000000000000000000000000000000000000000000000205", + "0x0000000000000000000000000000000000000000000000000000000000000206", + "0x0000000000000000000000000000000000000000000000000000000000000207", + "0x0000000000000000000000000000000000000000000000000000000000000208", + "0x0000000000000000000000000000000000000000000000000000000000000209", + "0x000000000000000000000000000000000000000000000000000000000000020a", + "0x000000000000000000000000000000000000000000000000000000000000020b", + "0x000000000000000000000000000000000000000000000000000000000000020c", + "0x000000000000000000000000000000000000000000000000000000000000020d", + "0x000000000000000000000000000000000000000000000000000000000000020e", + "0x000000000000000000000000000000000000000000000000000000000000020f", + "0x0000000000000000000000000000000000000000000000000000000000000210", + "0x0000000000000000000000000000000000000000000000000000000000000211", + "0x0000000000000000000000000000000000000000000000000000000000000212", + "0x0000000000000000000000000000000000000000000000000000000000000213", + "0x0000000000000000000000000000000000000000000000000000000000000214", + "0x0000000000000000000000000000000000000000000000000000000000000215", + "0x0000000000000000000000000000000000000000000000000000000000000216", + "0x0000000000000000000000000000000000000000000000000000000000000217" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" +[inputs.previous_rollup_data.vk_data] +leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" +sibling_path = [ + "0x1c0e195bfba4d8b90f2bc073c788b9b40e84c66a62f7387f4dea58bc644f0f42", + "0x139de4c270219c111c92f4daf6dd93173323c55c14b7da6858b76938ebd5c879", + "0x1f4bf27c83777dcdd1375c505a5846bb460d0c3bb59ea562fb994262fbdbf00d", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", + "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", + "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ + [inputs.previous_rollup_data.vk_data.vk] + key = [ + "0x0000000000000000000000000000000000000000000000000000000000800000", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000049de8a377fc35facb6876cf266747b47e2", + "0x00000000000000000000000000000000001ec90991da5204f468b982ec1d8d9e", + "0x000000000000000000000000000000c6273aafc1431d46923c9f482abe91f6d3", + "0x00000000000000000000000000000000002293268660e7e37aaa7b91f70b1d25", + "0x0000000000000000000000000000001e2d223be523fce57275eadfaf65f8a296", + "0x00000000000000000000000000000000002bb2ff5804b743633a467c31eb2358", + "0x000000000000000000000000000000185ab41f11575ff9fe8b32abdfe3c730fb", + "0x00000000000000000000000000000000001e3e092284ac3e391cfef116ec0fcb", + "0x0000000000000000000000000000000756e2f2dbba158a083941bf8a5d689011", + "0x000000000000000000000000000000000025578690523981b0f0e4aacd337196", + "0x0000000000000000000000000000003fea39d3349c8aa6e3b2df72eb70df9977", + "0x000000000000000000000000000000000001afb851a052b2dddf9d4637640d35", + "0x000000000000000000000000000000dccb17c830af12f8c6ba42fb6ace898a39", + "0x000000000000000000000000000000000012e53d9cb718285054ae5d61953b19", + "0x000000000000000000000000000000aa9f78e0a172ce7869e1003c0297960142", + "0x000000000000000000000000000000000017c1955902b33bee70437571b6dbd3", + "0x000000000000000000000000000000e282552921b55589e4a86a0736719598af", + "0x00000000000000000000000000000000001309d9109fdf99d23713790ad9cfe1", + "0x00000000000000000000000000000077a068e615b0e419705d2cae19e7d4a86b", + "0x00000000000000000000000000000000000a86b8d14fd3a81467947d2dd1a484", + "0x000000000000000000000000000000a9873bdc481b1f1273783d007b4e8e8091", + "0x0000000000000000000000000000000000191242c57508648f11b2b420cde679", + "0x00000000000000000000000000000070d6bb2eaeb407ede88c67adfbbece6a75", + "0x0000000000000000000000000000000000110ca911f1acb10e44feb19d85dc7f", + "0x0000000000000000000000000000009b003b48720929f4a3dc740006df03a9fd", + "0x0000000000000000000000000000000000094452f469870d1d083e6035cac4f4", + "0x0000000000000000000000000000001fc5525b6dc3a1de76bf5963fcd944f856", + "0x00000000000000000000000000000000002e0cd9de1f897c332d94a00a65bb80", + "0x00000000000000000000000000000054c1f784b8bc7482604f60513528feb400", + "0x0000000000000000000000000000000000027c92d0024bbbde32bea10ab15eea", + "0x000000000000000000000000000000bf36e96293c3b6321fac5c93302e3f4ae0", + "0x0000000000000000000000000000000000146ff6bc522e19649529ee5f6e0a8c", + "0x000000000000000000000000000000b629382ac46d9ca8b938827e513c166413", + "0x0000000000000000000000000000000000256d5bba9e2e8b5357cf30360e40a3", + "0x000000000000000000000000000000e411a642b1cb24d78618b738f1ff63ce46", + "0x000000000000000000000000000000000019ea477397eed92687a451cc2140f5", + "0x000000000000000000000000000000d74a3d0734f92399c7cdef21a8261982a7", + "0x000000000000000000000000000000000020fa5e38a154b8839242481f517a69", + "0x000000000000000000000000000000e82fde6219aeadf0300a9d577fb847b80f", + "0x000000000000000000000000000000000028b09918bdc39dd0ecc739cf554951", + "0x000000000000000000000000000000f52339a86b27cca14ba43662ae62dc4c00", + "0x000000000000000000000000000000000018821a2f573f781dc158b67abf7194", + "0x000000000000000000000000000000ec230d90bac6e6b6d4d0cf3fb2d21d6048", + "0x00000000000000000000000000000000000dd86e1f995f17ea6b006fbd09a7b2", + "0x0000000000000000000000000000000f2616962cd413ead6a5f223f478b35260", + "0x00000000000000000000000000000000001d987e609de86b149b20c23844066f", + "0x000000000000000000000000000000b88f04a07edc85dafb95202eade6179cfb", + "0x00000000000000000000000000000000002cf2bedef1ce3a86d297c2b3784e30", + "0x000000000000000000000000000000cfc95ebd3c60d92cfd1373365bc735a792", + "0x00000000000000000000000000000000002ed2bec94afbb4079c70808d4ea39a", + "0x0000000000000000000000000000001e0ec4c26408207d1cce89c005ddcecd8a", + "0x00000000000000000000000000000000002182dbd33cef651bd2e5105736d3da", + "0x000000000000000000000000000000b232f30ec35560241a31641014cdde092c", + "0x000000000000000000000000000000000000f535aafab6efbf16b7df67144654", + "0x0000000000000000000000000000000ea0844ac6c31fe204b6003b9c2ae01e44", + "0x000000000000000000000000000000000007c9468665883fec6febc60f99ba52", + "0x000000000000000000000000000000ee4a333feee1cc86354a5bd15ad10e3ff5", + "0x00000000000000000000000000000000000e5d1cf4d87aad6640f5733dbd3eb7", + "0x000000000000000000000000000000826af542b1367043d45dac768ca9d6f286", + "0x00000000000000000000000000000000002c4ab437656fd1b6cd86e8f97df38e", + "0x0000000000000000000000000000003c26e6ed653639ce26b20267ed843632f0", + "0x00000000000000000000000000000000001a5c3906dd0f2e063131e86031d1ff", + "0x00000000000000000000000000000011339ae7a8eddd179823f58a7c052870d8", + "0x00000000000000000000000000000000000da95b778c75427bd8661fe9b2a5c8", + "0x0000000000000000000000000000007e266d99c9d510b9a1a4953e60241bfa9c", + "0x000000000000000000000000000000000008476857d0a028c020cf1dba476afe", + "0x000000000000000000000000000000bb49801554bbb6b794af3a4478008bb6a9", + "0x00000000000000000000000000000000002aaa3b973ee6688e2776c6704f3f22", + "0x000000000000000000000000000000550be1d427d87415e8b1d5e5e57b7bffc4", + "0x000000000000000000000000000000000009c40f4077d18946c1d9bb3e6d0643", + "0x000000000000000000000000000000b101b452efb9d45fa3802cc8b221e5617f", + "0x00000000000000000000000000000000000a6ecce2dc8e7baaab7c5c5e029a02", + "0x0000000000000000000000000000006c436ce42fc60fa707e6e2a111948d05d7", + "0x000000000000000000000000000000000004784c17b96fe55c533481e8987e9f", + "0x000000000000000000000000000000b671af3053f35b77c6eab128445ebdacc3", + "0x0000000000000000000000000000000000097c90e40ee8b14873362e6c471907", + "0x00000000000000000000000000000016fc779cc25045f34b2c0dcab039fde72e", + "0x0000000000000000000000000000000000267316d8def3dad67be00fbd6ebb50", + "0x00000000000000000000000000000097ebf396d5bff739489e67a3efc2a93089", + "0x000000000000000000000000000000000003f54e559eae753fdacee7436ee09f", + "0x000000000000000000000000000000e04abdeffbdb277e9c356ef7ed69b519e7", + "0x00000000000000000000000000000000001752698fb2bca18c30b80a2058be1f", + "0x000000000000000000000000000000ded0ded169a2c5842d32026f725643e0e8", + "0x000000000000000000000000000000000008459737e156bf51b569f0cbe831b9", + "0x0000000000000000000000000000002efaca4d96d128cd16f053120bc300398c", + "0x000000000000000000000000000000000018b4165f92668f57edfc78be6db828", + "0x000000000000000000000000000000a312930706e419ed9153f698f593f95349", + "0x00000000000000000000000000000000002b48b8992ab278189e5e11a66d35ed", + "0x00000000000000000000000000000074807de886fd1f5dd20e599e83e68390c0", + "0x00000000000000000000000000000000001f6e15f6020331610636978ea44d6a", + "0x0000000000000000000000000000002adf31f83a70ac2563b07991988a962565", + "0x000000000000000000000000000000000019b3eb6c9110dc9749e778bae6148b", + "0x0000000000000000000000000000004944f3d838efd7aebe78def1c3e6d6db73", + "0x00000000000000000000000000000000001d0bbf8e0047e999b4d6fbb2a7db69", + "0x000000000000000000000000000000034b46ea26c1ff481588aa7a1d4cac1c41", + "0x0000000000000000000000000000000000160c646b20c81008eae87ef9572e9c", + "0x000000000000000000000000000000c99e19d3d7a5219ef57b6c2249dd88da8c", + "0x000000000000000000000000000000000022ed6806d8b1ee8752a4392ead3e23", + "0x000000000000000000000000000000d92c32591db729a56e147b3f85cff36c4f", + "0x00000000000000000000000000000000002337bd80484bec634ae68e617c5fdd", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + "0x0000000000000000000000000000002b638e616b50f7cac0188b36e8f0e4f642", + "0x000000000000000000000000000000000028d5d5c147eeca9a004db5429ebe51", + "0x00000000000000000000000000000007b7551a511d202b1e7a3a49e0082e3f4e", + "0x00000000000000000000000000000000000f2c10970a75d230415079bb1d0439" ] + hash = "0x2761f50950d3c726462c3a286733e8554c72961e67be9ec983f225a2bf016697" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ +[[inputs.previous_rollup_data]] +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] +out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" +proposed_block_header_hashes = [ + "0x0013fd7b44a6b94fe36b58bd65abdbf053a3079869f888cb01ee0797c8e189c4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" + prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] + root = "0x1dd101b1f4d09f1a51ea33850ce2b2e712ab47e38e3bdf5214e6f4cf9bd30bb6" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] + root = "0x198028c3bad28f14ac32d104adf5d6b348807ac037c703eb88993f528b3184bf" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000042" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320e8" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000042" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320e8" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x00000000000000000000000000000000000000000000000000000000125540d0" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator] +blob_commitments_hash_acc = "0x00be044db88ceee39efdc47cedad851d9b1dc4e4b4272935e6de6da093abb3c3" +z_acc = "0x0d12a012b6c05b78773a549210a174406434552e362528cd1c2c1d031acb1d02" +gamma_acc = "0x128f1b5265eff011209236b41b571b4d8319d0c5c3e90d81aa380c228e23ab64" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xcb7e7ce6b998f22b905112367dde7c", + "0x2a1774901196c680a276b45cf53c0b", + "0x5d62" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.x] + limbs = [ + "0x8b968c6b0d2dd286d828ebfb4171c1", + "0x680bc6b6470feccc4d9d385105830b", + "0x564d37b9f4a72ce27df06d51dfd234", + "0x0883ee" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.y] + limbs = [ + "0xafe1bc16d0cfec75cc5d842e9c245f", + "0x6f1b2d5fc0886f40adfdf8d72f7b2a", + "0xdeebdbc3bd45de655d959cf06da350", + "0x06378f" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator] +blob_commitments_hash_acc = "0x00e40c13cd61105681e2471aecdfce440aff4db3481dce19bd1a43dc3ddfe097" +z_acc = "0x0ca06e212eca4644df7d6de41e72e560fb406da8830cf9b5e10bc0f8e58364d8" +gamma_acc = "0x0548170342371523acb6b0d8d1ec46500fd36fae89ad4bf60076da88d8fa890a" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x127a9fb7ec8bed5d8c459abc287f2e", + "0x06da291f11b0fe9b6a7d5204255f5c", + "0x459e" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.x] + limbs = [ + "0x31f5aaa5d65ee8036d953240281c9e", + "0xc40ece6336cbae632a1970c26fa45c", + "0x8c1b5fa7d72f8f78e8c75cc47a7fcd", + "0x1028b6" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.y] + limbs = [ + "0xf364fa7f3433075f76720ca7f93182", + "0x06693101d5d97dfacbce5ad9be57b1", + "0x78cce0aa93e7460bee28bde756c75a", + "0x078ffe" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + "0x1d074d600e31db9536392540f86642", + "0xfdeff2d09ce448b47c3477c9123be8", + "0x1e88" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges] +z = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.gamma] + limbs = [ + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] [inputs.previous_rollup_data.proof] @@ -6691,9 +2159,9 @@ fields = [ leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ "0x2c6d79535667e7593ad082a02a1930f22a063f09d321c37265d74a6407725ecd", - "0x21e34d37c912fe7b0f30866c3719bf0977e066283eb916c5cc3d4576cf80fd4e", - "0x23bb283d0b2b45895ded7cd528d814a4de4b493a15c8acd40d4e7cb43d4b419d", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", + "0x05ab06a40911d5034ce329b31536318c5c6588579a4135c60c17f9c97232bfb3", + "0x1f4bf27c83777dcdd1375c505a5846bb460d0c3bb59ea562fb994262fbdbf00d", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] @@ -6701,117 +2169,117 @@ sibling_path = [ [inputs.previous_rollup_data.vk_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000800000", - "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x00000000000000000000000000000000000000000000000000000000000000ec", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000040a", - "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x0000000000000000000000000000006a9f58a181bf5871a292630be9e269ca57", - "0x00000000000000000000000000000000002756a4237739cf64ba5d6b9f9d00ff", - "0x000000000000000000000000000000a3fc79ac9640b886d55f55aeddecb0cc17", - "0x0000000000000000000000000000000000299b4b85bd0ccef55b37360cced7bb", - "0x000000000000000000000000000000d798da952da07e6bcc9c41c4895c3538fd", - "0x00000000000000000000000000000000000525117e600da6296fa5e7c656a3cf", - "0x000000000000000000000000000000f6220be3a7fb79aa2d4ce8362abf187697", - "0x000000000000000000000000000000000001e7fda152f4e064f105e747f97b2c", - "0x000000000000000000000000000000900396c1de7b3601801d597c934e5ef19d", - "0x000000000000000000000000000000000028e5c6a46946fa42036f597ec33aa8", - "0x000000000000000000000000000000490bcf9006f04fdb9cdccb7bc6b697a786", - "0x00000000000000000000000000000000002ebfadcd8eb2e258fbf57f8342a0fb", - "0x0000000000000000000000000000004c401f8ef7ee02225d447745f9162c9561", - "0x000000000000000000000000000000000023783cefecd8b83e1130e9fd07f922", - "0x00000000000000000000000000000068dd303d1e832c400c78b4f52ed4b391c6", - "0x000000000000000000000000000000000007a53cc42d8babae296fbed54cc115", - "0x000000000000000000000000000000f218d3a75c426c1f65fe83c5355b028dc3", - "0x00000000000000000000000000000000000a12efcec184a032c53487c8c4ec45", - "0x00000000000000000000000000000061ccf38b9d0dd14802409705b5984f6739", - "0x00000000000000000000000000000000000e81ee5b1778c7f9e8d70df9befa84", - "0x00000000000000000000000000000095f415120f5ad2a3cd74bdc4b9f5528aaf", - "0x0000000000000000000000000000000000126f61fb67ec45489180535bb64c67", - "0x000000000000000000000000000000388f52fd61c8cfb0a57a64abaac5c2c281", - "0x00000000000000000000000000000000002fb7dd3e66022babb2fd696cdca00a", - "0x000000000000000000000000000000ebd38778b3274496532399746d9ad2b21e", - "0x00000000000000000000000000000000001f0792f3fb8d0a1fa047b39c348a0b", - "0x000000000000000000000000000000c38c90b96e080b0443ac3b57f0807e82ce", - "0x000000000000000000000000000000000002425fdb1a2c58a9b62b7b8a0e5500", - "0x00000000000000000000000000000029ad174a6577ac6401b908d0bf894e8a46", - "0x000000000000000000000000000000000017f04a61c805ce6f6e630794a46496", - "0x000000000000000000000000000000591672371ecad7eaa1fab4e8c6c0ce3508", - "0x00000000000000000000000000000000000170d4d22a60e2ae2d62f82e157586", - "0x000000000000000000000000000000478120717239f8f0decbbe85254fde3580", - "0x00000000000000000000000000000000000ba178832444aba9870cecba717c87", - "0x0000000000000000000000000000003b590aa27cabc4da3c4d470626956497fe", - "0x000000000000000000000000000000000019333e89ae19498dc424ff69fd0c76", - "0x00000000000000000000000000000032a59156ef427656a1243813cf85a28415", - "0x00000000000000000000000000000000002e5fba607c8c2f241a23f4b0e5448a", - "0x0000000000000000000000000000000caf4c65a2b7b15b013963fc5eff51290c", - "0x00000000000000000000000000000000002d7fe4184ca08fa2726a6b683f7d13", - "0x000000000000000000000000000000bc2dc910e852e9695d4ce10b057c8ef2c4", - "0x0000000000000000000000000000000000191fdb3eb9baffc72b1f2a1ce0553c", - "0x000000000000000000000000000000dbdadf110120f0495295f4fdb7ce87e364", - "0x000000000000000000000000000000000004b90fd07785bdad10a0c7c314ecc7", - "0x000000000000000000000000000000670cdae4b7d7bcbda19d80f2c98710eb93", - "0x00000000000000000000000000000000001cf19830875d5ca368bc118902258a", - "0x000000000000000000000000000000e7205db691ee2b0d4bdf02932344447fe7", - "0x000000000000000000000000000000000000fe64a14c2cbd79f10af89064f518", - "0x00000000000000000000000000000056faca369258328fac5acf64de97f0e1f8", - "0x00000000000000000000000000000000002e323f5ceac3cb7fb4e972c6dfa6c3", - "0x000000000000000000000000000000c1ddc5d416d720a99bd3cb454cc9d03929", - "0x00000000000000000000000000000000001af8db34faf376cb5273dae787a0ef", - "0x000000000000000000000000000000a47c826f3ab455feb14fbe5760f30d8475", - "0x00000000000000000000000000000000001454ba5094df101f44f57aecbce17c", - "0x000000000000000000000000000000ce4a164c07ee91372102fca01e6dfa7a12", - "0x00000000000000000000000000000000000c2c891494c049c29226d044d0c16a", - "0x0000000000000000000000000000004e3bccd7cd77fb5b158a347643fa55376c", - "0x000000000000000000000000000000000004cd1ee2a197e1b6ceb99996b39d9d", - "0x0000000000000000000000000000001d95cc99e5a0259e91a9260ed1abd3ca04", - "0x0000000000000000000000000000000000096463d2fa6026d63956d7f2a0e143", - "0x000000000000000000000000000000187a34c95eb7a9fee3a83b1ad015ae5f21", - "0x0000000000000000000000000000000000273426ff9cf561466f4095d6b3b536", - "0x000000000000000000000000000000616b2f42b2cda37ded414f2df09e79ca83", - "0x000000000000000000000000000000000001a2bd0380a79ebc8ffa21dee6dfd8", - "0x0000000000000000000000000000005e10a1b7e9791b26951fbc9c8f205179ef", - "0x00000000000000000000000000000000001d1368252c3b81449ec5d171600d05", - "0x0000000000000000000000000000001a2bd1be039fd483067c8cfcae3c94bddf", - "0x000000000000000000000000000000000016f4eca74b57cf4e33ea52527e3d06", - "0x00000000000000000000000000000022459bb455b8642f3cec9427ba34c14377", - "0x00000000000000000000000000000000000051df528915564a42b4b44379f33b", - "0x000000000000000000000000000000dfa1991f7cec3493bbee06689e4c611a16", - "0x00000000000000000000000000000000000d4be615cf862f06439bfd9931ab69", - "0x000000000000000000000000000000e5998aeb7ee60a2486534663a86a362828", - "0x000000000000000000000000000000000006fc7ea79d65a3676205128289885c", - "0x00000000000000000000000000000086cf7d13e4da35373280639a2d854d37af", - "0x00000000000000000000000000000000002857b32b11ccd3ce12559455c094ea", - "0x000000000000000000000000000000379d27a910dd83e363e13be383969c5160", - "0x00000000000000000000000000000000000e83bc2321462c62e894fac9378ddb", - "0x0000000000000000000000000000005a118a98007e2c59a2b1c0f0406d26486c", - "0x00000000000000000000000000000000001e51e1bd9aa56c41b739fba2082fbd", - "0x0000000000000000000000000000005c3bb65a1300b4131733e989db33e1df75", - "0x0000000000000000000000000000000000075679dec90f5990668fd01555ece4", - "0x000000000000000000000000000000d41ade766e972d06b923cac97bb221064a", - "0x00000000000000000000000000000000000814b61a00424c5d6b5e638d0b2f37", - "0x000000000000000000000000000000a1df7d029b9ff4ee2daa206366393a7f31", - "0x00000000000000000000000000000000002a3f1db615617f2856ecabbfea3662", - "0x00000000000000000000000000000008b2769342754a7fb7764ba017cc543239", - "0x0000000000000000000000000000000000089d976f0a0dda0128ed6e5328907e", - "0x00000000000000000000000000000040aca0f2e0b6d770a2cf109a76532ed852", - "0x0000000000000000000000000000000000150652cf9f6b08bc31ddd4d3499362", - "0x00000000000000000000000000000049a9a7fc74679e24111f0349561c3f5be8", - "0x00000000000000000000000000000000001d751d973e4b64092b3cc8513f0a24", - "0x00000000000000000000000000000025b56a9d19de3a92e0578bc12373abad43", - "0x000000000000000000000000000000000006672a2f08656e68b0e298139a8558", - "0x000000000000000000000000000000870f121db70afc1411a31f5de38a65e652", - "0x00000000000000000000000000000000000a809bd48dc7ac613f62898ee9d058", - "0x000000000000000000000000000000dcd70143ba7789af0ba2b0ced39aa6c031", - "0x00000000000000000000000000000000002b2dc2aa64d7fbd3f023315aa26f9a", - "0x0000000000000000000000000000007e8aa43cd4201c3d7635a6a1d97d188d4e", - "0x00000000000000000000000000000000000f77c508797e4e19f7ce2a5f1730b9", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x000000000000000000000000000000c55fd5304ad08b69e4bc9ba36816fe7653", + "0x00000000000000000000000000000000000f061a71ff19984ca046966fbc6114", + "0x0000000000000000000000000000002318eb8188dd525cea29bdd24328c31239", + "0x00000000000000000000000000000000001c838e7b830039bc2fa7248fb74346", + "0x00000000000000000000000000000050cddcd69f338f9a628826db769d3567ef", + "0x000000000000000000000000000000000001a8878f387c61b8f2695d287881b9", + "0x000000000000000000000000000000d8146620934213b3623c1ef1f0e12923fc", + "0x000000000000000000000000000000000016127d45088f121da70b4b8fd96e64", + "0x00000000000000000000000000000066f813a691da9f03882f21efffd5e14d80", + "0x00000000000000000000000000000000001fe5211617fe2b8454171450572ac4", + "0x000000000000000000000000000000cce5763911d174eb6cf40c70fd07d57b2f", + "0x000000000000000000000000000000000020f16c2d46c41fa1c2a38708e661d7", + "0x000000000000000000000000000000c72b5da2bb533f8612eba255caa8d9e420", + "0x00000000000000000000000000000000001d636ce332ff962f7ece4cd8d76e7a", + "0x000000000000000000000000000000c8eab9f98a1c3dd74c657cea558988a50f", + "0x00000000000000000000000000000000001d7dac93910d3765e310e8088f2193", + "0x000000000000000000000000000000efa9f3b66b93041189e9a880ac9556745f", + "0x00000000000000000000000000000000000ac0ae6741e18b3f3459449ec2743d", + "0x0000000000000000000000000000007352c6c4e6a1d59667b5ee9175cc25a446", + "0x00000000000000000000000000000000003063b71c5e263232dda3fbf44a8681", + "0x000000000000000000000000000000598bafdafcbb3e4d4ff4f53321a0c417c4", + "0x00000000000000000000000000000000001375270a50ed2169d397e6c32b1f7c", + "0x000000000000000000000000000000d5b6c8cf518ebe0dce66372e359467b14f", + "0x00000000000000000000000000000000001d71ff10b0ff8d40ab9052d52272ed", + "0x000000000000000000000000000000c56b7b7798efbc6d1046723950820c723f", + "0x0000000000000000000000000000000000235d202544eebfcc42e3751b4bc336", + "0x000000000000000000000000000000b1f784da596303692be2a2cae2d42d3a60", + "0x000000000000000000000000000000000003dd6de6fde0fc953328932c0e5ca2", + "0x000000000000000000000000000000584e7f08a4122013f82d48fb6fd1f41085", + "0x000000000000000000000000000000000003659f77654b8c7d066c198fddb7db", + "0x0000000000000000000000000000002c9797b34670e9db8e223fade9abafc8aa", + "0x0000000000000000000000000000000000055bc605bde8716ec3a58d4b428bd2", + "0x000000000000000000000000000000caaa9d1434d1c4314613aea898c0643820", + "0x00000000000000000000000000000000000c0da59f0d889d5d24f39d6d861de3", + "0x00000000000000000000000000000040f8108ae01942a2ae80b8ea48feebe590", + "0x000000000000000000000000000000000001858808fbfd4f0aa0f287a123e9b4", + "0x0000000000000000000000000000000725e43fff7f0349463d9b856f2bf9f96f", + "0x000000000000000000000000000000000007190d473c088bfa98730c0b2d6de5", + "0x0000000000000000000000000000002ac9ef1be39c75bdfb43e1ee0b16efed81", + "0x00000000000000000000000000000000000fc5a84d481a1811fd6ca8ecd8a39a", + "0x000000000000000000000000000000d1f94380daeb7d5700c93b87321229fda2", + "0x000000000000000000000000000000000009804d16bdb67ef54929fef07249a1", + "0x0000000000000000000000000000005c9fb84554b3fa3ec3ccf8824880ab2139", + "0x000000000000000000000000000000000009402152061c6564d1c143667c94bd", + "0x0000000000000000000000000000002dc24d6716ee55b2bc6888a706744ecf96", + "0x000000000000000000000000000000000005f396a595d01a3a61dac2f87cd4d0", + "0x000000000000000000000000000000ee578f22f7a24e54b2fbc97f4ce1879cda", + "0x000000000000000000000000000000000005b66797b1476099ce3481ffaff45a", + "0x00000000000000000000000000000046f38b21d7a1e84952b9db5baa80a5a8b7", + "0x00000000000000000000000000000000000c09c7a9bc1f5296c6262abb29fe9a", + "0x000000000000000000000000000000b46967566d5774c5904e638d883e1af900", + "0x000000000000000000000000000000000000764204774d9be0b7aeb2d909836b", + "0x00000000000000000000000000000068c0a6fd6cce594bc1d9c04b8926f867ee", + "0x00000000000000000000000000000000001633eab0eabb9800e9b1d21530dc20", + "0x000000000000000000000000000000d12216d5a04a2bbf2a91a31046d87efc95", + "0x00000000000000000000000000000000001f88ffdcd448f218092af64a652d1e", + "0x000000000000000000000000000000a190616e9a519d823ed8cc6eb30eeb8a22", + "0x00000000000000000000000000000000000fb2ba699b6a8318290096b8a7ceb7", + "0x000000000000000000000000000000052c87ea66824ce7862731a684389d9114", + "0x00000000000000000000000000000000002934e2be662229ead3d76862e471a3", + "0x000000000000000000000000000000a756cf285e5140e7bbf971837ca9b89191", + "0x000000000000000000000000000000000011abb33df891e364082e060248c2c1", + "0x00000000000000000000000000000099cd7606309d10bcc85e5d865896062122", + "0x0000000000000000000000000000000000187b908e0df21c670c04ac9a9d2e58", + "0x000000000000000000000000000000a88d1f432eea72e5a726e24a5a038b6187", + "0x0000000000000000000000000000000000059fe0701e4dc118d1e0d3327b1a87", + "0x000000000000000000000000000000fc19e20aa361d31aa9a31ba06c1aacc018", + "0x00000000000000000000000000000000000ec9224139ebafd93d9bab1017d31d", + "0x00000000000000000000000000000007d1869c5d611f08543744e50e769b1f1f", + "0x00000000000000000000000000000000001d129cb502b0068fa4fb822146dfc4", + "0x0000000000000000000000000000007394542857437ab2bce7f3deb2f00fc788", + "0x00000000000000000000000000000000000c02b5c336803de692a6fe8fa6afbc", + "0x0000000000000000000000000000002bc60852f10ba75e0365c43db0cfe0d7e0", + "0x000000000000000000000000000000000028d53f1e037b6494e2b5ce78774345", + "0x0000000000000000000000000000007e386928c00d8810fc61ce25d2b3a4f26d", + "0x00000000000000000000000000000000001a010a1762bfa440e03f4c7eb8d76c", + "0x0000000000000000000000000000000c986499c5c94c7c0bd48a322aba94a37a", + "0x000000000000000000000000000000000004e74a3adddf8f86b552a43db8692a", + "0x0000000000000000000000000000007ccca66eb44738d6951a038abc13b4848c", + "0x00000000000000000000000000000000002b0b32ca14f72759c604e8bc89815a", + "0x0000000000000000000000000000003700be4d8861d0812d24797f62e492a6d1", + "0x00000000000000000000000000000000001ba36963e3b7096afd107b0f15d2bc", + "0x000000000000000000000000000000991eaa3e63769604c4c3e53d0a3b25e214", + "0x000000000000000000000000000000000005cc17330658e17479394dd61d17c0", + "0x0000000000000000000000000000002efaca4d96d128cd16f053120bc300398c", + "0x000000000000000000000000000000000018b4165f92668f57edfc78be6db828", + "0x000000000000000000000000000000a312930706e419ed9153f698f593f95349", + "0x00000000000000000000000000000000002b48b8992ab278189e5e11a66d35ed", + "0x00000000000000000000000000000074807de886fd1f5dd20e599e83e68390c0", + "0x00000000000000000000000000000000001f6e15f6020331610636978ea44d6a", + "0x0000000000000000000000000000002adf31f83a70ac2563b07991988a962565", + "0x000000000000000000000000000000000019b3eb6c9110dc9749e778bae6148b", + "0x0000000000000000000000000000004944f3d838efd7aebe78def1c3e6d6db73", + "0x00000000000000000000000000000000001d0bbf8e0047e999b4d6fbb2a7db69", + "0x000000000000000000000000000000034b46ea26c1ff481588aa7a1d4cac1c41", + "0x0000000000000000000000000000000000160c646b20c81008eae87ef9572e9c", + "0x000000000000000000000000000000c99e19d3d7a5219ef57b6c2249dd88da8c", + "0x000000000000000000000000000000000022ed6806d8b1ee8752a4392ead3e23", + "0x000000000000000000000000000000d92c32591db729a56e147b3f85cff36c4f", + "0x00000000000000000000000000000000002337bd80484bec634ae68e617c5fdd", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000dbfe027ce04d7e640893bb202e752ef520", - "0x00000000000000000000000000000000001586752921bdc3c187c59493467ea4", - "0x0000000000000000000000000000008165bcca3662677c018b4f060d18c49939", - "0x0000000000000000000000000000000000187205647bf2bfa64e8edc1864a676" + "0x00000000000000000000000000000066959e64d570cb9a15f70f58df0b13ab03", + "0x00000000000000000000000000000000002b0ff1e4d835ced1ecd0b853f3fd7b", + "0x0000000000000000000000000000004f553ddfc6f51c2a2f6d11ced843ccff6a", + "0x0000000000000000000000000000000000108ee51154886c5fa6d5fef13efe2c" ] - hash = "0x0b1bee7ed41239fc267ba86940a86e614a0b9b21186d2d3c9fa11fb36c9b3b99" + hash = "0x16daa4b576bc7b940741dcac2a67906f3ba88a828de9618ffcdb0277bed692d0" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index bcb2848f9db6..a2eb3d9f444c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -3,60 +3,60 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000001" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000000008a191fec" -accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000ddb7" +accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000076f3248" +accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000082f9" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x2a63bcce4105e7b7c0960a1baa9ad44f0f80f34f7888b35baa79bf0a2c0d65ce" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + root = "0x1dd101b1f4d09f1a51ea33850ce2b2e712ab47e38e3bdf5214e6f4cf9bd30bb6" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_l1_to_l2] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b73c" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000042" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320e8" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x0fca74a0b1703ef763f8db73c965def387e0ee945a7d911323af97006cb4ea3b" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" +root = "0x034b7ed4d5ec7dbd4f17225625a1b6c11ca2f18e06778e280265b376a4f17530" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x091a1aa4bf156da25d9dd64e27f1733c8cb67ab27765fb5494345e8e1074ec7f" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" +root = "0x08bd8cef996ed261caaaef0e9111111f0332f8e7cc5daa04d8dd6a80fac73845" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x1f5eb6f586195fdb59781c8a0be8aece2e166c39a12deca6b3d1bca8bdaa4e23" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008a" +root = "0x2cf7b6f848ef2f3c46d75c7830549a15707c07eff1aae39d22feb2e1b3dbe8ba" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x1e3fa31a4c89728b4d4c005b7b4c2b02c9ee9cd99730a03cf06006c1d072b53c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" +root = "0x26754d8ea97e5d2b52121ed6273616e1b650e7365545c0e0b37b4dd316c32ff1" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x2583ac0d479d33db6715762aa83ba0c7e8a3a36c104c68a7f222dee505bfb561" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" +root = "0x25200c4b284fc3c99e12e6af6310cb78308fb18ae03b0e30e1343d0c4773b9ce" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x151b920449b90247bc1be86ddd4863e0fb432b5eb9f4d677366d396af4294014" +root = "0x2f18af62d3aa5cf30b3537dd2ed53f3d55d7187c865b54d001fe78af5dd54d4c" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -79,22 +79,22 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000053" + fields = "0x0000000000000000000000000000000000000000000000000000000000000051" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b56a663a10", - "0x00000000000000000000000000000000000000000000000000000000000003e8" + "0x1a3ea2cb97eda063a9eff4272f70221754fb4c199410c5dd294c5f92d618066d", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b570cc42a0" ] state = [ - "0x29b1636ae97957a54f73efd41af43f695b6942e9e09b65f89e415ae802fccd5d", - "0x28fbab14c55d47c0e0920335674950c54d311a4807cb21655667b1b9bd5ae1a6", - "0x1299b88b884cd93363faa0b5c1c6a8d968f58dc88e31377e5f0cf19dd0ea01c8", - "0x11e1eceff4beb99ab90d358c290af8365dbb47685614f0491ebed6b075616e3a" + "0x2f7254815c4fb79f71c4040f7ba77e0d9e6d44b65e060643a1038bf6068c7cef", + "0x196318fb0c5a92d928f378803bb9c4426fe13cc77ab92b861ecc3a1a6b4cfcce", + "0x1fc268a66cf74caeddbcffd5869b795e404db124c4afc45dc4513ae112229252", + "0x01446c0a051777e6c2ac8c121871214dbd049bcea7847aa3e797ae295a4ff529" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false [inputs.previous_rollup_data.proof] @@ -639,10 +639,10 @@ fields = [ [inputs.previous_rollup_data.vk_data] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x0b1bee7ed41239fc267ba86940a86e614a0b9b21186d2d3c9fa11fb36c9b3b99", - "0x21e34d37c912fe7b0f30866c3719bf0977e066283eb916c5cc3d4576cf80fd4e", - "0x23bb283d0b2b45895ded7cd528d814a4de4b493a15c8acd40d4e7cb43d4b419d", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", + "0x16daa4b576bc7b940741dcac2a67906f3ba88a828de9618ffcdb0277bed692d0", + "0x05ab06a40911d5034ce329b31536318c5c6588579a4135c60c17f9c97232bfb3", + "0x1f4bf27c83777dcdd1375c505a5846bb460d0c3bb59ea562fb994262fbdbf00d", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] @@ -770,79 +770,79 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000000003f127f5c" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000006543" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000000ae60e88" +accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000c001" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x2a63bcce4105e7b7c0960a1baa9ad44f0f80f34f7888b35baa79bf0a2c0d65ce" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + root = "0x1dd101b1f4d09f1a51ea33850ce2b2e712ab47e38e3bdf5214e6f4cf9bd30bb6" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_l1_to_l2] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b73c" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000042" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320e8" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x1e3fa31a4c89728b4d4c005b7b4c2b02c9ee9cd99730a03cf06006c1d072b53c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" +root = "0x26754d8ea97e5d2b52121ed6273616e1b650e7365545c0e0b37b4dd316c32ff1" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x2583ac0d479d33db6715762aa83ba0c7e8a3a36c104c68a7f222dee505bfb561" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" +root = "0x25200c4b284fc3c99e12e6af6310cb78308fb18ae03b0e30e1343d0c4773b9ce" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x151b920449b90247bc1be86ddd4863e0fb432b5eb9f4d677366d396af4294014" +root = "0x2f18af62d3aa5cf30b3537dd2ed53f3d55d7187c865b54d001fe78af5dd54d4c" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x1e3fa31a4c89728b4d4c005b7b4c2b02c9ee9cd99730a03cf06006c1d072b53c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" +root = "0x26754d8ea97e5d2b52121ed6273616e1b650e7365545c0e0b37b4dd316c32ff1" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x2abdf5b3e4fbb0b0d028f8e97a7fd13c8110233b38f4e4150e09a4674408a3ad" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" +root = "0x162e6aa3df12fe8016966a8c2a15ba0dcffbf7e31f5269191dfc1eb653cf1c85" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x2a3525adefd0d9a5681985fbc581f556366d43471150c213c00afc6c80e8ccfa" +root = "0x1cde8df2b892a580f7a218a9e9ed82fe9989e56c747c5bc30aa624cdc9850914" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000053" + fields = "0x0000000000000000000000000000000000000000000000000000000000000051" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b56a663a10", - "0x00000000000000000000000000000000000000000000000000000000000003e8" + "0x1a3ea2cb97eda063a9eff4272f70221754fb4c199410c5dd294c5f92d618066d", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b570cc42a0" ] state = [ - "0x29b1636ae97957a54f73efd41af43f695b6942e9e09b65f89e415ae802fccd5d", - "0x28fbab14c55d47c0e0920335674950c54d311a4807cb21655667b1b9bd5ae1a6", - "0x1299b88b884cd93363faa0b5c1c6a8d968f58dc88e31377e5f0cf19dd0ea01c8", - "0x11e1eceff4beb99ab90d358c290af8365dbb47685614f0491ebed6b075616e3a" + "0x2f7254815c4fb79f71c4040f7ba77e0d9e6d44b65e060643a1038bf6068c7cef", + "0x196318fb0c5a92d928f378803bb9c4426fe13cc77ab92b861ecc3a1a6b4cfcce", + "0x1fc268a66cf74caeddbcffd5869b795e404db124c4afc45dc4513ae112229252", + "0x01446c0a051777e6c2ac8c121871214dbd049bcea7847aa3e797ae295a4ff529" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] @@ -851,15 +851,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x290f498a4747fbf6588d534159831af0099deee1a23adc899d7082dc0f746ed2", - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b52b53bab4" + "0x000000000000000000000000000000000000000000000000000000000000076c", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b565e63418" ] state = [ - "0x2ea704bda76b9e0f3d557f081a80ac96566684c0616852c79cf809ffd30ed120", - "0x1788a31a948a43fd68afb761dabd1d96cd998b39ba4a7a2c5c29e009b9483d93", - "0x2fbb9941f6d3e72a0f8c2aec80a36cc638dc7ed69c0652e13899e19ba1c719cb", - "0x10261bd900993254ebf3a498b1c2f1b190aaa85e56f48300587594660ffe08de" + "0x25708de97e45772bd8dd54927281e36f8b4d2f07d12bd9e9008d2b94825b654b", + "0x290dccd4e9dd3a7946ff012ccdf18f6d9223b3f96e907cb6a4d137027de8970b", + "0x0ab4a078812f684471c75668baa78d736d579d7a7addd16dcb76dae4339b1249", + "0x00b2814eb1a07f9c8a21aa5dbb878bc9158e8c1ae47071756c85186a6b3f7e09" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false @@ -1406,105 +1406,105 @@ fields = [ [inputs.previous_rollup_data.vk_data] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x1201083a79b8f38eb74f6072659cd32b2c8fbacf9b4471e0eba123547dfd4b6a", + "0x2f7037d57bcd2b8969df3c77a9dd5cf7725100f9a1c6e696258c9c588c342a89", "0x166d9200203972a67e495e091356eb547f3ad77502de0163b0eb32598c42137d", - "0x05d01d03ce1ed41f78fe4dc1a469c2eebd01e415ec4327c015c021da92c8baba", - "0x0e1ca36829da337f392c354bb8693346f1318acadfe04321126dd48366637030", + "0x27eac915c433bdf3b8f1e2cbd7ddeec9c18f80a7032e3a7dd95e58f2d53a8be2", + "0x150f1653bce7c42cefbc62c8316869e1e2c5558f656728b8b3f6ffa87006f2e7", "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] [inputs.previous_rollup_data.vk_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000800000", + "0x0000000000000000000000000000000000000000000000000000000000200000", "0x0000000000000000000000000000000000000000000000000000000000000050", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000036", "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x00000000000000000000000000000024db83e25f5ca5a629b7b6be28fecae38f", - "0x00000000000000000000000000000000002c1e51710735e74dfa443e1208a03e", - "0x000000000000000000000000000000d49f30dc81efee379c0cb26b3f8e4e7da9", - "0x00000000000000000000000000000000002b5ea718d58dd8cf0b0c99e7e6a737", - "0x00000000000000000000000000000072328288ecdded3f3976cb83a224036e64", - "0x00000000000000000000000000000000002a63a3e7ed1b6b86472161a6a08209", - "0x0000000000000000000000000000008ad74f1698642c267f74e88118cda031ce", - "0x000000000000000000000000000000000029b6fb68b2401f107435050094daca", - "0x0000000000000000000000000000006357ad09d1b96b837263c22e924abaa409", - "0x000000000000000000000000000000000005c151273bff04117a30fa655b3648", - "0x000000000000000000000000000000db2cce72c72dfd7d7a4536bc88cc9c702b", - "0x00000000000000000000000000000000002598d8059c89aebd54ac31c9183c06", - "0x000000000000000000000000000000ac9f52c3e222f735baa24e6d868c05525d", - "0x000000000000000000000000000000000024ff7049ae56a5dc731c8ebec976e1", - "0x00000000000000000000000000000053e02b257ac194d5bcc4dd37654f5b7e8c", - "0x000000000000000000000000000000000018fc09ed6bcd031877226620b48283", - "0x000000000000000000000000000000570330c296b278237a4225d7cf19342acb", - "0x00000000000000000000000000000000002590882881fff3a5d26b171efdbd6e", - "0x000000000000000000000000000000e5db0d1afa3915592c04c6f0af4de707a2", - "0x00000000000000000000000000000000000dc18ecd10cce03c042f214b4468d2", - "0x000000000000000000000000000000ba6508a705facf99e6acb1bbd62fdd9e04", - "0x00000000000000000000000000000000002078d1122ffcf45667d18665f7e2f0", - "0x000000000000000000000000000000b2dd97fb852e88af1302d7db947cb9b80d", - "0x000000000000000000000000000000000010d324e9fdfe9afb950fccd96b53f6", + "0x000000000000000000000000000000f18c1fea16f6b9c1b1d3a279472199698f", + "0x00000000000000000000000000000000001b801890ae8e4f20dfe2f6a3998337", + "0x000000000000000000000000000000913f05a19f9120ab6c962aa5ed303aa032", + "0x000000000000000000000000000000000013835e6ae9a3335106e66aa0adea3d", + "0x0000000000000000000000000000003883614d41f3455a3b31f6800855d2154f", + "0x00000000000000000000000000000000000c910498a4739d8e30b03e4ad37739", + "0x0000000000000000000000000000008823c2a1ba53d0f24dcd21016932227cfc", + "0x00000000000000000000000000000000000d2ba391ff1f57020a54510768537f", + "0x0000000000000000000000000000005877194adc204ded1f432e8e9cd3781064", + "0x000000000000000000000000000000000030579c87c3bc3f5c98c93ad14d2c2e", + "0x0000000000000000000000000000008a3b98248a76fc44ad32fac7e9c9bd1de1", + "0x00000000000000000000000000000000001d29affc1859bf365d966e9618990b", + "0x000000000000000000000000000000a0971b2ff29127b728310efb4227017ba2", + "0x00000000000000000000000000000000001805a2a740b77a0bd1fb9781de8bd6", + "0x0000000000000000000000000000005a170f8d15e240315d4f72303451cf54ea", + "0x000000000000000000000000000000000009bd71bd20177fe932bcbdcb6657bd", + "0x0000000000000000000000000000001175e6a241467447d82f898fcd92b622de", + "0x0000000000000000000000000000000000054a8db2e02f807c99d3cccdd1e7d3", + "0x000000000000000000000000000000ecd9f4b8351e595ac92045300b23a42b3e", + "0x00000000000000000000000000000000001229f733620aab706c7a40aeb59bc7", + "0x000000000000000000000000000000dcf6625873e1be0f4cfc8b407884012021", + "0x000000000000000000000000000000000010f537126bddbdc974f0ce3f41c1a9", + "0x0000000000000000000000000000004bf06bd74dd176f883d6abf1345a0ca968", + "0x000000000000000000000000000000000025af88f38831f46d6fd4d68b3a2d4d", "0x000000000000000000000000000000ab39c116edd167388c44289cd1ec2795be", "0x00000000000000000000000000000000000f2e67276dfeb43eef297f836d09ba", "0x0000000000000000000000000000005b753584bc37e4bba93f16a4bd47dbc93d", "0x000000000000000000000000000000000019a8124006aad5ab1671a14394457d", - "0x000000000000000000000000000000f55451936b75251c3581911f9c0fe54d50", - "0x00000000000000000000000000000000001ca67d4898151613bcc557f8050a05", - "0x0000000000000000000000000000007b0a2b8a4214588700325f96f502cbfa2f", - "0x00000000000000000000000000000000000b13dbf6e0a8c07df6b6a54d512ddc", - "0x0000000000000000000000000000005192040cd664180cda4ba6fa00090b8749", - "0x000000000000000000000000000000000004d22b0368d96d7e0622c2fd93543e", - "0x0000000000000000000000000000001a11fb44565dfdf37d6b4e081d9ba098db", - "0x000000000000000000000000000000000014b4a505c54c4dbadd33b5ab4a581e", - "0x000000000000000000000000000000e3ee9d8707e01f455f9dfa10df3239b07d", - "0x000000000000000000000000000000000023569791510bede6b406a80801b038", - "0x000000000000000000000000000000e886f0009f6b198e9b20af163a28892c8e", - "0x00000000000000000000000000000000002d5c530a9a4c4bdc305ecbed1d4914", - "0x000000000000000000000000000000adbe33f5bf4b3587737a8a8c186b83d42f", - "0x00000000000000000000000000000000000928ff5654bdede1896f33511ded0b", - "0x00000000000000000000000000000009533de09ca21f79034da6507d4dc93642", - "0x0000000000000000000000000000000000068040247e47185a08c9968c39ccb2", - "0x00000000000000000000000000000089f904997d0f1577962a62f85286d17a18", - "0x00000000000000000000000000000000000098b7a4b07f8f6f92cb2b8a9b699f", - "0x000000000000000000000000000000340f9de29f7ea85a3ad47a0b350ec05a5b", - "0x0000000000000000000000000000000000141202aea94a309bc79a02f976314e", - "0x0000000000000000000000000000006be6c731984e1a46c36525c2e93e354f86", - "0x00000000000000000000000000000000000cba442374a2dd9e2f0bfdb0f029c5", - "0x00000000000000000000000000000063b5f921eec910c58e554753a4c0ec7315", - "0x000000000000000000000000000000000016483b71ca393845ca3dec79d099e7", - "0x0000000000000000000000000000002286fc0b33d4f06082e6b318844b72c2c9", - "0x00000000000000000000000000000000002d441d1392c9d4b4f822960703275e", - "0x0000000000000000000000000000009f9101fd73a31cd73241391fa04c9448fb", - "0x00000000000000000000000000000000000e75b71bf786572e998cd74e295b33", - "0x000000000000000000000000000000040a49a5aed8aa7c8fff7d50a27614596b", - "0x00000000000000000000000000000000000b2ae53fed5ec5dd621820490acd8a", - "0x0000000000000000000000000000001cc4d7d159ad43e244750ad417b358e050", - "0x0000000000000000000000000000000000177736e0348c78afb5b218346c0f13", - "0x00000000000000000000000000000075fff406b642aa77c9f95ce458e4f7f3bb", - "0x000000000000000000000000000000000009e544c0d170246998b89f91fcb279", - "0x00000000000000000000000000000048bddac7c9ed6513f64119a940e56ac6f7", - "0x0000000000000000000000000000000000097574b6ddc5ca65bf5ad10711a1a9", - "0x00000000000000000000000000000068f99b1172fb5ebd0dde85131c8b266d68", - "0x00000000000000000000000000000000000f59957d377a3e451c42a5a227e228", - "0x00000000000000000000000000000045be3d7f0cf1b8223788cca57b62c19ffe", - "0x00000000000000000000000000000000001b2a2d37f32da23c0ad08eaa499b48", - "0x0000000000000000000000000000001ad7e6d949e098b267178457bdacff1472", - "0x00000000000000000000000000000000002d9fbc93a6e1dcb817d1295210bacc", - "0x0000000000000000000000000000008b3d3cc685b8f0ae4a08114a824b3065d7", - "0x000000000000000000000000000000000029fbf71f106c7ab131ad0a0ddb77fb", - "0x000000000000000000000000000000440b27b75d0ec1c9350ab0442d7bca77cb", - "0x00000000000000000000000000000000001c4d9bb45478f4586d78178b6e4b8a", - "0x0000000000000000000000000000002c1fd4cb9f146e41c85965a865259b805d", - "0x000000000000000000000000000000000006c554ae212fd7733b1c7c43210ffe", - "0x0000000000000000000000000000008296d9c5a94ebbb005615d91dac1a93c3e", - "0x00000000000000000000000000000000000f7c69d3b7d48948902510c0b85096", - "0x00000000000000000000000000000088fe4f731fff143aacfbe70165d3b04b3b", - "0x000000000000000000000000000000000009d36b579c791b1592b362b8f17dd8", - "0x00000000000000000000000000000029ff45824b919b03aa66a315316ffe733a", - "0x000000000000000000000000000000000004d75d131598733a7ef61d4f54eee0", - "0x000000000000000000000000000000ff8386bdcf62b116afbd1d386326eb4417", - "0x0000000000000000000000000000000000092c6787f9f1022430ca163f47a380", + "0x000000000000000000000000000000c8662004bd46f4fadf6416af8209a8d9e9", + "0x00000000000000000000000000000000002e21d2fd4fa9a78628db341cca648d", + "0x000000000000000000000000000000bafa2b97a38046b636e340c6bc5b5b9812", + "0x0000000000000000000000000000000000259d7f1bdb9f40b396dc891351930a", + "0x000000000000000000000000000000c10dfc62da21f1757687f4512833aaaa2d", + "0x00000000000000000000000000000000000683897c8ee906c25a2fdddc65943f", + "0x000000000000000000000000000000878caa71be52d5a5553c0492b047401f4b", + "0x0000000000000000000000000000000000077dce44cce0dc6bc0db90d014ff67", + "0x00000000000000000000000000000071c1f9fe50ef19ee1ac4d6082c6268388f", + "0x0000000000000000000000000000000000149e026dbd19f730e0684bd344dcba", + "0x000000000000000000000000000000295a3a3d413d33ec6e72f92d8f8a258be9", + "0x00000000000000000000000000000000002fb372606780d597b59539ef5d96c3", + "0x00000000000000000000000000000036a41d2390ee15d84668a1c4526bea620a", + "0x0000000000000000000000000000000000063ba3fc8ab94ab5224861843241f1", + "0x000000000000000000000000000000079515b585399fd9347a1e1016b68d58f1", + "0x00000000000000000000000000000000000ed9bb156c6ac0aa99afe28e095802", + "0x000000000000000000000000000000867f99bb06ece97e200aa20288062ec984", + "0x00000000000000000000000000000000002fa81babf983b0fc15d944b5d2d04a", + "0x00000000000000000000000000000022c82c7db6d0f158db81f045ce45042e36", + "0x000000000000000000000000000000000017df2565483cdde7d21408b7ba9177", + "0x000000000000000000000000000000d64dc7509cbf7e262fcfe3b1e29fe1cd1e", + "0x0000000000000000000000000000000000068fccee8dd20f2c621ff2047599c6", + "0x0000000000000000000000000000008c4c277e542e98e721065b71cee850cd41", + "0x00000000000000000000000000000000000ef6d7670f1b71d15fb218dfa32ea2", + "0x00000000000000000000000000000040870c8f15928fd5f05423aaa058f68264", + "0x00000000000000000000000000000000000f0ff5b6813582f1111fe0ac3f0c06", + "0x000000000000000000000000000000042ede78eb11ed785944d5cbcbda217d1e", + "0x00000000000000000000000000000000001ba97f19e999421c8b52563a600100", + "0x00000000000000000000000000000054b5fbd49aee5ee1c299ce1c7d6b17f3f9", + "0x00000000000000000000000000000000002cb5c0e1e9cc5f2ec5609cf47da0c5", + "0x000000000000000000000000000000d61e2f4474b78b0fb5b3d353679e2d38ac", + "0x00000000000000000000000000000000000e1b23379a373abc700aad480491d3", + "0x000000000000000000000000000000e856ea90e8a5f2b2f90ac6625f60ca03a4", + "0x00000000000000000000000000000000000592c7b6f24bbb515d73d8881277a2", + "0x000000000000000000000000000000ae6ff85287cda8b49ca35cb1374ff532c9", + "0x00000000000000000000000000000000001e649eae760943f2ef5d1359653041", + "0x000000000000000000000000000000cedc4232cf1309c8653dd2dbcd0dd4bb8a", + "0x00000000000000000000000000000000000926caa282df2632e3a814ce74f7d6", + "0x0000000000000000000000000000006c0b513faca201390880225eae11e457e8", + "0x00000000000000000000000000000000000da66008bdca32654185f8cc32f641", + "0x0000000000000000000000000000002abfc53b25a924ea05c27fec8054125415", + "0x0000000000000000000000000000000000294900104951372b2ecb97b9217034", + "0x000000000000000000000000000000f5ff64729bb6cef183c2ef31960d6db3c0", + "0x000000000000000000000000000000000010c44d5a21905144bc99e3f672a647", + "0x00000000000000000000000000000099ba455e1fbca1b8a649596fe77df2ae20", + "0x00000000000000000000000000000000000c55d2d07b1b1cc1456985c450647c", + "0x000000000000000000000000000000bdc870122d44c2a814e1b113afb1c53288", + "0x000000000000000000000000000000000025c07b10324232a2f263be0fe1aed5", + "0x000000000000000000000000000000fe989eb0654175b3045252808395247841", + "0x000000000000000000000000000000000003cb4f7a5d65165dd915146be092af", + "0x000000000000000000000000000000c5b42ff8599e2b66f6ab9f54ac2e7744a0", + "0x0000000000000000000000000000000000010cf03a968278fa4b641586b6dfe3", + "0x0000000000000000000000000000008306b68e3421020ed2db0b0a3497d1c329", + "0x000000000000000000000000000000000029a58966532af2a0818f130b5cf7d6", + "0x0000000000000000000000000000005952d2662bb5d8c7d40961633f5dd01f9f", + "0x00000000000000000000000000000000001e45d35312d3e3a6bd3b9e255a5baa", "0x000000000000000000000000000000a425d46f0fee82015c62b0c52bdf81abef", "0x00000000000000000000000000000000000315cb7001dcebab5726e475d07c43", "0x000000000000000000000000000000c9513f7f4bb4f805e057edd000bd6d1128", @@ -1525,12 +1525,12 @@ sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000753dcdfdd31aac879bba66c0c5afed49d7", - "0x0000000000000000000000000000000000068d42bf9c7d12b69f517b9ab15db2", - "0x000000000000000000000000000000e6e1e84e601e771b8421a123fcfc7823e6", - "0x000000000000000000000000000000000012aef4e12d4f4473ac77c040e38eaa" + "0x0000000000000000000000000000001f5bc66759afcd00398b952fc808086207", + "0x00000000000000000000000000000000001ef8f7ab2bb6e4d27be7366f66dd3b", + "0x000000000000000000000000000000289d5abb50e5f3ca24c4b5068cc43b4f51", + "0x00000000000000000000000000000000001031501e1f10ff01b6bd7c2bdd67bd" ] - hash = "0x10b292a4ff0b250b6d00a75de0fe3eaa9889803138077e219fd003be5f55b5b2" + hash = "0x29ab01b189ec37c1a18f9bc60a6a6aa843e50bd385ce0bcd230b4342ef9d7bff" [inputs.data] l1_to_l2_message_subtree_sibling_path = [ @@ -1571,10 +1571,10 @@ l1_to_l2_message_subtree_sibling_path = [ "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a" ] previous_archive_sibling_path = [ - "0x1cf6086a3d989d2270bc4423f04230faf55b7dbb6fa90fe5a80b42d4ea797fa6", - "0x1e0efe1ba26423b513d0da6905393a60a2aa81d9cdab921eb07d6b0981c2a6fb", - "0x2b0cc039f855ee1056343b2727659b2d894617612017a1d0fb8dca1643ea2f42", - "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", + "0x0f7e766a75b2ebf864abc4e9d84ba26efffbc6d65afba8d5565809160b5ee60a", + "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", + "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", + "0x2b31a7db74128475cfc6f1daab7a302a2f63a76dc70f533fd4fda59a72fbe76c", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -1603,9 +1603,9 @@ previous_archive_sibling_path = [ ] new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", + "0x16fc3e02bc11d49ca235e53ff1a9d36870678a2f1ab8fc5d3e5c959a19544b64", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x00b66a042709e7cc9b4fe21797cd7a6b31ca1cd814876abcc88f1558d3357a75", + "0x2b31a7db74128475cfc6f1daab7a302a2f63a76dc70f533fd4fda59a72fbe76c", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -1637,9 +1637,9 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots] vk_path = [ "0x037ff6f5a0bbb8ae28ac3ae63579d7c7786cdc7f7bdc64868b5aab1479f542f7", - "0x0f211a9972d91b7cfd2313fb5ceed45515800043432bf263f9ca1e8c13e050ee", - "0x0a75bf74e8d43865345da3cb1a50f799a3bbf6de33329e348c996a31a14a779f", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", + "0x022935b88633463a1ce36e5377a9ab2e7106c2d04b590739507d03f46e28c16a", + "0x209081b049aad25416f17ba04f7a0ac6912018fc207f5e613c7790a52048574a", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] @@ -2224,150 +2224,198 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots.public_inputs] sha_root = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" converted_root = "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e" - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" [inputs.data.previous_block_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000012818078" + total_fees = "0x0000000000000000000000000000000000000000000000000000000001afbcb0" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000001db6" [inputs.data.previous_block_header.last_archive] - root = "0x01e7d7a6151303fd8707679cb6760f5e359ae62f02399691382389a11053b1f5" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" + root = "0x27dfcbca2cdc6e2e94f7ac5d5d652fbc48d6735b554679c115c00057c18e5ed9" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.data.previous_block_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00d24a5fa0b2ab0fcd30257cd4cdacf57fb7daad8a2f55195aaa99137635b9b0" + blobs_hash = "0x00087e114b6bf5c14ca1a8d81391bf604e2d7e08ebbc8323b6fc922cab7dad16" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.data.previous_block_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [inputs.data.previous_block_header.state.partial.note_hash_tree] -root = "0x0fca74a0b1703ef763f8db73c965def387e0ee945a7d911323af97006cb4ea3b" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" +root = "0x034b7ed4d5ec7dbd4f17225625a1b6c11ca2f18e06778e280265b376a4f17530" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.data.previous_block_header.state.partial.nullifier_tree] -root = "0x091a1aa4bf156da25d9dd64e27f1733c8cb67ab27765fb5494345e8e1074ec7f" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" +root = "0x08bd8cef996ed261caaaef0e9111111f0332f8e7cc5daa04d8dd6a80fac73845" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.data.previous_block_header.state.partial.public_data_tree] -root = "0x1f5eb6f586195fdb59781c8a0be8aece2e166c39a12deca6b3d1bca8bdaa4e23" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008a" +root = "0x2cf7b6f848ef2f3c46d75c7830549a15707c07eff1aae39d22feb2e1b3dbe8ba" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [inputs.data.previous_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000021" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b718" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000041" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320c4" [inputs.data.previous_block_header.global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.data.previous_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.data.previous_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" + + [inputs.data.start_blob_accumulator] + blob_commitments_hash_acc = "0x00be044db88ceee39efdc47cedad851d9b1dc4e4b4272935e6de6da093abb3c3" + z_acc = "0x0d12a012b6c05b78773a549210a174406434552e362528cd1c2c1d031acb1d02" + gamma_acc = "0x128f1b5265eff011209236b41b571b4d8319d0c5c3e90d81aa380c228e23ab64" + + [inputs.data.start_blob_accumulator.y_acc] + limbs = [ + "0xcb7e7ce6b998f22b905112367dde7c", + "0x2a1774901196c680a276b45cf53c0b", + "0x5d62" +] + + [inputs.data.start_blob_accumulator.c_acc] + is_infinity = false + + [inputs.data.start_blob_accumulator.c_acc.x] + limbs = [ + "0x8b968c6b0d2dd286d828ebfb4171c1", + "0x680bc6b6470feccc4d9d385105830b", + "0x564d37b9f4a72ce27df06d51dfd234", + "0x0883ee" +] + + [inputs.data.start_blob_accumulator.c_acc.y] + limbs = [ + "0xafe1bc16d0cfec75cc5d842e9c245f", + "0x6f1b2d5fc0886f40adfdf8d72f7b2a", + "0xdeebdbc3bd45de655d959cf06da350", + "0x06378f" +] + + [inputs.data.start_blob_accumulator.gamma_pow_acc] + limbs = [ + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" +] + + [inputs.data.final_blob_challenges] + z = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" + + [inputs.data.final_blob_challenges.gamma] + limbs = [ + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" +] [inputs.blob_data] blobs_fields = [ "0x000000000000000000000000000000000074785f737461727400004700010000", - "0x129340c90525cb3c74edba68ab56308d8984ccddcc41507dfa11a81bafe40bad", - "0x0002000000000000000000000000000000000000000000000000000012818078", + "0x1311e12c8053673f97e7eda69dbda88bf5c93d236a8810d8bfc5a2c2e43f1de4", + "0x0002000000000000000000000000000000000000000000000000000001afbcb0", "0x0000000000000000000000000000000000000000000000000000000003000002", - "0x1403646532814ed50ce5cd9ea1bcd9965ab10436d135489631832eb6628b4a06", - "0x128ee255844b77c653b09122c26342e295c1a514c1eec96c64e617dcb07ea78b", + "0x1cb02d641e8eac04726d136087a7525fdef6b07f369aa7966b5d5edeab30a0ec", + "0x23900e9a08af0475e36ec8184a89b6a8af189b7cd88c1cb1ef4e014722e8522f", "0x0000000000000000000000000000000000000000000000000000000004000003", - "0x27e517d43717d2d03e909d991214337d97344dcfbe9cb2999aee4108c14a9171", - "0x0a119f6f4992c0ba152010f67ad6b7d5574f5e86be189ec78d32d7f0ea930f5c", - "0x0fedc1178bdf20af5f214e9f65fde0e37714f9108423edda5d544cb1a9e46589", + "0x116f41d0ea0d87ba40a04373c9a28a404cd2232ac90f310b2067d46151cbc8db", + "0x04cdee5c715e2cea8d996d41cb0d2c50fa8e00d99ad2c275af33a5bdac1d840f", + "0x0b76a7019873353edeebaa702a1d12318696999e7b0434aa5934ce819f0e5e43", "0x0000000000000000000000000000000000000000000000000000000006000001", - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b5e1fdd984", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b5768bb838", "0x0000000000000000000000000000000000000000000000000000000007000003", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x25e8f0abbcf5cb64867207d6894de6f054766aab1c615b67f29f704267e5f4de", - "0x1a78ad6927337fd8c327e1f948f6d3ab17387edd003a24823f4609321994382f", - "0x0001bfd71185668fa4e978417ddeefabd9a92d9a2491bb195929db626994cff4", - "0x008a26accf52bb6f938e2a38a35d8e2632baae3d5cfeeb4b594560e5a2769871", - "0x003881a4bcbd20cfdc5ae79f6b084362162a3279c85e9226cc1e03c42e4c1fa7", - "0x0064546f3ba00de3fe6f742a6b77a0c6efc66cbd6701b02b132eb1ccf9bf6c54", - "0x003d89ea63788de63e103667bb21ea09b682289c30d9e7be2dd1dc9c85f3569d", - "0x00e2d556a0af4b9e43fbd4f4a8464478ec86ddbd27488661ac234459b10ff735", - "0x00fb829ee26afbc73c428fba6adc0c78681577155f97bd9d85f72f4a18d58bf5", - "0x00a33a341e0700f72024876f23fd136d192051efc28f97612dff0e6541f357e4", - "0x00ba665508a5bf44adb779f5b74331f7b98205c3533458a99600aa78475226be", - "0x00632c90b25b9428308291ceaf9b88c14df1e24b668e177846bdd2fef9d53d26", - "0x008d93b322bc9ccf41a0ba6fa0d2724a35f7b4b309e862df761a21792780030b", - "0x0076e60165b699219f19acf1894ca55a2cc77ebb250ec7c1264bdf5cb9eca2fe", - "0x00c681688dd2dfa141f5001239da228ab7c79829b5615a94eaf3d43fc417c59b", - "0x0057d6ff5eac69c672fcffe0e5bab754f6f7542526c2c28a443f1d1ff08e320b", - "0x0073a6819bef7e1e90c64a2416c9a1a403f442ee91ebb5d58d18afd7bc38e464", - "0x0065d3c4bf2a6d08333efa554abb19876dbc373e73c14a5a96c5f66612fbedfb", + "0x077a5a4c104335ff6b8c8575a87d573109562220dc6931e428ddee7ed8786fa9", + "0x0fdeeba4b9ca224a63d2ab3f7c8e8fb8ddb365a314fce0a74cda9e505ee45266", + "0x00005215a9535e2ecd48142d105aa9dc7eb4d9d7551af696c259289c107f5bea", + "0x00e6239a7c38abb72931f75567fb444fd16a058be442f7cc804d88125dbfe6b7", + "0x00f4b81c0027fb50b97656fe00dcb83df0bf526b74bfeb64a622c77ba71842e9", + "0x00343860ea0ffeb062f2c237bc4850fcb3db1408978393afb4a0184a6e001a2c", + "0x00eb3257cc4ef04d8fff39662bad0dace6b266ddfd56a7300c8d3e1546e0c06d", + "0x00034e06ddfa651b173907f61f8d9acc2cce1ac60df29db16fe407e42f92cbcb", + "0x0074c205327f491f0203fcffe8560755bce2ed0f690a4af7a191ba5a034e9dd4", + "0x0023f47c5510cd98622c6db4ad5df975d6ad9670aaf6f31e46025cbd01516902", + "0x00c27667d34a3a34c8a1382998b2b7558bd2fff1ed105bb526944d7cfed6660e", + "0x00486c440d76f475119d7931fb3674013fe5a3e023ed762b21bc425170f4be34", + "0x00ae5cd1370cac36d0ee7cd9046d8f3b588b667e67033edff664f3516f490e8d", + "0x001b9a5a886db5b155354dca3ca49e57a966eef7857a5db79a8084bd7c763c68", + "0x00fe92ad3c37e19048d83c117e2bf92164626f89eb4ac6c9094f19f3aa667b7d", + "0x000a6b6f9e81cf1e99aa7f7abdc8225f7cbbb78759d88bf7c3a1518b5f7d0f95", + "0x0098a816c485614a535a22d6b3e2e92f201e40618bef796012d01f0cb4bfca14", + "0x0017291d9c3e29651e047d6ec57228c5e1293ccee0fdee61431f142c7aa8248b", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x1448150c1a2f2f9677e5545a2cad33783c5c2efd3be7943881f6577cb6cc3976", - "0x1772a233b45035b7edec9b9e4514d230d4b78fdc42736a49d94c8b20cccb2c4f", - "0x00008d39fd704b4131d8acbe8e127e099165dc58a060522e2507cea8a9e134b8", - "0x006c2b7d73aca9fce69931ef51389b48fd34b4a755a68122b61a62a39ac92311", - "0x00b76461ec0c4b8aae4e0860ac83673aaf8ab16235eb6d5ad035f886d58e8430", - "0x009e072bdb7079c420a9be29e6921eecf803beb2bda70af058df7effe919e69b", - "0x004e35316d50502a0f8c5d36c6ffec3b114581959d306d498ea78a50bdf0d8fa", - "0x00fb3fdcecec7ee346a6785df616cbf82802fc34e87c5e0bceb498d71ba42c7d", - "0x0023e83813d3b5df695d6d4fafbce93c0dca3d1ec24a68d71d65aa789ab3745c", - "0x003247156444931de16d9b594c14641d7d8a86b913f7d916f9b441a3cdb1032d", - "0x00620252cc0b5969de9abfece686c7beb8b6cc6175120a5622fe84022401005a", - "0x007419d44fb1360e1d094286edc1cfd249e3e74a9bc4610818a6c844f94d7138", - "0x00b02068626d24a833f54db5dbd948445f37aa2819d78fa2c595e336009d6555", - "0x00f0d2e41a307ccdf89be4b6c167250b015e48cbb2ceae63c303e5d2ae59712c", - "0x0043ec0b9fafc38de4cfd13a410b9c53452d27d434c249fb27377592b1875085", - "0x00bbb23a737a0ef3c43fc09be42b5eb7091e92eb2b8d4892aa814614eed89b4b", - "0x00fad704c3a7c542e6fea2ac965df424c193fbe9551a2057bb6f0b2ef58b8431", - "0x0012cc4ef8f3f8427c08e565c4ad058e243a1defa44181e0fa0d4d89e9a28a23", + "0x04cae67ee9e2b68dd5ee15457e33888977bf02e0f80530d752b78652125a8a81", + "0x067db6a69d8b257f1e94b694694c10e5c87c7a2963b3a3ff460e92b8cf58a047", + "0x000025ac14e574c6ede7549b959cf3f5c82f36b8f4783245c9160962d9be60a0", + "0x003f4c633f9744e35a1aa586e5648303545c099f8341cd5a72b024ebc0d92dde", + "0x00b784ab30f9c759ecc112157a025bd2febd26fc6fc3eda9f132f24854211c9b", + "0x0041d5729d636686bd3b5f1a85e76d19fe8b8dd4ec078526dff04c6650c38239", + "0x00115a033a56338ce7c9924368fcd62e5daaa54493339eee776e01f0a1df13a6", + "0x007afd851d0128ca966f0b553d9c034d3ad1b42e9b38e501ecbb872d90649e82", + "0x00412da65958ac7076d6f50f6466b4a713a93417467394dea957a747d21c8ef7", + "0x008561be922800fefe0d7ad92df06a2264ef656a57d9bba684aa5f43f54652a4", + "0x00757e13190cfb8ff6a67e6223014a03d4afbd9eb3e19b8d57a4ce92297a0fd8", + "0x00452fd2d56fa3c9a00505ce42306f6c8edc9ff59a3d7e8153a8b581b2b7886c", + "0x001a0dd9e59dff8c540dddd2a68a050197236d68dd62bbc65d6768f0fd659467", + "0x003af88c540b98249319107a90caf3bfe49f8e8a43888e36d1a3594ed7b09ab7", + "0x00480fefbf14efeeace3e2759485b69068a30b36748fc5f6e9b3f4b54037dbf7", + "0x00ac512e309e03cdc721e8ffb36a6dfaa3593a301e8a97889a342ab499325694", + "0x00f8cd6baf9e2782f5a3cb489e821cf29a0bca30c7a66cb625090b1295d45422", + "0x00f33f153080337bb0b4c1e7a4efa58423a337be56a759158b7337c186c590d2", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x04ffabd752c9b899ba0e57875d2128a6118b96c37ad986ba8483f2136f2a03c7", - "0x20ee3129ba431b575cf698a003c05e75923810cb8c2a31cf1e210f6276a0b075", - "0x0000c215096184105fc808ad90fc96e5e1848966c98b893b989b5594e62efa17", - "0x00da05a686b57320778f555eaac98e7c93c145df5c4c05a9edd6b40614a6aeef", - "0x0061d5e6d16dda1d403f7169c17e89fc56d4f030fa836d58717afef298ca54db", - "0x005e7da8cca67e977a658dd8c7705bd31a3fa27b595df201572bb4b7913ea161", - "0x00eb58716fe9ad58f2b9dd7a147e2c33e8e898e3f1cfe6d617f86bc0967a5f16", - "0x004b1bfae5277ed76066bd23af1534ee7998e1e30b42f4efd6d2a81aedfe8810", - "0x00419c0174cf81d3e8cdfefc435072ef53cae6c6c00be383d13a0fc140ba6931", - "0x00375a226ec82b104f6548d0318860ab82270f392b36d4d6a49b30af3cad6fb0", - "0x00c800800810aff0d421a2575fadb1c36464d3525b5c9e31c8821dc32015d083", - "0x00f99d2acfc0b6e21bfad661024c40b1cbfd40e1e3176df753c47accedcdb2ab", - "0x004eaec920c496673dfeba79bb0bf38994472bca4c4a2139bb4dc52e0df076f7", - "0x00b5093fa491232db1c133773e84888049b8933a93c7f9aed93d11453d9def2c", - "0x0090949de15073bdceaeff0a75b1df6d5999c0cc9a06dc8356dad80bb7d4886b", - "0x00df28de2068de153cbdb0b126e177b9afcc79c1cf3faeaa940bc60f055bbecb", - "0x000b8090a0ee9476d3632855802c36e3794212464e6a76021160d5e4f39d77a7", - "0x00df0fa8ad04ce6e968251adac47bf414af89cc66feb3b3449741a8b2381d714", - "0x000000000000000000000000000000000074785f737461727400000c00010000", - "0x2cd6ea764455b2f9472769b711c40d96fdf1a15310cf403e2dbcd4da01632897", - "0x0002000000000000000000000000000000000000000000000000000077979f74", - "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x19a66a93fd82180d84303948f6dcc0aa49c190f39fb9af556fa3ba1b579547ee", - "0x0000000000000000000000000000000000000000000000000000000006000003", - "0x27d2ac4455041a0233512b9b768a4c2e9df56450bf21bdf732bcfda0d1d241fc", - "0x0000000000000000000000000000000000000000000000000000000000002328", - "0x12b24f23d5b0e140af9f4d5011935e9a0e8a315481b2db25c3515affbb7b8dae", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b56a663a10", + "0x03356ebd58303564a3cd809f4b248a387e8f0c0018e67f8831e8c7752c3adf57", + "0x02679f0d8a81bebddd6853e936064ae101cf02cfbe3bc0993237bbe5d6d8d615", + "0x00008354dd51479dff69ed5953990eb7141fff8f0245e59601dbcc2d66cb22fc", + "0x00bf79758017bef868a79c320d19621989e9c3a3c819d36d229e460b8c64fd0a", + "0x00b8cafe0e73bad294465255013af98a49793bb0753ea4537c121eadef64422c", + "0x0008def9befbb99dd61749449ef5b1480eb75e4f627a90f382ebe5a04f76736c", + "0x0037fb2c56ddaf8904e91b38e3bf5e90fb841866f5d2da47fe8ca1585be19813", + "0x003ff6eef743abf711d56c95d682754bab039fdf2d8535288c732691e73a9eb1", + "0x00851e1fc382159a2e1d7d3240088a94d9c4260f812a5280765100707556a464", + "0x0096cb104670d4bb21d6472685e4ef33d634fad9dd8922e9cf266beacbac1411", + "0x0078ca049ce93d67b859193f5562c84815a57a249ef41736fcb52b904effda00", + "0x0059ab438a6fe57943e006ad7caf8e68c3708235a8759fa873852b4551c731f3", + "0x004cdb7cada686e23150fb70b4b96d893da7a2adafb2ebc4720a5e48ae5fd2a4", + "0x000202a9a43b9f6ff96b3b9c231b9e36f8297e4ba665c5eb648c0c9d1e59aac6", + "0x0020194d639e92666b8468bd8ddb316bb29a71deb5b426772bb8258f30767d95", + "0x005697ca8a29901d3dad37c813b11b2f67bb3751611d8450beeacc465972ed17", + "0x00b40a4a15db70dcc6476d6747b8d8d0a31c42cbb4a566cd1d6cad4bf0101c60", + "0x00b650a057c9f87d5b874ac1cfe03f6069480abeff3751bcf609c502dfd4caa2", "0x000000000000000000000000000000000074785f737461727400000a00010000", - "0x2e229cb2166d1d2adc288391d28a9a96a3cdb7e749c6a3dc2703fa41258bf5eb", - "0x000200000000000000000000000000000000000000000000000000003f127f5c", + "0x18ca46ee401da4578e45ee3799b5879ba3e9602e87cd9ef4852764f6d48cbc02", + "0x0002000000000000000000000000000000000000000000000000000005bf7598", "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x1676b017942e5daa17c8305e8139bbd2d6efa545030e9b5913daa8aedc1356bf", + "0x0b85123d17754e300c144d760839f1024196f32990fec7a19b3b9dac9f1ba168", "0x0000000000000000000000000000000000000000000000000000000006000002", - "0x0372b7d24a103ae951a1b61d5c78243cb8d85dbb90d38a68a1694833a070726f", - "0x290f498a4747fbf6588d534159831af0099deee1a23adc899d7082dc0f746ed2", - "0x1e7cc0b23117a104d67a33be85397daef27b36e08905d28e4e6c784ffce8d8af", - "0x00000000000000000000000000000000000000000000021e19e0c9b52b53bab4", + "0x1e356bc0a324afdb44be45097b0f6a7d90e03b7054592f1313f713556b06dfe4", + "0x1a3ea2cb97eda063a9eff4272f70221754fb4c199410c5dd294c5f92d618066d", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b570cc42a0", + "0x000000000000000000000000000000000074785f737461727400000c00010000", + "0x2e2fe12c88d8962a27cc21b19b31cddd07bd56e631ff1be6a2adbaf695c2cfc1", + "0x000200000000000000000000000000000000000000000000000000000ae60e88", + "0x0000000000000000000000000000000000000000000000000000000004000001", + "0x0737138dd52d328f543a242721fbf8c8961c55780a3c904f289b262c39a36c3b", + "0x0000000000000000000000000000000000000000000000000000000006000003", + "0x2a6165b0501067f000f17d1b611eb0c918c4bfd027f8b1f1364f3d04403821f4", + "0x0000000000000000000000000000000000000000000000000000000000001fa4", + "0x04db8859ad21f816219b2eb976509f966ee8565096aedff0eacc4653323a3644", + "0x000000000000000000000000000000000000000000000000000000000000076c", + "0x135b67d23782f95434b3bf61e7022cf9f7bd913a20744fceaf202a7ecadbd930", + "0x00000000000000000000000000000000000000000000021e19e0c9b565e63418", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -14564,22 +14612,61 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x00247d4f0811eaea527540701846e7f4ee0204289139d8650c54bf89d286b7ca" +blobs_hash = "0x00c7069548e351e5669e8ebedcdf71a5e9445a5b5cf620bde0f935e155209878" [[inputs.blob_data.blob_commitments]] - inner = [ - "0x00a4e334b63a4e8fc8a8a55248f3d5534674eaef2e83f60cea15e7b0bf46e314", - "0x0000000000000000000000000000008fbb4d32db2827838194ec2461c428f843" + is_infinity = false + + [inputs.blob_data.blob_commitments.x] + limbs = [ + "0xb289d48ebb51da8219463a3c503c3a", + "0x9eae3fef7c18c820f855a967653328", + "0xaafc57504ac8b0d5be5bd69919db9e", + "0x141fe8" +] + + [inputs.blob_data.blob_commitments.y] + limbs = [ + "0x1217f3eefde9b8fd17a21583f638c3", + "0xf3da6a8226a25eb24e44f123560d79", + "0x9a9648799eb0be38cbc4850f63ca17", + "0x112e0f" ] [[inputs.blob_data.blob_commitments]] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + is_infinity = true + + [inputs.blob_data.blob_commitments.x] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000" +] + + [inputs.blob_data.blob_commitments.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000" ] [[inputs.blob_data.blob_commitments]] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + is_infinity = true + + [inputs.blob_data.blob_commitments.x] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000" +] + + [inputs.blob_data.blob_commitments.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x000000" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml index 12e1bcfbd51e..d07ba1cefe98 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml @@ -5,6 +5,7 @@ authors = [""] compiler_version = ">=0.18.0" [dependencies] +bigint = { tag = "v0.7.3", git = "https://github.com/noir-lang/noir-bignum" } types = { path = "../types" } parity_lib = { path = "../parity-lib" } blob = { path = "../blob" } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr index aa4aae870332..eb467ef9b3a3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr @@ -11,7 +11,7 @@ use dep::types::{ traits::{Deserialize, Empty, Serialize, ToField}, utils::reader::Reader, }; -use blob::blob_public_inputs::BlockBlobPublicInputs; +use blob::blob_batching_public_inputs::BlockBlobPublicInputs; pub struct FeeRecipient { pub recipient: EthAddress, @@ -52,7 +52,7 @@ pub struct BlockRootOrBlockMergePublicInputs { pub out_hash: Field, // Merkle node of the L2-to-L1 messages merkle roots in the block range pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], // Hashes of proposed block headers for the block range pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], // Concatenation of all coinbase and fees for the block range - pub blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], // z, y, and C s.t. p(z) = y and C commits to p, for blob verification + pub blob_public_inputs: BlockBlobPublicInputs, // Blob accumulators at the start and end of this block range } impl BlockRootOrBlockMergePublicInputs { @@ -72,7 +72,7 @@ impl Empty for BlockRootOrBlockMergePublicInputs { out_hash: 0, proposed_block_header_hashes: [0; AZTEC_MAX_EPOCH_DURATION], fees: [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], - blob_public_inputs: [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], + blob_public_inputs: BlockBlobPublicInputs::empty(), } } } @@ -106,9 +106,7 @@ impl Serialize for BlockRootOrBl for i in 0..AZTEC_MAX_EPOCH_DURATION { fields.extend_from_array(self.fees[i].serialize()); } - for i in 0..AZTEC_MAX_EPOCH_DURATION { - fields.extend_from_array(self.blob_public_inputs[i].serialize()); - } + fields.extend_from_array(self.blob_public_inputs.serialize()); assert_eq(fields.len(), BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH); fields.storage() @@ -132,10 +130,7 @@ impl Deserialize for BlockRootOr FeeRecipient::deserialize, [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], ), - blob_public_inputs: reader.read_struct_array( - BlockBlobPublicInputs::deserialize, - [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], - ), + blob_public_inputs: reader.read_struct(BlockBlobPublicInputs::deserialize), }; reader.finish(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_rollup_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_rollup_data.nr index 32f6d0a9e28d..d62a7d25bd5c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_rollup_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_rollup_data.nr @@ -1,4 +1,6 @@ -use blob::blob_public_inputs::BlobCommitment; +use blob::blob_batching_public_inputs::{ + BlobAccumulatorPublicInputs, BLSPoint, FinalBlobBatchingChallenges, +}; use parity_lib::root::root_rollup_parity_input::RootRollupParityInput; use types::{ block_header::BlockHeader, @@ -23,17 +25,29 @@ pub struct BlockRootRollupData { // Its hash is checked against the previous archive. pub previous_block_header: BlockHeader, + // <-- NOTE: start_blob_accumulator and final_blob_challenges exist here and not BlockRootRollupBlobData + // so we can inject easily into EmptyBlockRootRollupInputs: + + // The current blob accumulation state across the epoch. + // Injected here and checked vs the previous end state in each block merge and root rollup circuit: + pub start_blob_accumulator: BlobAccumulatorPublicInputs, + // Finalized challenges z and gamma for performing blob batching. Shared value across the epoch + // Precompjuted, injected here, and confirmed in the root rollup circuit: + pub final_blob_challenges: FinalBlobBatchingChallenges, + + // --> + // Identifier of the prover. pub prover_id: Field, } pub struct BlockRootRollupBlobData { // Fields for blob verification made of all tx effects in this block - // (will likely change to be accumulated and sent up to the final root) pub blobs_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - // see blob/src/blob.nr -> evaluate_blob() - these are used for creating the challenge z - pub blob_commitments: [BlobCommitment; BLOBS_PER_BLOCK], - // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract checks its validity vs the blob_public_inputs below + // see blob/src/blob.nr -> evaluate_blob() - these are used for creating each blob's challenge z_i + pub blob_commitments: [BLSPoint; BLOBS_PER_BLOCK], + // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract checks its validity + // Only exists so we have a link between EVM blob hashes and the block header for users to check // NB: to fit it into a field, we truncate to 31 bytes pub blobs_hash: Field, } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr index 3df6a799c52c..5f463f8f063e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr @@ -8,6 +8,7 @@ use dep::types::{ }, traits::Empty, }; +use blob::blob_batching_public_inputs::BlockBlobPublicInputs; global ALLOWED_PREVIOUS_CIRCUITS: [u32; 4] = [ BLOCK_ROOT_ROLLUP_INDEX, @@ -54,11 +55,16 @@ impl BlockMergeRollupInputs { let fees = components::accumulate_blocks_fees(left, right); - // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call - // For now, we do them individually - // How we accumulate is being worked on by @Mike - // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); - let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + // Note: for blob batching, in assert_prev_block_rollups_follow_on_from_each_other we have checked: + // - left.end_blob_accumulator == right.start_blob_accumulator + // - left.challenge_z == right.challenge_z + // - left.challenge_gamma == right.challenge_gamma + + let blob_public_inputs = BlockBlobPublicInputs { + start_blob_accumulator: left.blob_public_inputs.start_blob_accumulator, + end_blob_accumulator: right.blob_public_inputs.end_blob_accumulator, + final_blob_challenges: left.blob_public_inputs.final_blob_challenges, + }; BlockRootOrBlockMergePublicInputs { constants: left.constants, @@ -98,6 +104,14 @@ mod tests { let _output = inputs.block_merge_rollup_circuit(); } + #[test(should_fail_with = "input blocks have different epoch blob challenges")] + fn blob_different_challenges_fails() { + let mut inputs = default_block_merge_rollup_inputs(); + inputs.previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.z += + 1; + let _output = inputs.block_merge_rollup_circuit(); + } + #[test(should_fail_with = "input blocks have different archive tree snapshots")] fn previous_rollups_dont_follow_archive() { let mut inputs = default_block_merge_rollup_inputs(); @@ -117,6 +131,14 @@ mod tests { let _output = inputs.block_merge_rollup_circuit(); } + #[test(should_fail_with = "input block blob accumulators do not follow on from each other")] + fn previous_rollups_dont_follow_blob_accumulator() { + let mut inputs = default_block_merge_rollup_inputs(); + inputs.previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.z_acc += + 1; + let _output = inputs.block_merge_rollup_circuit(); + } + #[test] fn block_fees_are_accumulated() { let mut inputs = default_block_merge_rollup_inputs(); @@ -147,16 +169,18 @@ mod tests { let outputs = inputs.block_merge_rollup_circuit(); assert_eq( - outputs.blob_public_inputs[0], + outputs.blob_public_inputs.start_blob_accumulator, inputs.previous_rollup_data[0] .block_root_or_block_merge_public_inputs - .blob_public_inputs[0], + .blob_public_inputs + .start_blob_accumulator, ); assert_eq( - outputs.blob_public_inputs[1], + outputs.blob_public_inputs.end_blob_accumulator, inputs.previous_rollup_data[1] .block_root_or_block_merge_public_inputs - .blob_public_inputs[0], + .blob_public_inputs + .end_blob_accumulator, ); } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index ac57954b069a..40184c1d7aa3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -49,9 +49,13 @@ pub(crate) mod tests { block_root::block_root_rollup_inputs::BlockRootRollupInputs, tests::rollup_fixture_builder::RollupFixtureBuilder, }; - use poseidon::poseidon2::Poseidon2; + use bigint::{BigNum, BLS12_381_Fr as F}; + use blob::blob_batching_public_inputs::BatchingBlobCommitment; use types::{ - hash::accumulate_sha256, tests::utils::assert_array_eq, utils::arrays::array_concat, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + hash::{accumulate_sha256, poseidon2_hash}, + tests::utils::assert_array_eq, + utils::arrays::array_concat, }; pub struct TestBuilder { @@ -61,7 +65,7 @@ pub(crate) mod tests { impl TestBuilder { pub fn new() -> Self { let inputs = RollupFixtureBuilder::new_for_block_root(); - inputs.mock_evaluate_blobs(); + inputs.mock_evaluate_blobs_and_batch(); TestBuilder { inputs } } @@ -133,18 +137,35 @@ pub(crate) mod tests { 0x0000000000000000000000000000000000000000000000000000000004000001, 0x0000000000000000000000000000000000000000000000000000000000000045, ]; - let expected_blob_commitment = [ + + let expected_blob_commitment_fields_fixture = [ 0x008c32fe581c8fdba12c0d7597911dead2d937d68525bae655508412bb53bb98, 0x0000000000000000000000000000006aaa0680f21270e7d8de4e19da5164f95c, ]; - let expected_blobs_hash = - 0x00a965619c8668b834755678b32d023b9c5e8588ce449f44f7fa9335455b5cc5; - let expected_challenge_z = + let expected_challenge_z_fixture = 0x1f92b871671f27a378d23f1cef10fbd8f0d90dd7172da9e3c3fc1aa745a072c3; + // Blob commitment with value: + // x: 0x0c32fe581c8fdba12c0d7597911dead2d937d68525bae655508412bb53bb986aaa0680f21270e7d8de4e19da5164f95c, + // y: 0x07896936b96e9af0ecd6ef882c14dcc6e8d075ea61d11ae9df4bfab87396547b5e01b8a35d9a720733acdd92421f24e9, + let mut injected_blob_commitment = BatchingBlobCommitment::from_limbs( + [ + 0x0680f21270e7d8de4e19da5164f95c, + 0xd68525bae655508412bb53bb986aaa, + 0x581c8fdba12c0d7597911dead2d937, + 0x0c32fe, + ], + [ + 0x01b8a35d9a720733acdd92421f24e9, + 0x75ea61d11ae9df4bfab87396547b5e, + 0x36b96e9af0ecd6ef882c14dcc6e8d0, + 0x078969, + ], + ); + let injected_blob_commitment_fields = injected_blob_commitment.to_compressed_fields(); + let mut builder = TestBuilder::new_with_blobs_fields(blob_fields_0, blob_fields_1); - builder.inputs.blob_commitments[0].inner = expected_blob_commitment; - builder.inputs.blobs_hash = expected_blobs_hash; + builder.inputs.blob_commitments[0] = injected_blob_commitment.point; let output = builder.execute(); @@ -161,16 +182,154 @@ pub(crate) mod tests { assert(end_sponge_blob.eq(expected_sponge)); let hashed_tx_effects = expected_sponge.squeeze(); - let computed_challenge_z = Poseidon2::hash( - [hashed_tx_effects, expected_blob_commitment[0], expected_blob_commitment[1]], - 3, + let expected_challenge_z = poseidon2_hash([ + hashed_tx_effects, + injected_blob_commitment_fields[0], + injected_blob_commitment_fields[1], + ]); + let expected_gamma_acc = poseidon2_hash(output + .blob_public_inputs + .end_blob_accumulator + .y_acc + .get_limbs() + .map(|l| l as Field)); + + // We have a single blob, so the accumulated outputs are just those after a single evaluation: + assert_eq(output.blob_public_inputs.end_blob_accumulator.z_acc, expected_challenge_z); + assert_eq( + output.blob_public_inputs.end_blob_accumulator.z_acc, + expected_challenge_z_fixture, ); - assert_eq(computed_challenge_z, expected_challenge_z); - assert_eq(output.blob_public_inputs[0].inner[0].z, expected_challenge_z); assert_eq( - output.blob_public_inputs[0].inner[0].kzg_commitment.inner, - expected_blob_commitment, + output.blob_public_inputs.end_blob_accumulator.c_acc, + injected_blob_commitment.point, ); + assert_eq(injected_blob_commitment_fields, expected_blob_commitment_fields_fixture); + assert_eq(output.blob_public_inputs.end_blob_accumulator.gamma_acc, expected_gamma_acc); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob_batching.test.ts -> 'should construct and verify a batch of 3 full blobs' + // These values are also used in blob_batching.nr -> test_full_blobs_batched(), but the below ensures inputs are propagated properly throughout block_root + #[test] + fn correct_blobs_with_non_empty_fields() { + // Note: this test will not run in unconstrained, because it reaches the foreign call + // TODO(#10323): remove the oracle and switch this test to unconstrained + // Fill three blobs completely with different values (to avoid a constant polynomial) + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + for j in 0..BLOBS_PER_BLOCK { + for i in 0..FIELDS_PER_BLOB { + blob[j * FIELDS_PER_BLOB + i] = ((j + 3) * (i + 1)) as Field; + } + } + // Init. injected values: + // - Commitments are injected and checked for correctness on L1 via acc.v + let kzg_commitments_in = [ + BatchingBlobCommitment::from_limbs( + [ + 0x2627fc88755984d7f002e5ef0e6b3e, + 0x0ea98f6a26672e17f919eb020b00ee, + 0xea6e5173f2ef1bedbb07bfa9ac6ed8, + 0x01c6e6, + ], + [ + 0xaa96f04ba1d419683f218cc4f15a3f, + 0x8887c5e719583b765309e4b3d18752, + 0x9ff512de37b8582f7167fdfbb29539, + 0x18f531, + ], + ) + .point, + BatchingBlobCommitment::from_limbs( + [ + 0x71556bb7217816fbb3f822fc873740, + 0x9c57d93d7fd33a388e13e95cfdba95, + 0x4f0ddbdc9d6a3653cd825ebd9f5730, + 0x12324e, + ], + [ + 0xabf9f60fc773ef1802a706d6b170a4, + 0x788f9000166d54151ac05df44e63be, + 0x0a8b45ead129885bb12837fb59033b, + 0x12aadd, + ], + ) + .point, + BatchingBlobCommitment::from_limbs( + [ + 0x69afb94a09e713e7fb94e26f33c3ed, + 0x8161293f65480c3b7bad57aaef1984, + 0xc34d68dc32d1ecd46f46ec4c969bb1, + 0x0d97ef, + ], + [ + 0x9837a79d9fa4d0370198419b273360, + 0x9e7340f07732e2cb3d51db22b1dcb3, + 0x8285e8cad42f634bb51ad7d2c68a12, + 0x07db3c, + ], + ) + .point, + ]; + + let mut builder = TestBuilder::new_with_blobs_fields(blob, []); + + let start_sponge_blob = builder.inputs.previous_rollup_data[0] + .base_or_merge_rollup_public_inputs + .start_sponge_blob; + let mut expected_sponge = start_sponge_blob; + expected_sponge.absorb(blob, FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + builder.inputs.blob_commitments = kzg_commitments_in; + // - The final z value is injected and checked for correctness in root (see below final_acc) + builder.inputs.final_blob_challenges.z = + 0x02d6a54e591ada73e5eea35188a02ac87779f4293ea3e7d675fa50ae7ff332ce; + // - The final gamma value is injected and checked for correctness in root (see below final_acc) + builder.inputs.final_blob_challenges.gamma = F::from_limbs([ + 0x281287a8d44071d216177e06a02327, + 0x16571aa3dcfef75c2447c705c6c68a, + 0x16f2, + ]); + + let output = builder.execute(); + let final_acc = output.blob_public_inputs.end_blob_accumulator; + + assert_eq(final_acc.z_acc, builder.inputs.final_blob_challenges.z); + + // y is a BLS Fr field with value 0x0cd2fd9a46ba70fd7f212d08ec7283024b0b1ff9446b1f78a482fb7443e49b57 + let expected_y_limbs = + [0x0b1ff9446b1f78a482fb7443e49b57, 0xfd9a46ba70fd7f212d08ec7283024b, 0x0cd2]; + + // C is a BLS point with value: + // x: 0x0f2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93e, + // y: 0x0af1e4abfa449daf65201c2b24507b1058d8ea9bf82ff948a1d01912615c4a8e507160da282e6c41bab917c868923254, + let expected_c = BatchingBlobCommitment::from_limbs( + [ + 0x2616100269935afcb1b98c85d5e93e, + 0x96a76064f68c0d4f659f25a046a6d4, + 0x62cc6c3ab4c1ac1abcb9da9677e127, + 0x0f2f5f, + ], + [ + 0x7160da282e6c41bab917c868923254, + 0xea9bf82ff948a1d01912615c4a8e50, + 0xabfa449daf65201c2b24507b1058d8, + 0x0af1e4, + ], + ) + .point; + + assert(builder.inputs.previous_rollup_data[1] + .base_or_merge_rollup_public_inputs + .end_sponge_blob + .eq(expected_sponge)); + + // blob_commitments_hash is a BN Fr field with value 0x00d2f7bffbc5a9008207a188e348e753087f54557a686efd7f74c90cac52a9a1 + let expected_blob_commitments_hash = + 0xd2f7bffbc5a9008207a188e348e753087f54557a686efd7f74c90cac52a9a1; + + assert_eq(final_acc.y_acc.get_limbs(), expected_y_limbs); + assert_eq(final_acc.c_acc, expected_c); + assert_eq(final_acc.blob_commitments_hash_acc, expected_blob_commitments_hash); } #[test(should_fail_with = "block's first blob sponge was not empty")] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr index 2963b336aeb7..f0361c10a66a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr @@ -6,7 +6,12 @@ use crate::{ }, merge::utils::merge_rollups::merge_rollups, }; -use blob::{blob::evaluate_blobs, blob_public_inputs::{BlobPublicInputs, BlockBlobPublicInputs}}; +use blob::{ + blob_batching::evaluate_blobs_and_batch, + blob_batching_public_inputs::{ + BlobAccumulationInputs, BlobAccumulatorPublicInputs, BlockBlobPublicInputs, + }, +}; use types::{ abis::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, block_constant_data::BlockConstantData, @@ -19,7 +24,7 @@ use types::{ partial_state_reference::PartialStateReference, proposed_block_header::ProposedBlockHeader, state_reference::StateReference, - traits::{Empty, Hash}, + traits::{Empty, Hash, is_empty}, }; pub struct BlockRootRollupOutputComposer { @@ -60,14 +65,15 @@ impl BlockRootRollupOutputComposer { let new_archive = self.update_archive(constants.last_archive, new_block_hash); let proposed_block_header_hash = self.create_proposed_block_header(new_block_header).hash(); - let block_blob_public_inputs = self.get_block_blob_public_inputs(blob_data); + let end_blob_accumulator = self.get_blob_accumulator_public_inputs(blob_data); self.finish_with_new_values( constants, new_archive, proposed_block_header_hash, self.merged_rollup.out_hash, - block_blob_public_inputs, + self.data.start_blob_accumulator, + end_blob_accumulator, self.merged_rollup.accumulated_fees, ) } @@ -76,7 +82,7 @@ impl BlockRootRollupOutputComposer { self, constants: BlockConstantData, empty_effect_blobs_hash: Field, - empty_effect_blob_public_input: BlobPublicInputs, + empty_effect_blob_accumulation_input: BlobAccumulationInputs, is_padding: bool, ) -> BlockRootOrBlockMergePublicInputs { let (new_archive, proposed_block_header_hash) = if is_padding { @@ -94,9 +100,20 @@ impl BlockRootRollupOutputComposer { ) }; - let mut block_blob_public_inputs = BlockBlobPublicInputs::empty(); - if !is_padding { - block_blob_public_inputs.inner[0] = empty_effect_blob_public_input; + let end_blob_accumulator = if is_padding { + self.data.start_blob_accumulator + } else { + if is_empty(self.data.start_blob_accumulator) { + BlobAccumulatorPublicInputs::init( + empty_effect_blob_accumulation_input, + self.data.final_blob_challenges.gamma, + ) + } else { + self.data.start_blob_accumulator.accumulate( + empty_effect_blob_accumulation_input, + self.data.final_blob_challenges.gamma, + ) + } }; self.finish_with_new_values( @@ -104,7 +121,8 @@ impl BlockRootRollupOutputComposer { new_archive, proposed_block_header_hash, 0 /* out_hash */, - block_blob_public_inputs, + self.data.start_blob_accumulator, + end_blob_accumulator, 0, /* accumulated_fees */ ) } @@ -115,7 +133,8 @@ impl BlockRootRollupOutputComposer { new_archive: AppendOnlyTreeSnapshot, proposed_block_header_hash: Field, out_hash: Field, - block_blob_public_inputs: BlockBlobPublicInputs, + start_blob_accumulator: BlobAccumulatorPublicInputs, + end_blob_accumulator: BlobAccumulatorPublicInputs, accumulated_fees: Field, ) -> BlockRootOrBlockMergePublicInputs { let mut proposed_block_header_hashes = [0; AZTEC_MAX_EPOCH_DURATION]; @@ -127,8 +146,11 @@ impl BlockRootRollupOutputComposer { value: accumulated_fees, }; - let mut blob_public_inputs = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; - blob_public_inputs[0] = block_blob_public_inputs; + let blob_public_inputs = BlockBlobPublicInputs { + start_blob_accumulator, + end_blob_accumulator, + final_blob_challenges: self.data.final_blob_challenges, + }; BlockRootOrBlockMergePublicInputs { constants: EpochConstantData { @@ -212,20 +234,27 @@ impl BlockRootRollupOutputComposer { ) } - fn get_block_blob_public_inputs(self, data: BlockRootRollupBlobData) -> BlockBlobPublicInputs { + fn get_blob_accumulator_public_inputs( + self, + data: BlockRootRollupBlobData, + ) -> BlobAccumulatorPublicInputs { if !dep::std::runtime::is_unconstrained() { - evaluate_blobs( + evaluate_blobs_and_batch( data.blobs_fields, data.blob_commitments, self.merged_rollup.end_sponge_blob, + self.data.final_blob_challenges, + self.data.start_blob_accumulator, ) } else { // Safety: TODO(#10323): this was added to save simulation time, if/when simulation times of unconstrained are improved, remove this. unsafe { - blob::mock_blob_oracle::evaluate_blobs( + blob::mock_blob_oracle::evaluate_blobs_and_batch( data.blobs_fields, data.blob_commitments, self.merged_rollup.end_sponge_blob, + self.data.final_blob_challenges, + self.data.start_blob_accumulator, ) } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr index ce0be44ba249..71d9bdab6edc 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr @@ -8,13 +8,13 @@ use crate::{ block_root_rollup_output_composer::BlockRootRollupOutputComposer, }, }; -use blob::blob_public_inputs::BlobPublicInputs; +use blob::blob_batching_public_inputs::{BatchingBlobCommitment, BlobAccumulationInputs}; use types::{abis::block_constant_data::BlockConstantData, traits::Empty}; pub global EMPTY_EFFECT_BLOBS_HASH: Field = 0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9; -pub global EMPTY_EFFECT_BLOB_COMMITMENT: [Field; 2] = - [0x00c0000000000000000000000000000000000000000000000000000000000000, 0]; +pub global EMPTY_EFFECT_BLOB_COMMITMENT: BatchingBlobCommitment = + BatchingBlobCommitment::empty_blob(); pub global EMPTY_EFFECT_BLOB_CHALLENGE_Z: Field = 0x0ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb; @@ -35,15 +35,15 @@ impl EmptyBlockRootRollupInputs { ); validator.validate_without_previous_rollups(self.is_padding, self.constants); - let mut blob_public_input = BlobPublicInputs::empty(); - blob_public_input.kzg_commitment.inner = EMPTY_EFFECT_BLOB_COMMITMENT; - blob_public_input.z = EMPTY_EFFECT_BLOB_CHALLENGE_Z; + let mut blob_accumulation_input = BlobAccumulationInputs::empty(); + blob_accumulation_input.z_i = EMPTY_EFFECT_BLOB_CHALLENGE_Z; + blob_accumulation_input.c_i = EMPTY_EFFECT_BLOB_COMMITMENT; let composer = BlockRootRollupOutputComposer::new_from_empty_rollup(self.data); composer.finish_empty( self.constants, EMPTY_EFFECT_BLOBS_HASH, - blob_public_input, + blob_accumulation_input, self.is_padding, ) } @@ -60,8 +60,11 @@ mod tests { }, tests::rollup_fixture_builder::RollupFixtureBuilder, }; - use poseidon::poseidon2::Poseidon2; - use types::{abis::sponge_blob::SpongeBlob, address::EthAddress, tests::utils::assert_array_eq}; + use bigint::BigNum; + use types::{ + abis::sponge_blob::SpongeBlob, address::EthAddress, hash::poseidon2_hash, + tests::utils::assert_array_eq, + }; pub struct TestBuilder { pub inputs: RollupFixtureBuilder, @@ -101,32 +104,36 @@ mod tests { // The below values are generated from block_building_helper.test.ts. let expected_empty_effect_blobs_hash = 0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9; - let expected_empty_effect_blob_commitment = + let expected_empty_effect_blob_commitment_fields = [0x00c0000000000000000000000000000000000000000000000000000000000000, 0]; let expected_empty_effect_challenge_z = 0x0ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb; assert_eq(expected_empty_effect_blobs_hash, EMPTY_EFFECT_BLOBS_HASH); - assert_eq(expected_empty_effect_blob_commitment, EMPTY_EFFECT_BLOB_COMMITMENT); + assert_eq( + expected_empty_effect_blob_commitment_fields, + EMPTY_EFFECT_BLOB_COMMITMENT.to_compressed_fields(), + ); assert_eq(expected_empty_effect_challenge_z, EMPTY_EFFECT_BLOB_CHALLENGE_Z); let mut expected_sponge = SpongeBlob::new(0); let hashed_tx_effects = expected_sponge.squeeze(); - let computed_z = Poseidon2::hash( - [ - hashed_tx_effects, - expected_empty_effect_blob_commitment[0], - expected_empty_effect_blob_commitment[1], - ], - 3, - ); + let computed_z = poseidon2_hash([ + hashed_tx_effects, + expected_empty_effect_blob_commitment_fields[0], + expected_empty_effect_blob_commitment_fields[1], + ]); - assert_eq(computed_z, expected_empty_effect_challenge_z); - assert_eq(output.blob_public_inputs[0].inner[0].z, expected_empty_effect_challenge_z); + assert_eq(computed_z, EMPTY_EFFECT_BLOB_CHALLENGE_Z); assert_eq( - output.blob_public_inputs[0].inner[0].kzg_commitment.inner, - expected_empty_effect_blob_commitment, + output.blob_public_inputs.end_blob_accumulator.z_acc, + EMPTY_EFFECT_BLOB_CHALLENGE_Z, ); + assert_eq( + output.blob_public_inputs.end_blob_accumulator.c_acc, + EMPTY_EFFECT_BLOB_COMMITMENT.point, + ); + assert_eq(output.blob_public_inputs.end_blob_accumulator.y_acc.get_limbs(), [0, 0, 0]); } #[test] @@ -140,8 +147,11 @@ mod tests { assert_eq(output.previous_archive, output.new_archive); assert_eq(output.start_global_variables, output.end_global_variables); assert_eq(output.out_hash, 0); + assert_eq( + output.blob_public_inputs.start_blob_accumulator, + output.blob_public_inputs.end_blob_accumulator, + ); assert_array_eq(output.fees, []); - assert_array_eq(output.blob_public_inputs, []); } #[test(should_fail_with = "hash of the previous block header is not the last leaf in the archive tree")] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/single_tx_block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/single_tx_block_root_rollup_inputs.nr index 078161ca9118..96553610e777 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/single_tx_block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/single_tx_block_root_rollup_inputs.nr @@ -71,7 +71,7 @@ mod tests { #[test] unconstrained fn single_tx_block_root_rollup_output_propagated_from_base() { let builder = TestBuilder::new(); - builder.inputs.mock_evaluate_blobs(); + builder.inputs.mock_evaluate_blobs_and_batch(); let output = builder.execute(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 5056b440fa82..bcf2e453bd9f 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -19,10 +19,9 @@ use dep::types::{ }, hash::compute_contract_class_log_hash, merkle_tree::VariableMerkleTree, - traits::{Empty, ToField}, + traits::ToField, utils::arrays::{array_length, array_length_until, array_merge, array_padded_with}, }; -use blob::blob_public_inputs::BlockBlobPublicInputs; pub fn assert_prev_block_rollups_follow_on_from_each_other( left: BlockRootOrBlockMergePublicInputs, @@ -41,6 +40,18 @@ pub fn assert_prev_block_rollups_follow_on_from_each_other( left.end_global_variables.version == right.start_global_variables.version, "input blocks have different chain version", ); + assert( + left.blob_public_inputs.end_blob_accumulator.eq( + right.blob_public_inputs.start_blob_accumulator, + ), + "input block blob accumulators do not follow on from each other", + ); + assert( + left.blob_public_inputs.final_blob_challenges.eq( + right.blob_public_inputs.final_blob_challenges, + ), + "input blocks have different epoch blob challenges", + ); if right.is_padding() { assert( @@ -83,28 +94,6 @@ pub fn accumulate_blocks_fees( array_merge(left.fees, right.fees) } -// TODO: This fn will be obselete once we have integrated accumulation of blob PIs -// The goal is to acc. the commitments and openings s.t. one set verifies the opening of many blobs -// How we accumulate is being worked on by @Mike -pub fn accumulate_blob_public_inputs( - left: BlockRootOrBlockMergePublicInputs, - right: BlockRootOrBlockMergePublicInputs, -) -> [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION] { - let left_len = array_length(left.blob_public_inputs); - // NB: The below is cheaper than array_merge because assigning BlockBlobPublicInputs is cheaper than calling .equals - let mut add_from_left = true; - let mut result = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; - for i in 0..result.len() { - add_from_left &= i != left_len; - if (add_from_left) { - result[i] = left.blob_public_inputs[i]; - } else { - result[i] = right.blob_public_inputs[i - left_len]; - } - } - result -} - pub fn compute_kernel_out_hash(l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX]) -> Field { let non_empty_items = array_length(l2_to_l1_msgs); let merkle_tree = VariableMerkleTree::new_sha(l2_to_l1_msgs, non_empty_items); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/mod.nr index 23da3ec4e9e6..6b32e182fda1 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/mod.nr @@ -43,9 +43,35 @@ mod tests { assert_eq(outputs.prover_id, left.constants.prover_id); assert_eq(outputs.prover_id, right.constants.prover_id); - assert_array_eq( + assert_eq( outputs.blob_public_inputs, - [left.blob_public_inputs[0], right.blob_public_inputs[0]], + right.blob_public_inputs.end_blob_accumulator.finalize_and_validate( + left.blob_public_inputs.final_blob_challenges, + ), ); } + + #[test(should_fail_with = "Epoch did not start with empty blob state.")] + unconstrained fn non_empty_start_blob_fails() { + let mut inputs = default_root_rollup_inputs(); + inputs.previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.z_acc += + 1; + let _output = inputs.root_rollup_circuit(); + } + + #[test(should_fail_with = "Final blob challenge z mismatch.")] + unconstrained fn blob_different_challenge_z_fails() { + let mut inputs = default_root_rollup_inputs(); + inputs.previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.z_acc += + 1; + let _output = inputs.root_rollup_circuit(); + } + + #[test(should_fail_with = "Final blob challenge gamma mismatch.")] + unconstrained fn blob_different_challenge_gamma_fails() { + let mut inputs = default_root_rollup_inputs(); + inputs.previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_acc += + 1; + let _output = inputs.root_rollup_circuit(); + } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 8bae6a107e9a..c34ab59f9e38 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -7,7 +7,7 @@ use types::{ AZTEC_MAX_EPOCH_DURATION, BLOCK_MERGE_ROLLUP_INDEX, BLOCK_ROOT_ROLLUP_EMPTY_INDEX, BLOCK_ROOT_ROLLUP_INDEX, BLOCK_ROOT_ROLLUP_SINGLE_TX_INDEX, PROOF_TYPE_ROOT_ROLLUP_HONK, }, - traits::Empty, + traits::{Empty, is_empty}, }; global ALLOWED_PREVIOUS_CIRCUITS: [u32; 4] = [ @@ -62,11 +62,21 @@ impl RootRollupInputs { let fees = components::accumulate_blocks_fees(left, right); - // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call - // For now, we do them individually - // How we accumulate is being worked on by @Mike - // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); - let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + // Note: for blob batching, in assert_prev_block_rollups_follow_on_from_each_other we have checked: + // - left.end_blob_accumulator == right.start_blob_accumulator + // - left.challenge_z == right.challenge_z + // - left.challenge_gamma == right.challenge_gamma + // Below we check: + // - first (left.start_blob_accumulator) acc is empty + // Finally, we call finalize_and_validate() on the end_blob_accumulator which calculates final_gamma and checks: + // - end_blob_accumulator.z == injected.challenge_z + // - final_gamma == injected.challenge_gamma + // => Validated public inputs from acc are: FinalBlobAccumulatorPublicInputs { blob_commitments_hash, z, y, C } (gamma is not required) + + assert( + is_empty(left.blob_public_inputs.start_blob_accumulator), + "Epoch did not start with empty blob state.", + ); RootRollupPublicInputs { previous_archive_root: left.previous_archive.root, @@ -78,7 +88,9 @@ impl RootRollupInputs { vk_tree_root: left.constants.vk_tree_root, protocol_contract_tree_root: left.constants.protocol_contract_tree_root, prover_id: left.constants.prover_id, - blob_public_inputs, + blob_public_inputs: right.blob_public_inputs.end_blob_accumulator.finalize_and_validate( + left.blob_public_inputs.final_blob_challenges, + ), } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index 22c487ea9aab..0d9338b4279d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -1,7 +1,6 @@ use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; use dep::types::constants::AZTEC_MAX_EPOCH_DURATION; -use blob::blob_public_inputs::BlockBlobPublicInputs; - +use blob::blob_batching_public_inputs::FinalBlobAccumulatorPublicInputs; pub struct RootRollupPublicInputs { // Snapshot of archive tree before/after this rollup has been processed pub previous_archive_root: Field, @@ -13,5 +12,5 @@ pub struct RootRollupPublicInputs { pub vk_tree_root: Field, pub protocol_contract_tree_root: Field, pub prover_id: Field, - pub blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], + pub blob_public_inputs: FinalBlobAccumulatorPublicInputs, } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr index 40b1a3e0040e..4d93b1d7bb9d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr @@ -3,6 +3,7 @@ use dep::types::{ abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::BLOCK_ROOT_ROLLUP_INDEX, merkle_tree::merkle_tree::MerkleTree, proof::vk_data::VkData, tests::fixtures, traits::Empty, }; +use bigint::{BigNum, BLS12_381_Fr as F}; pub fn default_previous_rollup_block_data() -> [PreviousRollupBlockData; 2] { let mut previous_rollup_data = [PreviousRollupBlockData::empty(); 2]; @@ -55,10 +56,33 @@ pub fn default_previous_rollup_block_data() -> [PreviousRollupBlockData; 2] { previous_rollup_data[0].block_root_or_block_merge_public_inputs.fees[0].value = 10; previous_rollup_data[1].block_root_or_block_merge_public_inputs.fees[0].value = 15; - previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.z_acc = 1; - previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.blob_commitments_hash_acc = 2; + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_acc = + 3; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator = previous_rollup_data[0] + .block_root_or_block_merge_public_inputs + .blob_public_inputs + .end_blob_accumulator; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.z_acc = + 4; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.blob_commitments_hash_acc = + 5; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_acc = + 6; + + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.z = + 4; + // = poseidon2([6, 4]) = 0x25f106373d285972efcdfcbc99096a989156495514c4e1bc6cfac2b288ade5e7: + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.gamma = F::from_limbs( + [448024886556591125833969477526349287, 32274159084860741962424622034622609, 9713], + ); + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges = previous_rollup_data[0] + .block_root_or_block_merge_public_inputs + .blob_public_inputs + .final_blob_challenges; previous_rollup_data } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr index 35dec0a57986..47b86e4573bf 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr @@ -3,7 +3,9 @@ use crate::abis::{ block_root_rollup_data::{BlockRootRollupBlobData, BlockRootRollupData}, previous_rollup_data::PreviousRollupData, }; -use blob::blob_public_inputs::{BlobCommitment, BlockBlobPublicInputs}; +use blob::blob_batching_public_inputs::{ + BatchingBlobCommitment, BlobAccumulatorPublicInputs, BLSPoint, FinalBlobBatchingChallenges, +}; use parity_lib::root::root_rollup_parity_input::RootRollupParityInput; use std::test::OracleMock; use types::{ @@ -22,7 +24,7 @@ use types::{ partial_state_reference::PartialStateReference, proof::vk_data::VkData, tests::{fixtures, merkle_tree_utils::{compute_zero_hashes, NonEmptyMerkleTree}}, - traits::{Empty, Hash}, + traits::{Empty, Hash, Serialize}, }; pub struct RollupFixtureBuilder { @@ -35,8 +37,10 @@ pub struct RollupFixtureBuilder { pub last_archive_sibling_path: [Field; ARCHIVE_HEIGHT], pub new_archive: AppendOnlyTreeSnapshot, pub new_archive_sibling_path: [Field; ARCHIVE_HEIGHT], + pub start_blob_accumulator: BlobAccumulatorPublicInputs, + pub final_blob_challenges: FinalBlobBatchingChallenges, pub blobs_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - pub blob_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + pub blob_commitments: [BLSPoint; BLOBS_PER_BLOCK], pub blobs_hash: Field, pub vk_tree: MerkleTree, pub vk_tree_root: Field, @@ -63,8 +67,10 @@ impl RollupFixtureBuilder { last_archive_sibling_path: [0; ARCHIVE_HEIGHT], new_archive: AppendOnlyTreeSnapshot::empty(), new_archive_sibling_path: [0; ARCHIVE_HEIGHT], + start_blob_accumulator: BlobAccumulatorPublicInputs::empty(), + final_blob_challenges: FinalBlobBatchingChallenges::empty(), blobs_fields: [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - blob_commitments: [BlobCommitment::empty(); BLOBS_PER_BLOCK], + blob_commitments: [BatchingBlobCommitment::empty().point; BLOBS_PER_BLOCK], blobs_hash: 0, vk_tree, vk_tree_root, @@ -169,7 +175,8 @@ impl RollupFixtureBuilder { self.blobs_fields[N + i] = blob_fields_1[i]; } - self.blob_commitments[0] = BlobCommitment { inner: [31, 75] }; + self.blob_commitments[0] = + BatchingBlobCommitment::from_limbs([31, 0, 0, 0], [75, 0, 0, 0]).point; self.blobs_hash = 8901; @@ -267,6 +274,8 @@ impl RollupFixtureBuilder { previous_archive_sibling_path: self.last_archive_sibling_path, new_archive_sibling_path: self.new_archive_sibling_path, previous_block_header: self.previous_block_header, + start_blob_accumulator: self.start_blob_accumulator, + final_blob_challenges: self.final_blob_challenges, prover_id: self.prover_id, } } @@ -279,10 +288,11 @@ impl RollupFixtureBuilder { } } - pub fn mock_evaluate_blobs(_self: Self) { + pub fn mock_evaluate_blobs_and_batch(_self: Self) { // Safety: Mock the oracle call when the blob data is not relevant to the test. unsafe { - let _ = OracleMock::mock("evaluateBlobs").returns(BlockBlobPublicInputs::empty()); + let _ = OracleMock::mock("evaluateBlobs").returns(BlobAccumulatorPublicInputs::empty() + .serialize()); } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml index e18296d9184f..38f06d2fe9d8 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml @@ -2,8 +2,8 @@ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" proposed_block_header_hashes = [ - "0x00ae491129cc4d31ff9ff02b16fbcbc99b6127e91b4136e2e2fa76236e9b3487", - "0x004efd99df444edac44b758ea284dc1e9819620cbada4224b1572feb8dec5f99", + "0x00f601c89eb607707bc46ea5d22cf6d6556fa8858d09a71f18ae504a87dfd3d7", + "0x0013fd7b44a6b94fe36b58bd65abdbf053a3079869f888cb01ee0797c8e189c4", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -53,63 +53,63 @@ proposed_block_header_hashes = [ ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x01e7d7a6151303fd8707679cb6760f5e359ae62f02399691382389a11053b1f5" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" + root = "0x27dfcbca2cdc6e2e94f7ac5d5d652fbc48d6735b554679c115c00057c18e5ed9" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x0feb7aa308aa4111e7e1bbe93aa9ae2478e89bdc8dcc9d96bd90e5763c94a6a0" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" + root = "0x198028c3bad28f14ac32d104adf5d6b348807ac037c703eb88993f528b3184bf" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000021" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b718" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000041" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320c4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b73c" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000042" + timestamp = "0x00000000000000000000000000000000000000000000000000000000684320e8" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000009f74" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000012818078" + value = "0x0000000000000000000000000000000000000000000000000000000001afbcb0" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000c92b9f48" + value = "0x00000000000000000000000000000000000000000000000000000000125540d0" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -387,5765 +387,1233 @@ proposed_block_header_hashes = [ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x116114138548294f873f4a32003494680e41c6b802519281f9afbf093eb1c818" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x394a77ad9bcff4f5f4f096b34cf6a2", - "0xd5afd1fd986ecf79fe36d4a208bdec", - "0x4c0f" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x00b952fad467ee512db8cd5db49bcfa674bb5ba2a8694c43af5850e0b7cf205f", - "0x0000000000000000000000000000009e1f2ca2245cf15e8dc9c91a09d9fc4293" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x22dcabb08067982a3037d4e192e088c691dd8e8e743f65d039cb9b44f8f39e54" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0xc6e04f483f053123786e218fbd7768", - "0xd87f94ae067c69d3fd302cc86e7033", - "0x2bae" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x00a4e334b63a4e8fc8a8a55248f3d5534674eaef2e83f60cea15e7b0bf46e314", - "0x0000000000000000000000000000008fbb4d32db2827838194ec2461c428f843" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator] +blob_commitments_hash_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" +z_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" +gamma_acc = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.y_acc] limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", "0x0000" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc] + is_infinity = true - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.x] + limbs = [ "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x000000" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.y] + limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x000000" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.gamma_pow_acc] limbs = [ "0x000000000000000000000000000000", "0x000000000000000000000000000000", "0x0000" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator] +blob_commitments_hash_acc = "0x00e40c13cd61105681e2471aecdfce440aff4db3481dce19bd1a43dc3ddfe097" +z_acc = "0x0ca06e212eca4644df7d6de41e72e560fb406da8830cf9b5e10bc0f8e58364d8" +gamma_acc = "0x0548170342371523acb6b0d8d1ec46500fd36fae89ad4bf60076da88d8fa890a" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x127a9fb7ec8bed5d8c459abc287f2e", + "0x06da291f11b0fe9b6a7d5204255f5c", + "0x459e" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.x] + limbs = [ + "0x31f5aaa5d65ee8036d953240281c9e", + "0xc40ece6336cbae632a1970c26fa45c", + "0x8c1b5fa7d72f8f78e8c75cc47a7fcd", + "0x1028b6" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.y] + limbs = [ + "0xf364fa7f3433075f76720ca7f93182", + "0x06693101d5d97dfacbce5ad9be57b1", + "0x78cce0aa93e7460bee28bde756c75a", + "0x078ffe" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x1d074d600e31db9536392540f86642", + "0xfdeff2d09ce448b47c3477c9123be8", + "0x1e88" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges] +z = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.gamma] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[inputs.previous_rollup_data.proof] -fields = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000000000000000000000000000000000000004", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000007", - "0x0000000000000000000000000000000000000000000000000000000000000008", - "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000b", - "0x000000000000000000000000000000000000000000000000000000000000000c", - "0x000000000000000000000000000000000000000000000000000000000000000d", - "0x000000000000000000000000000000000000000000000000000000000000000e", - "0x000000000000000000000000000000000000000000000000000000000000000f", - "0x0000000000000000000000000000000000000000000000000000000000000010", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x0000000000000000000000000000000000000000000000000000000000000013", - "0x0000000000000000000000000000000000000000000000000000000000000014", - "0x0000000000000000000000000000000000000000000000000000000000000015", - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000017", - "0x0000000000000000000000000000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000019", - "0x000000000000000000000000000000000000000000000000000000000000001a", - "0x000000000000000000000000000000000000000000000000000000000000001b", - "0x000000000000000000000000000000000000000000000000000000000000001c", - "0x000000000000000000000000000000000000000000000000000000000000001d", - "0x000000000000000000000000000000000000000000000000000000000000001e", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x000000000000000000000000000000000000000000000000000000000000002f", - "0x0000000000000000000000000000000000000000000000000000000000000030", - "0x0000000000000000000000000000000000000000000000000000000000000031", - "0x0000000000000000000000000000000000000000000000000000000000000032", - "0x0000000000000000000000000000000000000000000000000000000000000033", - "0x0000000000000000000000000000000000000000000000000000000000000034", - "0x0000000000000000000000000000000000000000000000000000000000000035", - "0x0000000000000000000000000000000000000000000000000000000000000036", - "0x0000000000000000000000000000000000000000000000000000000000000037", - "0x0000000000000000000000000000000000000000000000000000000000000038", - "0x0000000000000000000000000000000000000000000000000000000000000039", - "0x000000000000000000000000000000000000000000000000000000000000003a", - "0x000000000000000000000000000000000000000000000000000000000000003b", - "0x000000000000000000000000000000000000000000000000000000000000003c", - "0x000000000000000000000000000000000000000000000000000000000000003d", - "0x000000000000000000000000000000000000000000000000000000000000003e", - "0x000000000000000000000000000000000000000000000000000000000000003f", - "0x0000000000000000000000000000000000000000000000000000000000000040", - "0x0000000000000000000000000000000000000000000000000000000000000041", - "0x0000000000000000000000000000000000000000000000000000000000000042", - "0x0000000000000000000000000000000000000000000000000000000000000043", - "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x000000000000000000000000000000000000000000000000000000000000004e", - "0x000000000000000000000000000000000000000000000000000000000000004f", - "0x0000000000000000000000000000000000000000000000000000000000000050", - "0x0000000000000000000000000000000000000000000000000000000000000051", - "0x0000000000000000000000000000000000000000000000000000000000000052", - "0x0000000000000000000000000000000000000000000000000000000000000053", - "0x0000000000000000000000000000000000000000000000000000000000000054", - "0x0000000000000000000000000000000000000000000000000000000000000055", - "0x0000000000000000000000000000000000000000000000000000000000000056", - "0x0000000000000000000000000000000000000000000000000000000000000057", - "0x0000000000000000000000000000000000000000000000000000000000000058", - "0x0000000000000000000000000000000000000000000000000000000000000059", - "0x000000000000000000000000000000000000000000000000000000000000005a", - "0x000000000000000000000000000000000000000000000000000000000000005b", - "0x000000000000000000000000000000000000000000000000000000000000005c", - "0x000000000000000000000000000000000000000000000000000000000000005d", - "0x000000000000000000000000000000000000000000000000000000000000005e", - "0x000000000000000000000000000000000000000000000000000000000000005f", - "0x0000000000000000000000000000000000000000000000000000000000000060", - "0x0000000000000000000000000000000000000000000000000000000000000061", - "0x0000000000000000000000000000000000000000000000000000000000000062", - "0x0000000000000000000000000000000000000000000000000000000000000063", - "0x0000000000000000000000000000000000000000000000000000000000000064", - "0x0000000000000000000000000000000000000000000000000000000000000065", - "0x0000000000000000000000000000000000000000000000000000000000000066", - "0x0000000000000000000000000000000000000000000000000000000000000067", - "0x0000000000000000000000000000000000000000000000000000000000000068", - "0x0000000000000000000000000000000000000000000000000000000000000069", - "0x000000000000000000000000000000000000000000000000000000000000006a", - "0x000000000000000000000000000000000000000000000000000000000000006b", - "0x000000000000000000000000000000000000000000000000000000000000006c", - "0x000000000000000000000000000000000000000000000000000000000000006d", - "0x000000000000000000000000000000000000000000000000000000000000006e", - "0x000000000000000000000000000000000000000000000000000000000000006f", - "0x0000000000000000000000000000000000000000000000000000000000000070", - "0x0000000000000000000000000000000000000000000000000000000000000071", - "0x0000000000000000000000000000000000000000000000000000000000000072", - "0x0000000000000000000000000000000000000000000000000000000000000073", - "0x0000000000000000000000000000000000000000000000000000000000000074", - "0x0000000000000000000000000000000000000000000000000000000000000075", - "0x0000000000000000000000000000000000000000000000000000000000000076", - "0x0000000000000000000000000000000000000000000000000000000000000077", - "0x0000000000000000000000000000000000000000000000000000000000000078", - "0x0000000000000000000000000000000000000000000000000000000000000079", - "0x000000000000000000000000000000000000000000000000000000000000007a", - "0x000000000000000000000000000000000000000000000000000000000000007b", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x000000000000000000000000000000000000000000000000000000000000008d", - "0x000000000000000000000000000000000000000000000000000000000000008e", - "0x000000000000000000000000000000000000000000000000000000000000008f", - "0x0000000000000000000000000000000000000000000000000000000000000090", - "0x0000000000000000000000000000000000000000000000000000000000000091", - "0x0000000000000000000000000000000000000000000000000000000000000092", - "0x0000000000000000000000000000000000000000000000000000000000000093", - "0x0000000000000000000000000000000000000000000000000000000000000094", - "0x0000000000000000000000000000000000000000000000000000000000000095", - "0x0000000000000000000000000000000000000000000000000000000000000096", - "0x0000000000000000000000000000000000000000000000000000000000000097", - "0x0000000000000000000000000000000000000000000000000000000000000098", - "0x0000000000000000000000000000000000000000000000000000000000000099", - "0x000000000000000000000000000000000000000000000000000000000000009a", - "0x000000000000000000000000000000000000000000000000000000000000009b", - "0x000000000000000000000000000000000000000000000000000000000000009c", - "0x000000000000000000000000000000000000000000000000000000000000009d", - "0x000000000000000000000000000000000000000000000000000000000000009e", - "0x000000000000000000000000000000000000000000000000000000000000009f", - "0x00000000000000000000000000000000000000000000000000000000000000a0", - "0x00000000000000000000000000000000000000000000000000000000000000a1", - "0x00000000000000000000000000000000000000000000000000000000000000a2", - "0x00000000000000000000000000000000000000000000000000000000000000a3", - "0x00000000000000000000000000000000000000000000000000000000000000a4", - "0x00000000000000000000000000000000000000000000000000000000000000a5", - "0x00000000000000000000000000000000000000000000000000000000000000a6", - "0x00000000000000000000000000000000000000000000000000000000000000a7", - "0x00000000000000000000000000000000000000000000000000000000000000a8", - "0x00000000000000000000000000000000000000000000000000000000000000a9", - "0x00000000000000000000000000000000000000000000000000000000000000aa", - "0x00000000000000000000000000000000000000000000000000000000000000ab", - "0x00000000000000000000000000000000000000000000000000000000000000ac", - "0x00000000000000000000000000000000000000000000000000000000000000ad", - "0x00000000000000000000000000000000000000000000000000000000000000ae", - "0x00000000000000000000000000000000000000000000000000000000000000af", - "0x00000000000000000000000000000000000000000000000000000000000000b0", - "0x00000000000000000000000000000000000000000000000000000000000000b1", - "0x00000000000000000000000000000000000000000000000000000000000000b2", - "0x00000000000000000000000000000000000000000000000000000000000000b3", - "0x00000000000000000000000000000000000000000000000000000000000000b4", - "0x00000000000000000000000000000000000000000000000000000000000000b5", - "0x00000000000000000000000000000000000000000000000000000000000000b6", - "0x00000000000000000000000000000000000000000000000000000000000000b7", - "0x00000000000000000000000000000000000000000000000000000000000000b8", - "0x00000000000000000000000000000000000000000000000000000000000000b9", - "0x00000000000000000000000000000000000000000000000000000000000000ba", - "0x00000000000000000000000000000000000000000000000000000000000000bb", - "0x00000000000000000000000000000000000000000000000000000000000000bc", - "0x00000000000000000000000000000000000000000000000000000000000000bd", - "0x00000000000000000000000000000000000000000000000000000000000000be", - "0x00000000000000000000000000000000000000000000000000000000000000bf", - "0x00000000000000000000000000000000000000000000000000000000000000c0", - "0x00000000000000000000000000000000000000000000000000000000000000c1", - "0x00000000000000000000000000000000000000000000000000000000000000c2", - "0x00000000000000000000000000000000000000000000000000000000000000c3", - "0x00000000000000000000000000000000000000000000000000000000000000c4", - "0x00000000000000000000000000000000000000000000000000000000000000c5", - "0x00000000000000000000000000000000000000000000000000000000000000c6", - "0x00000000000000000000000000000000000000000000000000000000000000c7", - "0x00000000000000000000000000000000000000000000000000000000000000c8", - "0x00000000000000000000000000000000000000000000000000000000000000c9", - "0x00000000000000000000000000000000000000000000000000000000000000ca", - "0x00000000000000000000000000000000000000000000000000000000000000cb", - "0x00000000000000000000000000000000000000000000000000000000000000cc", - "0x00000000000000000000000000000000000000000000000000000000000000cd", - "0x00000000000000000000000000000000000000000000000000000000000000ce", - "0x00000000000000000000000000000000000000000000000000000000000000cf", - "0x00000000000000000000000000000000000000000000000000000000000000d0", - "0x00000000000000000000000000000000000000000000000000000000000000d1", - "0x00000000000000000000000000000000000000000000000000000000000000d2", - "0x00000000000000000000000000000000000000000000000000000000000000d3", - "0x00000000000000000000000000000000000000000000000000000000000000d4", - "0x00000000000000000000000000000000000000000000000000000000000000d5", - "0x00000000000000000000000000000000000000000000000000000000000000d6", - "0x00000000000000000000000000000000000000000000000000000000000000d7", - "0x00000000000000000000000000000000000000000000000000000000000000d8", - "0x00000000000000000000000000000000000000000000000000000000000000d9", - "0x00000000000000000000000000000000000000000000000000000000000000da", - "0x00000000000000000000000000000000000000000000000000000000000000db", - "0x00000000000000000000000000000000000000000000000000000000000000dc", - "0x00000000000000000000000000000000000000000000000000000000000000dd", - "0x00000000000000000000000000000000000000000000000000000000000000de", - "0x00000000000000000000000000000000000000000000000000000000000000df", - "0x00000000000000000000000000000000000000000000000000000000000000e0", - "0x00000000000000000000000000000000000000000000000000000000000000e1", - "0x00000000000000000000000000000000000000000000000000000000000000e2", - "0x00000000000000000000000000000000000000000000000000000000000000e3", - "0x00000000000000000000000000000000000000000000000000000000000000e4", - "0x00000000000000000000000000000000000000000000000000000000000000e5", - "0x00000000000000000000000000000000000000000000000000000000000000e6", - "0x00000000000000000000000000000000000000000000000000000000000000e7", - "0x00000000000000000000000000000000000000000000000000000000000000e8", - "0x00000000000000000000000000000000000000000000000000000000000000e9", - "0x00000000000000000000000000000000000000000000000000000000000000ea", - "0x00000000000000000000000000000000000000000000000000000000000000eb", - "0x00000000000000000000000000000000000000000000000000000000000000ec", - "0x00000000000000000000000000000000000000000000000000000000000000ed", - "0x00000000000000000000000000000000000000000000000000000000000000ee", - "0x00000000000000000000000000000000000000000000000000000000000000ef", - "0x00000000000000000000000000000000000000000000000000000000000000f0", - "0x00000000000000000000000000000000000000000000000000000000000000f1", - "0x00000000000000000000000000000000000000000000000000000000000000f2", - "0x00000000000000000000000000000000000000000000000000000000000000f3", - "0x00000000000000000000000000000000000000000000000000000000000000f4", - "0x00000000000000000000000000000000000000000000000000000000000000f5", - "0x00000000000000000000000000000000000000000000000000000000000000f6", - "0x00000000000000000000000000000000000000000000000000000000000000f7", - "0x00000000000000000000000000000000000000000000000000000000000000f8", - "0x00000000000000000000000000000000000000000000000000000000000000f9", - "0x00000000000000000000000000000000000000000000000000000000000000fa", - "0x00000000000000000000000000000000000000000000000000000000000000fb", - "0x00000000000000000000000000000000000000000000000000000000000000fc", - "0x00000000000000000000000000000000000000000000000000000000000000fd", - "0x00000000000000000000000000000000000000000000000000000000000000fe", - "0x00000000000000000000000000000000000000000000000000000000000000ff", - "0x0000000000000000000000000000000000000000000000000000000000000100", - "0x0000000000000000000000000000000000000000000000000000000000000101", - "0x0000000000000000000000000000000000000000000000000000000000000102", - "0x0000000000000000000000000000000000000000000000000000000000000103", - "0x0000000000000000000000000000000000000000000000000000000000000104", - "0x0000000000000000000000000000000000000000000000000000000000000105", - "0x0000000000000000000000000000000000000000000000000000000000000106", - "0x0000000000000000000000000000000000000000000000000000000000000107", - "0x0000000000000000000000000000000000000000000000000000000000000108", - "0x0000000000000000000000000000000000000000000000000000000000000109", - "0x000000000000000000000000000000000000000000000000000000000000010a", - "0x000000000000000000000000000000000000000000000000000000000000010b", - "0x000000000000000000000000000000000000000000000000000000000000010c", - "0x000000000000000000000000000000000000000000000000000000000000010d", - "0x000000000000000000000000000000000000000000000000000000000000010e", - "0x000000000000000000000000000000000000000000000000000000000000010f", - "0x0000000000000000000000000000000000000000000000000000000000000110", - "0x0000000000000000000000000000000000000000000000000000000000000111", - "0x0000000000000000000000000000000000000000000000000000000000000112", - "0x0000000000000000000000000000000000000000000000000000000000000113", - "0x0000000000000000000000000000000000000000000000000000000000000114", - "0x0000000000000000000000000000000000000000000000000000000000000115", - "0x0000000000000000000000000000000000000000000000000000000000000116", - "0x0000000000000000000000000000000000000000000000000000000000000117", - "0x0000000000000000000000000000000000000000000000000000000000000118", - "0x0000000000000000000000000000000000000000000000000000000000000119", - "0x000000000000000000000000000000000000000000000000000000000000011a", - "0x000000000000000000000000000000000000000000000000000000000000011b", - "0x000000000000000000000000000000000000000000000000000000000000011c", - "0x000000000000000000000000000000000000000000000000000000000000011d", - "0x000000000000000000000000000000000000000000000000000000000000011e", - "0x000000000000000000000000000000000000000000000000000000000000011f", - "0x0000000000000000000000000000000000000000000000000000000000000120", - "0x0000000000000000000000000000000000000000000000000000000000000121", - "0x0000000000000000000000000000000000000000000000000000000000000122", - "0x0000000000000000000000000000000000000000000000000000000000000123", - "0x0000000000000000000000000000000000000000000000000000000000000124", - "0x0000000000000000000000000000000000000000000000000000000000000125", - "0x0000000000000000000000000000000000000000000000000000000000000126", - "0x0000000000000000000000000000000000000000000000000000000000000127", - "0x0000000000000000000000000000000000000000000000000000000000000128", - "0x0000000000000000000000000000000000000000000000000000000000000129", - "0x000000000000000000000000000000000000000000000000000000000000012a", - "0x000000000000000000000000000000000000000000000000000000000000012b", - "0x000000000000000000000000000000000000000000000000000000000000012c", - "0x000000000000000000000000000000000000000000000000000000000000012d", - "0x000000000000000000000000000000000000000000000000000000000000012e", - "0x000000000000000000000000000000000000000000000000000000000000012f", - "0x0000000000000000000000000000000000000000000000000000000000000130", - "0x0000000000000000000000000000000000000000000000000000000000000131", - "0x0000000000000000000000000000000000000000000000000000000000000132", - "0x0000000000000000000000000000000000000000000000000000000000000133", - "0x0000000000000000000000000000000000000000000000000000000000000134", - "0x0000000000000000000000000000000000000000000000000000000000000135", - "0x0000000000000000000000000000000000000000000000000000000000000136", - "0x0000000000000000000000000000000000000000000000000000000000000137", - "0x0000000000000000000000000000000000000000000000000000000000000138", - "0x0000000000000000000000000000000000000000000000000000000000000139", - "0x000000000000000000000000000000000000000000000000000000000000013a", - "0x000000000000000000000000000000000000000000000000000000000000013b", - "0x000000000000000000000000000000000000000000000000000000000000013c", - "0x000000000000000000000000000000000000000000000000000000000000013d", - "0x000000000000000000000000000000000000000000000000000000000000013e", - "0x000000000000000000000000000000000000000000000000000000000000013f", - "0x0000000000000000000000000000000000000000000000000000000000000140", - "0x0000000000000000000000000000000000000000000000000000000000000141", - "0x0000000000000000000000000000000000000000000000000000000000000142", - "0x0000000000000000000000000000000000000000000000000000000000000143", - "0x0000000000000000000000000000000000000000000000000000000000000144", - "0x0000000000000000000000000000000000000000000000000000000000000145", - "0x0000000000000000000000000000000000000000000000000000000000000146", - "0x0000000000000000000000000000000000000000000000000000000000000147", - "0x0000000000000000000000000000000000000000000000000000000000000148", - "0x0000000000000000000000000000000000000000000000000000000000000149", - "0x000000000000000000000000000000000000000000000000000000000000014a", - "0x000000000000000000000000000000000000000000000000000000000000014b", - "0x000000000000000000000000000000000000000000000000000000000000014c", - "0x000000000000000000000000000000000000000000000000000000000000014d", - "0x000000000000000000000000000000000000000000000000000000000000014e", - "0x000000000000000000000000000000000000000000000000000000000000014f", - "0x0000000000000000000000000000000000000000000000000000000000000150", - "0x0000000000000000000000000000000000000000000000000000000000000151", - "0x0000000000000000000000000000000000000000000000000000000000000152", - "0x0000000000000000000000000000000000000000000000000000000000000153", - "0x0000000000000000000000000000000000000000000000000000000000000154", - "0x0000000000000000000000000000000000000000000000000000000000000155", - "0x0000000000000000000000000000000000000000000000000000000000000156", - "0x0000000000000000000000000000000000000000000000000000000000000157", - "0x0000000000000000000000000000000000000000000000000000000000000158", - "0x0000000000000000000000000000000000000000000000000000000000000159", - "0x000000000000000000000000000000000000000000000000000000000000015a", - "0x000000000000000000000000000000000000000000000000000000000000015b", - "0x000000000000000000000000000000000000000000000000000000000000015c", - "0x000000000000000000000000000000000000000000000000000000000000015d", - "0x000000000000000000000000000000000000000000000000000000000000015e", - "0x000000000000000000000000000000000000000000000000000000000000015f", - "0x0000000000000000000000000000000000000000000000000000000000000160", - "0x0000000000000000000000000000000000000000000000000000000000000161", - "0x0000000000000000000000000000000000000000000000000000000000000162", - "0x0000000000000000000000000000000000000000000000000000000000000163", - "0x0000000000000000000000000000000000000000000000000000000000000164", - "0x0000000000000000000000000000000000000000000000000000000000000165", - "0x0000000000000000000000000000000000000000000000000000000000000166", - "0x0000000000000000000000000000000000000000000000000000000000000167", - "0x0000000000000000000000000000000000000000000000000000000000000168", - "0x0000000000000000000000000000000000000000000000000000000000000169", - "0x000000000000000000000000000000000000000000000000000000000000016a", - "0x000000000000000000000000000000000000000000000000000000000000016b", - "0x000000000000000000000000000000000000000000000000000000000000016c", - "0x000000000000000000000000000000000000000000000000000000000000016d", - "0x000000000000000000000000000000000000000000000000000000000000016e", - "0x000000000000000000000000000000000000000000000000000000000000016f", - "0x0000000000000000000000000000000000000000000000000000000000000170", - "0x0000000000000000000000000000000000000000000000000000000000000171", - "0x0000000000000000000000000000000000000000000000000000000000000172", - "0x0000000000000000000000000000000000000000000000000000000000000173", - "0x0000000000000000000000000000000000000000000000000000000000000174", - "0x0000000000000000000000000000000000000000000000000000000000000175", - "0x0000000000000000000000000000000000000000000000000000000000000176", - "0x0000000000000000000000000000000000000000000000000000000000000177", - "0x0000000000000000000000000000000000000000000000000000000000000178", - "0x0000000000000000000000000000000000000000000000000000000000000179", - "0x000000000000000000000000000000000000000000000000000000000000017a", - "0x000000000000000000000000000000000000000000000000000000000000017b", - "0x000000000000000000000000000000000000000000000000000000000000017c", - "0x000000000000000000000000000000000000000000000000000000000000017d", - "0x000000000000000000000000000000000000000000000000000000000000017e", - "0x000000000000000000000000000000000000000000000000000000000000017f", - "0x0000000000000000000000000000000000000000000000000000000000000180", - "0x0000000000000000000000000000000000000000000000000000000000000181", - "0x0000000000000000000000000000000000000000000000000000000000000182", - "0x0000000000000000000000000000000000000000000000000000000000000183", - "0x0000000000000000000000000000000000000000000000000000000000000184", - "0x0000000000000000000000000000000000000000000000000000000000000185", - "0x0000000000000000000000000000000000000000000000000000000000000186", - "0x0000000000000000000000000000000000000000000000000000000000000187", - "0x0000000000000000000000000000000000000000000000000000000000000188", - "0x0000000000000000000000000000000000000000000000000000000000000189", - "0x000000000000000000000000000000000000000000000000000000000000018a", - "0x000000000000000000000000000000000000000000000000000000000000018b", - "0x000000000000000000000000000000000000000000000000000000000000018c", - "0x000000000000000000000000000000000000000000000000000000000000018d", - "0x000000000000000000000000000000000000000000000000000000000000018e", - "0x000000000000000000000000000000000000000000000000000000000000018f", - "0x0000000000000000000000000000000000000000000000000000000000000190", - "0x0000000000000000000000000000000000000000000000000000000000000191", - "0x0000000000000000000000000000000000000000000000000000000000000192", - "0x0000000000000000000000000000000000000000000000000000000000000193", - "0x0000000000000000000000000000000000000000000000000000000000000194", - "0x0000000000000000000000000000000000000000000000000000000000000195", - "0x0000000000000000000000000000000000000000000000000000000000000196", - "0x0000000000000000000000000000000000000000000000000000000000000197", - "0x0000000000000000000000000000000000000000000000000000000000000198", - "0x0000000000000000000000000000000000000000000000000000000000000199", - "0x000000000000000000000000000000000000000000000000000000000000019a", - "0x000000000000000000000000000000000000000000000000000000000000019b", - "0x000000000000000000000000000000000000000000000000000000000000019c", - "0x000000000000000000000000000000000000000000000000000000000000019d", - "0x000000000000000000000000000000000000000000000000000000000000019e", - "0x000000000000000000000000000000000000000000000000000000000000019f", - "0x00000000000000000000000000000000000000000000000000000000000001a0", - "0x00000000000000000000000000000000000000000000000000000000000001a1", - "0x00000000000000000000000000000000000000000000000000000000000001a2", - "0x00000000000000000000000000000000000000000000000000000000000001a3", - "0x00000000000000000000000000000000000000000000000000000000000001a4", - "0x00000000000000000000000000000000000000000000000000000000000001a5", - "0x00000000000000000000000000000000000000000000000000000000000001a6", - "0x00000000000000000000000000000000000000000000000000000000000001a7", - "0x00000000000000000000000000000000000000000000000000000000000001a8", - "0x00000000000000000000000000000000000000000000000000000000000001a9", - "0x00000000000000000000000000000000000000000000000000000000000001aa", - "0x00000000000000000000000000000000000000000000000000000000000001ab", - "0x00000000000000000000000000000000000000000000000000000000000001ac", - "0x00000000000000000000000000000000000000000000000000000000000001ad", - "0x00000000000000000000000000000000000000000000000000000000000001ae", - "0x00000000000000000000000000000000000000000000000000000000000001af", - "0x00000000000000000000000000000000000000000000000000000000000001b0", - "0x00000000000000000000000000000000000000000000000000000000000001b1", - "0x00000000000000000000000000000000000000000000000000000000000001b2", - "0x00000000000000000000000000000000000000000000000000000000000001b3", - "0x00000000000000000000000000000000000000000000000000000000000001b4", - "0x00000000000000000000000000000000000000000000000000000000000001b5", - "0x00000000000000000000000000000000000000000000000000000000000001b6", - "0x00000000000000000000000000000000000000000000000000000000000001b7", - "0x00000000000000000000000000000000000000000000000000000000000001b8", - "0x00000000000000000000000000000000000000000000000000000000000001b9", - "0x00000000000000000000000000000000000000000000000000000000000001ba", - "0x00000000000000000000000000000000000000000000000000000000000001bb", - "0x00000000000000000000000000000000000000000000000000000000000001bc", - "0x00000000000000000000000000000000000000000000000000000000000001bd", - "0x00000000000000000000000000000000000000000000000000000000000001be", - "0x00000000000000000000000000000000000000000000000000000000000001bf", - "0x00000000000000000000000000000000000000000000000000000000000001c0", - "0x00000000000000000000000000000000000000000000000000000000000001c1", - "0x00000000000000000000000000000000000000000000000000000000000001c2", - "0x00000000000000000000000000000000000000000000000000000000000001c3", - "0x00000000000000000000000000000000000000000000000000000000000001c4", - "0x00000000000000000000000000000000000000000000000000000000000001c5", - "0x00000000000000000000000000000000000000000000000000000000000001c6", - "0x00000000000000000000000000000000000000000000000000000000000001c7", - "0x00000000000000000000000000000000000000000000000000000000000001c8", - "0x00000000000000000000000000000000000000000000000000000000000001c9", - "0x00000000000000000000000000000000000000000000000000000000000001ca", - "0x00000000000000000000000000000000000000000000000000000000000001cb", - "0x00000000000000000000000000000000000000000000000000000000000001cc", - "0x00000000000000000000000000000000000000000000000000000000000001cd", - "0x00000000000000000000000000000000000000000000000000000000000001ce", - "0x00000000000000000000000000000000000000000000000000000000000001cf", - "0x00000000000000000000000000000000000000000000000000000000000001d0", - "0x00000000000000000000000000000000000000000000000000000000000001d1", - "0x00000000000000000000000000000000000000000000000000000000000001d2", - "0x00000000000000000000000000000000000000000000000000000000000001d3", - "0x00000000000000000000000000000000000000000000000000000000000001d4", - "0x00000000000000000000000000000000000000000000000000000000000001d5", - "0x00000000000000000000000000000000000000000000000000000000000001d6", - "0x00000000000000000000000000000000000000000000000000000000000001d7", - "0x00000000000000000000000000000000000000000000000000000000000001d8", - "0x00000000000000000000000000000000000000000000000000000000000001d9", - "0x00000000000000000000000000000000000000000000000000000000000001da", - "0x00000000000000000000000000000000000000000000000000000000000001db", - "0x00000000000000000000000000000000000000000000000000000000000001dc", - "0x00000000000000000000000000000000000000000000000000000000000001dd", - "0x00000000000000000000000000000000000000000000000000000000000001de", - "0x00000000000000000000000000000000000000000000000000000000000001df", - "0x00000000000000000000000000000000000000000000000000000000000001e0", - "0x00000000000000000000000000000000000000000000000000000000000001e1", - "0x00000000000000000000000000000000000000000000000000000000000001e2", - "0x00000000000000000000000000000000000000000000000000000000000001e3", - "0x00000000000000000000000000000000000000000000000000000000000001e4", - "0x00000000000000000000000000000000000000000000000000000000000001e5", - "0x00000000000000000000000000000000000000000000000000000000000001e6", - "0x00000000000000000000000000000000000000000000000000000000000001e7", - "0x00000000000000000000000000000000000000000000000000000000000001e8", - "0x00000000000000000000000000000000000000000000000000000000000001e9", - "0x00000000000000000000000000000000000000000000000000000000000001ea", - "0x00000000000000000000000000000000000000000000000000000000000001eb", - "0x00000000000000000000000000000000000000000000000000000000000001ec", - "0x00000000000000000000000000000000000000000000000000000000000001ed", - "0x00000000000000000000000000000000000000000000000000000000000001ee", - "0x00000000000000000000000000000000000000000000000000000000000001ef", - "0x00000000000000000000000000000000000000000000000000000000000001f0", - "0x00000000000000000000000000000000000000000000000000000000000001f1", - "0x00000000000000000000000000000000000000000000000000000000000001f2", - "0x00000000000000000000000000000000000000000000000000000000000001f3", - "0x00000000000000000000000000000000000000000000000000000000000001f4", - "0x00000000000000000000000000000000000000000000000000000000000001f5", - "0x00000000000000000000000000000000000000000000000000000000000001f6", - "0x00000000000000000000000000000000000000000000000000000000000001f7", - "0x00000000000000000000000000000000000000000000000000000000000001f8", - "0x00000000000000000000000000000000000000000000000000000000000001f9", - "0x00000000000000000000000000000000000000000000000000000000000001fa", - "0x00000000000000000000000000000000000000000000000000000000000001fb", - "0x00000000000000000000000000000000000000000000000000000000000001fc", - "0x00000000000000000000000000000000000000000000000000000000000001fd", - "0x00000000000000000000000000000000000000000000000000000000000001fe", - "0x00000000000000000000000000000000000000000000000000000000000001ff", - "0x0000000000000000000000000000000000000000000000000000000000000200", - "0x0000000000000000000000000000000000000000000000000000000000000201", - "0x0000000000000000000000000000000000000000000000000000000000000202", - "0x0000000000000000000000000000000000000000000000000000000000000203", - "0x0000000000000000000000000000000000000000000000000000000000000204", - "0x0000000000000000000000000000000000000000000000000000000000000205", - "0x0000000000000000000000000000000000000000000000000000000000000206", - "0x0000000000000000000000000000000000000000000000000000000000000207", - "0x0000000000000000000000000000000000000000000000000000000000000208", - "0x0000000000000000000000000000000000000000000000000000000000000209", - "0x000000000000000000000000000000000000000000000000000000000000020a", - "0x000000000000000000000000000000000000000000000000000000000000020b", - "0x000000000000000000000000000000000000000000000000000000000000020c", - "0x000000000000000000000000000000000000000000000000000000000000020d", - "0x000000000000000000000000000000000000000000000000000000000000020e", - "0x000000000000000000000000000000000000000000000000000000000000020f", - "0x0000000000000000000000000000000000000000000000000000000000000210", - "0x0000000000000000000000000000000000000000000000000000000000000211", - "0x0000000000000000000000000000000000000000000000000000000000000212", - "0x0000000000000000000000000000000000000000000000000000000000000213", - "0x0000000000000000000000000000000000000000000000000000000000000214", - "0x0000000000000000000000000000000000000000000000000000000000000215", - "0x0000000000000000000000000000000000000000000000000000000000000216", - "0x0000000000000000000000000000000000000000000000000000000000000217" -] - -[inputs.previous_rollup_data.vk_data] -leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" -sibling_path = [ - "0x29fd934b0aa1b991249da34f70f2d0c8ee897fb62da7b16c7a33d432202fe01a", - "0x0347efdf28221164a0a84418ff9c70e46ae346d7d6c07dfcb215e1c22a40e7fc", - "0x0a75bf74e8d43865345da3cb1a50f799a3bbf6de33329e348c996a31a14a779f", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", - "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", - "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" -] - - [inputs.previous_rollup_data.vk_data.vk] - key = [ - "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x0000000000000000000000000000000000000000000000000000000000000424", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000040a", - "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x00000000000000000000000000000000f8cad80f8d55a11c8eabcecc27840bfc", - "0x0000000000000000000000000000000000079223f5f3f49cf546d53048978d8b", - "0x000000000000000000000000000000e5c16e62673daeb94b99720a0bb4d94d08", - "0x0000000000000000000000000000000000090d562369c0519c407db69d0eb9f4", - "0x000000000000000000000000000000eba973a330e8b6e007c64defa3c064f2d5", - "0x0000000000000000000000000000000000195dbc34989966b0a038003c313d04", - "0x000000000000000000000000000000cbc51a6332974c43cc3b5bf3b60df114b4", - "0x00000000000000000000000000000000002a3bfd62d8680c76f86d662e60a34c", - "0x00000000000000000000000000000033b51545b021ac43b82df76f8bc8fe797d", - "0x000000000000000000000000000000000007195efdf4d3626b11688985615e3d", - "0x000000000000000000000000000000c1c5abb58499976bab6db4237ad6fed612", - "0x000000000000000000000000000000000015eae13caa90637f714279d5bba597", - "0x0000000000000000000000000000008c71eec8c167fa572e5ca6978757381ac3", - "0x0000000000000000000000000000000000115789d942ac3b1c8a70344876842b", - "0x000000000000000000000000000000fe1c796ab92cb388b00c038e393e1ad5be", - "0x00000000000000000000000000000000000d7b7d26d02f810c868f6fb747d532", - "0x0000000000000000000000000000005c86261926ac8f138420f3b1614be35b9a", - "0x00000000000000000000000000000000002e60a237c455106ed17a42c4eadbc1", - "0x000000000000000000000000000000550ff1802e295434e5f96d3a5ee36e395a", - "0x000000000000000000000000000000000008980e55a7735a8d9d3286068caf47", - "0x00000000000000000000000000000056fd4dd823762d6ca2e5a534dbcb4d9816", - "0x00000000000000000000000000000000001ec12cbbca264cd91e4cc6969144df", - "0x00000000000000000000000000000075d7b1dad31d8dcb12fd2ad4ceb6645831", - "0x000000000000000000000000000000000010fa2ab5201ffe5ba98e16e55f2cdb", - "0x000000000000000000000000000000e9cada0e9edfedcca51a7093b42db412ad", - "0x00000000000000000000000000000000002bc1a803c31d0d70abce6717bacf20", - "0x000000000000000000000000000000eedddade9871635e3b617111bcfd0d8815", - "0x000000000000000000000000000000000010f5e39e1ffa974b1f35d10e0af134", - "0x00000000000000000000000000000080082c1014b70b86099a97d1f0b182b739", - "0x000000000000000000000000000000000002c5e747c55aa667a980db9c417d4a", - "0x00000000000000000000000000000092725a2f57b118fb15933a1f7a42bafc49", - "0x00000000000000000000000000000000000b9dd9082a63694b8a581c637fdb8b", - "0x000000000000000000000000000000dd27fb64744890831e543dc7791485542e", - "0x00000000000000000000000000000000000eca820bb390c454a51593f375828b", - "0x000000000000000000000000000000e0f745fa3b148239ca58623df474ce1878", - "0x00000000000000000000000000000000002d131a7311902e2890fc9ad6a4874b", - "0x00000000000000000000000000000036ba68e732279bb6177c81bbe5a3954f12", - "0x00000000000000000000000000000000001fd3b6b3ac715860d6840be462f027", - "0x000000000000000000000000000000ab9ed1d86cbbfca4c103ba62682688f8cf", - "0x00000000000000000000000000000000001003ea6480d6bdbb41f24d5b03d2a6", - "0x000000000000000000000000000000760e61b4f64978ee91c634ac4ee3cd83eb", - "0x000000000000000000000000000000000023d2d8ba615b5ee8db5e2b00f7ab2d", - "0x000000000000000000000000000000097d69d3c7c4a5c228614f14800937ed4f", - "0x0000000000000000000000000000000000233ba91c96db544aec0ae91af55a36", - "0x00000000000000000000000000000030f268e34eb45870a8a019a2c5dd4879a2", - "0x00000000000000000000000000000000002b78613e51afb6e0f5862cf8bc178a", - "0x0000000000000000000000000000008eace6dd6e792275663b27196ef5c3cefe", - "0x00000000000000000000000000000000002949ade391424ebe9e9b9b4b099334", - "0x0000000000000000000000000000009707a00090848cfd6266a7f97d3b684f17", - "0x0000000000000000000000000000000000180d5d5cf2516b33df64c830dd4abb", - "0x00000000000000000000000000000036c7a452dbadcf52daac6bbbf135761cbc", - "0x00000000000000000000000000000000002e8477a1acfa6206b2517f4d472007", - "0x00000000000000000000000000000010cbc68baa7859bd0d141b399d59dce228", - "0x00000000000000000000000000000000001e2fc6344d80700ec6187debed7126", - "0x0000000000000000000000000000006ef4d1229a93d6270bfabb4217470ef1ec", - "0x0000000000000000000000000000000000060ddc158dfa1114b7cd58d601c9b5", - "0x000000000000000000000000000000b001486ec62e00150900965b73ef5826d7", - "0x0000000000000000000000000000000000198669e6305a71ca1991e8e58a333e", - "0x000000000000000000000000000000656d5b216aa83f6c10ed7b046ebc9d83ae", - "0x00000000000000000000000000000000001a0407386bcd159aed63b8ceb14d0a", - "0x000000000000000000000000000000dda242747091e98e5a7c61c05aefe42a13", - "0x0000000000000000000000000000000000297b955c38382b609b6f0873946fd1", - "0x000000000000000000000000000000a6ffc471736dd983a3a5168a7c537ccde3", - "0x0000000000000000000000000000000000162564119be8b546dbda47d632027f", - "0x000000000000000000000000000000039fbb2aa40155ca1f46fbf3829da63ed1", - "0x000000000000000000000000000000000027a6bd8f64e8895f0d92ff11a651de", - "0x000000000000000000000000000000f12169dc475b558c210a3874f2ea4299ae", - "0x00000000000000000000000000000000002ac9f013da22db6bc513907fe802e2", - "0x0000000000000000000000000000009c79179bce3a849d6425e2dfe430493349", - "0x000000000000000000000000000000000002bff9edc48dd98d43b12b1bd256e7", - "0x000000000000000000000000000000615167d823b9f7a36ce6fb2576a78d054b", - "0x00000000000000000000000000000000002d3c692a5143245bc4cd91f90e48a2", - "0x000000000000000000000000000000264df1b35c0297296b5aa7b74268500f29", - "0x00000000000000000000000000000000002190e462d1608c674be498ca8effc1", - "0x000000000000000000000000000000d90fac9cec3f09360daa2ec08482bac392", - "0x00000000000000000000000000000000002ef0b48541b1fcd5ef9e6b7c396ba3", - "0x0000000000000000000000000000002f46c46e42bf9f491ffb6ddd7c1f7cc49d", - "0x00000000000000000000000000000000001007a031dca556db1b4e46f4d23759", - "0x000000000000000000000000000000474ad4ee1110ac8fdc874631482dda502a", - "0x00000000000000000000000000000000000be269bbbe064d1635094e35b43042", - "0x0000000000000000000000000000001cac35b7b91caeb1ae9b567b00e75f38dd", - "0x00000000000000000000000000000000000c7254dad249fc72c80803a9e066a4", - "0x000000000000000000000000000000786bec90836f8fa6ec9affce1f9f578201", - "0x00000000000000000000000000000000001c7c3330c19cd96d03bae9f67235e6", - "0x000000000000000000000000000000397f5895a8363c42b9c74626b46c0779c4", - "0x0000000000000000000000000000000000069a7b4fd2bc3608557f09725cff0a", - "0x000000000000000000000000000000657b8f76f6b5d7bc0c627227198f70fd01", - "0x00000000000000000000000000000000000d376ea7f2c2308c5aec7f3498917b", - "0x000000000000000000000000000000a6a8899d451e1d0d329ebb8710454e42d9", - "0x0000000000000000000000000000000000305c76f8bdd33d50f8ecf1c574282a", - "0x000000000000000000000000000000a83ece395da3f00121baa4e6542fae329f", - "0x000000000000000000000000000000000005292807460acbc4a39c3eb1cce1b0", - "0x0000000000000000000000000000004779b6dd712cf858f5c239ff49d371b75e", - "0x00000000000000000000000000000000000710d995fd1c6cd9e454e60eea5918", - "0x0000000000000000000000000000000bf8d28d612707694cbc74b9a26c494324", - "0x000000000000000000000000000000000016ad0da5c985528f688f18afa75652", - "0x0000000000000000000000000000009cdb1686c0c7ddcd1fa3d9f2a4cad82ebb", - "0x00000000000000000000000000000000001a2417659ff90dba3d8211d8fefc5b", - "0x000000000000000000000000000000b1a6453d678f0b547e06c8bab5f963a01f", - "0x000000000000000000000000000000000018c98423f512ca4c999a75f8195289", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000009303f0952f5e4e3da77819c1f2046fff8d", - "0x000000000000000000000000000000000021432a3ef3396589bd3ca2b633465d", - "0x000000000000000000000000000000d887a00cdae3a17c0c1626d80e692d2e93", - "0x000000000000000000000000000000000010fe4b4922aca1ed10e93a04a6cc6a" -] - hash = "0x152c6cd36de2c5077af30d6b248cffcb38adbbef7137172ef4dbcddc1271977f" - -[[inputs.previous_rollup_data]] -[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -proposed_block_header_hashes = [ - "0x007b30539a871d634f2fc38dab4b534fd878c8b810786799de337e0141a164be", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] - vk_tree_root = "0x2736f6eaed203c9353ecf1ee0a3e34e6177868b4380c2ba66a0cbba2b8daface" - protocol_contract_tree_root = "0x2954f345b74e2e3a0388c779e7edfe9a5637edcecf10866f11595d5ba703355c" - prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x0feb7aa308aa4111e7e1bbe93aa9ae2478e89bdc8dcc9d96bd90e5763c94a6a0" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x1a841fc5f93e095bd35828250a94fe109456b0a779b32efdfc6e2e8fbd92b6e3" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b760" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000f7197206" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x000000000000000000000000000000000000000000000000000000006841b760" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000e88" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000000ae60e88" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000009182af5d39e142a18acdc62c838f10ac3d70a26e" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x1834e0a6fdd0231a7d430a4867196da77fcbffdd89afa42518261ccf905cefc2" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x02c3fec8f4ce15acfe7bb290f79c59", - "0xaf75164ada45ccc7432f7b7c29b6f2", - "0x2bea" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x00a9b229f2acdbfae260972c380eef2adc00463548dc8910c5c3242c30dcf875", - "0x000000000000000000000000000000e608a22ef936550b83e9e7781d35453567" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.proof] +fields = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000015", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x000000000000000000000000000000000000000000000000000000000000001a", + "0x000000000000000000000000000000000000000000000000000000000000001b", + "0x000000000000000000000000000000000000000000000000000000000000001c", + "0x000000000000000000000000000000000000000000000000000000000000001d", + "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x000000000000000000000000000000000000000000000000000000000000001f", + "0x0000000000000000000000000000000000000000000000000000000000000020", + "0x0000000000000000000000000000000000000000000000000000000000000021", + "0x0000000000000000000000000000000000000000000000000000000000000022", + "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000026", + "0x0000000000000000000000000000000000000000000000000000000000000027", + "0x0000000000000000000000000000000000000000000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000029", + "0x000000000000000000000000000000000000000000000000000000000000002a", + "0x000000000000000000000000000000000000000000000000000000000000002b", + "0x000000000000000000000000000000000000000000000000000000000000002c", + "0x000000000000000000000000000000000000000000000000000000000000002d", + "0x000000000000000000000000000000000000000000000000000000000000002e", + "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x0000000000000000000000000000000000000000000000000000000000000031", + "0x0000000000000000000000000000000000000000000000000000000000000032", + "0x0000000000000000000000000000000000000000000000000000000000000033", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000044", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000000000000000000000000000000000004e", + "0x000000000000000000000000000000000000000000000000000000000000004f", + "0x0000000000000000000000000000000000000000000000000000000000000050", + "0x0000000000000000000000000000000000000000000000000000000000000051", + "0x0000000000000000000000000000000000000000000000000000000000000052", + "0x0000000000000000000000000000000000000000000000000000000000000053", + "0x0000000000000000000000000000000000000000000000000000000000000054", + "0x0000000000000000000000000000000000000000000000000000000000000055", + "0x0000000000000000000000000000000000000000000000000000000000000056", + "0x0000000000000000000000000000000000000000000000000000000000000057", + "0x0000000000000000000000000000000000000000000000000000000000000058", + "0x0000000000000000000000000000000000000000000000000000000000000059", + "0x000000000000000000000000000000000000000000000000000000000000005a", + "0x000000000000000000000000000000000000000000000000000000000000005b", + "0x000000000000000000000000000000000000000000000000000000000000005c", + "0x000000000000000000000000000000000000000000000000000000000000005d", + "0x000000000000000000000000000000000000000000000000000000000000005e", + "0x000000000000000000000000000000000000000000000000000000000000005f", + "0x0000000000000000000000000000000000000000000000000000000000000060", + "0x0000000000000000000000000000000000000000000000000000000000000061", + "0x0000000000000000000000000000000000000000000000000000000000000062", + "0x0000000000000000000000000000000000000000000000000000000000000063", + "0x0000000000000000000000000000000000000000000000000000000000000064", + "0x0000000000000000000000000000000000000000000000000000000000000065", + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0x0000000000000000000000000000000000000000000000000000000000000067", + "0x0000000000000000000000000000000000000000000000000000000000000068", + "0x0000000000000000000000000000000000000000000000000000000000000069", + "0x000000000000000000000000000000000000000000000000000000000000006a", + "0x000000000000000000000000000000000000000000000000000000000000006b", + "0x000000000000000000000000000000000000000000000000000000000000006c", + "0x000000000000000000000000000000000000000000000000000000000000006d", + "0x000000000000000000000000000000000000000000000000000000000000006e", + "0x000000000000000000000000000000000000000000000000000000000000006f", + "0x0000000000000000000000000000000000000000000000000000000000000070", + "0x0000000000000000000000000000000000000000000000000000000000000071", + "0x0000000000000000000000000000000000000000000000000000000000000072", + "0x0000000000000000000000000000000000000000000000000000000000000073", + "0x0000000000000000000000000000000000000000000000000000000000000074", + "0x0000000000000000000000000000000000000000000000000000000000000075", + "0x0000000000000000000000000000000000000000000000000000000000000076", + "0x0000000000000000000000000000000000000000000000000000000000000077", + "0x0000000000000000000000000000000000000000000000000000000000000078", + "0x0000000000000000000000000000000000000000000000000000000000000079", + "0x000000000000000000000000000000000000000000000000000000000000007a", + "0x000000000000000000000000000000000000000000000000000000000000007b", + "0x000000000000000000000000000000000000000000000000000000000000007c", + "0x000000000000000000000000000000000000000000000000000000000000007d", + "0x000000000000000000000000000000000000000000000000000000000000007e", + "0x000000000000000000000000000000000000000000000000000000000000007f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000081", + "0x0000000000000000000000000000000000000000000000000000000000000082", + "0x0000000000000000000000000000000000000000000000000000000000000083", + "0x0000000000000000000000000000000000000000000000000000000000000084", + "0x0000000000000000000000000000000000000000000000000000000000000085", + "0x0000000000000000000000000000000000000000000000000000000000000086", + "0x0000000000000000000000000000000000000000000000000000000000000087", + "0x0000000000000000000000000000000000000000000000000000000000000088", + "0x0000000000000000000000000000000000000000000000000000000000000089", + "0x000000000000000000000000000000000000000000000000000000000000008a", + "0x000000000000000000000000000000000000000000000000000000000000008b", + "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x000000000000000000000000000000000000000000000000000000000000008d", + "0x000000000000000000000000000000000000000000000000000000000000008e", + "0x000000000000000000000000000000000000000000000000000000000000008f", + "0x0000000000000000000000000000000000000000000000000000000000000090", + "0x0000000000000000000000000000000000000000000000000000000000000091", + "0x0000000000000000000000000000000000000000000000000000000000000092", + "0x0000000000000000000000000000000000000000000000000000000000000093", + "0x0000000000000000000000000000000000000000000000000000000000000094", + "0x0000000000000000000000000000000000000000000000000000000000000095", + "0x0000000000000000000000000000000000000000000000000000000000000096", + "0x0000000000000000000000000000000000000000000000000000000000000097", + "0x0000000000000000000000000000000000000000000000000000000000000098", + "0x0000000000000000000000000000000000000000000000000000000000000099", + "0x000000000000000000000000000000000000000000000000000000000000009a", + "0x000000000000000000000000000000000000000000000000000000000000009b", + "0x000000000000000000000000000000000000000000000000000000000000009c", + "0x000000000000000000000000000000000000000000000000000000000000009d", + "0x000000000000000000000000000000000000000000000000000000000000009e", + "0x000000000000000000000000000000000000000000000000000000000000009f", + "0x00000000000000000000000000000000000000000000000000000000000000a0", + "0x00000000000000000000000000000000000000000000000000000000000000a1", + "0x00000000000000000000000000000000000000000000000000000000000000a2", + "0x00000000000000000000000000000000000000000000000000000000000000a3", + "0x00000000000000000000000000000000000000000000000000000000000000a4", + "0x00000000000000000000000000000000000000000000000000000000000000a5", + "0x00000000000000000000000000000000000000000000000000000000000000a6", + "0x00000000000000000000000000000000000000000000000000000000000000a7", + "0x00000000000000000000000000000000000000000000000000000000000000a8", + "0x00000000000000000000000000000000000000000000000000000000000000a9", + "0x00000000000000000000000000000000000000000000000000000000000000aa", + "0x00000000000000000000000000000000000000000000000000000000000000ab", + "0x00000000000000000000000000000000000000000000000000000000000000ac", + "0x00000000000000000000000000000000000000000000000000000000000000ad", + "0x00000000000000000000000000000000000000000000000000000000000000ae", + "0x00000000000000000000000000000000000000000000000000000000000000af", + "0x00000000000000000000000000000000000000000000000000000000000000b0", + "0x00000000000000000000000000000000000000000000000000000000000000b1", + "0x00000000000000000000000000000000000000000000000000000000000000b2", + "0x00000000000000000000000000000000000000000000000000000000000000b3", + "0x00000000000000000000000000000000000000000000000000000000000000b4", + "0x00000000000000000000000000000000000000000000000000000000000000b5", + "0x00000000000000000000000000000000000000000000000000000000000000b6", + "0x00000000000000000000000000000000000000000000000000000000000000b7", + "0x00000000000000000000000000000000000000000000000000000000000000b8", + "0x00000000000000000000000000000000000000000000000000000000000000b9", + "0x00000000000000000000000000000000000000000000000000000000000000ba", + "0x00000000000000000000000000000000000000000000000000000000000000bb", + "0x00000000000000000000000000000000000000000000000000000000000000bc", + "0x00000000000000000000000000000000000000000000000000000000000000bd", + "0x00000000000000000000000000000000000000000000000000000000000000be", + "0x00000000000000000000000000000000000000000000000000000000000000bf", + "0x00000000000000000000000000000000000000000000000000000000000000c0", + "0x00000000000000000000000000000000000000000000000000000000000000c1", + "0x00000000000000000000000000000000000000000000000000000000000000c2", + "0x00000000000000000000000000000000000000000000000000000000000000c3", + "0x00000000000000000000000000000000000000000000000000000000000000c4", + "0x00000000000000000000000000000000000000000000000000000000000000c5", + "0x00000000000000000000000000000000000000000000000000000000000000c6", + "0x00000000000000000000000000000000000000000000000000000000000000c7", + "0x00000000000000000000000000000000000000000000000000000000000000c8", + "0x00000000000000000000000000000000000000000000000000000000000000c9", + "0x00000000000000000000000000000000000000000000000000000000000000ca", + "0x00000000000000000000000000000000000000000000000000000000000000cb", + "0x00000000000000000000000000000000000000000000000000000000000000cc", + "0x00000000000000000000000000000000000000000000000000000000000000cd", + "0x00000000000000000000000000000000000000000000000000000000000000ce", + "0x00000000000000000000000000000000000000000000000000000000000000cf", + "0x00000000000000000000000000000000000000000000000000000000000000d0", + "0x00000000000000000000000000000000000000000000000000000000000000d1", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000d3", + "0x00000000000000000000000000000000000000000000000000000000000000d4", + "0x00000000000000000000000000000000000000000000000000000000000000d5", + "0x00000000000000000000000000000000000000000000000000000000000000d6", + "0x00000000000000000000000000000000000000000000000000000000000000d7", + "0x00000000000000000000000000000000000000000000000000000000000000d8", + "0x00000000000000000000000000000000000000000000000000000000000000d9", + "0x00000000000000000000000000000000000000000000000000000000000000da", + "0x00000000000000000000000000000000000000000000000000000000000000db", + "0x00000000000000000000000000000000000000000000000000000000000000dc", + "0x00000000000000000000000000000000000000000000000000000000000000dd", + "0x00000000000000000000000000000000000000000000000000000000000000de", + "0x00000000000000000000000000000000000000000000000000000000000000df", + "0x00000000000000000000000000000000000000000000000000000000000000e0", + "0x00000000000000000000000000000000000000000000000000000000000000e1", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000000000000000000000000000000000000e3", + "0x00000000000000000000000000000000000000000000000000000000000000e4", + "0x00000000000000000000000000000000000000000000000000000000000000e5", + "0x00000000000000000000000000000000000000000000000000000000000000e6", + "0x00000000000000000000000000000000000000000000000000000000000000e7", + "0x00000000000000000000000000000000000000000000000000000000000000e8", + "0x00000000000000000000000000000000000000000000000000000000000000e9", + "0x00000000000000000000000000000000000000000000000000000000000000ea", + "0x00000000000000000000000000000000000000000000000000000000000000eb", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x00000000000000000000000000000000000000000000000000000000000000ed", + "0x00000000000000000000000000000000000000000000000000000000000000ee", + "0x00000000000000000000000000000000000000000000000000000000000000ef", + "0x00000000000000000000000000000000000000000000000000000000000000f0", + "0x00000000000000000000000000000000000000000000000000000000000000f1", + "0x00000000000000000000000000000000000000000000000000000000000000f2", + "0x00000000000000000000000000000000000000000000000000000000000000f3", + "0x00000000000000000000000000000000000000000000000000000000000000f4", + "0x00000000000000000000000000000000000000000000000000000000000000f5", + "0x00000000000000000000000000000000000000000000000000000000000000f6", + "0x00000000000000000000000000000000000000000000000000000000000000f7", + "0x00000000000000000000000000000000000000000000000000000000000000f8", + "0x00000000000000000000000000000000000000000000000000000000000000f9", + "0x00000000000000000000000000000000000000000000000000000000000000fa", + "0x00000000000000000000000000000000000000000000000000000000000000fb", + "0x00000000000000000000000000000000000000000000000000000000000000fc", + "0x00000000000000000000000000000000000000000000000000000000000000fd", + "0x00000000000000000000000000000000000000000000000000000000000000fe", + "0x00000000000000000000000000000000000000000000000000000000000000ff", + "0x0000000000000000000000000000000000000000000000000000000000000100", + "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000102", + "0x0000000000000000000000000000000000000000000000000000000000000103", + "0x0000000000000000000000000000000000000000000000000000000000000104", + "0x0000000000000000000000000000000000000000000000000000000000000105", + "0x0000000000000000000000000000000000000000000000000000000000000106", + "0x0000000000000000000000000000000000000000000000000000000000000107", + "0x0000000000000000000000000000000000000000000000000000000000000108", + "0x0000000000000000000000000000000000000000000000000000000000000109", + "0x000000000000000000000000000000000000000000000000000000000000010a", + "0x000000000000000000000000000000000000000000000000000000000000010b", + "0x000000000000000000000000000000000000000000000000000000000000010c", + "0x000000000000000000000000000000000000000000000000000000000000010d", + "0x000000000000000000000000000000000000000000000000000000000000010e", + "0x000000000000000000000000000000000000000000000000000000000000010f", + "0x0000000000000000000000000000000000000000000000000000000000000110", + "0x0000000000000000000000000000000000000000000000000000000000000111", + "0x0000000000000000000000000000000000000000000000000000000000000112", + "0x0000000000000000000000000000000000000000000000000000000000000113", + "0x0000000000000000000000000000000000000000000000000000000000000114", + "0x0000000000000000000000000000000000000000000000000000000000000115", + "0x0000000000000000000000000000000000000000000000000000000000000116", + "0x0000000000000000000000000000000000000000000000000000000000000117", + "0x0000000000000000000000000000000000000000000000000000000000000118", + "0x0000000000000000000000000000000000000000000000000000000000000119", + "0x000000000000000000000000000000000000000000000000000000000000011a", + "0x000000000000000000000000000000000000000000000000000000000000011b", + "0x000000000000000000000000000000000000000000000000000000000000011c", + "0x000000000000000000000000000000000000000000000000000000000000011d", + "0x000000000000000000000000000000000000000000000000000000000000011e", + "0x000000000000000000000000000000000000000000000000000000000000011f", + "0x0000000000000000000000000000000000000000000000000000000000000120", + "0x0000000000000000000000000000000000000000000000000000000000000121", + "0x0000000000000000000000000000000000000000000000000000000000000122", + "0x0000000000000000000000000000000000000000000000000000000000000123", + "0x0000000000000000000000000000000000000000000000000000000000000124", + "0x0000000000000000000000000000000000000000000000000000000000000125", + "0x0000000000000000000000000000000000000000000000000000000000000126", + "0x0000000000000000000000000000000000000000000000000000000000000127", + "0x0000000000000000000000000000000000000000000000000000000000000128", + "0x0000000000000000000000000000000000000000000000000000000000000129", + "0x000000000000000000000000000000000000000000000000000000000000012a", + "0x000000000000000000000000000000000000000000000000000000000000012b", + "0x000000000000000000000000000000000000000000000000000000000000012c", + "0x000000000000000000000000000000000000000000000000000000000000012d", + "0x000000000000000000000000000000000000000000000000000000000000012e", + "0x000000000000000000000000000000000000000000000000000000000000012f", + "0x0000000000000000000000000000000000000000000000000000000000000130", + "0x0000000000000000000000000000000000000000000000000000000000000131", + "0x0000000000000000000000000000000000000000000000000000000000000132", + "0x0000000000000000000000000000000000000000000000000000000000000133", + "0x0000000000000000000000000000000000000000000000000000000000000134", + "0x0000000000000000000000000000000000000000000000000000000000000135", + "0x0000000000000000000000000000000000000000000000000000000000000136", + "0x0000000000000000000000000000000000000000000000000000000000000137", + "0x0000000000000000000000000000000000000000000000000000000000000138", + "0x0000000000000000000000000000000000000000000000000000000000000139", + "0x000000000000000000000000000000000000000000000000000000000000013a", + "0x000000000000000000000000000000000000000000000000000000000000013b", + "0x000000000000000000000000000000000000000000000000000000000000013c", + "0x000000000000000000000000000000000000000000000000000000000000013d", + "0x000000000000000000000000000000000000000000000000000000000000013e", + "0x000000000000000000000000000000000000000000000000000000000000013f", + "0x0000000000000000000000000000000000000000000000000000000000000140", + "0x0000000000000000000000000000000000000000000000000000000000000141", + "0x0000000000000000000000000000000000000000000000000000000000000142", + "0x0000000000000000000000000000000000000000000000000000000000000143", + "0x0000000000000000000000000000000000000000000000000000000000000144", + "0x0000000000000000000000000000000000000000000000000000000000000145", + "0x0000000000000000000000000000000000000000000000000000000000000146", + "0x0000000000000000000000000000000000000000000000000000000000000147", + "0x0000000000000000000000000000000000000000000000000000000000000148", + "0x0000000000000000000000000000000000000000000000000000000000000149", + "0x000000000000000000000000000000000000000000000000000000000000014a", + "0x000000000000000000000000000000000000000000000000000000000000014b", + "0x000000000000000000000000000000000000000000000000000000000000014c", + "0x000000000000000000000000000000000000000000000000000000000000014d", + "0x000000000000000000000000000000000000000000000000000000000000014e", + "0x000000000000000000000000000000000000000000000000000000000000014f", + "0x0000000000000000000000000000000000000000000000000000000000000150", + "0x0000000000000000000000000000000000000000000000000000000000000151", + "0x0000000000000000000000000000000000000000000000000000000000000152", + "0x0000000000000000000000000000000000000000000000000000000000000153", + "0x0000000000000000000000000000000000000000000000000000000000000154", + "0x0000000000000000000000000000000000000000000000000000000000000155", + "0x0000000000000000000000000000000000000000000000000000000000000156", + "0x0000000000000000000000000000000000000000000000000000000000000157", + "0x0000000000000000000000000000000000000000000000000000000000000158", + "0x0000000000000000000000000000000000000000000000000000000000000159", + "0x000000000000000000000000000000000000000000000000000000000000015a", + "0x000000000000000000000000000000000000000000000000000000000000015b", + "0x000000000000000000000000000000000000000000000000000000000000015c", + "0x000000000000000000000000000000000000000000000000000000000000015d", + "0x000000000000000000000000000000000000000000000000000000000000015e", + "0x000000000000000000000000000000000000000000000000000000000000015f", + "0x0000000000000000000000000000000000000000000000000000000000000160", + "0x0000000000000000000000000000000000000000000000000000000000000161", + "0x0000000000000000000000000000000000000000000000000000000000000162", + "0x0000000000000000000000000000000000000000000000000000000000000163", + "0x0000000000000000000000000000000000000000000000000000000000000164", + "0x0000000000000000000000000000000000000000000000000000000000000165", + "0x0000000000000000000000000000000000000000000000000000000000000166", + "0x0000000000000000000000000000000000000000000000000000000000000167", + "0x0000000000000000000000000000000000000000000000000000000000000168", + "0x0000000000000000000000000000000000000000000000000000000000000169", + "0x000000000000000000000000000000000000000000000000000000000000016a", + "0x000000000000000000000000000000000000000000000000000000000000016b", + "0x000000000000000000000000000000000000000000000000000000000000016c", + "0x000000000000000000000000000000000000000000000000000000000000016d", + "0x000000000000000000000000000000000000000000000000000000000000016e", + "0x000000000000000000000000000000000000000000000000000000000000016f", + "0x0000000000000000000000000000000000000000000000000000000000000170", + "0x0000000000000000000000000000000000000000000000000000000000000171", + "0x0000000000000000000000000000000000000000000000000000000000000172", + "0x0000000000000000000000000000000000000000000000000000000000000173", + "0x0000000000000000000000000000000000000000000000000000000000000174", + "0x0000000000000000000000000000000000000000000000000000000000000175", + "0x0000000000000000000000000000000000000000000000000000000000000176", + "0x0000000000000000000000000000000000000000000000000000000000000177", + "0x0000000000000000000000000000000000000000000000000000000000000178", + "0x0000000000000000000000000000000000000000000000000000000000000179", + "0x000000000000000000000000000000000000000000000000000000000000017a", + "0x000000000000000000000000000000000000000000000000000000000000017b", + "0x000000000000000000000000000000000000000000000000000000000000017c", + "0x000000000000000000000000000000000000000000000000000000000000017d", + "0x000000000000000000000000000000000000000000000000000000000000017e", + "0x000000000000000000000000000000000000000000000000000000000000017f", + "0x0000000000000000000000000000000000000000000000000000000000000180", + "0x0000000000000000000000000000000000000000000000000000000000000181", + "0x0000000000000000000000000000000000000000000000000000000000000182", + "0x0000000000000000000000000000000000000000000000000000000000000183", + "0x0000000000000000000000000000000000000000000000000000000000000184", + "0x0000000000000000000000000000000000000000000000000000000000000185", + "0x0000000000000000000000000000000000000000000000000000000000000186", + "0x0000000000000000000000000000000000000000000000000000000000000187", + "0x0000000000000000000000000000000000000000000000000000000000000188", + "0x0000000000000000000000000000000000000000000000000000000000000189", + "0x000000000000000000000000000000000000000000000000000000000000018a", + "0x000000000000000000000000000000000000000000000000000000000000018b", + "0x000000000000000000000000000000000000000000000000000000000000018c", + "0x000000000000000000000000000000000000000000000000000000000000018d", + "0x000000000000000000000000000000000000000000000000000000000000018e", + "0x000000000000000000000000000000000000000000000000000000000000018f", + "0x0000000000000000000000000000000000000000000000000000000000000190", + "0x0000000000000000000000000000000000000000000000000000000000000191", + "0x0000000000000000000000000000000000000000000000000000000000000192", + "0x0000000000000000000000000000000000000000000000000000000000000193", + "0x0000000000000000000000000000000000000000000000000000000000000194", + "0x0000000000000000000000000000000000000000000000000000000000000195", + "0x0000000000000000000000000000000000000000000000000000000000000196", + "0x0000000000000000000000000000000000000000000000000000000000000197", + "0x0000000000000000000000000000000000000000000000000000000000000198", + "0x0000000000000000000000000000000000000000000000000000000000000199", + "0x000000000000000000000000000000000000000000000000000000000000019a", + "0x000000000000000000000000000000000000000000000000000000000000019b", + "0x000000000000000000000000000000000000000000000000000000000000019c", + "0x000000000000000000000000000000000000000000000000000000000000019d", + "0x000000000000000000000000000000000000000000000000000000000000019e", + "0x000000000000000000000000000000000000000000000000000000000000019f", + "0x00000000000000000000000000000000000000000000000000000000000001a0", + "0x00000000000000000000000000000000000000000000000000000000000001a1", + "0x00000000000000000000000000000000000000000000000000000000000001a2", + "0x00000000000000000000000000000000000000000000000000000000000001a3", + "0x00000000000000000000000000000000000000000000000000000000000001a4", + "0x00000000000000000000000000000000000000000000000000000000000001a5", + "0x00000000000000000000000000000000000000000000000000000000000001a6", + "0x00000000000000000000000000000000000000000000000000000000000001a7", + "0x00000000000000000000000000000000000000000000000000000000000001a8", + "0x00000000000000000000000000000000000000000000000000000000000001a9", + "0x00000000000000000000000000000000000000000000000000000000000001aa", + "0x00000000000000000000000000000000000000000000000000000000000001ab", + "0x00000000000000000000000000000000000000000000000000000000000001ac", + "0x00000000000000000000000000000000000000000000000000000000000001ad", + "0x00000000000000000000000000000000000000000000000000000000000001ae", + "0x00000000000000000000000000000000000000000000000000000000000001af", + "0x00000000000000000000000000000000000000000000000000000000000001b0", + "0x00000000000000000000000000000000000000000000000000000000000001b1", + "0x00000000000000000000000000000000000000000000000000000000000001b2", + "0x00000000000000000000000000000000000000000000000000000000000001b3", + "0x00000000000000000000000000000000000000000000000000000000000001b4", + "0x00000000000000000000000000000000000000000000000000000000000001b5", + "0x00000000000000000000000000000000000000000000000000000000000001b6", + "0x00000000000000000000000000000000000000000000000000000000000001b7", + "0x00000000000000000000000000000000000000000000000000000000000001b8", + "0x00000000000000000000000000000000000000000000000000000000000001b9", + "0x00000000000000000000000000000000000000000000000000000000000001ba", + "0x00000000000000000000000000000000000000000000000000000000000001bb", + "0x00000000000000000000000000000000000000000000000000000000000001bc", + "0x00000000000000000000000000000000000000000000000000000000000001bd", + "0x00000000000000000000000000000000000000000000000000000000000001be", + "0x00000000000000000000000000000000000000000000000000000000000001bf", + "0x00000000000000000000000000000000000000000000000000000000000001c0", + "0x00000000000000000000000000000000000000000000000000000000000001c1", + "0x00000000000000000000000000000000000000000000000000000000000001c2", + "0x00000000000000000000000000000000000000000000000000000000000001c3", + "0x00000000000000000000000000000000000000000000000000000000000001c4", + "0x00000000000000000000000000000000000000000000000000000000000001c5", + "0x00000000000000000000000000000000000000000000000000000000000001c6", + "0x00000000000000000000000000000000000000000000000000000000000001c7", + "0x00000000000000000000000000000000000000000000000000000000000001c8", + "0x00000000000000000000000000000000000000000000000000000000000001c9", + "0x00000000000000000000000000000000000000000000000000000000000001ca", + "0x00000000000000000000000000000000000000000000000000000000000001cb", + "0x00000000000000000000000000000000000000000000000000000000000001cc", + "0x00000000000000000000000000000000000000000000000000000000000001cd", + "0x00000000000000000000000000000000000000000000000000000000000001ce", + "0x00000000000000000000000000000000000000000000000000000000000001cf", + "0x00000000000000000000000000000000000000000000000000000000000001d0", + "0x00000000000000000000000000000000000000000000000000000000000001d1", + "0x00000000000000000000000000000000000000000000000000000000000001d2", + "0x00000000000000000000000000000000000000000000000000000000000001d3", + "0x00000000000000000000000000000000000000000000000000000000000001d4", + "0x00000000000000000000000000000000000000000000000000000000000001d5", + "0x00000000000000000000000000000000000000000000000000000000000001d6", + "0x00000000000000000000000000000000000000000000000000000000000001d7", + "0x00000000000000000000000000000000000000000000000000000000000001d8", + "0x00000000000000000000000000000000000000000000000000000000000001d9", + "0x00000000000000000000000000000000000000000000000000000000000001da", + "0x00000000000000000000000000000000000000000000000000000000000001db", + "0x00000000000000000000000000000000000000000000000000000000000001dc", + "0x00000000000000000000000000000000000000000000000000000000000001dd", + "0x00000000000000000000000000000000000000000000000000000000000001de", + "0x00000000000000000000000000000000000000000000000000000000000001df", + "0x00000000000000000000000000000000000000000000000000000000000001e0", + "0x00000000000000000000000000000000000000000000000000000000000001e1", + "0x00000000000000000000000000000000000000000000000000000000000001e2", + "0x00000000000000000000000000000000000000000000000000000000000001e3", + "0x00000000000000000000000000000000000000000000000000000000000001e4", + "0x00000000000000000000000000000000000000000000000000000000000001e5", + "0x00000000000000000000000000000000000000000000000000000000000001e6", + "0x00000000000000000000000000000000000000000000000000000000000001e7", + "0x00000000000000000000000000000000000000000000000000000000000001e8", + "0x00000000000000000000000000000000000000000000000000000000000001e9", + "0x00000000000000000000000000000000000000000000000000000000000001ea", + "0x00000000000000000000000000000000000000000000000000000000000001eb", + "0x00000000000000000000000000000000000000000000000000000000000001ec", + "0x00000000000000000000000000000000000000000000000000000000000001ed", + "0x00000000000000000000000000000000000000000000000000000000000001ee", + "0x00000000000000000000000000000000000000000000000000000000000001ef", + "0x00000000000000000000000000000000000000000000000000000000000001f0", + "0x00000000000000000000000000000000000000000000000000000000000001f1", + "0x00000000000000000000000000000000000000000000000000000000000001f2", + "0x00000000000000000000000000000000000000000000000000000000000001f3", + "0x00000000000000000000000000000000000000000000000000000000000001f4", + "0x00000000000000000000000000000000000000000000000000000000000001f5", + "0x00000000000000000000000000000000000000000000000000000000000001f6", + "0x00000000000000000000000000000000000000000000000000000000000001f7", + "0x00000000000000000000000000000000000000000000000000000000000001f8", + "0x00000000000000000000000000000000000000000000000000000000000001f9", + "0x00000000000000000000000000000000000000000000000000000000000001fa", + "0x00000000000000000000000000000000000000000000000000000000000001fb", + "0x00000000000000000000000000000000000000000000000000000000000001fc", + "0x00000000000000000000000000000000000000000000000000000000000001fd", + "0x00000000000000000000000000000000000000000000000000000000000001fe", + "0x00000000000000000000000000000000000000000000000000000000000001ff", + "0x0000000000000000000000000000000000000000000000000000000000000200", + "0x0000000000000000000000000000000000000000000000000000000000000201", + "0x0000000000000000000000000000000000000000000000000000000000000202", + "0x0000000000000000000000000000000000000000000000000000000000000203", + "0x0000000000000000000000000000000000000000000000000000000000000204", + "0x0000000000000000000000000000000000000000000000000000000000000205", + "0x0000000000000000000000000000000000000000000000000000000000000206", + "0x0000000000000000000000000000000000000000000000000000000000000207", + "0x0000000000000000000000000000000000000000000000000000000000000208", + "0x0000000000000000000000000000000000000000000000000000000000000209", + "0x000000000000000000000000000000000000000000000000000000000000020a", + "0x000000000000000000000000000000000000000000000000000000000000020b", + "0x000000000000000000000000000000000000000000000000000000000000020c", + "0x000000000000000000000000000000000000000000000000000000000000020d", + "0x000000000000000000000000000000000000000000000000000000000000020e", + "0x000000000000000000000000000000000000000000000000000000000000020f", + "0x0000000000000000000000000000000000000000000000000000000000000210", + "0x0000000000000000000000000000000000000000000000000000000000000211", + "0x0000000000000000000000000000000000000000000000000000000000000212", + "0x0000000000000000000000000000000000000000000000000000000000000213", + "0x0000000000000000000000000000000000000000000000000000000000000214", + "0x0000000000000000000000000000000000000000000000000000000000000215", + "0x0000000000000000000000000000000000000000000000000000000000000216", + "0x0000000000000000000000000000000000000000000000000000000000000217" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" +[inputs.previous_rollup_data.vk_data] +leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" +sibling_path = [ + "0x06c562ef63d15cc0acd1964a2f024e43902443508aae6a621dc27a31b7baa88b", + "0x0347efdf28221164a0a84418ff9c70e46ae346d7d6c07dfcb215e1c22a40e7fc", + "0x209081b049aad25416f17ba04f7a0ac6912018fc207f5e613c7790a52048574a", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", + "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", + "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ + [inputs.previous_rollup_data.vk_data.vk] + key = [ + "0x0000000000000000000000000000000000000000000000000000000000200000", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x000000000000000000000000000000550c0f7a2d48d58fb101dfaeda46f3f962", + "0x00000000000000000000000000000000000d5c9300248a652a3af8eedcade9e7", + "0x000000000000000000000000000000aa9d73084559bbbe1dc7f331b256ba4bc8", + "0x00000000000000000000000000000000000c436d39b79778d6690b080910b379", + "0x00000000000000000000000000000068c7d1152df3b409648732b0fb12ca21f5", + "0x00000000000000000000000000000000002ac9a04db607639dc2e005802b177b", + "0x00000000000000000000000000000097c9bca1c8ed944048c323248df1259ab5", + "0x000000000000000000000000000000000020fe6113eafc28e6079b88545dd936", + "0x00000000000000000000000000000029157eb7a21fe3dfe6755b714feacb4e7d", + "0x000000000000000000000000000000000007b083703e54207c33fc36ec44c290", + "0x0000000000000000000000000000008cd26684a12d6ed63d63de8a1d1004c42a", + "0x000000000000000000000000000000000019a16212d35f06deff1a955e37faf3", + "0x000000000000000000000000000000a1af8bbcdb2b5ae67563d31b3115cac629", + "0x00000000000000000000000000000000001a2758e77cd49730d7c7785208b5b9", + "0x000000000000000000000000000000aa4c5dab3bef3d6776409e93a70b7b63c2", + "0x00000000000000000000000000000000002b0d64bb2f05c37eecbe8a88b807ff", + "0x0000000000000000000000000000006626bb61f6e9e8b9d0374dc7093410affb", + "0x000000000000000000000000000000000013ac475f878d8e559f21c9c2129273", + "0x0000000000000000000000000000002aa218b0adfea10a7b4d6e645dfaa082ce", + "0x00000000000000000000000000000000002fe836e2c24fc15543168239326b2f", + "0x0000000000000000000000000000006771452a410530e3cc2ba8c999dd4d6ca6", + "0x00000000000000000000000000000000000a57451b5629b375493d9e50539eea", + "0x000000000000000000000000000000a0ec2bcba8f34f200a84a3ee462046c312", + "0x00000000000000000000000000000000000dc923160e292010d5df8e9b55e122", + "0x0000000000000000000000000000003e7100d8059587b81c8a148365817bfe3e", + "0x000000000000000000000000000000000009c6f7e91e0f6d9220e3d07f1922b7", + "0x000000000000000000000000000000b0b1977e0e4f6d65ed1a74877485c38fad", + "0x0000000000000000000000000000000000103f860e4dc32eb07f931e87b02918", + "0x0000000000000000000000000000001bcd0e4cfd963e09aa6b1f59b64aa36095", + "0x000000000000000000000000000000000018b71b673e923842aa2714375594c4", + "0x00000000000000000000000000000034d8c6727261d57760fa5dc0351eeb79c0", + "0x00000000000000000000000000000000001226360bb06fff1cee3a52c810b92a", + "0x0000000000000000000000000000007e81a34121c5e52968460f54bcbbae5036", + "0x000000000000000000000000000000000024a7a4854f1c136af2aa06dd4478d6", + "0x00000000000000000000000000000028b1e4fa8b8db8f3eaf41306ffdade9307", + "0x000000000000000000000000000000000017bde9c2f37676c8fbc6357257c4ed", + "0x0000000000000000000000000000008fa67b0fbfb4fa3e373830223b330c782c", + "0x0000000000000000000000000000000000226695c75f17d276cbec7713d0c16d", + "0x000000000000000000000000000000085e0ae534235de240c8b0e73934f2ca9f", + "0x000000000000000000000000000000000015fddd422e7c5713497bf188bb350c", + "0x000000000000000000000000000000a4b2920bee66957578257f0e845be21ce4", + "0x0000000000000000000000000000000000062f6cb6f2fbc85202e69221ae4824", + "0x0000000000000000000000000000007c888ccd9fcb94e2847cffd890c4712a4a", + "0x00000000000000000000000000000000002171dd38bd8049091d017c7b7157b6", + "0x000000000000000000000000000000c55e90fc2ac42b9095159aff856c8525b3", + "0x000000000000000000000000000000000028342b6f361194a2736fcbbe1ada12", + "0x000000000000000000000000000000b67b259442fa9809a183dd539027f281d9", + "0x0000000000000000000000000000000000006fb178299db4bbf942a97e8b8c0c", + "0x000000000000000000000000000000a8afeecceaa2ce511e101ffa567b9adc32", + "0x0000000000000000000000000000000000024ca4073fea13644a7d77bfb9f86f", + "0x000000000000000000000000000000083ff834f9b4d688458a24385d873b0f35", + "0x000000000000000000000000000000000004e86e748b16b38d32e94bb9f49d97", + "0x0000000000000000000000000000009143a2ddd2660a741fa3595ffcc3096161", + "0x0000000000000000000000000000000000219d250048463e7f72dfa47524251b", + "0x00000000000000000000000000000098c2c15f35399071e5121b56959d01303a", + "0x000000000000000000000000000000000007710df2c6be8a250cbe82c12b378a", + "0x00000000000000000000000000000089b20ab741915ffffa0227abc35eb74cb4", + "0x000000000000000000000000000000000021caf6798e72e7ea4ace4ef6426596", + "0x0000000000000000000000000000009c5d4ff5e2dbc5b3683a0d6ba91fe0232a", + "0x00000000000000000000000000000000002280e5c13d1956a6a18d0826b5bc62", + "0x0000000000000000000000000000007ecd28bf3d669f195f2027b35458be32fe", + "0x00000000000000000000000000000000001c599526ce27e1fa6abbc08ac34ba6", + "0x000000000000000000000000000000c0ed23ea24ff27be25bc6c2543b1cee030", + "0x000000000000000000000000000000000027d1508573469652712b84e60d2c83", + "0x0000000000000000000000000000001a13fd3ea1418dbe18fcbdd18ace63a28d", + "0x000000000000000000000000000000000018d380d299a5b003db2f3b92eab4d5", + "0x000000000000000000000000000000ce7aec6b40b5cb0c8dd0963512c9254612", + "0x000000000000000000000000000000000000e6b9bd57b2e87b30b7f3598e6503", + "0x000000000000000000000000000000c4dfe73cb04c97c3f9fc9155f6e0bcdce3", + "0x000000000000000000000000000000000025443362356b516898c26fe4def243", + "0x000000000000000000000000000000f0ad933904f3747e6c60da04923984fba2", + "0x00000000000000000000000000000000001b755b49b018ba2e6210cc9d9e54fe", + "0x0000000000000000000000000000007275adc764f83407bcb4c6eb649a815a5f", + "0x00000000000000000000000000000000001ac839333ab0290318f61cdb3485ee", + "0x00000000000000000000000000000067580e87deecf3f6f181ad61954791ba75", + "0x00000000000000000000000000000000001b399b72c8f73d8d5808f981312dfb", + "0x0000000000000000000000000000008d32c8c72cee12bc125898fdbfb80a313f", + "0x000000000000000000000000000000000020ef428893f22b7093beb8d50a0b2e", + "0x00000000000000000000000000000033724eeb4cfc9ed4953f8d22ea82e502fb", + "0x0000000000000000000000000000000000187cc1edf863a9d0df892e37c43144", + "0x0000000000000000000000000000006bfc703d92b3f877068f48aae71cde600d", + "0x00000000000000000000000000000000000aa3691dbfda2a74cc5e6709938794", + "0x0000000000000000000000000000007096328f196d4aa826c5b2b460e485b0d1", + "0x00000000000000000000000000000000001f3a9f9d03fcca3fac653a9d2c9870", + "0x000000000000000000000000000000cb36333bf250fecd0176958ad718a99da7", + "0x00000000000000000000000000000000002d489b73d34d163277aaf79683a0e6", + "0x0000000000000000000000000000001eac0588b677c64659495396242fbe79fa", + "0x000000000000000000000000000000000014920ac364db003504262a141987aa", + "0x000000000000000000000000000000822a280a25dcac29cf9db85f5f05c1e72c", + "0x00000000000000000000000000000000000338f417686b46d8d01b57455d2203", + "0x000000000000000000000000000000039a818ba180ed38edb514079e004bd07a", + "0x00000000000000000000000000000000002006d48e4eb1db61bb6c05bec5daca", + "0x000000000000000000000000000000928480d752f4cecfe2225b52b54efb3cb1", + "0x00000000000000000000000000000000000a883e07ef5cfc92ab83e337215d72", + "0x000000000000000000000000000000d9be571d72cf09ced6c316af27d204e99c", + "0x0000000000000000000000000000000000232f34c64548009e636cc48a6fdf47", + "0x000000000000000000000000000000e735c643e5863073e6c80e6d9cc0117017", + "0x00000000000000000000000000000000002783b00e79fce98163e925f2abd10f", + "0x0000000000000000000000000000006abc5b37edea5e9570c33e8d7a8180de7e", + "0x00000000000000000000000000000000000adc2fbebeadf9e9b9d06bff7cc396", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + "0x0000000000000000000000000000004ce9577927f4ba940e61964ce04869b7c7", + "0x00000000000000000000000000000000000c79e3dcd055e227705f88245eb9a9", + "0x000000000000000000000000000000035d63b4f5ed0e99c688482b4f742054b2", + "0x00000000000000000000000000000000001534ad0f7369d5445c642dba7e8bfb" ] + hash = "0x029af48a56af0612c869dcc518bc1b74f413e9e1f447dd8f89380451a6746b16" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ +[[inputs.previous_rollup_data]] +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] +out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" +proposed_block_header_hashes = [ + "0x0086e17997e3d6cd5b4115b91874b6e84fa71f0ced1da156353119bc41a5b457", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] - - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.constants] + vk_tree_root = "0x18a716df9395701b49b118039a99daf5882acb7d334d210ebcd308a266d566af" + protocol_contract_tree_root = "0x0199945561f283b4d3d19cefd6ce25dc1e8496c1ac0292f4d61a04cc6018f2e3" + prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] + root = "0x198028c3bad28f14ac32d104adf5d6b348807ac037c703eb88993f528b3184bf" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] + root = "0x19a2956d23fe850df5a2bad90357476e99a4f736fee7d33a97f117288a8b8f31" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000043" + timestamp = "0x000000000000000000000000000000000000000000000000000000006843210c" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x00000000000000000000000000000000000000000000000000000000000008c0" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x00000000000000000000000000000000000000000000000000000000e802a0d3" + block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000043" + timestamp = "0x000000000000000000000000000000000000000000000000000000006843210c" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x00000000000000000000000000000000000000000000000000000000000008c0" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x00000000000000000000000000000000000000000000000000000000069008c0" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x000000000000000000000000def07919db40b30353aeb0869282ace6a445b596" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator] +blob_commitments_hash_acc = "0x00e40c13cd61105681e2471aecdfce440aff4db3481dce19bd1a43dc3ddfe097" +z_acc = "0x0ca06e212eca4644df7d6de41e72e560fb406da8830cf9b5e10bc0f8e58364d8" +gamma_acc = "0x0548170342371523acb6b0d8d1ec46500fd36fae89ad4bf60076da88d8fa890a" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x127a9fb7ec8bed5d8c459abc287f2e", + "0x06da291f11b0fe9b6a7d5204255f5c", + "0x459e" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.x] + limbs = [ + "0x31f5aaa5d65ee8036d953240281c9e", + "0xc40ece6336cbae632a1970c26fa45c", + "0x8c1b5fa7d72f8f78e8c75cc47a7fcd", + "0x1028b6" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.c_acc.y] + limbs = [ + "0xf364fa7f3433075f76720ca7f93182", + "0x06693101d5d97dfacbce5ad9be57b1", + "0x78cce0aa93e7460bee28bde756c75a", + "0x078ffe" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.start_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x1d074d600e31db9536392540f86642", + "0xfdeff2d09ce448b47c3477c9123be8", + "0x1e88" ] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator] +blob_commitments_hash_acc = "0x0056508384a5308e7664a9decf31b3e0270e7f8de8ae63bc83a76507d8599235" +z_acc = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" +gamma_acc = "0x22f9e743f026498a102bb312bc96113c43fcb092338db03b1d080c351a4ec4b8" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.y_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" -] - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xe739ec2688c41ed9836fd3ba5339bd", + "0xe1c2befdaad71abc9b8f3a291da05a", + "0x3074" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc] + is_infinity = false - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] - limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.x] + limbs = [ + "0x0047e9fd18cd7fea3dbd4ef9b60375", + "0x9dad8dbb8e84e429e9ff6c1e535dcf", + "0xfe9b3261ca4408801d77da86f73138", + "0x0a1198" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.c_acc.y] + limbs = [ + "0xa1dac4abf93b81a8b0b80f09bba130", + "0xd9f62a46cb7acdc28054f8f4642277", + "0x9d24a529815528980ca5b98f51a433", + "0x16dbac" ] -[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.end_blob_accumulator.gamma_pow_acc] limbs = [ - "0x000000000000000000000000000000", - "0x000000000000000000000000000000", - "0x0000" + "0xcedb8fc8cd9d8332f92fd7c3dcae77", + "0x8385dce711d259250b31ddf972fba1", + "0x6c55" ] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] - inner = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges] +z = "0x1555fff6491955b1ee48b311479baf4e34b1643fe58f29816557a175d28b4520" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.final_blob_challenges.gamma] + limbs = [ + "0x95da7a1ea4bd8ad5b0c18f6300803a", + "0xf648159624e497ed4a2660f515f051", + "0x012b" ] [inputs.previous_rollup_data.proof] @@ -6690,128 +2158,128 @@ fields = [ [inputs.previous_rollup_data.vk_data] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x2c15a460b3f346727afbabb2d24dc170f733df9a80710421e488c9f75466c38f", - "0x2e6263cc45f5d44844d6635c67b1e190a7b7f913e65117c72146eff2a682a90b", - "0x23bb283d0b2b45895ded7cd528d814a4de4b493a15c8acd40d4e7cb43d4b419d", - "0x05118d333868e612417e9b9ce991b124b4b584ae0f146eb2d60165d7bd5afb9f", + "0x1c0e195bfba4d8b90f2bc073c788b9b40e84c66a62f7387f4dea58bc644f0f42", + "0x139de4c270219c111c92f4daf6dd93173323c55c14b7da6858b76938ebd5c879", + "0x1f4bf27c83777dcdd1375c505a5846bb460d0c3bb59ea562fb994262fbdbf00d", + "0x142550b289ab91b05b698f2d2d0c4dd0cdf85bb8d2eaeceaaf0246167097bbec", "0x17798edd8887994dbbe6b0eeff9a164f0f1c03d375b57374781c5ebe00897543", "0x2fc405eff6ed7ba9c05dc1963e5522efdc001f0070edf06408ad50166aed592f" ] [inputs.previous_rollup_data.vk_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x0000000000000000000000000000000000000000000000000000000000800000", + "0x00000000000000000000000000000000000000000000000000000000000000ec", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000040a", - "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000604db4eb35fa49f73d9bf9847da4c2794a", - "0x000000000000000000000000000000000013bdff7be51d3abd9773fb6910edfc", - "0x000000000000000000000000000000560d968c63ffd32a04a63820151c560ff7", - "0x000000000000000000000000000000000000ce7b8947ced7aaa14034ad599415", - "0x0000000000000000000000000000009b1d35ad5588ff427282ef7671a6844e04", - "0x00000000000000000000000000000000002447feb337b2d8dcd0c678ff3ab850", - "0x0000000000000000000000000000006cd997e8dc725b7307cddc80e85286b81a", - "0x00000000000000000000000000000000002baf277a1dd6600311384fa3b32197", - "0x0000000000000000000000000000006682a04a1ef072699003e7487de8d69e98", - "0x00000000000000000000000000000000002347441a1fb60b635810ad6ce9eb74", - "0x000000000000000000000000000000ad829d26c2ba430631f2a5f0863120227d", - "0x0000000000000000000000000000000000189137bffc08bde2644791248da37a", - "0x000000000000000000000000000000e4635bd390719528329c8cc09f4c2401fb", - "0x00000000000000000000000000000000000914766b529b8b1545a4d397ad5c1d", - "0x0000000000000000000000000000004e7a5f7401674eecfd18f6dff4d8771536", - "0x00000000000000000000000000000000000856d8c3a021bb6bba590f590a92c2", - "0x000000000000000000000000000000816c972cc6e12405d8e6afd7f8d82ecd1e", - "0x0000000000000000000000000000000000074969da7b7406716102be558fe679", - "0x000000000000000000000000000000cad823dd389c27e48a897c6444c2400dca", - "0x000000000000000000000000000000000020e5259b55223f566158388cd0bedc", - "0x000000000000000000000000000000374ba069f1947b161a5ab4eb51d502b20f", - "0x000000000000000000000000000000000010a26e66325c0a3711e7f0d3de9925", - "0x0000000000000000000000000000007eb30d9eadf279f30c491a502e1fb8702e", - "0x000000000000000000000000000000000001f620b20da0b7107aad711925c925", - "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", - "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", - "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", - "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", - "0x000000000000000000000000000000d779e4f53da96163c2a104260ff067aaca", - "0x0000000000000000000000000000000000220ee7d17b840a95c8385481c0e3af", - "0x0000000000000000000000000000009c6dfbbe5e8b89fa7842cccfcc4b24069f", - "0x00000000000000000000000000000000000b3d8dee0f4695d143e46eeacf1fef", - "0x000000000000000000000000000000e58de982831390e4f4fc0d0526385aa320", - "0x000000000000000000000000000000000002a21635ea4cfedfbcd5faf8335ce7", - "0x000000000000000000000000000000fa0a03f49d2ba2475b6a2e5214e26a8515", - "0x00000000000000000000000000000000000e3b53875682829a0b6f1e6bc18d79", - "0x000000000000000000000000000000a04a8f0ad1d4d28b707adc67f19c350752", - "0x00000000000000000000000000000000001ddd69157786f00cabbaf591215deb", - "0x0000000000000000000000000000004972ebf81388e67e8c65df463d677e9cb7", - "0x000000000000000000000000000000000023efcf2b5b38721e5d18909e61b23c", - "0x0000000000000000000000000000001fe4afb5afa89f9b9786b0619a181ba52b", - "0x0000000000000000000000000000000000119599de83b8d11f99b30fbe00d9bd", - "0x000000000000000000000000000000aa116befb48f10ca32c569d7ef0a416dea", - "0x000000000000000000000000000000000010deea6149f9626e061c3d9bae444a", - "0x0000000000000000000000000000002fa6c45aa2d4d9f211ce7de237e6e371bc", - "0x0000000000000000000000000000000000085501312a0251ca7af2273adf7589", - "0x000000000000000000000000000000f2ff5fab3eab6ba101a4a0d3bdc6b090b9", - "0x00000000000000000000000000000000000c95ef5d99f441d5e99a53fe551acb", - "0x000000000000000000000000000000efc4da5db53ef1bf85a46ff1349234956c", - "0x00000000000000000000000000000000001ae3aa7c100b2d02eb2bc003e3a4e8", - "0x000000000000000000000000000000bcd5c4f546e5f8a6cbaca84ae85a1d1cf9", - "0x00000000000000000000000000000000002bfd3ba12a4bb7e4f4a7c7f80d4afb", - "0x00000000000000000000000000000040e2d0dd1401be475fd89735ba2c3da259", - "0x00000000000000000000000000000000000800870be3d900c5a674dc76c1dc30", - "0x000000000000000000000000000000e43a5ac5382128ee89a58ca0e39a986991", - "0x0000000000000000000000000000000000088db526b9a8c41e60afe16f7917fc", - "0x000000000000000000000000000000c454925162ca4aa67a393b4daebe937ede", - "0x0000000000000000000000000000000000286569a2f9b4b847a4a15016a86070", - "0x000000000000000000000000000000fb036dd09f2cccacff00e8c05c750e7b9c", - "0x00000000000000000000000000000000000235dd10a25a2c7721946bc316fd88", - "0x000000000000000000000000000000badee2004bce6fab1719465da95034d3f4", - "0x00000000000000000000000000000000002425612e4a4f4b323d11e9113390f9", - "0x00000000000000000000000000000093f1b06d0fb7759d837f8389b0be35e152", - "0x000000000000000000000000000000000016e9ad1ab11f0333a2fc2730bff5b1", - "0x00000000000000000000000000000086d3e5cc692dba4a02884822f70fa15843", - "0x00000000000000000000000000000000000d6292c39f0aa57e8c7537823eb11f", - "0x0000000000000000000000000000007285ecbf639aa082c72b4f04de5b4ed81f", - "0x0000000000000000000000000000000000278cfabe8ae1d626fff281616b75ba", - "0x000000000000000000000000000000f19d404432af369997b81c225284f85bfc", - "0x000000000000000000000000000000000024ed1d357f726fb577ac805cef7e17", - "0x000000000000000000000000000000ed5df02aa9d468dd0134e7ba8441ed6f4c", - "0x00000000000000000000000000000000001e480018f281f6fbea9ff092f1b2fc", - "0x0000000000000000000000000000006e46103b3747edbed26818a3f1ad475dbe", - "0x000000000000000000000000000000000016371e759535195aad4691f045278b", - "0x000000000000000000000000000000091cccec2bb1de89ead52badfdfc36ca01", - "0x00000000000000000000000000000000000a2dff630479a0644a03765438b612", - "0x0000000000000000000000000000006382a28661b801e5b3d64666d955d1b001", - "0x00000000000000000000000000000000000c465492ba9052d42e1284b82cbbae", - "0x0000000000000000000000000000005a430e375a270f0ccaf7888d85ff7221c3", - "0x00000000000000000000000000000000000c8af91a138e46a9537435ebb01525", - "0x000000000000000000000000000000850c8dc798ea3cb3bbcda5cd4722b80ce1", - "0x000000000000000000000000000000000011dbf7e863e0d151baf8de62bfc943", - "0x0000000000000000000000000000009c66211cd25f530ff802cba88a864e61bd", - "0x000000000000000000000000000000000007592d0832ac5fb7161c91429c85ee", - "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", - "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", - "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", - "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", - "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", - "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", - "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", - "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", - "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", - "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", - "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", - "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", - "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", - "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", - "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", - "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000049de8a377fc35facb6876cf266747b47e2", + "0x00000000000000000000000000000000001ec90991da5204f468b982ec1d8d9e", + "0x000000000000000000000000000000c6273aafc1431d46923c9f482abe91f6d3", + "0x00000000000000000000000000000000002293268660e7e37aaa7b91f70b1d25", + "0x0000000000000000000000000000001e2d223be523fce57275eadfaf65f8a296", + "0x00000000000000000000000000000000002bb2ff5804b743633a467c31eb2358", + "0x000000000000000000000000000000185ab41f11575ff9fe8b32abdfe3c730fb", + "0x00000000000000000000000000000000001e3e092284ac3e391cfef116ec0fcb", + "0x0000000000000000000000000000000756e2f2dbba158a083941bf8a5d689011", + "0x000000000000000000000000000000000025578690523981b0f0e4aacd337196", + "0x0000000000000000000000000000003fea39d3349c8aa6e3b2df72eb70df9977", + "0x000000000000000000000000000000000001afb851a052b2dddf9d4637640d35", + "0x000000000000000000000000000000dccb17c830af12f8c6ba42fb6ace898a39", + "0x000000000000000000000000000000000012e53d9cb718285054ae5d61953b19", + "0x000000000000000000000000000000aa9f78e0a172ce7869e1003c0297960142", + "0x000000000000000000000000000000000017c1955902b33bee70437571b6dbd3", + "0x000000000000000000000000000000e282552921b55589e4a86a0736719598af", + "0x00000000000000000000000000000000001309d9109fdf99d23713790ad9cfe1", + "0x00000000000000000000000000000077a068e615b0e419705d2cae19e7d4a86b", + "0x00000000000000000000000000000000000a86b8d14fd3a81467947d2dd1a484", + "0x000000000000000000000000000000a9873bdc481b1f1273783d007b4e8e8091", + "0x0000000000000000000000000000000000191242c57508648f11b2b420cde679", + "0x00000000000000000000000000000070d6bb2eaeb407ede88c67adfbbece6a75", + "0x0000000000000000000000000000000000110ca911f1acb10e44feb19d85dc7f", + "0x0000000000000000000000000000009b003b48720929f4a3dc740006df03a9fd", + "0x0000000000000000000000000000000000094452f469870d1d083e6035cac4f4", + "0x0000000000000000000000000000001fc5525b6dc3a1de76bf5963fcd944f856", + "0x00000000000000000000000000000000002e0cd9de1f897c332d94a00a65bb80", + "0x00000000000000000000000000000054c1f784b8bc7482604f60513528feb400", + "0x0000000000000000000000000000000000027c92d0024bbbde32bea10ab15eea", + "0x000000000000000000000000000000bf36e96293c3b6321fac5c93302e3f4ae0", + "0x0000000000000000000000000000000000146ff6bc522e19649529ee5f6e0a8c", + "0x000000000000000000000000000000b629382ac46d9ca8b938827e513c166413", + "0x0000000000000000000000000000000000256d5bba9e2e8b5357cf30360e40a3", + "0x000000000000000000000000000000e411a642b1cb24d78618b738f1ff63ce46", + "0x000000000000000000000000000000000019ea477397eed92687a451cc2140f5", + "0x000000000000000000000000000000d74a3d0734f92399c7cdef21a8261982a7", + "0x000000000000000000000000000000000020fa5e38a154b8839242481f517a69", + "0x000000000000000000000000000000e82fde6219aeadf0300a9d577fb847b80f", + "0x000000000000000000000000000000000028b09918bdc39dd0ecc739cf554951", + "0x000000000000000000000000000000f52339a86b27cca14ba43662ae62dc4c00", + "0x000000000000000000000000000000000018821a2f573f781dc158b67abf7194", + "0x000000000000000000000000000000ec230d90bac6e6b6d4d0cf3fb2d21d6048", + "0x00000000000000000000000000000000000dd86e1f995f17ea6b006fbd09a7b2", + "0x0000000000000000000000000000000f2616962cd413ead6a5f223f478b35260", + "0x00000000000000000000000000000000001d987e609de86b149b20c23844066f", + "0x000000000000000000000000000000b88f04a07edc85dafb95202eade6179cfb", + "0x00000000000000000000000000000000002cf2bedef1ce3a86d297c2b3784e30", + "0x000000000000000000000000000000cfc95ebd3c60d92cfd1373365bc735a792", + "0x00000000000000000000000000000000002ed2bec94afbb4079c70808d4ea39a", + "0x0000000000000000000000000000001e0ec4c26408207d1cce89c005ddcecd8a", + "0x00000000000000000000000000000000002182dbd33cef651bd2e5105736d3da", + "0x000000000000000000000000000000b232f30ec35560241a31641014cdde092c", + "0x000000000000000000000000000000000000f535aafab6efbf16b7df67144654", + "0x0000000000000000000000000000000ea0844ac6c31fe204b6003b9c2ae01e44", + "0x000000000000000000000000000000000007c9468665883fec6febc60f99ba52", + "0x000000000000000000000000000000ee4a333feee1cc86354a5bd15ad10e3ff5", + "0x00000000000000000000000000000000000e5d1cf4d87aad6640f5733dbd3eb7", + "0x000000000000000000000000000000826af542b1367043d45dac768ca9d6f286", + "0x00000000000000000000000000000000002c4ab437656fd1b6cd86e8f97df38e", + "0x0000000000000000000000000000003c26e6ed653639ce26b20267ed843632f0", + "0x00000000000000000000000000000000001a5c3906dd0f2e063131e86031d1ff", + "0x00000000000000000000000000000011339ae7a8eddd179823f58a7c052870d8", + "0x00000000000000000000000000000000000da95b778c75427bd8661fe9b2a5c8", + "0x0000000000000000000000000000007e266d99c9d510b9a1a4953e60241bfa9c", + "0x000000000000000000000000000000000008476857d0a028c020cf1dba476afe", + "0x000000000000000000000000000000bb49801554bbb6b794af3a4478008bb6a9", + "0x00000000000000000000000000000000002aaa3b973ee6688e2776c6704f3f22", + "0x000000000000000000000000000000550be1d427d87415e8b1d5e5e57b7bffc4", + "0x000000000000000000000000000000000009c40f4077d18946c1d9bb3e6d0643", + "0x000000000000000000000000000000b101b452efb9d45fa3802cc8b221e5617f", + "0x00000000000000000000000000000000000a6ecce2dc8e7baaab7c5c5e029a02", + "0x0000000000000000000000000000006c436ce42fc60fa707e6e2a111948d05d7", + "0x000000000000000000000000000000000004784c17b96fe55c533481e8987e9f", + "0x000000000000000000000000000000b671af3053f35b77c6eab128445ebdacc3", + "0x0000000000000000000000000000000000097c90e40ee8b14873362e6c471907", + "0x00000000000000000000000000000016fc779cc25045f34b2c0dcab039fde72e", + "0x0000000000000000000000000000000000267316d8def3dad67be00fbd6ebb50", + "0x00000000000000000000000000000097ebf396d5bff739489e67a3efc2a93089", + "0x000000000000000000000000000000000003f54e559eae753fdacee7436ee09f", + "0x000000000000000000000000000000e04abdeffbdb277e9c356ef7ed69b519e7", + "0x00000000000000000000000000000000001752698fb2bca18c30b80a2058be1f", + "0x000000000000000000000000000000ded0ded169a2c5842d32026f725643e0e8", + "0x000000000000000000000000000000000008459737e156bf51b569f0cbe831b9", + "0x0000000000000000000000000000002efaca4d96d128cd16f053120bc300398c", + "0x000000000000000000000000000000000018b4165f92668f57edfc78be6db828", + "0x000000000000000000000000000000a312930706e419ed9153f698f593f95349", + "0x00000000000000000000000000000000002b48b8992ab278189e5e11a66d35ed", + "0x00000000000000000000000000000074807de886fd1f5dd20e599e83e68390c0", + "0x00000000000000000000000000000000001f6e15f6020331610636978ea44d6a", + "0x0000000000000000000000000000002adf31f83a70ac2563b07991988a962565", + "0x000000000000000000000000000000000019b3eb6c9110dc9749e778bae6148b", + "0x0000000000000000000000000000004944f3d838efd7aebe78def1c3e6d6db73", + "0x00000000000000000000000000000000001d0bbf8e0047e999b4d6fbb2a7db69", + "0x000000000000000000000000000000034b46ea26c1ff481588aa7a1d4cac1c41", + "0x0000000000000000000000000000000000160c646b20c81008eae87ef9572e9c", + "0x000000000000000000000000000000c99e19d3d7a5219ef57b6c2249dd88da8c", + "0x000000000000000000000000000000000022ed6806d8b1ee8752a4392ead3e23", + "0x000000000000000000000000000000d92c32591db729a56e147b3f85cff36c4f", + "0x00000000000000000000000000000000002337bd80484bec634ae68e617c5fdd", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000f7a456c9fd2a06f094e2c6196bd0632331", - "0x000000000000000000000000000000000023f5b0d82ff583c9904c2e87da2840", - "0x00000000000000000000000000000085f9c7733fb65988b5b6bb0ad2a20203e7", - "0x00000000000000000000000000000000002ab3c95c0603eec9783e23f41fe320" + "0x0000000000000000000000000000002b638e616b50f7cac0188b36e8f0e4f642", + "0x000000000000000000000000000000000028d5d5c147eeca9a004db5429ebe51", + "0x00000000000000000000000000000007b7551a511d202b1e7a3a49e0082e3f4e", + "0x00000000000000000000000000000000000f2c10970a75d230415079bb1d0439" ] - hash = "0x25fd6308a2ca3341d249ad96851c14b8948c99a7c4c6e3a0f9fbe10aefb5d834" + hash = "0x2761f50950d3c726462c3a286733e8554c72961e67be9ec983f225a2bf016697" diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 40f4b5c81787..4cfde69a78bd 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -227,8 +227,21 @@ pub global GLOBAL_VARIABLES_LENGTH: u32 = 7 + GAS_FEES_LENGTH; pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2; pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES: u32 = 36; pub global SPONGE_BLOB_LENGTH: u32 = 11; +pub global BLS12_FR_LIMBS: u32 = 3; // TODO(#14646): get this from bignum +pub global BLS12_FQ_LIMBS: u32 = 4; // TODO(#14646): get this from bignum +pub global BLS12_POINT: u32 = 2 * BLS12_FQ_LIMBS + 1; // TODO(#14646): reduce num fields needed here? +pub global BLS12_POINT_COMPRESSED_BYTES: u32 = 48; // TODO(#14646): get this from bignum +pub global BLOB_ACCUMULATOR_PUBLIC_INPUTS: u32 = 3 /* v_acc, z_acc, and gamma_acc */ + + 2 * BLS12_FR_LIMBS /* y_acc and gamma^i */ + + BLS12_POINT /* c_acc */; +pub global FINAL_BLOB_ACCUMULATOR_PUBLIC_INPUTS: u32 = 1 /* blob_commitments_hash */ + + 1 /* z */ + + BLS12_FR_LIMBS /* y */ + + 2 /* c */; +pub global BLOCK_BLOB_PUBLIC_INPUTS: u32 = 2 * BLOB_ACCUMULATOR_PUBLIC_INPUTS /* start and end accumulators */ + + 1 /* z */ + + BLS12_FR_LIMBS /* gamma */; pub global BLOB_PUBLIC_INPUTS: u32 = 6; -pub global BLOB_PUBLIC_INPUTS_BYTES: u32 = 112; // = commitment (48) + z (32) + y (32) pub global L1_TO_L2_MESSAGE_LENGTH: u32 = 6; pub global L2_TO_L1_MESSAGE_LENGTH: u32 = 1 /* recipient */ + 1 /* content */; pub global COUNTED_L2_TO_L1_MESSAGE_LENGTH: u32 = L2_TO_L1_MESSAGE_LENGTH + 1; @@ -321,8 +334,7 @@ pub global PROPOSED_BLOCK_HEADER_LENGTH_BYTES: u32 = (PROPOSED_BLOCK_HEADER_LENG + 8 /* timestamp */ + 20 /* coinbase */ + 16 /* gas_fees.fee_per_da_gas */ - + 16 /* gas_fees.fee_per_l2_gas */ -; + + 16 /* gas_fees.fee_per_l2_gas */; pub global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u32 = CALL_CONTEXT_LENGTH + 4 + MAX_BLOCK_NUMBER_LENGTH @@ -465,7 +477,7 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = EPOCH_CONSTANT_ + 1 /* out_hash */ + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH - + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; + + BLOCK_BLOB_PUBLIC_INPUTS /* blob_public_inputs */; pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 1 /* previous_archive_root */ + 1 /* end_archive_root */ + 1 /* chain_id */ @@ -475,7 +487,7 @@ pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 1 /* previous_archive_root */ + 1 /* prover_id */ + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH /* fees */ - + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; + + FINAL_BLOB_ACCUMULATOR_PUBLIC_INPUTS /* blob_public_inputs */; pub global NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NOTE_HASHES_PER_TX; pub global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NULLIFIERS_PER_TX; pub global PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: u32 = diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr index 5f396de8d1c6..ae2a9c6acfa0 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr @@ -34,6 +34,18 @@ pub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field { low + high * v } +// TODO: This currently only exists to aid point compression in compress_to_blob_commitment(). +// Once compression is part of BigCurve it can either be removed or optimised to be used elsewhere. +pub fn byte_to_bits_be(byte: u8) -> [u1; 8] { + let mut mut_byte = byte; + let mut bits: [u1; 8] = [0; 8]; + for i in 0..8 { + bits[7 - i] = (mut_byte & 1) as u1; + mut_byte >>= 1; + } + bits +} + // TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports pub fn full_field_less_than(lhs: Field, rhs: Field) -> bool { lhs.lt(rhs) diff --git a/playground/vite.config.ts b/playground/vite.config.ts index e0d100b8c856..f88def75cd0f 100644 --- a/playground/vite.config.ts +++ b/playground/vite.config.ts @@ -61,7 +61,8 @@ export default defineConfig(({ mode }) => { bundlesize({ // Bump log: // - AD: bumped from 1600 => 1680 as we now have a 20kb msgpack lib in bb.js and other logic got us 50kb higher, adding some wiggle room. - limits: [{ name: 'assets/index-*', limit: '1700kB' }], + // - MW: bumped from 1700 => 1750 after adding the noble curves pkg to foundation required for blob batching calculations. + limits: [{ name: 'assets/index-*', limit: '1750kB' }], }), ], define: { diff --git a/yarn-project/blob-lib/src/blob.test.ts b/yarn-project/blob-lib/src/blob.test.ts index fd67338b8fb4..24403dbe6822 100644 --- a/yarn-project/blob-lib/src/blob.test.ts +++ b/yarn-project/blob-lib/src/blob.test.ts @@ -7,7 +7,7 @@ import type { Blob as BlobBuffer, Bytes48, KZGProof } from 'c-kzg'; import { Blob } from './index.js'; import { makeEncodedBlob } from './testing.js'; -// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +// Importing directly from 'c-kzg' does not work: const { BYTES_PER_BLOB, diff --git a/yarn-project/blob-lib/src/blob.ts b/yarn-project/blob-lib/src/blob.ts index 4c7b0ad2088d..5643b5f2d491 100644 --- a/yarn-project/blob-lib/src/blob.ts +++ b/yarn-project/blob-lib/src/blob.ts @@ -2,7 +2,7 @@ import { poseidon2Hash, sha256 } from '@aztec/foundation/crypto'; import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; -// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +// Importing directly from 'c-kzg' does not work: import cKzg from 'c-kzg'; import type { Blob as BlobBuffer } from 'c-kzg'; @@ -301,6 +301,18 @@ export class Blob { return `0x${buf.toString('hex')}`; } + static getPrefixedEthBlobCommitments(blobs: Blob[]): `0x${string}` { + let buf = Buffer.alloc(0); + blobs.forEach(blob => { + buf = Buffer.concat([buf, blob.commitment]); + }); + // For multiple blobs, we prefix the number of blobs: + const lenBuf = Buffer.alloc(1); + lenBuf.writeUint8(blobs.length); + buf = Buffer.concat([lenBuf, buf]); + return `0x${buf.toString('hex')}`; + } + static getViemKzgInstance() { return { blobToKzgCommitment: cKzg.blobToKzgCommitment, @@ -310,6 +322,8 @@ export class Blob { // Returns as many blobs as we require to broadcast the given fields // Assumes we share the fields hash between all blobs + // TODO(MW): Rename to more accurate getBlobsPerBlock() - the items here share a fields hash, + // which can only be done for one block because the hash is calculated in block root. static async getBlobs(fields: Fr[]): Promise { const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1); const multiBlobFieldsHash = await poseidon2Hash(fields); diff --git a/yarn-project/blob-lib/src/blob_batching.test.ts b/yarn-project/blob-lib/src/blob_batching.test.ts new file mode 100644 index 000000000000..24ad6664cc50 --- /dev/null +++ b/yarn-project/blob-lib/src/blob_batching.test.ts @@ -0,0 +1,186 @@ +import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB } from '@aztec/constants'; +import { fromHex } from '@aztec/foundation/bigint-buffer'; +import { poseidon2Hash, randomBigInt, sha256ToField } from '@aztec/foundation/crypto'; +import { BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; +import { fileURLToPath } from '@aztec/foundation/url'; + +import cKzg from 'c-kzg'; +import { readFileSync } from 'fs'; +import { dirname, resolve } from 'path'; + +import { BatchedBlob, Blob } from './index.js'; + +// TODO(MW): Remove below file and test? Only required to ensure commiting and compression are correct. +const trustedSetup = JSON.parse( + readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), 'trusted_setup_bit_reversed.json')).toString(), +); + +// Importing directly from 'c-kzg' does not work: +const { FIELD_ELEMENTS_PER_BLOB, computeKzgProof, loadTrustedSetup, verifyKzgProof } = cKzg; + +try { + loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +describe('blob', () => { + it.each([10, 100, 400])('our BLS library should correctly commit to a blob of %p items', async size => { + const blobItems: Fr[] = Array(size).fill(new Fr(size + 1)); + const ourBlob = await Blob.fromFields(blobItems); + + const point = BLS12Point.decompress(ourBlob.commitment); + + // Double check we correctly decompress the commitment + const recompressed = point.compress(); + expect(recompressed.equals(ourBlob.commitment)).toBeTruthy(); + + let commitment = BLS12Point.ZERO; + const setupG1Points: BLS12Point[] = trustedSetup['g1_lagrange_bit_reversed'] + .slice(0, size) + .map((s: string) => BLS12Point.decompress(fromHex(s))); + + setupG1Points.forEach((p, i) => { + commitment = commitment.add(p.mul(BLS12Fr.fromBN254Fr(blobItems[i]))); + }); + + expect(commitment.equals(point)).toBeTruthy(); + }); + + it('should construct and verify a batched blob of 400 items', async () => { + // Initialise 400 fields. This test shows that a single blob works with batching methods. + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching.nr -> test_400_batched + const blobItems = Array(400).fill(new Fr(3)); + const blobs = await Blob.getBlobs(blobItems); + + // Challenge for the final opening (z) + const zis = blobs.map(b => b.challengeZ); + const finalZ = zis[0]; + + // 'Batched' commitment + const commitments = blobs.map(b => BLS12Point.decompress(b.commitment)); + + // 'Batched' evaluation + const proofObjects = blobs.map(b => computeKzgProof(b.data, finalZ.toBuffer())); + const evalYs = proofObjects.map(p => BLS12Fr.fromBuffer(Buffer.from(p[1]))); + const qs = proofObjects.map(p => BLS12Point.decompress(Buffer.from(p[0]))); + + // Challenge gamma + const evalYsToBLSBignum = evalYs.map(y => y.toNoirBigNum()); + const hashedEvals = await Promise.all(evalYsToBLSBignum.map(e => poseidon2Hash(e.limbs.map(Fr.fromHexString)))); + const finalGamma = BLS12Fr.fromBN254Fr(await poseidon2Hash([hashedEvals[0], zis[0]])); + + let batchedC = BLS12Point.ZERO; + let batchedQ = BLS12Point.ZERO; + let finalY = BLS12Fr.ZERO; + let powGamma = new BLS12Fr(1n); // Since we start at gamma^0 = 1 + let finalBlobCommitmentsHash: Buffer = Buffer.alloc(0); + for (let i = 0; i < blobs.length; i++) { + const cOperand = commitments[i].mul(powGamma); + const yOperand = evalYs[i].mul(powGamma); + const qOperand = qs[i].mul(powGamma); + batchedC = batchedC.add(cOperand); + batchedQ = batchedQ.add(qOperand); + finalY = finalY.add(yOperand); + powGamma = powGamma.mul(finalGamma); + finalBlobCommitmentsHash = sha256ToField([finalBlobCommitmentsHash, blobs[i].commitment]).toBuffer(); + } + + expect(batchedC.equals(commitments[0])).toBeTruthy(); + expect(finalY.equals(evalYs[0])).toBeTruthy(); + expect(finalBlobCommitmentsHash.equals(sha256ToField([blobs[0].commitment]).toBuffer())).toBeTruthy(); + + const batchedBlob = await BatchedBlob.batch(blobs); + + expect(batchedC.equals(batchedBlob.commitment)).toBeTruthy(); + expect(batchedQ.equals(batchedBlob.q)).toBeTruthy(); + expect(finalZ.equals(batchedBlob.z)).toBeTruthy(); + expect(finalY.equals(batchedBlob.y)).toBeTruthy(); + expect(finalBlobCommitmentsHash.equals(batchedBlob.blobCommitmentsHash.toBuffer())).toBeTruthy(); + + const isValid = verifyKzgProof(batchedC.compress(), finalZ.toBuffer(), finalY.toBuffer(), batchedQ.compress()); + expect(isValid).toBe(true); + }); + + it('should construct and verify a batch of 3 full blobs', async () => { + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching.nr -> test_full_blobs_batched + // Initialise enough fields to require 3 blobs + const items = [new Fr(3), new Fr(4), new Fr(5)].map(f => + new Array(FIELDS_PER_BLOB).fill(f).map((elt, i) => elt.mul(new Fr(i + 1))), + ); + const blobs = await Blob.getBlobs(items.flat()); + + // Challenge for the final opening (z) + const zis = blobs.map(b => b.challengeZ); + const finalZ = await poseidon2Hash([await poseidon2Hash([zis[0], zis[1]]), zis[2]]); + + // Batched commitment + const commitments = blobs.map(b => BLS12Point.decompress(b.commitment)); + + // Batched evaluation + // NB: we share the same finalZ between blobs + const proofObjects = blobs.map(b => computeKzgProof(b.data, finalZ.toBuffer())); + const evalYs = proofObjects.map(p => BLS12Fr.fromBuffer(Buffer.from(p[1]))); + const qs = proofObjects.map(p => BLS12Point.decompress(Buffer.from(p[0]))); + + // Challenge gamma + const evalYsToBLSBignum = evalYs.map(y => y.toNoirBigNum()); + const hashedEvals = await Promise.all(evalYsToBLSBignum.map(e => poseidon2Hash(e.limbs.map(Fr.fromHexString)))); + const finalGamma = BLS12Fr.fromBN254Fr( + await poseidon2Hash([ + await poseidon2Hash([await poseidon2Hash([hashedEvals[0], hashedEvals[1]]), hashedEvals[2]]), + finalZ, + ]), + ); + + let batchedC = BLS12Point.ZERO; + let batchedQ = BLS12Point.ZERO; + let finalY = BLS12Fr.ZERO; + let powGamma = new BLS12Fr(1n); // Since we start at gamma^0 = 1 + let finalBlobCommitmentsHash: Buffer = Buffer.alloc(0); + for (let i = 0; i < 3; i++) { + const cOperand = commitments[i].mul(powGamma); + const yOperand = evalYs[i].mul(powGamma); + const qOperand = qs[i].mul(powGamma); + batchedC = batchedC.add(cOperand); + batchedQ = batchedQ.add(qOperand); + finalY = finalY.add(yOperand); + powGamma = powGamma.mul(finalGamma); + finalBlobCommitmentsHash = sha256ToField([finalBlobCommitmentsHash, blobs[i].commitment]).toBuffer(); + } + + const batchedBlob = await BatchedBlob.batch(blobs); + + expect(batchedC.equals(batchedBlob.commitment)).toBeTruthy(); + expect(batchedQ.equals(batchedBlob.q)).toBeTruthy(); + expect(finalZ.equals(batchedBlob.z)).toBeTruthy(); + expect(finalY.equals(batchedBlob.y)).toBeTruthy(); + expect(finalBlobCommitmentsHash.equals(batchedBlob.blobCommitmentsHash.toBuffer())).toBeTruthy(); + + const isValid = verifyKzgProof(batchedC.compress(), finalZ.toBuffer(), finalY.toBuffer(), batchedQ.compress()); + expect(isValid).toBe(true); + }); + + it.each([ + 3, 5, 10, + // 32 <- NB Full 32 blocks currently takes around 30s to fully batch + ])('should construct and verify a batch of blobs over %p blocks', async blocks => { + const items = new Array(FIELD_ELEMENTS_PER_BLOB * blocks * BLOBS_PER_BLOCK) + .fill(Fr.ZERO) + .map((_, i) => new Fr(BigInt(i) + randomBigInt(120n))); + + const blobs = []; + for (let i = 0; i < blocks; i++) { + const start = i * FIELD_ELEMENTS_PER_BLOB * BLOBS_PER_BLOCK; + blobs.push(...(await Blob.getBlobs(items.slice(start, start + FIELD_ELEMENTS_PER_BLOB * BLOBS_PER_BLOCK)))); + } + // BatchedBlob.batch() performs a verification check: + await BatchedBlob.batch(blobs); + }); +}); diff --git a/yarn-project/blob-lib/src/blob_batching.ts b/yarn-project/blob-lib/src/blob_batching.ts new file mode 100644 index 000000000000..2370b1b92fbb --- /dev/null +++ b/yarn-project/blob-lib/src/blob_batching.ts @@ -0,0 +1,381 @@ +import { AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_BLOCK } from '@aztec/constants'; +import { poseidon2Hash, sha256, sha256ToField } from '@aztec/foundation/crypto'; +import { BLS12Field, BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; +import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; + +// Importing directly from 'c-kzg' does not work: +import cKzg from 'c-kzg'; + +import { Blob, VERSIONED_HASH_VERSION_KZG } from './blob.js'; +import { BlobAccumulatorPublicInputs, FinalBlobAccumulatorPublicInputs } from './blob_batching_public_inputs.js'; + +const { computeKzgProof, verifyKzgProof } = cKzg; + +/** + * A class to create, manage, and prove batched EVM blobs. + */ +export class BatchedBlob { + constructor( + /** Hash of Cs (to link to L1 blob hashes). */ + public readonly blobCommitmentsHash: Fr, + /** Challenge point z such that p_i(z) = y_i. */ + public readonly z: Fr, + /** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */ + public readonly y: BLS12Fr, + /** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */ + public readonly commitment: BLS12Point, + /** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */ + public readonly q: BLS12Point, + ) {} + + /** + * Get the final batched opening proof from multiple blobs. + * + * TODO(MW): Using the old Blob struct means there are ignored values (e.g. blob.evaluationY, because we now evaluate at shared z). + * When switching to batching, create new class w/o useless values. + * + * @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated + * beforehand from ALL blobs. + * + * @returns A batched blob. + */ + static async batch(blobs: Blob[]): Promise { + const numBlobs = blobs.length; + if (numBlobs > BLOBS_PER_BLOCK * AZTEC_MAX_EPOCH_DURATION) { + throw new Error( + `Too many blobs (${numBlobs}) sent to batch(). The maximum is ${BLOBS_PER_BLOCK * AZTEC_MAX_EPOCH_DURATION}.`, + ); + } + // Precalculate the values (z and gamma) and initialize the accumulator: + let acc = await this.newAccumulator(blobs); + // Now we can create a multi opening proof of all input blobs: + acc = await acc.accumulateBlobs(blobs); + return await acc.finalize(); + } + + /** + * Returns an empty BatchedBlobAccumulator with precomputed challenges from all blobs in the epoch. + * @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated + * beforehand from ALL blobs. + */ + static async newAccumulator(blobs: Blob[]): Promise { + const finalBlobChallenges = await this.precomputeBatchedBlobChallenges(blobs); + return BatchedBlobAccumulator.newWithChallenges(finalBlobChallenges); + } + + /** + * Gets the final challenges based on all blobs and their elements to perform a multi opening proof. + * Used in BatchedBlobAccumulator as 'finalZ' and finalGamma': + * - z = H(...H(H(z_0, z_1) z_2)..z_n) + * - where z_i = H(H(fields of blob_i), C_i) = Blob.challengeZ, + * - used such that p_i(z) = y_i = Blob.evaluationY for all n blob polynomials p_i(). + * - gamma = H(H(...H(H(y_0, y_1) y_2)..y_n), z) + * - used such that y = sum_i { gamma^i * y_i }, and C = sum_i { gamma^i * C_i }, for all blob evaluations y_i (see above) and commitments C_i. + * @returns Challenges z and gamma. + */ + static async precomputeBatchedBlobChallenges(blobs: Blob[]): Promise { + // We need to precompute the final challenge values to evaluate the blobs. + let z = blobs[0].challengeZ; + // We start at i = 1, because z is initialised as the first blob's challenge. + for (let i = 1; i < blobs.length; i++) { + z = await poseidon2Hash([z, blobs[i].challengeZ]); + } + // Now we have a shared challenge for all blobs, evaluate them... + const proofObjects = blobs.map(b => computeKzgProof(b.data, z.toBuffer())); + const evaluations = proofObjects.map(([_, evaluation]) => BLS12Fr.fromBuffer(Buffer.from(evaluation))); + // ...and find the challenge for the linear combination of blobs. + let gamma = await hashNoirBigNumLimbs(evaluations[0]); + // We start at i = 1, because gamma is initialised as the first blob's evaluation. + for (let i = 1; i < blobs.length; i++) { + gamma = await poseidon2Hash([gamma, await hashNoirBigNumLimbs(evaluations[i])]); + } + gamma = await poseidon2Hash([gamma, z]); + + return new FinalBlobBatchingChallenges(z, BLS12Fr.fromBN254Fr(gamma)); + } + + static async precomputeEmptyBatchedBlobChallenges(): Promise { + const blobs = [await Blob.fromFields([])]; + // We need to precompute the final challenge values to evaluate the blobs. + const z = blobs[0].challengeZ; + // Now we have a shared challenge for all blobs, evaluate them... + const proofObjects = blobs.map(b => computeKzgProof(b.data, z.toBuffer())); + const evaluations = proofObjects.map(([_, evaluation]) => BLS12Fr.fromBuffer(Buffer.from(evaluation))); + // ...and find the challenge for the linear combination of blobs. + let gamma = await hashNoirBigNumLimbs(evaluations[0]); + gamma = await poseidon2Hash([gamma, z]); + + return new FinalBlobBatchingChallenges(z, BLS12Fr.fromBN254Fr(gamma)); + } + + // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers + getEthVersionedBlobHash(): Buffer { + const hash = sha256(this.commitment.compress()); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + static getEthVersionedBlobHash(commitment: Buffer): Buffer { + const hash = sha256(commitment); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + /** + * Returns a proof of opening of the blobs to verify on L1 using the point evaluation precompile: + * + * input[:32] - versioned_hash + * input[32:64] - z + * input[64:96] - y + * input[96:144] - commitment C + * input[144:192] - commitment Q (a 'proof' committing to the quotient polynomial q(X)) + * + * See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile + */ + getEthBlobEvaluationInputs(): `0x${string}` { + const buf = Buffer.concat([ + this.getEthVersionedBlobHash(), + this.z.toBuffer(), + this.y.toBuffer(), + this.commitment.compress(), + this.q.compress(), + ]); + return `0x${buf.toString('hex')}`; + } +} + +/** + * Final values z and gamma are injected into each block root circuit. We ensure they are correct by: + * - Checking equality in each block merge circuit and propagating up + * - Checking final z_acc == z in root circuit + * - Checking final gamma_acc == gamma in root circuit + * + * - z = H(...H(H(z_0, z_1) z_2)..z_n) + * - where z_i = H(H(fields of blob_i), C_i), + * - used such that p_i(z) = y_i = Blob.evaluationY for all n blob polynomials p_i(). + * - gamma = H(H(...H(H(y_0, y_1) y_2)..y_n), z) + * - used such that y = sum_i { gamma^i * y_i }, and C = sum_i { gamma^i * C_i } + * for all blob evaluations y_i (see above) and commitments C_i. + * + * Iteratively calculated by BlobAccumulatorPublicInputs.accumulate() in nr. See also precomputeBatchedBlobChallenges() above. + */ +export class FinalBlobBatchingChallenges { + constructor( + public readonly z: Fr, + public readonly gamma: BLS12Fr, + ) {} + + equals(other: FinalBlobBatchingChallenges) { + return this.z.equals(other.z) && this.gamma.equals(other.gamma); + } + + static empty(): FinalBlobBatchingChallenges { + return new FinalBlobBatchingChallenges(Fr.ZERO, BLS12Fr.ZERO); + } + + static fromBuffer(buffer: Buffer | BufferReader): FinalBlobBatchingChallenges { + const reader = BufferReader.asReader(buffer); + return new FinalBlobBatchingChallenges(Fr.fromBuffer(reader), reader.readObject(BLS12Fr)); + } + + toBuffer() { + return serializeToBuffer(this.z, this.gamma); + } +} + +/** + * See noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr -> BlobAccumulatorPublicInputs + */ +export class BatchedBlobAccumulator { + constructor( + /** Hash of Cs (to link to L1 blob hashes). */ + public readonly blobCommitmentsHashAcc: Fr, + /** Challenge point z_acc. Final value used such that p_i(z) = y_i. */ + public readonly zAcc: Fr, + /** Evaluation y_acc. Final value is is linear combination of all evaluations y_i = p_i(z) with gamma. */ + public readonly yAcc: BLS12Fr, + /** Commitment c_acc. Final value is linear combination of all commitments C_i = [p_i] with gamma. */ + public readonly cAcc: BLS12Point, + /** KZG opening q_acc. Final value is linear combination of all blob kzg 'proofs' Q_i with gamma. */ + public readonly qAcc: BLS12Point, + /** + * Challenge point gamma_acc for multi opening. Used with y, C, and kzg 'proof' Q above. + * TODO(#13608): We calculate this by hashing natively in the circuit (hence Fr representation), but it's actually used + * as a BLS12Fr field elt. Is this safe? Is there a skew? + */ + public readonly gammaAcc: Fr, + /** Simply gamma^(i + 1) at blob i. Used for calculating the i'th element of the above linear comb.s */ + public readonly gammaPow: BLS12Fr, + /** Final challenge values used in evaluation. Optimistically input and checked in the final acc. */ + public readonly finalBlobChallenges: FinalBlobBatchingChallenges, + ) {} + + /** + * Init the first accumulation state of the epoch. + * We assume the input blob has not been evaluated at z. + * + * First state of the accumulator: + * - v_acc := sha256(C_0) + * - z_acc := z_0 + * - y_acc := gamma^0 * y_0 = y_0 + * - c_acc := gamma^0 * c_0 = c_0 + * - gamma_acc := poseidon2(y_0.limbs) + * - gamma^(i + 1) = gamma^1 = gamma // denoted gamma_pow_acc + * + * TODO(MW): When moved to batching, we should ONLY evaluate individual blobs at z => won't need finalZ input. + * @returns An initial blob accumulator. + */ + static async initialize( + blob: Blob, + finalBlobChallenges: FinalBlobBatchingChallenges, + ): Promise { + const [q, evaluation] = computeKzgProof(blob.data, finalBlobChallenges.z.toBuffer()); + const firstY = BLS12Fr.fromBuffer(Buffer.from(evaluation)); + // Here, i = 0, so: + return new BatchedBlobAccumulator( + sha256ToField([blob.commitment]), // blobCommitmentsHashAcc = sha256(C_0) + blob.challengeZ, // zAcc = z_0 + firstY, // yAcc = gamma^0 * y_0 = 1 * y_0 + BLS12Point.decompress(blob.commitment), // cAcc = gamma^0 * C_0 = 1 * C_0 + BLS12Point.decompress(Buffer.from(q)), // qAcc = gamma^0 * Q_0 = 1 * Q_0 + await hashNoirBigNumLimbs(firstY), // gammaAcc = poseidon2(y_0.limbs) + finalBlobChallenges.gamma, // gammaPow = gamma^(i + 1) = gamma^1 = gamma + finalBlobChallenges, + ); + } + + /** + * Create the empty accumulation state of the epoch. + * @returns An empty blob accumulator with challenges. + */ + static newWithChallenges(finalBlobChallenges: FinalBlobBatchingChallenges): BatchedBlobAccumulator { + return new BatchedBlobAccumulator( + Fr.ZERO, + Fr.ZERO, + BLS12Fr.ZERO, + BLS12Point.ZERO, + BLS12Point.ZERO, + Fr.ZERO, + BLS12Fr.ZERO, + finalBlobChallenges, + ); + } + + /** + * Given blob i, accumulate all state. + * We assume the input blob has not been evaluated at z. + * TODO(MW): Currently returning new accumulator. May be better to mutate in future? + * @returns An updated blob accumulator. + */ + async accumulate(blob: Blob) { + if (this.isEmptyState()) { + return BatchedBlobAccumulator.initialize(blob, this.finalBlobChallenges); + } else { + const [q, evaluation] = computeKzgProof(blob.data, this.finalBlobChallenges.z.toBuffer()); + const thisY = BLS12Fr.fromBuffer(Buffer.from(evaluation)); + + // Moving from i - 1 to i, so: + return new BatchedBlobAccumulator( + sha256ToField([this.blobCommitmentsHashAcc, blob.commitment]), // blobCommitmentsHashAcc := sha256(blobCommitmentsHashAcc, C_i) + await poseidon2Hash([this.zAcc, blob.challengeZ]), // zAcc := poseidon2(zAcc, z_i) + this.yAcc.add(thisY.mul(this.gammaPow)), // yAcc := yAcc + (gamma^i * y_i) + this.cAcc.add(BLS12Point.decompress(blob.commitment).mul(this.gammaPow)), // cAcc := cAcc + (gamma^i * C_i) + this.qAcc.add(BLS12Point.decompress(Buffer.from(q)).mul(this.gammaPow)), // qAcc := qAcc + (gamma^i * C_i) + await poseidon2Hash([this.gammaAcc, await hashNoirBigNumLimbs(thisY)]), // gammaAcc := poseidon2(gammaAcc, poseidon2(y_i.limbs)) + this.gammaPow.mul(this.finalBlobChallenges.gamma), // gammaPow = gamma^(i + 1) = gamma^i * final_gamma + this.finalBlobChallenges, + ); + } + } + + /** + * Given blobs, accumulate all state. + * We assume the input blobs have not been evaluated at z. + * @returns An updated blob accumulator. + */ + async accumulateBlobs(blobs: Blob[]) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + let acc: BatchedBlobAccumulator = this; // TODO(MW): this.clone() + for (let i = 0; i < blobs.length; i++) { + acc = await acc.accumulate(blobs[i]); + } + return acc; + } + + /** + * Finalize accumulation state of the epoch. + * We assume ALL blobs in the epoch have been accumulated. + * + * Final accumulated values: + * - v := v_acc (hash of all commitments (C_i s) to be checked on L1) + * - z := z_acc (final challenge, at which all blobs are evaluated) + * - y := y_acc (final opening to be checked on L1) + * - c := c_acc (final commitment to be checked on L1) + * - gamma := poseidon2(gamma_acc, z) (challenge for linear combination of y and C, above) + * + * @returns A batched blob. + */ + async finalize(): Promise { + // All values in acc are final, apart from gamma := poseidon2(gammaAcc, z): + const calculatedGamma = await poseidon2Hash([this.gammaAcc, this.zAcc]); + // Check final values: + if (!this.zAcc.equals(this.finalBlobChallenges.z)) { + throw new Error( + `Blob batching mismatch: accumulated z ${this.zAcc} does not equal injected z ${this.finalBlobChallenges.z}`, + ); + } + if (!calculatedGamma.equals(this.finalBlobChallenges.gamma.toBN254Fr())) { + throw new Error( + `Blob batching mismatch: accumulated gamma ${calculatedGamma} does not equal injected gamma ${this.finalBlobChallenges.gamma.toBN254Fr()}`, + ); + } + if (!verifyKzgProof(this.cAcc.compress(), this.zAcc.toBuffer(), this.yAcc.toBuffer(), this.qAcc.compress())) { + throw new Error(`KZG proof did not verify.`); + } + + return new BatchedBlob(this.blobCommitmentsHashAcc, this.zAcc, this.yAcc, this.cAcc, this.qAcc); + } + + /** + * Converts to a struct for the public inputs of our rollup circuits. + * @returns A BlobAccumulatorPublicInputs instance. + */ + toBlobAccumulatorPublicInputs() { + return new BlobAccumulatorPublicInputs( + this.blobCommitmentsHashAcc, + this.zAcc, + this.yAcc, + this.cAcc, + this.gammaAcc, + this.gammaPow, + ); + } + + /** + * Converts to a struct for the public inputs of our root rollup circuit. + * Warning: MUST be final accumulator state. + * @returns A FinalBlobAccumulatorPublicInputs instance. + */ + toFinalBlobAccumulatorPublicInputs() { + return new FinalBlobAccumulatorPublicInputs(this.blobCommitmentsHashAcc, this.zAcc, this.yAcc, this.cAcc); + } + + isEmptyState() { + return ( + this.blobCommitmentsHashAcc.isZero() && + this.zAcc.isZero() && + this.yAcc.isZero() && + this.cAcc.isZero() && + this.qAcc.isZero() && + this.gammaAcc.isZero() && + this.gammaPow.isZero() + ); + } +} + +// To mimic the hash accumulation in the rollup circuits, here we hash +// each u128 limb of the noir bignum struct representing the BLS field. +async function hashNoirBigNumLimbs(field: BLS12Field): Promise { + const num = field.toNoirBigNum(); + return await poseidon2Hash(num.limbs.map(Fr.fromHexString)); +} diff --git a/yarn-project/blob-lib/src/blob_batching_public_inputs.test.ts b/yarn-project/blob-lib/src/blob_batching_public_inputs.test.ts new file mode 100644 index 000000000000..61e9bd8972e2 --- /dev/null +++ b/yarn-project/blob-lib/src/blob_batching_public_inputs.test.ts @@ -0,0 +1,94 @@ +import { BLOBS_PER_BLOCK, BLOB_ACCUMULATOR_PUBLIC_INPUTS } from '@aztec/constants'; +import { timesParallel } from '@aztec/foundation/collection'; +import { randomInt } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; + +import cKzg from 'c-kzg'; + +import { Blob } from './blob.js'; +import { BatchedBlob } from './blob_batching.js'; +import { + BlobAccumulatorPublicInputs, + BlockBlobPublicInputs, + FinalBlobAccumulatorPublicInputs, +} from './blob_batching_public_inputs.js'; +import { makeBatchedBlobAccumulator, makeBlockBlobPublicInputs } from './testing.js'; + +try { + cKzg.loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +describe('BlockBlobPublicInputs', () => { + let blobPI: BlockBlobPublicInputs; + + beforeAll(() => { + blobPI = makeBlockBlobPublicInputs(randomInt(1000)); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlockBlobPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from Blob class', async () => { + const blobs = await timesParallel(BLOBS_PER_BLOCK, i => Blob.fromFields(Array(400).fill(new Fr(i + 1)))); + const startBlobAccumulator = makeBatchedBlobAccumulator(randomInt(1000)); + const converted = await BlockBlobPublicInputs.fromBlobs(startBlobAccumulator, blobs); + const expectedEndBlobAccumulator = await startBlobAccumulator.accumulateBlobs(blobs); + expect(converted.endBlobAccumulator).toEqual(expectedEndBlobAccumulator.toBlobAccumulatorPublicInputs()); + }); +}); + +describe('BlobAccumulatorPublicInputs', () => { + let blobPI: BlobAccumulatorPublicInputs; + + beforeAll(() => { + blobPI = makeBatchedBlobAccumulator(randomInt(1000)).toBlobAccumulatorPublicInputs(); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlobAccumulatorPublicInputs.fromBuffer(buffer); + expect(res.equals(blobPI)).toBeTruthy(); + }); + + it('serializes to fields and deserializes it back', () => { + const fields = blobPI.toFields(); + expect(fields.length).toEqual(BLOB_ACCUMULATOR_PUBLIC_INPUTS); + const res = BlobAccumulatorPublicInputs.fromFields(fields); + expect(res.equals(blobPI)).toBeTruthy(); + }); +}); + +describe('FinalBlobAccumulatorPublicInputs', () => { + let blobPI: FinalBlobAccumulatorPublicInputs; + + beforeAll(() => { + blobPI = makeBatchedBlobAccumulator(randomInt(1000)).toFinalBlobAccumulatorPublicInputs(); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = FinalBlobAccumulatorPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from BatchedBlob class', async () => { + const blobs = await timesParallel(BLOBS_PER_BLOCK, i => Blob.fromFields(Array(400).fill(new Fr(i + 1)))); + const batched = await BatchedBlob.batch(blobs); + const converted = FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batched); + expect(converted.blobCommitmentsHash).toEqual(batched.blobCommitmentsHash); + expect(converted.z).toEqual(batched.z); + expect(converted.y).toEqual(batched.y); + expect(converted.c).toEqual(batched.commitment); + }); +}); diff --git a/yarn-project/blob-lib/src/blob_batching_public_inputs.ts b/yarn-project/blob-lib/src/blob_batching_public_inputs.ts new file mode 100644 index 000000000000..4998af4d3a31 --- /dev/null +++ b/yarn-project/blob-lib/src/blob_batching_public_inputs.ts @@ -0,0 +1,241 @@ +import { BLS12_FQ_LIMBS, BLS12_FR_LIMBS } from '@aztec/constants'; +import { BLS12Fq, BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; +import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize'; + +import { inspect } from 'util'; + +import { Blob } from './blob.js'; +import { BatchedBlob, BatchedBlobAccumulator, FinalBlobBatchingChallenges } from './blob_batching.js'; + +/** + * See nr BlobAccumulatorPublicInputs and ts BatchedBlobAccumulator for documentation. + */ +export class BlobAccumulatorPublicInputs { + constructor( + public blobCommitmentsHashAcc: Fr, + public zAcc: Fr, + public yAcc: BLS12Fr, + public cAcc: BLS12Point, + public gammaAcc: Fr, + public gammaPowAcc: BLS12Fr, + ) {} + + static empty(): BlobAccumulatorPublicInputs { + return new BlobAccumulatorPublicInputs(Fr.ZERO, Fr.ZERO, BLS12Fr.ZERO, BLS12Point.ZERO, Fr.ZERO, BLS12Fr.ZERO); + } + + equals(other: BlobAccumulatorPublicInputs) { + return ( + this.blobCommitmentsHashAcc.equals(other.blobCommitmentsHashAcc) && + this.zAcc.equals(other.zAcc) && + this.yAcc.equals(other.yAcc) && + this.cAcc.equals(other.cAcc) && + this.gammaAcc.equals(other.gammaAcc) && + this.gammaPowAcc.equals(other.gammaPowAcc) + ); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlobAccumulatorPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlobAccumulatorPublicInputs( + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + BLS12Fr.fromBuffer(reader), + BLS12Point.fromBuffer(reader), + Fr.fromBuffer(reader), + BLS12Fr.fromBuffer(reader), + ); + } + + toBuffer() { + return serializeToBuffer( + this.blobCommitmentsHashAcc, + this.zAcc, + this.yAcc, + this.cAcc, + this.gammaAcc, + this.gammaPowAcc, + ); + } + + /** + * Given blobs, accumulate all public inputs state. + * We assume the input blobs have not been evaluated at z. + * NOTE: Does NOT accumulate non circuit values including Q. This exists to simulate/check exactly what the circuit is doing + * and is unsafe for other use. For that reason, a toBatchedBlobAccumulator does not exist. See evaluateBlobs() oracle for usage. + * @returns An updated blob accumulator. + */ + async accumulateBlobs(blobs: Blob[], finalBlobChallenges: FinalBlobBatchingChallenges) { + let acc = new BatchedBlobAccumulator( + this.blobCommitmentsHashAcc, + this.zAcc, + this.yAcc, + this.cAcc, + BLS12Point.ZERO, + this.gammaAcc, + this.gammaPowAcc, + finalBlobChallenges, + ); + acc = await acc.accumulateBlobs(blobs); + return new BlobAccumulatorPublicInputs( + acc.blobCommitmentsHashAcc, + acc.zAcc, + acc.yAcc, + acc.cAcc, + acc.gammaAcc, + acc.gammaPow, + ); + } + + toFields() { + return [ + this.blobCommitmentsHashAcc, + this.zAcc, + ...this.yAcc.toNoirBigNum().limbs.map(Fr.fromString), + ...this.cAcc.x.toNoirBigNum().limbs.map(Fr.fromString), + ...this.cAcc.y.toNoirBigNum().limbs.map(Fr.fromString), + new Fr(this.cAcc.isInfinite), + this.gammaAcc, + ...this.gammaPowAcc.toNoirBigNum().limbs.map(Fr.fromString), + ]; + } + + static fromFields(fields: Fr[] | FieldReader): BlobAccumulatorPublicInputs { + const reader = FieldReader.asReader(fields); + return new BlobAccumulatorPublicInputs( + reader.readField(), + reader.readField(), + BLS12Fr.fromNoirBigNum({ limbs: reader.readFieldArray(BLS12_FR_LIMBS).map(f => f.toString()) }), + new BLS12Point( + BLS12Fq.fromNoirBigNum({ limbs: reader.readFieldArray(BLS12_FQ_LIMBS).map(f => f.toString()) }), + BLS12Fq.fromNoirBigNum({ limbs: reader.readFieldArray(BLS12_FQ_LIMBS).map(f => f.toString()) }), + reader.readBoolean(), + ), + reader.readField(), + BLS12Fr.fromNoirBigNum({ limbs: reader.readFieldArray(BLS12_FR_LIMBS).map(f => f.toString()) }), + ); + } +} + +/** + * See nr FinalBlobAccumulatorPublicInputs and ts BatchedBlobAccumulator for documentation. + */ +export class FinalBlobAccumulatorPublicInputs { + constructor( + public blobCommitmentsHash: Fr, + public z: Fr, + public y: BLS12Fr, + public c: BLS12Point, + ) {} + + static empty(): FinalBlobAccumulatorPublicInputs { + return new FinalBlobAccumulatorPublicInputs(Fr.ZERO, Fr.ZERO, BLS12Fr.ZERO, BLS12Point.ZERO); + } + + static fromBuffer(buffer: Buffer | BufferReader): FinalBlobAccumulatorPublicInputs { + const reader = BufferReader.asReader(buffer); + return new FinalBlobAccumulatorPublicInputs( + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + BLS12Fr.fromBuffer(reader), + BLS12Point.fromBuffer(reader), + ); + } + + toBuffer() { + return serializeToBuffer(this.blobCommitmentsHash, this.z, this.y, this.c); + } + + static fromBatchedBlob(blob: BatchedBlob) { + return new FinalBlobAccumulatorPublicInputs(blob.blobCommitmentsHash, blob.z, blob.y, blob.commitment); + } + + toFields() { + return [ + this.blobCommitmentsHash, + this.z, + ...this.y.toNoirBigNum().limbs.map(Fr.fromString), + // TODO(MW): add conversion when public inputs finalised + ...[new Fr(this.c.compress().subarray(0, 31)), new Fr(this.c.compress().subarray(31, 48))], + ]; + } + + // The below is used to send to L1 for proof verification + toString() { + // We prepend 32 bytes for the (unused) 'blobHash' slot. This is not read or required by getEpochProofPublicInputs() on L1, but + // is expected since we usually pass the full precompile inputs via verifyEpochRootProof() to getEpochProofPublicInputs() to ensure + // we use calldata rather than a slice in memory: + const buf = Buffer.concat([Buffer.alloc(32), this.z.toBuffer(), this.y.toBuffer(), this.c.compress()]); + return buf.toString('hex'); + } + + equals(other: FinalBlobAccumulatorPublicInputs) { + return ( + this.blobCommitmentsHash.equals(other.blobCommitmentsHash) && + this.z.equals(other.z) && + this.y.equals(other.y) && + this.c.equals(other.c) + ); + } + + // Creates a random instance. Used for testing only - will not prove/verify. + static random() { + return new FinalBlobAccumulatorPublicInputs(Fr.random(), Fr.random(), BLS12Fr.random(), BLS12Point.random()); + } + + [inspect.custom]() { + return `FinalBlobAccumulatorPublicInputs { + blobCommitmentsHash: ${inspect(this.blobCommitmentsHash)}, + z: ${inspect(this.z)}, + y: ${inspect(this.y)}, + c: ${inspect(this.c)}, + }`; + } +} + +/** + * startBlobAccumulator: Accumulated opening proofs for all blobs before this block range. + * endBlobAccumulator: Accumulated opening proofs for all blobs after adding this block range. + * finalBlobChallenges: Final values z and gamma, shared across the epoch. + */ +export class BlockBlobPublicInputs { + constructor( + public startBlobAccumulator: BlobAccumulatorPublicInputs, + public endBlobAccumulator: BlobAccumulatorPublicInputs, + public finalBlobChallenges: FinalBlobBatchingChallenges, + ) {} + + static empty(): BlockBlobPublicInputs { + return new BlockBlobPublicInputs( + BlobAccumulatorPublicInputs.empty(), + BlobAccumulatorPublicInputs.empty(), + FinalBlobBatchingChallenges.empty(), + ); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlockBlobPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlockBlobPublicInputs( + reader.readObject(BlobAccumulatorPublicInputs), + reader.readObject(BlobAccumulatorPublicInputs), + reader.readObject(FinalBlobBatchingChallenges), + ); + } + + toBuffer() { + return serializeToBuffer(this.startBlobAccumulator, this.endBlobAccumulator, this.finalBlobChallenges); + } + + // Creates BlockBlobPublicInputs from the starting accumulator state and all blobs in the block. + // Assumes that startBlobAccumulator.finalChallenges have already been precomputed. + // Does not finalise challenge values (this is done in the final root rollup). + // TODO(MW): Integrate with BatchedBlob once old Blob classes removed + static async fromBlobs(startBlobAccumulator: BatchedBlobAccumulator, blobs: Blob[]): Promise { + const endBlobAccumulator = await startBlobAccumulator.accumulateBlobs(blobs); + return new BlockBlobPublicInputs( + startBlobAccumulator.toBlobAccumulatorPublicInputs(), + endBlobAccumulator.toBlobAccumulatorPublicInputs(), + startBlobAccumulator.finalBlobChallenges, + ); + } +} diff --git a/yarn-project/blob-lib/src/blob_public_inputs.test.ts b/yarn-project/blob-lib/src/blob_public_inputs.test.ts deleted file mode 100644 index 151858902c62..000000000000 --- a/yarn-project/blob-lib/src/blob_public_inputs.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Blob } from '@aztec/blob-lib'; -import { BLOBS_PER_BLOCK, BLOB_PUBLIC_INPUTS } from '@aztec/constants'; -import { timesParallel } from '@aztec/foundation/collection'; -import { randomInt } from '@aztec/foundation/crypto'; -import { Fr } from '@aztec/foundation/fields'; - -import { BlobPublicInputs, BlockBlobPublicInputs } from './blob_public_inputs.js'; -import { makeBlobPublicInputs, makeBlockBlobPublicInputs } from './testing.js'; - -describe('BlobPublicInputs', () => { - let blobPI: BlobPublicInputs; - - beforeAll(() => { - blobPI = makeBlobPublicInputs(randomInt(1000)); - }); - - it('serializes to buffer and deserializes it back', () => { - const buffer = blobPI.toBuffer(); - const res = BlobPublicInputs.fromBuffer(buffer); - expect(res).toEqual(blobPI); - }); - - it('converts correctly from Blob class', async () => { - const blob = await Blob.fromFields(Array(400).fill(new Fr(3))); - const converted = BlobPublicInputs.fromBlob(blob); - expect(converted.z).toEqual(blob.challengeZ); - expect(Buffer.from(converted.y.toString(16), 'hex')).toEqual(blob.evaluationY); - expect(converted.kzgCommitment).toEqual(blob.commitmentToFields()); - expect(converted.commitmentToBuffer()).toEqual(blob.commitment); - }); - - it('serializes to field array and deserializes it back', () => { - const fieldArray = blobPI.toFields(); - const res = BlobPublicInputs.fromFields(fieldArray); - expect(res).toEqual(blobPI); - }); - - // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. - it('number of fields matches constant', () => { - const fields = blobPI.toFields(); - expect(fields.length).toBe(BLOB_PUBLIC_INPUTS); - }); -}); - -describe('BlockBlobPublicInputs', () => { - let blobPI: BlockBlobPublicInputs; - - beforeAll(() => { - blobPI = makeBlockBlobPublicInputs(randomInt(1000)); - }); - - it('serializes to buffer and deserializes it back', () => { - const buffer = blobPI.toBuffer(); - const res = BlockBlobPublicInputs.fromBuffer(buffer); - expect(res).toEqual(blobPI); - }); - - it('converts correctly from Blob class', async () => { - const blobs = await timesParallel(BLOBS_PER_BLOCK, i => Blob.fromFields(Array(400).fill(new Fr(i + 1)))); - const converted = BlockBlobPublicInputs.fromBlobs(blobs); - converted.inner.forEach((blobPI, i) => { - expect(blobPI.z).toEqual(blobs[i].challengeZ); - expect(Buffer.from(blobPI.y.toString(16), 'hex')).toEqual(blobs[i].evaluationY); - expect(blobPI.kzgCommitment).toEqual(blobs[i].commitmentToFields()); - expect(blobPI.commitmentToBuffer()).toEqual(blobs[i].commitment); - }); - }); - - it('serializes to field array and deserializes it back', () => { - const fieldArray = blobPI.toFields(); - const res = BlockBlobPublicInputs.fromFields(fieldArray); - expect(res).toEqual(blobPI); - }); - - // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. - it('number of fields matches constant', () => { - const fields = blobPI.toFields(); - expect(fields.length).toBe(BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK); - }); -}); diff --git a/yarn-project/blob-lib/src/blob_public_inputs.ts b/yarn-project/blob-lib/src/blob_public_inputs.ts deleted file mode 100644 index c9b90438e595..000000000000 --- a/yarn-project/blob-lib/src/blob_public_inputs.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { BLOBS_PER_BLOCK } from '@aztec/constants'; -import { makeTuple } from '@aztec/foundation/array'; -import { toBigIntBE, toBufferBE, toHex } from '@aztec/foundation/bigint-buffer'; -import { sha256, sha256Trunc } from '@aztec/foundation/crypto'; -import { Fr } from '@aztec/foundation/fields'; -import { BufferReader, FieldReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; -import type { FieldsOf } from '@aztec/foundation/types'; - -import { type Blob, VERSIONED_HASH_VERSION_KZG } from './blob.js'; - -/** - * Public inputs required to be passed from our rollup circuits to verify a blob. - */ -export class BlobPublicInputs { - constructor( - /** Challenge point z (= H(H(tx_effects), kzgCommmitment). */ - public z: Fr, - /** Evaluation y = p(z), where p() is the blob polynomial. */ - public y: bigint, - /** Commitment to the blob C. */ - public kzgCommitment: Tuple, - ) {} - - static empty(): BlobPublicInputs { - return new BlobPublicInputs(Fr.ZERO, 0n, [Fr.ZERO, Fr.ZERO]); - } - - isEmpty(): boolean { - return this.z.isZero() && this.y == 0n && this.kzgCommitment[0].isZero() && this.kzgCommitment[1].isZero(); - } - - static fromBuffer(buffer: Buffer | BufferReader): BlobPublicInputs { - const reader = BufferReader.asReader(buffer); - return new BlobPublicInputs(Fr.fromBuffer(reader), toBigIntBE(reader.readBytes(32)), reader.readArray(2, Fr)); - } - - toBuffer() { - return serializeToBuffer(...BlobPublicInputs.getFields(this)); - } - - static fromFields(fields: Fr[] | FieldReader): BlobPublicInputs { - const reader = FieldReader.asReader(fields); - // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts - const fromBigNum = (fieldArr: Fr[]) => { - return BigInt( - fieldArr[2].toString().concat(fieldArr[1].toString().substring(2), fieldArr[0].toString().substring(2)), - ); - }; - return new BlobPublicInputs(reader.readField(), fromBigNum(reader.readFieldArray(3)), reader.readFieldArray(2)); - } - - // NB: y is NOT a BN254 field, it's a larger BLS field, we cannot use serialiseToFields here as it assumes bigints will fit - // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts - toFields() { - const hex = toHex(this.y, true); - const bigNum = [ - Fr.fromString('0x' + hex.substring(36)), - Fr.fromString('0x' + hex.substring(6, 36)), - Fr.fromString(hex.substring(0, 6)), - ]; - return [this.z, ...bigNum, ...this.kzgCommitment]; - } - - static getFields(fields: FieldsOf) { - return [fields.z, fields.y, fields.kzgCommitment] as const; - } - - static fromBlob(input: Blob): BlobPublicInputs { - return new BlobPublicInputs(input.challengeZ, toBigIntBE(input.evaluationY), input.commitmentToFields()); - } - - getBlobHash(): Buffer { - const hash = sha256(this.commitmentToBuffer()); - hash[0] = VERSIONED_HASH_VERSION_KZG; - return hash; - } - - // Performs the reverse conversion of blob.commitmentToFields() - // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48] - commitmentToBuffer(): Buffer { - return Buffer.concat([ - this.kzgCommitment[0].toBuffer().subarray(1), - this.kzgCommitment[1].toBuffer().subarray(-17), - ]); - } - - equals(other: BlobPublicInputs) { - return ( - this.z.equals(other.z) && - this.y == other.y && - this.kzgCommitment[0].equals(other.kzgCommitment[0]) && - this.kzgCommitment[1].equals(other.kzgCommitment[1]) - ); - } -} - -// NB: it is much cleaner throughout the protocol circuits to define this struct rather than use a nested array. -// Once we accumulate blob inputs, it should be removed, and we just use BlobPublicInputs::accumulate everywhere. -export class BlockBlobPublicInputs { - constructor(public inner: Tuple) {} - - static empty(): BlockBlobPublicInputs { - return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty)); - } - - static fromBuffer(buffer: Buffer | BufferReader): BlockBlobPublicInputs { - const reader = BufferReader.asReader(buffer); - return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); - } - - toBuffer() { - return serializeToBuffer(...BlockBlobPublicInputs.getFields(this)); - } - - static fromFields(fields: Fr[] | FieldReader): BlockBlobPublicInputs { - const reader = FieldReader.asReader(fields); - return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); - } - - toFields() { - return this.inner.map(i => i.toFields()).flat(); - } - - static getFields(fields: FieldsOf) { - return [fields.inner] as const; - } - - static fromBlobs(inputs: Blob[]): BlockBlobPublicInputs { - const inner = makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty); - if (inputs.length > BLOBS_PER_BLOCK) { - throw new Error(`Can only fit ${BLOBS_PER_BLOCK} in one BlockBlobPublicInputs instance (given ${inputs.length})`); - } - inputs.forEach((input, i) => { - inner[i] = BlobPublicInputs.fromBlob(input); - }); - return new BlockBlobPublicInputs(inner); - } - - getBlobsHash() { - const blobHashes = this.inner.map(item => (item.isEmpty() ? Buffer.alloc(0) : item.getBlobHash())); - return sha256Trunc(serializeToBuffer(blobHashes)); - } - - // The below is used to send to L1 for proof verification - toString() { - const nonEmptyBlobs = this.inner.filter(item => !item.isEmpty()); - // Write the number of blobs for L1 to verify - let buf = Buffer.alloc(1); - buf.writeUInt8(nonEmptyBlobs.length); - // Using standard toBuffer() does not correctly encode the commitment - // On L1, it's a 48 byte number, which we convert to 2 fields for use in the circuits - nonEmptyBlobs.forEach(blob => { - buf = Buffer.concat([buf, blob.z.toBuffer(), toBufferBE(blob.y, 32), blob.commitmentToBuffer()]); - }); - return buf.toString('hex'); - } -} diff --git a/yarn-project/blob-lib/src/index.ts b/yarn-project/blob-lib/src/index.ts index e2339b805652..b6b53c7392af 100644 --- a/yarn-project/blob-lib/src/index.ts +++ b/yarn-project/blob-lib/src/index.ts @@ -3,10 +3,11 @@ import cKzg from 'c-kzg'; const { loadTrustedSetup } = cKzg; export * from './blob.js'; +export * from './blob_batching.js'; export * from './encoding.js'; export * from './interface.js'; export * from './errors.js'; -export * from './blob_public_inputs.js'; +export * from './blob_batching_public_inputs.js'; export * from './sponge_blob.js'; try { diff --git a/yarn-project/blob-lib/src/testing.ts b/yarn-project/blob-lib/src/testing.ts index 095dfe5bc463..ca3b5595a714 100644 --- a/yarn-project/blob-lib/src/testing.ts +++ b/yarn-project/blob-lib/src/testing.ts @@ -1,10 +1,10 @@ -import { BLOBS_PER_BLOCK } from '@aztec/constants'; import { makeTuple } from '@aztec/foundation/array'; import { toBufferBE } from '@aztec/foundation/bigint-buffer'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; import { Blob } from './blob.js'; -import { BlobPublicInputs, BlockBlobPublicInputs } from './blob_public_inputs.js'; +import { BatchedBlobAccumulator, FinalBlobBatchingChallenges } from './blob_batching.js'; +import { BlockBlobPublicInputs } from './blob_batching_public_inputs.js'; import { TX_START_PREFIX, TX_START_PREFIX_BYTES_LENGTH } from './encoding.js'; import { Poseidon2Sponge, SpongeBlob } from './sponge_blob.js'; @@ -28,16 +28,21 @@ export function makeSpongeBlob(seed = 1): SpongeBlob { } /** - * Makes arbitrary blob public inputs. + * Makes arbitrary blob public accumulator. * Note: will not verify inside the circuit. - * @param seed - The seed to use for generating the blob inputs. - * @returns A blob public inputs instance. + * @param seed - The seed to use for generating the blob accumulator. + * @returns A blob accumulator instance. */ -export function makeBlobPublicInputs(seed = 1): BlobPublicInputs { - return new BlobPublicInputs( +export function makeBatchedBlobAccumulator(seed = 1): BatchedBlobAccumulator { + return new BatchedBlobAccumulator( new Fr(seed), - BigInt(seed + 1), - makeTuple(2, i => new Fr(i)), + new Fr(seed + 1), + new BLS12Fr(seed + 2), + BLS12Point.random(), + BLS12Point.random(), + new Fr(seed + 3), + new BLS12Fr(seed + 4), + new FinalBlobBatchingChallenges(new Fr(seed + 5), new BLS12Fr(seed + 6)), ); } @@ -48,7 +53,12 @@ export function makeBlobPublicInputs(seed = 1): BlobPublicInputs { * @returns A block blob public inputs instance. */ export function makeBlockBlobPublicInputs(seed = 1): BlockBlobPublicInputs { - return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, () => makeBlobPublicInputs(seed))); + const startBlobAccumulator = makeBatchedBlobAccumulator(seed); + return new BlockBlobPublicInputs( + startBlobAccumulator.toBlobAccumulatorPublicInputs(), + makeBatchedBlobAccumulator(seed + 1).toBlobAccumulatorPublicInputs(), + startBlobAccumulator.finalBlobChallenges, + ); } // TODO: copied form stdlib tx effect diff --git a/yarn-project/blob-lib/src/trusted_setup_bit_reversed.json b/yarn-project/blob-lib/src/trusted_setup_bit_reversed.json new file mode 100644 index 000000000000..382ff3b757c8 --- /dev/null +++ b/yarn-project/blob-lib/src/trusted_setup_bit_reversed.json @@ -0,0 +1,4100 @@ +{ + "g1_lagrange_bit_reversed": [ + "0xa0413c0dcafec6dbc9f47d66785cf1e8c981044f7d13cfe3e4fcbb71b5408dfde6312493cb3c1d30516cb3ca88c03654", + "0x837567ad073e42266951a9a54750919280a2ac835a73c158407c3a2b1904cf0d17b7195a393c71a18ad029cbd9cf79ee", + "0xabfae52f53a4b6e00760468d973a267f29321997c3dbb5aee36dc1f20619551229c0c45b9d9749f410e7f531b73378e8", + "0xb3b483d31c88f78d49bd065893bc1e3d2aa637e27dedb46d9a7d60be7660ce7a10aaaa7deead362284a52e6d14021178", + "0xa03dc4059b46effdd786a0a03cc17cfee8585683faa35bb07936ded3fa3f3a097f518c0b8e2db92fd700149db1937789", + "0xb3e2ffdd5ee6fd110b982fd4fad4b93d0fca65478f986d086eeccb0804960bfaa1919afa743c2239973ea65091fe57d2", + "0x94aeff145386a087b0e91e68a84a5ede01f978f9dd9fe7bebca78941938469495dc30a96bba9508c0d017873aeea9610", + "0xb6edcf3a40e7b1c3c0148f47a263cd819e585a51ef31c2e35a29ce6f04c53e413f743034c0d998d9c00a08ba00166f31", + "0xac3b8a7c2317ea967f229eddc3e23e279427f665c4705c7532ed33443f1243d33453c1088f57088d2ab1e3df690a9cc9", + "0x99a30bf0921d854c282b83d438a79f615424f28c2f99d26a05201c93d10378ab2cd94a792b571ddae5d4e0c0013f4006", + "0x81a2b74b2118923f34139a102f3d95e7eee11c4c2929c2576dee200a5abfd364606158535a6c9e4178a6a83dbb65f3c4", + "0x84f3df8b9847dcf1d63ca470dc623154898f83c25a6983e9b78c6d2d90a97bf5e622445be835f32c1e55e6a0a562ea78", + "0x82d1c396f0388b942cf22b119d7ef1ad03d3dad49a74d9d01649ee284f377c8daddd095d596871669e16160299a210db", + "0xb2670aad5691cbf308e4a6a77a075c4422e6cbe86fdba24e9f84a313e90b0696afb6a067eebb42ba2d10340d6a2f6e51", + "0xb96c5f682a5f5d02123568e50f5d0d186e4b2c4c9b956ec7aabac1b3e4a766d78d19bd111adb5176b898e916e49be2aa", + "0x8bd1e8e2d37379d4b172f1aec96f2e41a6e1393158d7a3dbd9a95c8dd4f8e0b05336a42efc11a732e5f22b47fc5c271d", + "0x9470259957780fa9b43521fab3644f555f5343281c72582b56d2efd11991d897b3b481cafa48681c5aeb80c9663b68f7", + "0x95097e7d2999b3e84bf052c775581cf361325325f4a50192521d8f4693c830bed667d88f482dc1e3f833aa2bd22d2cbf", + "0x890ad4942ebac8f5b16c777701ab80c68f56fa542002b0786f8fea0fb073154369920ac3dbfc07ea598b82f4985b8ced", + "0x8619b0264f9182867a1425be514dc4f1ababc1093138a728a28bd7e4ecc99b9faaff68c23792264bc6e4dce5f52a5c52", + "0x99856f49b9fe1604d917c94d09cc0ed753d13d015d30587a94e6631ffd964b214e607deb8a69a8b5e349a7edf4309206", + "0xb00b5900dfad79645f8bee4e5adc7b84eb22e5b1e67df77ccb505b7fc044a6c08a8ea5faca662414eb945f874f884cea", + "0x8c530b84001936d5ab366c84c0b105241a26d1fb163669f17c8f2e94776895c2870edf3e1bc8ccd04d5e65531471f695", + "0xa14eef4fd5dfac311713f0faa9a60415e3d30b95a4590cbf95f2033dffb4d16c02e7ceff3dcd42148a4e3bc49cce2dd4", + "0x8a47377df61733a2aa5a0e945fce00267f8e950f37e109d4487d92d878fb8b573317bb382d902de515b544e9e233458d", + "0x991ece62bf07d1a348dd22191868372904b9f8cf065ae7aa4e44fd24a53faf6d851842e35fb472895963aa1992894918", + "0x97e7dc121795a533d4224803e591eef3e9008bab16f12472210b73aaf77890cf6e3877e0139403a0d3003c12c8f45636", + "0xa2fc56fae99b1f18ba5e4fe838402164ce82f8a7f3193d0bbd360c2bac07c46f9330c4c7681ffb47074c6f81ee6e7ac6", + "0x8ed1270211ef928db18e502271b7edf24d0bbd11d97f2786aee772d70c2029e28095cf8f650b0328cc8a4c38d045316d", + "0x93c52493361b458d196172d7ba982a90a4f79f03aa8008edc322950de3ce6acf4c3977807a2ffa9e924047e02072b229", + "0xa19875cc07ab84e569d98b8b67fb1dbbdfb59093c7b748fae008c8904a6fd931a63ca8d03ab5fea9bc8d263568125a9b", + "0x8302d9ce4403f48ca217079762ce42cee8bc30168686bb8d3a945fbd5acd53b39f028dce757b825eb63af2d5ae41169d", + "0xaa8d66857127e6e71874ce2202923385a7d2818b84cb73a6c42d71afe70972a70c6bdd2aad1a6e8c5e4ca728382a8ea8", + "0x8e7f32f4a3e3c584af5e3d406924a0aa34024c42eca74ef6cc2a358fd3c9efaf25f1c03aa1e66bb94b023a2ee2a1cace", + "0xb9e5b2529ef1043278c939373fc0dbafe446def52ddd0a8edecd3e4b736de87e63e187df853c54c28d865de18a358bb6", + "0xa167969477214201f09c79027b10221e4707662e0c0fde81a0f628249f2f8a859ce3d30a7dcc03b8ecca8f7828ad85c7", + "0xa179a30d00def9b34a7e85607a447eea0401e32ab5abeee1a281f2acd1cf6ec81a178020666f641d9492b1bdf66f05a3", + "0x8ed31ceed9445437d7732dce78a762d72ff32a7636bfb3fd7974b7ae15db414d8184a1766915244355deb354fbc5803b", + "0xb97314dfff36d80c46b53d87a61b0e124dc94018a0bb680c32765b9a2d457f833a7c42bbc90b3b1520c33a182580398d", + "0x8c856e6ba4a815bdb891e1276f93545b7072f6cb1a9aa6aa5cf240976f29f4dee01878638500a6bf1daf677b96b54343", + "0xad4a861c59f1f5ca1beedd488fb3d131dea924fffd8e038741a1a7371fad7370ca5cf80dc01f177fbb9576713bb9a5b3", + "0xa7f44eef817d5556f0d1abcf420301217d23c69dd2988f44d91ea1f1a16c322263cbacd0f190b9ba22b0f141b9267b4f", + "0x806fbd98d411b76979464c40ad88bc07a151628a27fcc1012ba1dfbaf5b5cc9d962fb9b3386008978a12515edce934bc", + "0x967ea5bc403b6db269682f7fd0df90659350d7e1aa66bc4fab4c9dfcd75ed0bba4b52f1cebc5f34dc8ba810793727629", + "0xb627b683ee2b32c1ab4ccd27b9f6cce2fe097d96386fa0e5c182ad997c4c422ab8dfc03870cd830b8c774feb66537282", + "0x963fc03a44e9d502cc1d23250efef44d299befd03b898d07ce63ca607bb474b5cf7c965a7b9b0f32198b04a8393821f7", + "0xaa367b021469af9f5b764a79bb3afbe2d87fe1e51862221672d1a66f954b165778b7c27a705e0f93841fab4c8468344d", + "0xa430d475bf8580c59111103316fe1aa79c523ea12f1d47a976bbfae76894717c20220e31cf259f08e84a693da6688d70", + "0xaa22ea63654315e033e09d4d4432331904a6fc5fb1732557987846e3c564668ca67c60a324b4af01663a23af11a9ce4b", + "0x929ab1a2a009b1eb37a2817c89696a06426529ebe3f306c586ab717bd34c35a53eca2d7ddcdef36117872db660024af9", + "0x989b21ebe9ceab02488992673dc071d4d5edec24bff0e17a4306c8cb4b3c83df53a2063d1827edd8ed16d6e837f0d222", + "0x809d325310f862d6549e7cb40f7e5fc9b7544bd751dd28c4f363c724a0378c0e2adcb5e42ec8f912f5f49f18f3365c07", + "0xac3ba42f5f44f9e1fc453ce49c4ab79d0e1d5c42d3b30b1e098f3ab3f414c4c262fa12fb2be249f52d4aaf3c5224beb9", + "0xb46ab8c5091a493d6d4d60490c40aa27950574a338ea5bbc045be3a114af87bdcb160a8c80435a9b7ad815f3cb56a3f3", + "0xae2328f3b0ad79fcda807e69a1b5278145225083f150f67511dafc97e079f860c3392675f1752ae7e864c056e592205b", + "0x972b4fb39c31cbe127bf9a32a5cc10d621ebdd9411df5e5da3d457f03b2ab2cd1f6372d8284a4a9400f0b06ecdbfd38e", + "0xb143daf6893d674d607772b3b02d8ac48f294237e2f2c87963c0d4e26d9227d94a2a13512457c3d5883544bbc259f0ef", + "0xb8fbf7696210a36e20edabd77839f4dfdf50d6d015cdf81d587f90284a9bcef7d2a1ff520728d7cc69a4843d6c20dedd", + "0xb7c8194b30d3d6ef5ab66ec88ad7ebbc732a3b8a41731b153e6f63759a93f3f4a537eab9ad369705bd730184bdbbdc34", + "0xaefe172eac5568369a05980931cc476bebd9dea573ba276d59b9d8c4420784299df5a910033b7e324a6c2dfc62e3ef05", + "0x93c4a4a8bcbc8b190485cc3bc04175b7c0ed002c28c98a540919effd6ed908e540e6594f6db95cd65823017258fb3b1c", + "0x8d2141e4a17836c548de9598d7b298b03f0e6c73b7364979a411c464e0628e21cff6ac3d6decdba5d1c4909eff479761", + "0x8ba307b9e7cb63a6c4f3851b321aebfdb6af34a5a4c3bd949ff7d96603e59b27ff4dc4970715d35f7758260ff942c9e9", + "0x831a3df39be959047b2aead06b4dcd3012d7b29417f642b83c9e8ce8de24a3dbbd29c6fdf55e2db3f7ea04636c94e403", + "0x88da2d7a6611bc16adc55fc1c377480c828aba4496c645e3efe0e1a67f333c05a0307f7f1d2df8ac013602c655c6e209", + "0xb6ff8b8aa0837b99a1a8b46fb37f20ad4aecc6a98381b1308697829a59b8442ffc748637a88cb30c9b1f0f28a926c4f6", + "0xb0fe9f98c3da70927c23f2975a9dc4789194d81932d2ad0f3b00843dd9cbd7fb60747a1da8fe5a79f136a601becf279d", + "0xa89f440c71c561641589796994dd2769616b9088766e983c873fae0716b95c386c8483ab8a4f367b6a68b72b7456dd32", + "0xb80b5d54d4b344840e45b79e621bd77a3f83fb4ce6d8796b7d6915107b3f3c34d2e7d95bdafd120f285669e5acf2437a", + "0x907d7fd3e009355ab326847c4a2431f688627faa698c13c03ffdd476ecf988678407f029b8543a475dcb3dafdf2e7a9c", + "0x95751d17ed00a3030bce909333799bb7f4ab641acf585807f355b51d6976dceee410798026a1a004ef4dcdff7ec0f5b8", + "0xa82904bdf614de5d8deaff688c8a5e7ac5b3431687acbcda8fa53960b7c417a39c8b2e462d7af91ce6d79260f412db8e", + "0xb4b9a1823fe2d983dc4ec4e3aaea297e581c3fc5ab4b4af5fa1370caa37af2d1cc7fc6bfc5e7da60ad8fdce27dfe4b24", + "0xb8a4c60c5171189414887847b9ed9501bff4e4c107240f063e2d254820d2906b69ef70406c585918c4d24f1dd052142b", + "0x8ad40a612824a7994487731a40b311b7349038c841145865539c6ada75c56de6ac547a1c23df190e0caaafecddd80ccc", + "0xaa1a87735fc493a80a96a9a57ca40a6d9c32702bfcaa9869ce1a116ae65d69cefe2f3e79a12454b4590353e96f8912b4", + "0xb275e7ba848ce21bf7996e12dbeb8dadb5d0e4f1cb5a0248a4f8f9c9fe6c74e3c93f4b61edbcb0a51af5a141e1c14bc7", + "0xab2a104fed3c83d16f2cda06878fa5f30c8c9411de71bfb67fd2fc9aa454dcbcf3d299d72f8cc12e919466a50fcf7426", + "0x8d6665fb1d4d8d1fa23bd9b8a86e043b8555663519caac214d1e3e3effbc6bee7f2bcf21e645f77de0ced279d69a8a8b", + "0xaec6edcde234df502a3268dd2c26f4a36a2e0db730afa83173f9c78fcb2b2f75510a02b80194327b792811caefda2725", + "0x901478a297669d608e406fe4989be75264b6c8be12169aa9e0ad5234f459ca377f78484ffd2099a2fe2db5e457826427", + "0x8cdac557de7c42d1f3780e33dec1b81889f6352279be81c65566cdd4952d4c15d79e656cbd46035ab090b385e90245ef", + "0xaeacc2ecb6e807ad09bedd99654b097a6f39840e932873ace02eabd64ccfbb475abdcb62939a698abf17572d2034c51e", + "0x8a97cefe5120020c38deeb861d394404e6c993c6cbd5989b6c9ebffe24f46ad11b4ba6348e2991cbf3949c28cfc3c99d", + "0x97d2624919e78406e7460730680dea8e71c8571cf988e11441aeea54512b95bd820e78562c99372d535d96f7e200d20d", + "0x8ad456f6ff8cd58bd57567d931f923d0c99141978511b17e03cab7390a72b9f62498b2893e1b05c7c22dd274e9a31919", + "0x8e895f80e485a7c4f56827bf53d34b956281cdc74856c21eb3b51f6288c01cc3d08565a11cc6f3e2604775885490e8c5", + "0x97ed3b9e6fb99bf5f945d4a41f198161294866aa23f2327818cdd55cb5dc4c1a8eff29dd8b8d04902d6cd43a71835c82", + "0xaf35f4dc538d4ad5cdf710caa38fd1eb496c3fa890a047b6a659619c5ad3054158371d1e88e0894428282eed9f47f76b", + "0xa8292d0844084e4e3bb7af92b1989f841a46640288c5b220fecfad063ee94e86e13d3d08038ec2ac82f41c96a3bfe14d", + "0x8f855cca2e440d248121c0469de1f94c2a71b8ee2682bbad3a78243a9e03da31d1925e6760dbc48a1957e040fae9abe8", + "0x948043cf1bc2ef3c01105f6a78dc06487f57548a3e6ef30e6ebc51c94b71e4bf3ff6d0058c72b6f3ecc37efd7c7fa8c0", + "0xa31a671876d5d1e95fe2b8858dc69967231190880529d57d3cab7f9f4a2b9b458ac9ee5bdaa3289158141bf18f559efb", + "0x968f3c029f57ee31c4e1adea89a7f92e28483af9a74f30fbdb995dc2d40e8e657dff8f8d340d4a92bf65f54440f2859f", + "0xa2b539a5bccd43fa347ba9c15f249b417997c6a38c63517ca38394976baa08e20be384a360969ff54e7e721db536b3e5", + "0xb8f7f353eec45da77fb27742405e5ad08d95ec0f5b6842025be9def3d9892f85eb5dd0921b41e6eff373618dba215bca", + "0xac4a7a27ba390a75d0a247d93d4a8ef1f0485f8d373a4af4e1139369ec274b91b3464d9738eeaceb19cd6f509e2f8262", + "0xade616010dc5009e7fc4f8d8b00dc716686a5fa0a7816ad9e503e15839d3b909b69d9dd929b7575376434ffec0d2bea8", + "0x8e2e234684c81f21099f5c54f6bbe2dd01e3b172623836c77668a0c49ce1fe218786c3827e4d9ae2ea25c50a8924fb3c", + "0x966492248aee24f0f56c8cfca3c8ec6ba3b19abb69ae642041d4c3be8523d22c65c4dafcab4c58989ccc4e0bd2f77919", + "0x8898212fe05bc8de7d18503cb84a1c1337cc2c09d1eeef2b475aa79185b7322bf1f8e065f1bf871c0c927dd19faf1f6d", + "0xa260891891103089a7afbd9081ea116cfd596fd1015f5b65e10b0961eb37fab7d09c69b7ce4be8bf35e4131848fb3fe4", + "0x97e4ab610d414f9210ed6f35300285eb3ccff5b0b6a95ed33425100d7725e159708ea78704497624ca0a2dcabce3a2f9", + "0x977f72d06ad72d4aa4765e0f1f9f4a3231d9f030501f320fe7714cc5d329d08112789fa918c60dd7fdb5837d56bb7fc6", + "0x973b731992a3e69996253d7f36dd7a0af1982b5ed21624b77a7965d69e9a377b010d6dabf88a8a97eec2a476259859cc", + "0x8e78ee8206506dd06eb7729e32fceda3bebd8924a64e4d8621c72e36758fda3d0001af42443851d6c0aea58562870b43", + "0xb702a53ebcc17ae35d2e735a347d2c700e9cbef8eadbece33cac83df483b2054c126593e1f462cfc00a3ce9d737e2af5", + "0xac63d79c799783a8466617030c59dd5a8f92ee6c5204676fd8d881ce5f7f8663bdbeb0379e480ea9b6340ab0dc88e574", + "0x91b829068874d911a310a5f9dee001021f97471307b5a3de9ec336870ec597413e1d92010ce320b619f38bed7c4f7910", + "0x8745f8bd86c2bb30efa7efb7725489f2654f3e1ac4ea95bd7ad0f3cfa223055d06c187a16192d9d7bdaea7b050c6a324", + "0xa7d60dbe4b6a7b054f7afe9ee5cbbfeca0d05dc619e6041fa2296b549322529faddb8a11e949562309aecefb842ac380", + "0xa59afebadf0260e832f6f44468443562f53fbaf7bcb5e46e1462d3f328ac437ce56edbca617659ac9883f9e13261fad7", + "0xac83443fd0afe99ad49de9bf8230158c118e2814c9c89db5ac951c240d6c2ce45e7677221279d9e97848ec466b99aafe", + "0xb44262515e34f2db597c8128c7614d33858740310a49cdbdf9c8677c5343884b42c1292759f55b8b4abc4c86e4728033", + "0x80c7c4de098cbf9c6d17b14eba1805e433b5bc905f6096f8f63d34b94734f2e4ebf4bce8a177efd1186842a61204a062", + "0x96f18ec03ae47c205cc4242ca58e2eff185c9dca86d5158817e2e5dc2207ab84aadda78725f8dc080a231efdc093b940", + "0xa274c84b04338ed28d74683e2a7519c2591a3ce37c294d6f6e678f7d628be2db8eff253ede21823e2df7183e6552f622", + "0xb3364e327d381f46940c0e11e29f9d994efc6978bf37a32586636c0070b03e4e23d00650c1440f448809e1018ef9f6d8", + "0xabcbbb70b16f6e517c0ab4363ab76b46e4ff58576b5f8340e5c0e8cc0e02621b6e23d742d73b015822a238b17cfd7665", + "0xabdf38f3b20fc95eff31de5aa9ef1031abfa48f1305ee57e4d507594570401503476d3bcc493838fc24d6967a3082c7f", + "0x8949e2cee582a2f8db86e89785a6e46bc1565c2d8627d5b6bf43ba71ffadfab7e3c5710f88dcb5fb2fc6edf6f4fae216", + "0xb0c0b8ab1235bf1cda43d4152e71efc1a06c548edb964eb4afceb201c8af24240bf8ab5cae30a08604e77432b0a5faf0", + "0x8eb248390193189cf0355365e630b782cd15751e672dc478b39d75dc681234dcd9309df0d11f4610dbb249c1e6be7ef9", + "0xa3e0fdfd4d29ea996517a16f0370b54787fefe543c2fe73bfc6f9e560c1fd30dad8409859e2d7fa2d44316f24746c712", + "0x805beec33238b832e8530645a3254aeef957e8f7ea24bcfc1054f8b9c69421145ebb8f9d893237e8a001c857fedfc77e", + "0xa22daf35f6e9b05e52e0b07f7bd1dbbebd2c263033fb0e1b2c804e2d964e2f11bc0ece6aca6af079dd3a9939c9c80674", + "0xa7327fcb3710ed3273b048650bde40a32732ef40a7e58cf7f2f400979c177944c8bc54117ba6c80d5d4260801dddab79", + "0x85199db563427c5edcbac21f3d39fec2357be91fb571982ddcdc4646b446ad5ced84410de008cb47b3477ee0d532daf8", + "0xb41ebe38962d112da4a01bf101cb248d808fbd50aaf749fc7c151cf332032eb3e3bdbd716db899724b734d392f26c412", + "0xb721cb2b37b3c477a48e3cc0044167d51ff568a5fd2fb606e5aec7a267000f1ddc07d3db919926ae12761a8e017c767c", + "0x8f3eb34bb68759d53c6677de4de78a6c24dd32c8962a7fb355ed362572ef8253733e6b52bc21c9f92ecd875020a9b8de", + "0xb43037f7e3852c34ed918c5854cd74e9d5799eeddfe457d4f93bb494801a064735e326a76e1f5e50a339844a2f4a8ec9", + "0x97ab9911f3f659691762d568ae0b7faa1047b0aed1009c319fa79d15d0db8db9f808fc385dc9a68fa388c10224985379", + "0x9241ee66c0191b06266332dc9161dede384c4bb4e116dbd0890f3c3790ec5566da4568243665c4725b718ac0f6b5c179", + "0xa5cc3c35228122f410184e4326cf61a37637206e589fcd245cb5d0cec91031f8f7586b80503070840fdfd8ce75d3c88b", + "0x80c600a5fe99354ce59ff0f84c760923dc8ff66a30bf47dc0a086181785ceb01f9b951c4e66df800ea6d705e8bc47055", + "0xb766caeafcc00378135ae53397f8a67ed586f5e30795462c4a35853de6681b1f17401a1c40958de32b197c083b7279c1", + "0xb659b71fe70f37573ff7c5970cc095a1dc0da3973979778f80a71a347ef25ad5746b2b9608bad4ab9a4a53a4d7df42d7", + "0x938c85ab14894cc5dfce3d80456f189a2e98eddbc8828f4ff6b1df1dcb7b42b17ca2ff40226a8a1390a95d63dca698dd", + "0xa44324e3fe96e9c12b40ded4f0f3397c8c7ee8ff5e96441118d8a6bfad712d3ac990b2a6a23231a8f691491ac1fd480f", + "0x967e6555ccba395b2cc1605f8484c5112c7b263f41ce8439a99fd1c71c5ed14ad02684d6f636364199ca48afbbde13be", + "0xafe38d4684132a0f03d806a4c8df556bf589b25271fbc6fe2e1ed16de7962b341c5003755da758d0959d2e6499b06c68", + "0x99d386adaea5d4981d7306feecac9a555b74ffdc218c907c5aa7ac04abaead0ec2a8237300d42a3fbc464673e417ceed", + "0xa290563904d5a8c0058fc8330120365bdd2ba1fdbaef7a14bc65d4961bb4217acfaed11ab82669e359531f8bf589b8db", + "0x819ff14cdea3ab89d98e133cd2d0379361e2e2c67ad94eeddcdb9232efd509f51d12f4f03ebd4dd953bd262a886281f7", + "0xafcde944411f017a9f7979755294981e941cc41f03df5e10522ef7c7505e5f1babdd67b3bf5258e8623150062eb41d9b", + "0xb152c2da6f2e01c8913079ae2b40a09b1f361a80f5408a0237a8131b429677c3157295e11b365b1b1841924b9efb922e", + "0x972f817caedb254055d52e963ed28c206848b6c4cfdb69dbc961c891f8458eaf582a6d4403ce1177d87bc2ea410ef60a", + "0x861367e87a9aa2f0f68296ba50aa5dbc5713008d260cc2c7e62d407c2063064749324c4e8156dc21b749656cfebce26b", + "0xace2b77ffb87366af0a9cb5d27d6fc4a14323dbbf1643f5f3c4559306330d86461bb008894054394cbfaefeaa0bc2745", + "0x8cab67f50949cc8eee6710e27358aea373aae3c92849f8f0b5531c080a6300cdf2c2094fe6fecfef6148de0d28446919", + "0xb97f37da9005b440b4cb05870dd881bf8491fe735844f2d5c8281818583b38e02286e653d9f2e7fa5e74c3c3eb616540", + "0xa97e3bc57ede73ecd1bbf02de8f51b4e7c1a067da68a3cd719f4ba26a0156cbf1cef2169fd35a18c5a4cced50d475998", + "0xb0edeab9850e193a61f138ef2739fc42ceec98f25e7e8403bfd5fa34a7bc956b9d0898250d18a69fa4625a9b3d6129da", + "0xb48b9490a5d65296802431852d548d81047bbefc74fa7dc1d4e2a2878faacdfcb365ae59209cb0ade01901a283cbd15d", + "0x92c333e694f89f0d306d54105b2a5dcc912dbe7654d9e733edab12e8537350815be472b063e56cfde5286df8922fdecb", + "0xa9dcf8b679e276583cf5b9360702a185470d09aea463dc474ee9c8aee91ef089dacb073e334e47fbc78ec5417c90465c", + "0xa334b8b244f0d598a02da6ae0f918a7857a54dce928376c4c85df15f3b0f2ba3ac321296b8b7c9dd47d770daf16c8f8c", + "0x841a50f772956622798e5cd208dc7534d4e39eddee30d8ce133383d66e5f267e389254a0cdae01b770ecd0a9ca421929", + "0x83064a1eaa937a84e392226f1a60b7cfad4efaa802f66de5df7498962f7b2649924f63cd9962d47906380b97b9fe80e1", + "0x87f7e371a1817a63d6838a8cf4ab3a8473d19ce0d4f40fd013c03d5ddd5f4985df2956531cc9f187928ef54c68f4f9a9", + "0x8e67f623d69ecd430c9ee0888520b6038f13a2b6140525b056dc0951f0cfed2822e62cf11d952a483107c5c5acac4826", + "0xb0abb78ce465bf7051f563c62e8be9c57a2cc997f47c82819300f36e301fefd908894bb2053a9d27ce2d0f8c46d88b5b", + "0x8097fae1653247d2aed4111533bc378171d6b2c6d09cbc7baa9b52f188d150d645941f46d19f7f5e27b7f073c1ebd079", + "0xa7c3182eab25bd6785bacf12079d0afb0a9b165d6ed327814e2177148539f249eb9b5b2554538f54f3c882d37c0a8abe", + "0xab3da00f9bdc13e3f77624f58a3a18fc3728956f84b5b549d62f1033ae4b300538e53896e2d943f160618e05af265117", + "0xb3fb0842f9441fb1d0ee0293b6efbc70a8f58d12d6f769b12872db726b19e16f0f65efbc891cf27a28a248b0ef9c7e75", + "0xb35443ae8aa66c763c2db9273f908552fe458e96696b90e41dd509c17a5c04ee178e3490d9c6ba2dc0b8f793c433c134", + "0x8711ab833fc03e37acf2e1e74cfd9133b101ff4144fe30260654398ae48912ab46549d552eb9d15d2ea57760d35ac62e", + "0xb5d55a6ae65bb34dd8306806cb49b5ccb1c83a282ee47085cf26c4e648e19a52d9c422f65c1cd7e03ca63e926c5e92ea", + "0x8cf43eea93508ae586fa9a0f1354a1e16af659782479c2040874a46317f9e8d572a23238efa318fdfb87cc63932602b7", + "0xb9cfef2af9681b2318f119d8611ff6d9485a68d8044581b1959ab1840cbca576dbb53eec17863d2149966e9feb21122f", + "0x880c0f8f49c875dfd62b4ddedde0f5c8b19f5687e693717f7e5c031bc580e58e13ab497d48b4874130a18743c59fdce3", + "0x99661cf4c94a74e182752bcc4b98a8c2218a8f2765642025048e12e88ba776f14f7be73a2d79bd21a61def757f47f904", + "0xa03efa6bebe84f4f958a56e2d76b5ba4f95dd9ed7eb479edc7cc5e646c8d4792e5b0dfc66cc86aa4b4afe2f7a4850760", + "0x978a781c0e4e264e0dad57e438f1097d447d891a1e2aa0d5928f79a9d5c3faae6f258bc94fdc530b7b2fa6a9932bb193", + "0xa4c91a0d6f16b1553264592b4cbbbf3ca5da32ab053ffbdd3dbb1aed1afb650fb6e0dc5274f71a51d7160856477228db", + "0xa32d6bb47ef9c836d9d2371807bafbbbbb1ae719530c19d6013f1d1f813c49a60e4fa51d83693586cba3a840b23c0404", + "0x8a5e0a9e4758449489df10f3386029ada828d1762e4fb0a8ffe6b79e5b6d5d713cb64ed95960e126398b0cdb89002bc9", + "0xa530aa7e5ca86fcd1bec4b072b55cc793781f38a666c2033b510a69e110eeabb54c7d8cbcb9c61fee531a6f635ffa972", + "0x86333ad9f898947e31ce747728dc8c887479e18d36ff3013f69ebef807d82c6981543b5c3788af93c4d912ba084d3cba", + "0xb6fdbd12ba05aa598d80b83f70a15ef90e5cba7e6e75fa038540ee741b644cd1f408a6cecfd2a891ef8d902de586c6b5", + "0xa11e2e1927e6704cdb8874c75e4f1842cef84d7d43d7a38e339e61dc8ba90e61bbb20dd3c12e0b11d2471d58eed245be", + "0x85a98332292acb744bd1c0fd6fdcf1f889a78a2c9624d79413ffa194cc8dfa7821a4b60cde8081d4b5f71f51168dd67f", + "0x94902e980de23c4de394ad8aec91b46f888d18f045753541492bfbb92c59d3daa8de37ae755a6853744af8472ba7b72b", + "0x88c7fee662ca7844f42ed5527996b35723abffd0d22d4ca203b9452c639a5066031207a5ae763dbc0865b3299d19b1ec", + "0x894bec21a453ae84b592286e696c35bc30e820e9c2fd3e63dd4fbe629e07df16439c891056070faa490155f255bf7187", + "0xa23764e140a87e5991573521af039630dd28128bf56eed2edbed130fd4278e090b60cf5a1dca9de2910603d44b9f6d45", + "0x986d5d7d2b5bde6d16336f378bd13d0e671ad23a8ec8a10b3fc09036faeeb069f60662138d7a6df3dfb8e0d36180f770", + "0xae048892d5c328eefbdd4fba67d95901e3c14d974bfc0a1fc68155ca9f0d59e61d7ba17c6c9948b120cf35fd26e6fee9", + "0xaa74451d51fe82b4581ead8e506ec6cd881010f7e7dd51fc388eb9a557db5d3c6721f81c151d08ebd9c2591689fbc13e", + "0xb00da10efe1c29ee03c9d37d5918e391ae30e48304e294696b81b434f65cf8c8b95b9d1758c64c25e534d045ba28696f", + "0xb09b91f929de52c09d48ca0893be6eb44e2f5210a6c394689dc1f7729d4be4e11d0474b178e80cea8c2ac0d081f0e811", + "0xb0f445f9d143e28b9df36b0f2c052da87ee2ca374d9d0fbe2eff66ca6fe5fe0d2c1951b428d58f7314b7e74e45d445ea", + "0xad741efe9e472026aa49ae3d9914cb9c1a6f37a54f1a6fe6419bebd8c7d68dca105a751c7859f4389505ede40a0de786", + "0xa72e53d0a1586d736e86427a93569f52edd2f42b01e78aee7e1961c2b63522423877ae3ac1227a2cf1e69f8e1ff15bc3", + "0xb3477004837dbd8ba594e4296f960fc91ab3f13551458445e6c232eb04b326da803c4d93e2e8dcd268b4413305ff84da", + "0xa0866160ca63d4f2be1b4ea050dac6b59db554e2ebb4e5b592859d8df339b46fd7cb89aaed0951c3ee540aee982c238a", + "0xabaa472d6ad61a5fccd1a57c01aa1bc081253f95abbcba7f73923f1f11c4e79b904263890eeb66926de3e2652f5d1c70", + "0x902b2abecc053a3dbdea9897ee21e74821f3a1b98b2d560a514a35799f4680322550fd3a728d4f6d64e1de98033c32b8", + "0x895d4e4c4ad670abf66d43d59675b1add7afad7438ada8f42a0360c704cee2060f9ac15b4d27e9b9d0996bb801276fe3", + "0xa450067c7eceb0854b3eca3db6cf38669d72cb7143c3a68787833cbca44f02c0be9bfbe082896f8a57debb13deb2afb1", + "0x9566d534e0e30a5c5f1428665590617e95fd05d45f573715f58157854ad596ece3a3cfec61356aee342308d623e029d5", + "0x857090ab9fdb7d59632d068f3cc8cf27e61f0d8322d30e6b38e780a1f05227199b4cd746aac1311c36c659ef20931f28", + "0xa8fdaedecb251f892b66c669e34137f2650509ade5d38fbe8a05d9b9184bb3b2d416186a3640429bd1f3e4b903c159dd", + "0x99a2beee4a10b7941c24b2092192faf52b819afd033e4a2de050fd6c7f56d364d0cf5f99764c3357cf32399e60fc5d74", + "0x89f3fefe37af31e0c17533d2ca1ce0884cc1dc97c15cbfab9c331b8debd94781c9396abef4bb2f163d09277a08d6adf0", + "0xb698ac9d86afa3dc69ff8375061f88e3b0cff92ff6dfe747cebaf142e813c011851e7a2830c10993b715e7fd594604a9", + "0xa506bcfbd7e7e5a92f68a1bd87d07ad5fe3b97aeee40af2bf2cae4efcd77fff03f872732c5b7883aa6584bee65d6f8cb", + "0x8c2fae9bcadab341f49b55230310df93cac46be42d4caa0d42e45104148a91e527af1b4209c0d972448162aed28fab64", + "0xa90a5572198b40fe2fcf47c422274ff36c9624df7db7a89c0eb47eb48a73a03c985f4ac5016161c76ca317f64339bce1", + "0x863f413a394de42cc8166c1c75d513b91d545fff1de6b359037a742c70b008d34bf8e587afa2d62c844d0c6f0ea753e7", + "0xa13d2eeb0776bdee9820ecb6693536720232848c51936bb4ef4fe65588d3f920d08a21907e1fdb881c1ad70b3725e726", + "0xaea6df8e9bb871081aa0fc5a9bafb00be7d54012c5baf653791907d5042a326aeee966fd9012a582cc16695f5baf7042", + "0x8f82eae096d5b11f995de6724a9af895f5e1c58d593845ad16ce8fcae8507e0d8e2b2348a0f50a1f66a17fd6fac51a5c", + "0xaf925a2165e980ced620ff12289129fe17670a90ae0f4db9d4b39bd887ccb1f5d2514ac9ecf910f6390a8fc66bd5be17", + "0xb312e168663842099b88445e940249cc508f080ab0c94331f672e7760258dbd86be5267e4cf25ea25facb80bff82a7e9", + "0x806db23ba7d00b87d544eed926b3443f5f9c60da6b41b1c489fba8f73593b6e3b46ebfcab671ee009396cd77d5e68aa1", + "0x91a8a7fd6542f3e0673f07f510d850864b34ac087eb7eef8845a1d14b2b1b651cbdc27fa4049bdbf3fea54221c5c8549", + "0xb7b1ea6a88694f8d2f539e52a47466695e39e43a5eb9c6f23bca15305fe52939d8755cc3ac9d6725e60f82f994a3772f", + "0x878c9e56c7100c5e47bbe77dc8da5c5fe706cec94d37fa729633bca63cace7c40102eee780fcdabb655f5fa47a99600e", + "0x94ba76b667abf055621db4c4145d18743a368d951565632ed4e743dd50dd3333507c0c34f286a5c5fdbf38191a2255cd", + "0xaf3fcd0a45fe9e8fe256dc7eab242ef7f582dd832d147444483c62787ac820fafc6ca55d639a73f76bfa5e7f5462ab8f", + "0xb89511843453cf4ecd24669572d6371b1e529c8e284300c43e0d5bb6b3aaf35aeb634b3cb5c0a2868f0d5e959c1d0772", + "0xa4fd2dc8db75d3783a020856e2b3aa266dc6926e84f5c491ef739a3bddd46dc8e9e0fc1177937839ef1b18d062ffbb9e", + "0x92c121cf914ca549130e352eb297872a63200e99b148d88fbc9506ad882bec9d0203d65f280fb5b0ba92e336b7f932e8", + "0x86a54d4c12ad1e3605b9f93d4a37082fd26e888d2329847d89afa7802e815f33f38185c5b7292293d788ad7d7da1df97", + "0xa679f673e5ce6a3cce7fa31f22ee3785e96bcb55e5a776e2dd3467bef7440e3555d1a9b87cb215e86ee9ed13a090344b", + "0xab232f756b3fff3262be418a1af61a7e0c95ceebbc775389622a8e10610508cd6784ab7960441917a83cc191c58829ea", + "0xb92b8ef59bbddb50c9457691bc023d63dfcc54e0fd88bd5d27a09e0d98ac290fc90e6a8f6b88492043bf7c87fac8f3e4", + "0xa25ba865e2ac8f28186cea497294c8649a201732ecb4620c4e77b8e887403119910423df061117e5f03fc5ba39042db1", + "0xa60831559d6305839515b68f8c3bc7abbd8212cc4083502e19dd682d56ca37c9780fc3ce4ec2eae81ab23b221452dc57", + "0x8dabc130f296fa7a82870bf9a8405aaf542b222ed9276bba9bd3c3555a0f473acb97d655ee7280baff766a827a8993f0", + "0x87c51ef42233c24a6da901f28c9a075d9ba3c625687c387ad6757b72ca6b5a8885e6902a3082da7281611728b1e45f26", + "0xa791c78464b2d65a15440b699e1e30ebd08501d6f2720adbc8255d989a82fcded2f79819b5f8f201bed84a255211b141", + "0x92fc544ed65b4a3625cf03c41ddff7c039bc22d22c0d59dcc00efd5438401f2606adb125a1d5de294cca216ec8ac35a3", + "0xa9e480188bba1b8fb7105ff12215706665fd35bf1117bacfb6ab6985f4dbc181229873b82e5e18323c2b8f5de03258e0", + "0x90a196035150846cd2b482c7b17027471372a8ce7d914c4d82b6ea7fa705d8ed5817bd42d63886242585baf7d1397a1c", + "0x8f15af4764bc275e6ccb892b3a4362cacb4e175b1526a9a99944e692fe6ccb1b4fc19abf312bb2a089cb1f344d91a779", + "0xa58fd4c5ae4673fa350da6777e13313d5d37ed1dafeeb8f4f171549765b84c895875d9d3ae6a9741f3d51006ef81d962", + "0x97993d456e459e66322d01f8eb13918979761c3e8590910453944bdff90b24091bb018ac6499792515c9923be289f99f", + "0x83e265cde477f2ecc164f49ddc7fb255bb05ff6adc347408353b7336dc3a14fdedc86d5a7fb23f36b8423248a7a67ed1", + "0xb1d6c30771130c77806e7ab893b73d4deb590b2ff8f2f8b5e54c2040c1f3e060e2bd99afc668cf706a2df666a508bbf6", + "0xb58ac36bc6847077584308d952c5f3663e3001af5ecf2e19cb162e1c58bd6c49510205d453cffc876ca1dc6b8e04a578", + "0xb344a5524d80a2f051870c7001f74fcf348a70fcf78dbd20c6ff9ca85d81567d2318c8b8089f2c4f195d6aec9fc15fa6", + "0x92c6bf5ada5d0c3d4dd8058483de36c215fa98edab9d75242f3eff9db07c734ad67337da6f0eefe23a487bf75a600dee", + "0xb4af353a19b06203a815ec43e79a88578cc678c46f5a954b85bc5c53b84059dddba731f3d463c23bfd5273885c7c56a4", + "0x8c13c4274c0d30d184e73eaf812200094bbbd57293780bdadbceb262e34dee5b453991e7f37c7333a654fc71c69d6445", + "0x8c154e665706355e1cc98e0a4cabf294ab019545ba9c4c399d666e6ec5c869ca9e1faf8fb06cd9c0a5c2f51a7d51b70a", + "0xb5343413c1b5776b55ea3c7cdd1f3af1f6bd802ea95effe3f2b91a523817719d2ecc3f8d5f3cc2623ace7e35f99ca967", + "0x8d7160d0ea98161a2d14d46ef01dff72d566c330cd4fabd27654d300e1bc7644c68dc8eabf2a20a59bfe7ba276545f9b", + "0x8283264c8e6d2a36558f0d145c18576b6600ff45ff99cc93eca54b6c6422993cf392668633e5df396b9331e873d457e5", + "0xb3823f4511125e5aa0f4269e991b435a0d6ceb523ebd91c04d7add5534e3df5fc951c504b4fd412a309fd3726b7f940b", + "0x89d1201d1dbd6921867341471488b4d2fd0fc773ae1d4d074c78ae2eb779a59b64c00452c2a0255826fca6b3d03be2b1", + "0xb3ee46ce189956ca298057fa8223b7fd1128cf52f39159a58bca03c71dd25161ac13f1472301f72aef3e1993fe1ab269", + "0x8b4d0c6abcb239b5ed47bef63bc17efe558a27462c8208fa652b056e9eae9665787cd1aee34fbb55beb045c8bfdb882b", + "0xa24052ad8d55ad04bc5d951f78e14213435681594110fd18173482609d5019105b8045182d53ffce4fc29fc8810516c1", + "0x8b4f3691403c3a8ad9e097f02d130769628feddfa8c2b3dfe8cff64e2bed7d6e5d192c1e2ba0ac348b8585e94acd5fa1", + "0xab84312db7b87d711e9a60824f4fe50e7a6190bf92e1628688dfcb38930fe87b2d53f9e14dd4de509b2216856d8d9188", + "0xb7178484d1b55f7e56a4cc250b6b2ec6040437d96bdfddfa7b35ed27435860f3855c2eb86c636f2911b012eb83b00db8", + "0x891e8b8b92a394f36653d55725ef514bd2e2a46840a0a2975c76c2a935577f85289026aaa74384da0afe26775cbddfb9", + "0xaad2e40364edd905d66ea4ac9d51f9640d6fda9a54957d26ba233809851529b32c85660fa401dbee3679ec54fa6dd966", + "0xa1c7786736d6707a48515c38660615fcec67eb8a2598f46657855215f804fd72ab122d17f94fcffad8893f3be658dca7", + "0x850ebc8b661a04318c9db5a0515066e6454fa73865aa4908767a837857ecd717387f614acb614a88e075d4edc53a2f5a", + "0xb97f1c6eee8a78f137c840667cc288256e39294268a3009419298a04a1d0087c9c9077b33c917c65caf76637702dda8a", + "0xaf8cd66d303e808b22ec57860dd909ca64c27ec2c60e26ffecfdc1179d8762ffd2739d87b43959496e9fee4108df71df", + "0xa379dc44cb6dd3b9d378c07b2ec654fec7ca2f272de6ba895e3d00d20c9e4c5550498a843c8ac67e4221db2115bedc1c", + "0x8e105d012dd3f5d20f0f1c4a7e7f09f0fdd74ce554c3032e48da8cce0a77260d7d47a454851387770f5c256fa29bcb88", + "0x8414f79b496176bc8b8e25f8e4cfee28f4f1c2ddab099d63d2aca1b6403d26a571152fc3edb97794767a7c4686ad557c", + "0xb723d6344e938d801cca1a00032af200e541d4471fd6cbd38fb9130daa83f6a1dffbbe7e67fc20f9577f884acd7594b2", + "0xa9b8364e40ef15c3b5902e5534998997b8493064fa2bea99600def58279bb0f64574c09ba11e9f6f669a8354dd79dc85", + "0x99db4b1bb76475a6fd75289986ef40367960279524378cc917525fb6ba02a145a218c1e9caeb99332332ab486a125ac0", + "0xa5c66cfab3d9ebf733c4af24bebc97070e7989fe3c73e79ac85fb0e4d40ae44fb571e0fad4ad72560e13ed453900d14f", + "0x8f76143597777d940b15a01b39c5e1b045464d146d9a30a6abe8b5d3907250e6c7f858ff2308f8591e8b0a7b3f3c568a", + "0x975f8dc4fb55032a5df3b42b96c8c0ffecb75456f01d4aef66f973cb7270d4eff32c71520ceefc1adcf38d77b6b80c67", + "0xb998b2269932cbd58d04b8e898d373ac4bb1a62e8567484f4f83e224061bc0f212459f1daae95abdbc63816ae6486a55", + "0x89cf232e6303b0751561960fd4dea5754a28c594daf930326b4541274ffb03c7dd75938e411eb9a375006a70ce38097f", + "0xa64b4a6d72354e596d87cda213c4fc2814009461570ccb27d455bbe131f8d948421a71925425b546d8cf63d5458cd64b", + "0xa785d2961a2fa5e70bffa137858a92c48fe749fee91b02599a252b0cd50d311991a08efd7fa5e96b78d07e6e66ffe746", + "0x8b8835dea6ba8cf61c91f01a4b3d2f8150b687a4ee09b45f2e5fc8f80f208ae5d142d8e3a18153f0722b90214e60c5a7", + "0xac33e7b1ee47e1ee4af472e37ab9e9175260e506a4e5ce449788075da1b53c44cb035f3792d1eea2aa24b1f688cc6ed3", + "0xb3671746fa7f848c4e2ae6946894defadd815230b906b419143523cc0597bc1d6c0a4c1e09d49b66b4a2c11cde3a4de3", + "0x956fd9fa58345277e06ba2ec72f49ed230b8d3d4ff658555c52d6cddeb84dd4e36f1a614f5242d5ca0192e8daf0543c2", + "0xb8c3535701ddbeec2db08e17a4fa99ba6752d32ece5331a0b8743676f421fcb14798afc7c783815484f14693d2f70db8", + "0x8b26e14e2e136b65c5e9e5c2022cee8c255834ea427552f780a6ca130a6446102f2a6f334c3f9a0308c53df09e3dba7e", + "0x84011dc150b7177abdcb715efbd8c201f9cb39c36e6069af5c50a096021768ba40cef45b659c70915af209f904ede3b6", + "0x822beda3389963428cccc4a2918fa9a8a51cf0919640350293af70821967108cded5997adae86b33cb917780b097f1ca", + "0x98e7bbe27a1711f4545df742f17e3233fbcc63659d7419e1ca633f104cb02a32c84f2fac23ca2b84145c2672f68077ab", + "0x866d3090db944ecf190dd0651abf67659caafd31ae861bab9992c1e3915cb0952da7c561cc7e203560a610f48fae633b", + "0xa60d5a6327c4041b0c00a1aa2f0af056520f83c9ce9d9ccd03a0bd4d9e6a1511f26a422ea86bd858a1f77438adf07e6c", + "0xb14b9e348215b278696018330f63c38db100b0542cfc5be11dc33046e3bca6a13034c4ae40d9cef9ea8b34fef0910c4e", + "0x95e47021c1726eac2e5853f570d6225332c6e48e04c9738690d53e07c6b979283ebae31e2af1fc9c9b3e59f87e5195b1", + "0xa97486bb9047391661718a54b8dd5a5e363964e495eae6c692730264478c927cf3e66dd3602413189a3699fbeae26e15", + "0x80d9ea168ff821b22c30e93e4c7960ce3ad3c1e6deeebedd342a36d01bd942419b187e2f382dbfd8caa34cca08d06a48", + "0x97b90beaa56aa936c3ca45698f79273a68dd3ccd0076eab48d2a4db01782665e63f33c25751c1f2e070f4d1a8525bf96", + "0x8f13415d960b9d7a1d93ef28afc2223e926639b63bdefce0f85e945dfc81670a55df288893a0d8b3abe13c5708f82f91", + "0x8a3bd8b0b1be570b65c4432a0f6dc42f48a2000e30ab089cf781d38f4090467b54f79c0d472fcbf18ef6a00df69cc6f3", + "0x8687551a79158e56b2375a271136756313122132a6670fa51f99a1b5c229ed8eea1655a734abae13228b3ebfd2a825dd", + "0xb28fe9629592b9e6a55a1406903be76250b1c50c65296c10c5e48c64b539fb08fe11f68cf462a6edcbba71b0cee3feb2", + "0x86844f0ef9d37142faf3b1e196e44fbe280a3ba4189aa05c356778cb9e3b388a2bff95eed305ada8769935c9974e4c57", + "0xb2fb31ccb4e69113763d7247d0fc8edaae69b550c5c56aecacfd780c7217dc672f9fb7496edf4aba65dacf3361268e5b", + "0xb290fa4c1346963bd5225235e6bdf7c542174dab4c908ab483d1745b9b3a6015525e398e1761c90e4b49968d05e30eea", + "0xa0ea1c8883d58d5a784da3d8c8a880061adea796d7505c1f903d07c287c5467f71e4563fc0faafbc15b5a5538b0a7559", + "0xa91700d1a00387502cdba98c90f75fbc4066fefe7cc221c8f0e660994c936badd7d2695893fde2260c8c11d5bdcdd951", + "0xb0d08d880f3b456a10bf65cff983f754f545c840c413aea90ce7101a66eb0a0b9b1549d6c4d57725315828607963f15a", + "0xb4ea26be3f4bd04aa82d7c4b0913b97bcdf5e88b76c57eb1a336cbd0a3eb29de751e1bc47c0e8258adec3f17426d0c71", + "0xb6c03b93b1ab1b88ded8edfa1b487a1ed8bdce8535244dddb558ffb78f89b1c74058f80f4db2320ad060d0c2a9c351cc", + "0x8f115af274ef75c1662b588b0896b97d71f8d67986ae846792702c4742ab855952865ce236b27e2321967ce36ff93357", + "0xa0543e77acd2aeecde13d18d258aeb2c7397b77f17c35a1992e8666ea7abcd8a38ec6c2741bd929abba2f766138618cc", + "0xa4491b0198459b3f552855d680a59214eb74e6a4d6c5fa3b309887dc50ebea2ecf6d26c040550f7dc478b452481466fb", + "0xb74acf5c149d0042021cb2422ea022be4c4f72a77855f42393e71ffd12ebb3eec16bdf16f812159b67b79a9706e7156d", + "0x974451b1df33522ce7056de9f03e10c70bf302c44b0741a59df3d6877d53d61a7394dcee1dd46e013d7cb9d73419c092", + "0x8d87f0714acee522eb58cec00360e762adc411901dba46adc9227124fa70ee679f9a47e91a6306d6030dd4eb8de2f3c1", + "0xb5dc96106593b42b30f06f0b0a1e0c1aafc70432e31807252d3674f0b1ea5e58eac8424879d655c9488d85a879a3e572", + "0x8cfb0fa1068be0ec088402f5950c4679a2eb9218c729da67050b0d1b2d7079f3ddf4bf0f57d95fe2a8db04bc6bcdb20c", + "0xb9941cccd51dc645920d2781c81a317e5a33cb7cf76427b60396735912cb6d2ca9292bb4d36b6392467d390d2c58d9f3", + "0x815f8dfc6f90b3342ca3fbd968c67f324dae8f74245cbf8bc3bef10e9440c65d3a2151f951e8d18959ba01c1b50b0ec1", + "0xa80d465c3f8cc63af6d74a6a5086b626c1cb4a8c0fee425964c3bd203d9d7094e299f81ce96d58afc20c8c9a029d9dae", + "0x8e5029b2ccf5128a12327b5103f7532db599846e422531869560ceaff392236434d87159f597937dbf4054f810c114f4", + "0x976adb1af21e0fc34148917cf43d933d7bfd3fd12ed6c37039dcd5a4520e3c6cf5868539ba5bf082326430deb8a4458d", + "0xa53fda86571b0651f5affb74312551a082fffc0385cfd24c1d779985b72a5b1cf7c78b42b4f7e51e77055f8e5e915b00", + "0xa8a84564b56a9003adcadb3565dc512239fc79572762cda7b5901a255bc82656bb9c01212ad33d6bef4fbbce18dacc87", + "0xaf30ff47ecc5b543efba1ba4706921066ca8bb625f40e530fb668aea0551c7647a9d126e8aba282fbcce168c3e7e0130", + "0xb0c53f0abe78ee86c7b78c82ae1f7c070bb0b9c45c563a8b3baa2c515d482d7507bb80771e60b38ac13f78b8af92b4a9", + "0x96bac54062110dada905363211133f1f15dc7e4fd80a4c6e4a83bc9a0bcbbaba11cd2c7a13debcf0985e1a954c1da66b", + "0xa9a0f1f51ff877406fa83a807aeb17b92a283879f447b8a2159653db577848cc451cbadd01f70441e351e9ed433c18bc", + "0x82b5d62fea8db8d85c5bc3a76d68dedd25794cf14d4a7bc368938ffca9e09f7e598fdad2a5aac614e0e52f8112ae62b9", + "0x90bffba5d9ff40a62f6c8e9fc402d5b95f6077ed58d030c93e321b8081b77d6b8dac3f63a92a7ddc01585cf2c127d66c", + "0xb996b0a9c6a2d14d984edcd6ab56bc941674102980d65b3ad9733455f49473d3f587c8cbf661228a7e125ddbe07e3198", + "0x8d531513c70c2d3566039f7ca47cd2352fd2d55b25675a65250bdb8b06c3843db7b2d29c626eed6391c238fc651cf350", + "0x8700b876b35b4b10a8a9372c5230acecd39539c1bb87515640293ad4464a9e02929d7d6a6a11112e8a29564815ac0de4", + "0x842651bbe99720438d8d4b0218feb60481280c05beb17750e9ca0d8c0599a60f873b7fbdcc7d8835ba9a6d57b16eec03", + "0x819bba35fb6ace1510920d4dcff30aa682a3c9af9022e287751a6a6649b00c5402f14b6309f0aeef8fce312a0402915e", + "0xabb941e8d406c2606e0ddc35c113604fdd9d249eacc51cb64e2991e551b8639ce44d288cc92afa7a1e7fc599cfc84b22", + "0xb9208ec1c1d7a1e99b59c62d3e4e61dfb706b0e940d09d3abfc3454c19749083260614d89cfd7e822596c3cdbcc6bb95", + "0x8f268d1195ab465beeeb112cd7ffd5d5548559a8bc01261106d3555533fc1971081b25558d884d552df0db1cddda89d8", + "0xb5fd856d0578620a7e25674d9503be7d97a2222900e1b4738c1d81ff6483b144e19e46802e91161e246271f90270e6cf", + "0xa3d5de52f48df72c289ff713e445991f142390798cd42bd9d9dbefaee4af4f5faf09042d126b975cf6b98711c3072553", + "0xa2f432d147d904d185ff4b2de8c6b82fbea278a2956bc406855b44c18041854c4f0ecccd472d1d0dff1d8aa8e281cb1d", + "0xb1bd85d29ebb28ccfb05779aad8674906b267c2bf8cdb1f9a0591dd621b53a4ee9f2942687ee3476740c0b4a7621a3ae", + "0xb8f158ea5006bc3b90b285246625faaa6ac9b5f5030dc69701b12f3b79a53ec7e92eeb5a63bbd1f9509a0a3469ff3ffc", + "0xb950c17c0e5ca6607d182144aa7556bb0efe24c68f06d79d6413a973b493bfdf04fd147a4f1ab03033a32004cc3ea66f", + "0x8d7faff53579ec8f6c92f661c399614cc35276971752ce0623270f88be937c414eddcb0997e14724a783905a026c8883", + "0x8455a561c3aaa6ba64c881a5e13921c592b3a02e968f4fb24a2243c36202795d0366d9cc1a24e916f84d6e158b7aeac7", + "0x800482e7a772d49210b81c4a907f5ce97f270b959e745621ee293cf8c71e8989363d61f66a98f2d16914439544ca84c7", + "0xa72fa874866e19b2efb8e069328362bf7921ec375e3bcd6b1619384c3f7ee980f6cf686f3544e9374ff54b4d17a1629c", + "0x90c23b86b6111818c8baaf53a13eaee1c89203b50e7f9a994bf0edf851919b48edbac7ceef14ac9414cf70c486174a77", + "0x99ebd8c6dd5dd299517fb6381cfc2a7f443e6e04a351440260dd7c2aee3f1d8ef06eb6c18820b394366ecdfd2a3ce264", + "0x8aadc4f70ace4fcb8d93a78610779748dcffc36182d45b932c226dc90e48238ea5daa91f137c65ed532352c4c4d57416", + "0x84fe8221a9e95d9178359918a108de4763ebfa7a6487facb9c963406882a08a9a93f492f8e77cf9e7ea41ae079c45993", + "0xb30c3e12395b1fb8b776f3ec9f87c70e35763a7b2ddc68f0f60a4982a84017f27c891a98561c830038deb033698ed7fc", + "0x97ded38760aa7be6b6960b5b50e83b618fe413cbf2bcc1da64c05140bcc32f5e0e709cd05bf8007949953fac5716bad9", + "0x865f7b09ac3ca03f20be90c48f6975dd2588838c2536c7a3532a6aa5187ed0b709cd03d91ff4048061c10d0aa72b69ce", + "0xabd126df3917ba48c618ee4dbdf87df506193462f792874439043fa1b844466f6f4e0ff2e42516e63b5b23c0892b2695", + "0x964f355d603264bc1f44c64d6d64debca66f37dff39c971d9fc924f2bc68e6c187b48564a6dc82660a98b035f8addb5d", + "0xa4cf0f7ed724e481368016c38ea5816698a5f68eb21af4d3c422d2ba55f96a33e427c2aa40de1b56a7cfac7f7cf43ab0", + "0x8756241bda159d4a33bf74faba0d4594d963c370fb6a18431f279b4a865b070b0547a6d1613cf45b8cfb5f9236bbf831", + "0xa4be2bf058c36699c41513c4d667681ce161a437c09d81383244fc55e1c44e8b1363439d0cce90a3e44581fb31d49493", + "0xac0c83ea802227bfc23814a24655c9ff13f729619bcffdb487ccbbf029b8eaee709f8bddb98232ef33cd70e30e45ca47", + "0xab8777640116dfb6678e8c7d5b36d01265dfb16321abbfc277da71556a34bb3be04bc4ae90124ed9c55386d2bfb3bda0", + "0xb982efd3f34b47df37c910148ac56a84e8116647bea24145a49e34e0a6c0176e3284d838dae6230cb40d0be91c078b85", + "0xab997beb0d6df9c98d5b49864ef0b41a2a2f407e1687dfd6089959757ba30ed02228940b0e841afe6911990c74d536c4", + "0x816080c0cdbfe61b4d726c305747a9eb58ac26d9a35f501dd32ba43c098082d20faf3ccd41aad24600aa73bfa453dfac", + "0xb20fcac63bf6f5ee638a42d7f89be847f348c085ddcbec3fa318f4323592d136c230495f188ef2022aa355cc2b0da6f9", + "0x97b2b9ad76f19f500fcc94ca8e434176249f542ac66e5881a3dccd07354bdab6a2157018b19f8459437a68d8b86ba8e0", + "0xa214420e183e03d531cf91661466ea2187d84b6e814b8b20b3730a9400a7d25cf23181bb85589ebc982cec414f5c2923", + "0xa803697b744d2d087f4e2307218d48fa88620cf25529db9ce71e2e3bbcc65bac5e8bb9be04777ef7bfb5ed1a5b8e6170", + "0x812145efbd6559ae13325d56a15940ca4253b17e72a9728986b563bb5acc13ec86453796506ac1a8f12bd6f9e4a288c3", + "0x82268bee9c1662d3ddb5fb785abfae6fb8b774190f30267f1d47091d2cd4b3874db4372625aa36c32f27b0eee986269b", + "0x8300a67c2e2e123f89704abfde095463045dbd97e20d4c1157bab35e9e1d3d18f1f4aaba9cbe6aa2d544e92578eaa1b6", + "0xa061df379fb3f4b24816c9f6cd8a94ecb89b4c6dc6cd81e4b8096fa9784b7f97ab3540259d1de9c02eb91d9945af4823", + "0x8369bedfa17b24e9ad48ebd9c5afea4b66b3296d5770e09b00446c5b0a8a373d39d300780c01dcc1c6752792bccf5fd0", + "0x8d144bdb8cae0b2cdb5b33d44bbc96984a5925202506a8cc65eb67ac904b466f5a7fe3e1cbf04aa785bbb7348c4bb73c", + "0x94e2f755e60471578ab2c1adb9e9cea28d4eec9b0e92e0140770bca7002c365fcabfe1e5fb4fe6cfe79a0413712aa3ef", + "0xb086b349ae03ef34f4b25a57bcaa5d1b29bd94f9ebf87e22be475adfe475c51a1230c1ebe13506cb72c4186192451658", + "0x88ad985f448dabb04f8808efd90f273f11f5e6d0468b5489a1a6a3d77de342992a73eb842d419034968d733f101ff683", + "0xa89d7757825ae73a6e81829ff788ea7b3d7409857b378ebccd7df73fdbe62c8d9073741cf038314971b39af6c29c9030", + "0x9644cbe755a5642fe9d26cfecf170d3164f1848c2c2e271d5b6574a01755f3980b3fc870b98cf8528fef6ecef4210c16", + "0xa41cde4a786b55387458a1db95171aca4fd146507b81c4da1e6d6e495527c3ec83fc42fad1dfe3d92744084a664fd431", + "0xb7020ec3bd73a99861f0f1d88cf5a19abab1cbe14b7de77c9868398c84bb8e18dbbe9831838a96b6d6ca06e82451c67b", + "0xaad47f5b41eae9be55fb4f67674ff1e4ae2482897676f964a4d2dcb6982252ee4ff56aac49578b23f72d1fced707525e", + "0x8df6f4ed216fc8d1905e06163ba1c90d336ab991a18564b0169623eb39b84e627fa267397da15d3ed754d1f3423bff07", + "0x908243370c5788200703ade8164943ad5f8c458219186432e74dbc9904a701ea307fd9b94976c866e6c58595fd891c4b", + "0xb1ac460b3d516879a84bc886c54f020a9d799e7c49af3e4d7de5bf0d2793c852254c5d8fe5616147e6659512e5ccb012", + "0x8e6e9c15ffbf1e16e5865a5fef7ed751dc81957a9757b535cb38b649e1098cda25d42381dc4f776778573cdf90c3e6e0", + "0xaab7b766b9bf91786dfa801fcef6d575dc6f12b77ecc662eb4498f0312e54d0de9ea820e61508fc8aeee5ab5db529349", + "0x85a70aeed09fda24412fadbafbbbf5ba1e00ac92885df329e147bfafa97b57629a3582115b780d8549d07d19b7867715", + "0xaa1306f7ac1acbfc47dc6f7a0cb6d03786cec8c8dc8060388ccda777bca24bdc634d03e53512c23dba79709ff64f8620", + "0xb3345c89eb1653418fe3940cf3e56a9a9c66526389b98f45ca02dd62bfb37baa69a4baaa7132d7320695f8ea6ad1fd94", + "0x8fb6d09d23bfa90e7443753d45a918d91d75d8e12ec7d016c0dfe94e5c592ba6aaf483d2f16108d190822d955ad9cdc3", + "0x85de73213cc236f00777560756bdbf2b16841ba4b55902cf2cad9742ecaf5d28209b012ceb41f337456dfeca93010cd7", + "0x8843f5872f33f54df8d0e06166c1857d733995f67bc54abb8dfa94ad92407cf0179bc91b0a50bbb56cdc2b350d950329", + "0xa3e0bf7e5d02a80b75cf75f2db7e66cb625250c45436e3c136d86297d652590ec97c2311bafe407ad357c79ab29d107b", + "0x8746fd8d8eb99639d8cd0ca34c0d9c3230ed5a312aab1d3d925953a17973ee5aeb66e68667e93caf9cb817c868ea8f3d", + "0xa8b40fc6533752983a5329c31d376c7a5c13ce6879cc7faee648200075d9cd273537001fb4c86e8576350eaac6ba60c2", + "0x8852cdbaf7d0447a8c6f211b4830711b3b5c105c0f316e3a6a18dcfbb9be08bd6f4e5c8ae0c3692da08a2dfa532f9d5c", + "0x86c2495088bd1772152e527a1da0ef473f924ea9ab0e5b8077df859c28078f73c4e22e3a906b507fdf217c3c80808b5c", + "0xa49e23dc5f3468f3bf3a0bb7e4a114a788b951ff6f23a3396ae9e12cbff0abd1240878a3d1892105413dbc38818e807c", + "0xa9b231c9f739f7f914e5d943ed9bff7eba9e2c333fbd7c34eb1648a362ee01a01af6e2f7c35c9fe962b11152cddf35de", + "0xb8add766050c0d69fe81d8d9ea73e1ed05f0135d093ff01debd7247e42dbb86ad950aceb3b50b9af6cdc14ab443b238f", + "0x959d6e255f212b0708c58a2f75cb1fe932248c9d93424612c1b8d1e640149656059737e4db2139afd5556bcdacf3eda2", + "0xae3afc50c764f406353965363840bf28ee85e7064eb9d5f0bb3c31c64ab10f48c853e942ee2c9b51bae59651eaa08c2f", + "0x8178ee93acf5353baa349285067b20e9bb41aa32d77b5aeb7384fe5220c1fe64a2461bd7a83142694fe673e8bbf61b7c", + "0xa80e1dc1dddfb41a70220939b96dc6935e00b32fb8be5dff4eed1f1c650002ff95e4af481c43292e3827363b7ec4768a", + "0xaf5548c7c24e1088c23b57ee14d26c12a83484c9fd9296edf1012d8dcf88243f20039b43c8c548c265ef9a1ffe9c1c88", + "0xaa7b6a17dfcec146134562d32a12f7bd7fe9522e300859202a02939e69dbd345ed7ff164a184296268f9984f9312e8fc", + "0x811de529416331fe9c416726d45df9434c29dcd7e949045eb15740f47e97dde8f31489242200e19922cac2a8b7c6fd1f", + "0x81f3cbe82fbc7028c26a6c1808c604c63ba023a30c9f78a4c581340008dbda5ec07497ee849a2183fcd9124f7936af32", + "0x887d9ff54cc96b35d562df4a537ff972d7c4b3fd91ab06354969a4cfede0b9fc68bbffb61d0dbf1a58948dc701e54f5a", + "0xb630220aa9e1829c233331413ee28c5efe94ea8ea08d0c6bfd781955078b43a4f92915257187d8526873e6c919c6a1de", + "0xa73d782da1db7e4e65d7b26717a76e16dd9fab4df65063310b8e917dc0bc24e0d6755df5546c58504d04d9e68c3b474a", + "0xab777f5c52acd62ecf4d1f168b9cc8e1a9b45d4ec6a8ff52c583e867c2239aba98d7d3af977289b367edce03d9c2dfb1", + "0x84b9fbc1cfb302df1acdcf3dc5d66fd1edfe7839f7a3b2fb3a0d5548656249dd556104d7c32b73967bccf0f5bdcf9e3b", + "0xa0f12cae3722bbbca2e539eb9cc7614632a2aefe51410430070a12b5bc5314ecec5857b7ff8f41e9980cac23064f7c56", + "0x82f645c90dfb52d195c1020346287c43a80233d3538954548604d09fbab7421241cde8593dbc4acc4986e0ea39a27dd9", + "0x86604379aec5bddda6cbe3ef99c0ac3a3c285b0b1a15b50451c7242cd42ae6b6c8acb717dcca7917838432df93a28502", + "0x8ebad537fece090ebbab662bdf2618e21ca30cf6329c50935e8346d1217dcbe3c1fe1ea28efca369c6003ce0a94703c1", + "0xb921fde9412970a5d4c9a908ae8ce65861d06c7679af577cf0ad0d5344c421166986bee471fd6a6cecb7d591f06ec985", + "0x943c36a18223d6c870d54c3b051ef08d802b85e9dd6de37a51c932f90191890656c06adfa883c87b906557ae32d09da0", + "0x8fa91b3cc400f48b77b6fd77f3b3fbfb3f10cdff408e1fd22d38f77e087b7683adad258804409ba099f1235b4b4d6fea", + "0xa3391aed1fcd68761f06a7d1008ec62a09b1cb3d0203cd04e300a0c91adfed1812d8bc1e4a3fd7976dc0aae0e99f52f1", + "0xb872f825a5b6e7b9c7a9ddfeded3516f0b1449acc9b4fd29fc6eba162051c17416a31e5be6d3563f424d28e65bab8b8f", + "0xad1135ccbc3019d5b2faf59a688eef2500697642be8cfbdf211a1ab59abcc1f24483e50d653b55ff1834675ac7b4978f", + "0x8836497714a525118e20849d6933bb8535fb6f72b96337d49e3133d936999c90a398a740f42e772353b5f1c63581df6d", + "0x86f05038e060594c46b5d94621a1d9620aa8ba59a6995baf448734e21f58e23c1ea2993d3002ad5250d6edd5ba59b34f", + "0xb7bc23fb4e14af4c4704a944253e760adefeca8caee0882b6bbd572c84434042236f39ae07a8f21a560f486b15d82819", + "0x83cb7acdb9e03247515bb2ce0227486ccf803426717a14510f0d59d45e998b245797d356f10abca94f7a14e1a2f0d552", + "0x974c59c24392e2cb9294006cbe3c52163e255f3bd0c2b457bdc68a6338e6d5b6f87f716854492f8d880a6b896ccf757c", + "0xb6f70d6c546722d3907c708d630dbe289771d2c8bf059c2e32b77f224696d750b4dda9b3a014debda38e7d02c9a77585", + "0xa8983b7c715eaac7f13a001d2abc462dfc1559dab4a6b554119c271aa8fe00ffcf6b6949a1121f324d6d26cb877bcbae", + "0xb9a21a1fe2d1f3273a8e4a9185abf2ff86448cc98bfa435e3d68306a2b8b4a6a3ea33a155be3cb62a2170a86f77679a5", + "0x95689d78c867724823f564627d22d25010f278674c6d2d0cdb10329169a47580818995d1d727ce46c38a1e47943ebb89", + "0xa76d8236d6671204d440c33ac5b8deb71fa389f6563d80e73be8b043ec77d4c9b06f9a586117c7f957f4af0331cbc871", + "0xb2398e593bf340a15f7801e1d1fbda69d93f2a32a889ec7c6ae5e8a37567ac3e5227213c1392ee86cfb3b56ec2787839", + "0x93e675353bd60e996bf1c914d5267eeaa8a52fc3077987ccc796710ef9becc6b7a00e3d82671a6bdfb8145ee3c80245a", + "0xb0d341a1422588c983f767b1ed36c18b141774f67ef6a43cff8e18b73a009da10fc12120938b8bba27f225bdfd3138f9", + "0x95f9df524ba7a4667351696c4176b505d8ea3659f5ff2701173064acc624af69a0fad4970963736383b979830cb32260", + "0xb09e3b95e41800d4dc29c6ffdaab2cd611a0050347f6414f154a47ee20ee59bf8cf7181454169d479ebce1eb5c777c46", + "0xa3520fdff05dbad9e12551b0896922e375f9e5589368bcb2cc303bde252743b74460cb5caf99629325d3620f13adc796", + "0x974ba1033f75f60e0cf7c718a57ae1da3721cf9d0fb925714c46f027632bdd84cd9e6de4cf4d00bc55465b1c5ebb7384", + "0xa610e7e41e41ab66955b809ba4ade0330b8e9057d8efc9144753caed81995edeb1a42a53f93ce93540feca1fae708dac", + "0xa469997908244578e8909ff57cffc070f1dbd86f0098df3cfeb46b7a085cfecc93dc69ee7cad90ff1dc5a34d50fe580c", + "0xb2c2a8991f94c39ca35fea59f01a92cb3393e0eccb2476dfbf57261d406a68bd34a6cff33ed80209991688c183609ef4", + "0xb8a8380172df3d84b06176df916cf557966d4f2f716d3e9437e415d75b646810f79f2b2b71d857181b7fc944018883a3", + "0xa0313eeadd39c720c9c27b3d671215331ab8d0a794e71e7e690f06bcd87722b531d6525060c358f35f5705dbb7109ccb", + "0x89730fdb2876ab6f0fe780d695f6e12090259027e789b819956d786e977518057e5d1d7f5ab24a3ae3d5d4c97773bd2b", + "0xaaf4a9cb686a14619aa1fc1ac285dd3843ac3dd99f2b2331c711ec87b03491c02f49101046f3c5c538dc9f8dba2a0ac2", + "0x82a21034c832287f616619a37c122cee265cc34ae75e881fcaea4ea7f689f3c2bc8150bbf7dbcfd123522bfb7f7b1d68", + "0x864add673c89c41c754eeb3cd8dcff5cdde1d739fce65c30e474a082bb5d813cba6412e61154ce88fdb6c12c5d9be35b", + "0xb513b905ec19191167c6193067b5cfdf5a3d3828375360df1c7e2ced5815437dfd37f0c4c8f009d7fb29ff3c8793f560", + "0xb746b0832866c23288e07f24991bbf687cad794e7b794d3d3b79367566ca617d38af586cdc8d6f4a85a34835be41d54f", + "0xa05523c9e71dce1fe5307cc71bd721feb3e1a0f57a7d17c7d1c9fb080d44527b7dbaa1f817b1af1c0b4322e37bc4bb1e", + "0x803864a91162f0273d49271dafaab632d93d494d1af935aefa522768af058fce52165018512e8d6774976d52bd797e22", + "0x830fc9ca099097d1f38b90e6843dc86f702be9d20bdacc3e52cae659dc41df5b8d2c970effa6f83a5229b0244a86fe22", + "0xaa80c19b0682ead69934bf18cf476291a0beddd8ef4ed75975d0a472e2ab5c70f119722a8574ae4973aceb733d312e57", + "0xac79c00ddac47f5daf8d9418d798d8af89fc6f1682e7e451f71ea3a405b0d36af35388dd2a332af790bc83ca7b819328", + "0x8e261967fa6de96f00bc94a199d7f72896a6ad8a7bbb1d6187cca8fad824e522880e20f766620f4f7e191c53321d70f9", + "0x898b93d0a31f7d3f11f253cb7a102db54b669fd150da302d8354d8e02b1739a47cb9bd88015f3baf12b00b879442464e", + "0xab8667685f831bc14d4610f84a5da27b4ea5b133b4d991741a9e64dceb22cb64a3ce8f1b6e101d52af6296df7127c9ad", + "0x848ade1901931e72b955d7db1893f07003e1708ff5d93174bac5930b9a732640f0578839203e9b77eb27965c700032d3", + "0xb21aa34da9ab0a48fcfdd291df224697ce0c1ebc0e9b022fdee8750a1a4b5ba421c419541ed5c98b461eecf363047471", + "0xb49532cfdf02ee760109881ad030b89c48ee3bb7f219ccafc13c93aead754d29bdafe345be54c482e9d5672bd4505080", + "0x8c41fe765128e63f6889d6a979f6a4342300327c8b245a8cfe3ecfbcac1e09c3da30e2a1045b24b78efc6d6d50c8c6ac", + "0xb3f865014754b688ca8372e8448114fff87bf3ca99856ab9168894d0c4679782c1ced703f5b74e851b370630f5e6ee86", + "0xa018fc00d532ceb2e4de908a15606db9b6e0665dd77190e2338da7c87a1713e6b9b61554e7c1462f0f6d4934b960b15c", + "0xa71ffa7eae8ace94e6c3581d4cb2ad25d48cbd27edc9ec45baa2c8eb932a4773c3272b2ffaf077b40f76942a1f3af7f2", + "0xafecb2dc34d57a725efbd7eb93d61eb29dbe8409b668ab9ea040791f5b796d9be6d4fc10d7f627bf693452f330cf0435", + "0x82111db2052194ee7dd22ff1eafffac0443cf969d3762cceae046c9a11561c0fdce9c0711f88ac01d1bed165f8a7cee3", + "0x8c281e6f72752cb11e239e4df9341c45106eb7993c160e54423c2bffe10bc39d42624b45a1f673936ef2e1a02fc92f1a", + "0x9103c1af82dece25d87274e89ea0acd7e68c2921c4af3d8d7c82ab0ed9990a5811231b5b06113e7fa43a6bd492b4564f", + "0xa25e2772e8c911aaf8712bdac1dd40ee061c84d3d224c466cfaae8e5c99604053f940cde259bd1c3b8b69595781dbfec", + "0xa732dfc9baa0f4f40b5756d2e8d8937742999623477458e0bc81431a7b633eefc6f53b3b7939fe0a020018549c954054", + "0xb1359e358b89936dee9e678a187aad3e9ab14ac40e96a0a68f70ee2583cdcf467ae03bef4215e92893f4e12f902adec8", + "0x941aafc08f7c0d94cebfbb1f0aad5202c02e6e37f2c12614f57e727efa275f3926348f567107ee6d8914dd71e6060271", + "0x8581b06b0fc41466ef94a76a1d9fb8ae0edca6d018063acf6a8ca5f4b02d76021902feba58972415691b4bdbc33ae3b4", + "0xa36b1d8076783a9522476ce17f799d78008967728ce920531fdaf88303321bcaf97ecaa08e0c01f77bc32e53c5f09525", + "0x88f755097f7e25cb7dd3c449520c89b83ae9e119778efabb54fbd5c5714b6f37c5f9e0346c58c6ab09c1aef2483f895d", + "0x81a0b4a96e2b75bc1bf2dbd165d58d55cfd259000a35504d1ffb18bc346a3e6f07602c683723864ffb980f840836fd8d", + "0xb1434a11c6750f14018a2d3bcf94390e2948f4f187e93bb22070ca3e5393d339dc328cbfc3e48815f51929465ffe7d81", + "0xa59cbd1b785efcfa6e83fc3b1d8cf638820bc0c119726b5368f3fba9dce8e3414204fb1f1a88f6c1ff52e87961252f97", + "0x82a5ffce451096aca8eeb0cd2ae9d83db3ed76da3f531a80d9a70a346359bf05d74863ce6a7c848522b526156a5e20cd", + "0xb778e7367ded3b6eab53d5fc257f7a87e8faf74a593900f2f517220add2125be3f6142022660d8181df8d164ad9441ce", + "0x89d50c1fc56e656fb9d3915964ebce703cb723fe411ab3c9eaa88ccc5d2b155a9b2e515363d9c600d3c0cee782c43f41", + "0x8cf10e50769f3443340844aad4d56ec790850fed5a41fcbd739abac4c3015f0a085a038fbe7fae9f5ad899cce5069f6b", + "0x9106d65444f74d217f4187dfc8fcf3810b916d1e4275f94f6a86d1c4f3565b131fd6cde1fa708bc05fe183c49f14941a", + "0x887b237b0cd0f816b749b21db0b40072f9145f7896c36916296973f9e6990ede110f14e5976c906d08987c9836cca57f", + "0x8ed91e7f92f5c6d7a71708b6132f157ac226ecaf8662af7d7468a4fa25627302efe31e4620ad28719318923e3a59bf82", + "0xb51ce0cb10869121ae310c7159ee1f3e3a9f8ad498827f72c3d56864808c1f21fa2881788f19ece884d3f705cd7bd0c5", + "0xb7267aa6f9e3de864179b7da30319f1d4cb2a3560f2ea980254775963f1523b44c680f917095879bebfa3dc2b603efcf", + "0x83734841c13dee12759d40bdd209b277e743b0d08cc0dd1e0b7afd2d65bfa640400eefcf6be4a52e463e5b3d885eeac6", + "0xb6935886349ecbdd5774e12196f4275c97ec8279fdf28ccf940f6a022ebb6de8e97d6d2173c3fe402cbe9643bed3883b", + "0x96f0564898fe96687918bbf0a6adead99cf72e3a35ea3347e124af9d006221f8e82e5a9d2fe80094d5e8d48e610f415e", + "0x8eae1ce292d317aaa71bcf6e77e654914edd5090e2e1ebab78b18bb41b9b1bc2e697439f54a44c0c8aa0d436ebe6e1a9", + "0x895144c55fcbd0f64d7dd69e6855cfb956e02b5658eadf0f026a70703f3643037268fdd673b0d21b288578a83c6338dd", + "0xb2093c1ee945dca7ac76ad5aed08eae23af31dd5a77c903fd7b6f051f4ab84425d33a03c3d45bf2907bc93c02d1f3ad8", + "0x81911647d818a4b5f4990bfd4bc13bf7be7b0059afcf1b6839333e8569cdb0172fd2945410d88879349f677abaed5eb3", + "0x97a01d1dd9ee30553ce676011aea97fa93d55038ada95f0057d2362ae9437f3ed13de8290e2ff21e3167dd7ba10b9c3f", + "0xb08ddef14e42d4fd5d8bf39feb7485848f0060d43b51ed5bdda39c05fe154fb111d29719ee61a23c392141358c0cfcff", + "0x881fd967407390bfd7badc9ab494e8a287559a01eb07861f527207c127eadea626e9bcc5aa9cca2c5112fbac3b3f0e9c", + "0x902e5bf468f11ed9954e2a4a595c27e34abe512f1d6dc08bbca1c2441063f9af3dc5a8075ab910a10ff6c05c1c644a35", + "0x8056b0c678803b416f924e09a6299a33cf9ad7da6fe1ad7accefe95c179e0077da36815fde3716711c394e2c5ea7127f", + "0x95c3bb5ef26c5ed2f035aa5d389c6b3c15a6705b9818a3fefaed28922158b35642b2e8e5a1a620fdad07e75ad4b43af4", + "0x93ed7316fa50b528f1636fc6507683a672f4f4403e55e94663f91221cc198199595bd02eef43d609f451acc9d9b36a24", + "0x9551915da1304051e55717f4c31db761dcdcf3a1366c89a4af800a9e99aca93a357bf928307f098e62b44a02cb689a46", + "0xaeaca9b1c2afd24e443326cc68de67b4d9cedb22ad7b501a799d30d39c85bb2ea910d4672673e39e154d699e12d9b3dc", + "0xa0de03b1e75edf7998c8c1ac69b4a1544a6fa675a1941950297917366682e5644a4bda9cdeedfaf9473d7fccd9080b0c", + "0xa044f6eacc48a4a061fa149500d96b48cbf14853469aa4d045faf3dca973be1bd4b4ce01646d83e2f24f7c486d03205d", + "0x914fd91cffc23c32f1c6d0e98bf660925090d873367d543034654389916f65f552e445b0300b71b61b721a72e9a5983c", + "0x8751786cb80e2e1ff819fc7fa31c2833d25086534eb12b373d31f826382430acfd87023d2a688c65b5e983927e146336", + "0xaa343a8ecf09ce11599b8cf22f7279cf80f06dbf9f6d62cb05308dbbb39c46fd0a4a1240b032665fbb488a767379b91b", + "0xb5210c1ff212c5b1e9ef9126e08fe120a41e386bb12c22266f7538c6d69c7fd8774f11c02b81fd4e88f9137b020801fe", + "0x8a98b3cf353138a1810beb60e946183803ef1d39ac4ea92f5a1e03060d35a4774a6e52b14ead54f6794d5f4022b8685c", + "0x967f8dc45ebc3be14c8705f43249a30ff48e96205fb02ae28daeab47b72eb3f45df0625928582aa1eb4368381c33e127", + "0xa161c73adf584a0061e963b062f59d90faac65c9b3a936b837a10d817f02fcabfa748824607be45a183dd40f991fe83f", + "0xb44c579e3881f32b32d20c82c207307eca08e44995dd2aac3b2692d2c8eb2a325626c80ac81c26eeb38c4137ff95add5", + "0x94df609c6d71e8eee7ab74226e371ccc77e01738fe0ef1a6424435b4570fe1e5d15797b66ed0f64eb88d4a3a37631f0e", + "0xa2ba42356606d651b077983de1ad643650997bb2babb188c9a3b27245bb65d2036e46667c37d4ce02cb1be5ae8547abe", + "0x889953ee256206284094e4735dbbb17975bafc7c3cb94c9fbfee4c3e653857bfd49e818f64a47567f721b98411a3b454", + "0xb2a61e247ed595e8a3830f7973b07079cbda510f28ad8c78c220b26cb6acde4fbb5ee90c14a665f329168ee951b08cf0", + "0xa8fa39064cb585ece5263e2f42f430206476bf261bd50f18d2b694889bd79d04d56410664cecad62690e5c5a20b3f6ff", + "0x9682e41872456b9fa67def89e71f06d362d6c8ca85c9c48536615bc401442711e1c9803f10ab7f8ab5feaec0f9df20a6", + "0x83fa5da7592bd451cad3ad7702b4006332b3aae23beab4c4cb887fa6348317d234bf62a359e665b28818e5410c278a09", + "0x817ae61ab3d0dd5b6e24846b5a5364b1a7dc2e77432d9fed587727520ae2f307264ea0948c91ad29f0aea3a11ff38624", + "0x90d6b4aa7d40a020cdcd04e8b016d041795961a8e532a0e1f4041252131089114a251791bf57794cadb7d636342f5d1c", + "0xb2f19e78ee85073f680c3bba1f07fd31b057c00b97040357d97855b54a0b5accb0d3b05b2a294568fcd6a4be6f266950", + "0x961b35a6111da54ece6494f24dacd5ea46181f55775b5f03df0e370c34a5046ac2b4082925855325bb42bc2a2c98381d", + "0xb622b282becf0094a1916fa658429a5292ba30fb48a4c8066ce1ddcefb71037948262a01c95bab6929ed3a76ba5db9fe", + "0xa6fd1874034a34c3ea962a316c018d9493d2b3719bb0ec4edbc7c56b240802b2228ab49bee6f04c8a3e9f6f24a48c1c2", + "0x8c4c373e79415061837dd0def4f28a2d5d74d21cb13a76c9049ad678ca40228405ab0c3941df49249847ecdefc1a5b78", + "0x8022a959a513cdc0e9c705e0fc04eafd05ff37c867ae0f31f6d01cddd5df86138a426cab2ff0ac8ff03a62e20f7e8f51", + "0x80b9ed4adbe9538fb1ef69dd44ec0ec5b57cbfea820054d8d445b4261962624b4c70ac330480594bc5168184378379c3", + "0x8cb437beb4cfa013096f40ccc169a713dc17afee6daa229a398e45fd5c0645a9ad2795c3f0cd439531a7151945d7064d", + "0x827b543e609ea328e97e373f70ad72d4915a2d1daae0c60d44ac637231070e164c43a2a58db80a64df1c624a042b38f9", + "0xb4d55a3551b00da54cc010f80d99ddd2544bde9219a3173dfaadf3848edc7e4056ab532fb75ac26f5f7141e724267663", + "0x81d0173821c6ddd2a068d70766d9103d1ee961c475156e0cbd67d54e668a796310474ef698c7ab55abe6f2cf76c14679", + "0x8447fca4d35f74b3efcbd96774f41874ca376bf85b79b6e66c92fa3f14bdd6e743a051f12a7fbfd87f319d1c6a5ce217", + "0x97566a84481027b60116c751aec552adfff2d9038e68d48c4db9811fb0cbfdb3f1d91fc176a0b0d988a765f8a020bce1", + "0xb13fe033da5f0d227c75927d3dacb06dbaf3e1322f9d5c7c009de75cdcba5e308232838785ab69a70f0bedea755e003f", + "0x83f3799d8e5772527930f5dc071a2e0a65471618993ec8990a96ccdeee65270e490bda9d26bb877612475268711ffd80", + "0xb47703c2ab17be1e823cc7bf3460db1d6760c0e33862c90ca058845b2ff234b0f9834ddba2efb2ee1770eb261e7d8ffd", + "0x97b947126d84dcc70c97be3c04b3de3f239b1c4914342fa643b1a4bb8c4fe45c0fcb585700d13a7ed50784790c54bef9", + "0x830032937418b26ee6da9b5206f3e24dc76acd98589e37937e963a8333e5430abd6ce3dd93ef4b8997bd41440eed75d6", + "0x930851df4bc7913c0d8c0f7bd3b071a83668987ed7c397d3d042fdc0d9765945a39a3bae83da9c88cb6b686ed8aeeb26", + "0xb9fbf71cc7b6690f601f0b1c74a19b7d14254183a2daaafec7dc3830cba5ae173d854bbfebeca985d1d908abe5ef0cda", + "0xa87ccbfad431406aadbee878d9cf7d91b13649d5f7e19938b7dfd32645a43b114eef64ff3a13201398bd9b0337832e5a", + "0x83c003fab22a7178eed1a668e0f65d4fe38ef3900044e9ec63070c23f2827d36a1e73e5c2b883ec6a2afe2450171b3b3", + "0xae62339d26db46e85f157c0151bd29916d5cc619bd4b832814b3fd2f00af8f38e7f0f09932ffe5bba692005dab2d9a74", + "0xb5e0a16d115134f4e2503990e3f2035ed66b9ccf767063fe6747870d97d73b10bc76ed668550cb82eedc9a2ca6f75524", + "0xab839eb82e23ca52663281f863b55b0a3d6d4425c33ffb4eeb1d7979488ab068bf99e2a60e82cea4dc42c56c26cbfebe", + "0xaaf21c4d59378bb835d42ae5c5e5ab7a3c8c36a59e75997989313197752b79a472d866a23683b329ea69b048b87fa13e", + "0x802b6459d2354fa1d56c592ac1346c428dadea6b6c0a87bf7d309bab55c94e1cf31dd98a7a86bd92a840dd51f218b91b", + "0xb25464af9cff883b55be2ff8daf610052c02df9a5e147a2cf4df6ce63edcdee6dc535c533590084cc177da85c5dc0baa", + "0x8fc5e7a95ef20c1278c645892811f6fe3f15c431ebc998a32ec0da44e7213ea934ed2be65239f3f49b8ec471e9914160", + "0x8bdfeb15c29244d4a28896f2b2cb211243cd6a1984a3f5e3b0ebe5341c419beeab3304b390a009ffb47588018034b0ea", + "0x88b15fa94a08eac291d2b94a2b30eb851ff24addf2cc30b678e72e32cfcb3424cf4b33aa395d741803f3e578ddf524de", + "0x8b882cc3bff3e42babdb96df95fb780faded84887a0a9bab896bef371cdcf169d909f5658649e93006aa3c6e1146d62e", + "0x98e5236de4281245234f5d40a25b503505af140b503a035fc25a26159a9074ec81512b28f324c56ea2c9a5aa7ce90805", + "0xa2fe9a1dd251e72b0fe4db27be508bb55208f8f1616b13d8be288363ec722826b1a1fd729fc561c3369bf13950bf1fd6", + "0x84cd1a43f1a438b43dc60ffc775f646937c4f6871438163905a3cebf1115f814ccd38a6ccb134130bff226306e412f32", + "0x86cc9dc321b6264297987000d344fa297ef45bcc2a4df04e458fe2d907ad304c0ea2318e32c3179af639a9a56f3263cf", + "0xa76cd3c566691f65cfb86453b5b31dbaf3cab8f84fe1f795dd1e570784b9b01bdd5f0b3c1e233942b1b5838290e00598", + "0xa57badb2c56ca2c45953bd569caf22968f76ed46b9bac389163d6fe22a715c83d5e94ae8759b0e6e8c2f27bff7748f3f", + "0xabcfe425255fd3c5cffd3a818af7650190c957b6b07b632443f9e33e970a8a4c3bf79ac9b71f4d45f238a04d1c049857", + "0x93110d64ed5886f3d16ce83b11425576a3a7a9bb831cd0de3f9a0b0f2270a730d68136b4ef7ff035ede004358f419b5c", + "0xb699e4ed9a000ff96ca296b2f09dce278832bc8ac96851ff3cff99ed3f6f752cfc0fea8571be28cd9b5a7ec36f1a08ee", + "0x8251b8d2c43fadcaa049a9e7aff838dae4fb32884018d58d46403ac5f3beb5c518bfd45f03b8abb710369186075eb71c", + "0xa5e5045d28b4e83d0055863c30c056628c58d4657e6176fd0536f5933f723d60e851bb726d5bf3c546b8ce4ac4a57ef8", + "0x915eb1ff034224c0b645442cdb7d669303fdc00ca464f91aaf0b6fde0b220a3a74ff0cb043c26c9f3a5667b3fdaa9420", + "0xb1c7dbd998ad32ae57bfa95deafa147024afd57389e98992c36b6e52df915d3d5a39db585141ec2423173e85d212fed8", + "0x85594701f1d2fee6dc1956bc44c7b31db93bdeec2f3a7d622c1a08b26994760773e3d57521a44cfd7e407ac3fd430429", + "0x8a40c33109ecea2a8b3558565877082f79121a432c45ec2c5a5e0ec4d1c203a6788e6b69cb37f1fd5b8c9a661bc5476d", + "0xa6c33e18115e64e385c843dde34e8a228222795c7ca90bc2cc085705d609025f3351d9be61822c69035a49fb3e48f2d5", + "0x9825c31f1c18da0de3fa84399c8b40f8002c3cae211fb6a0623c76b097b4d39f5c50058f57a16362f7a575909d0a44a2", + "0xb5a7e50da0559a675c472f7dfaee456caab6695ab7870541b2be8c2b118c63752427184aad81f0e1afc61aef1f28c46f", + "0xa74f00e0f9b23aff7b2527ce69852f8906dab9d6abe62ecd497498ab21e57542e12af9918d4fd610bb09e10b0929c510", + "0xb1c77283d01dcd1bde649b5b044eac26befc98ff57cbee379fb5b8e420134a88f2fc7f0bf04d15e1fbd45d29e7590fe6", + "0x86040d55809afeec10e315d1ad950d269d37cfee8c144cd8dd4126459e3b15a53b3e68df5981df3c2346d23c7b4baaf4", + "0xaf409a90c2776e1e7e3760b2042507b8709e943424606e31e791d42f17873a2710797f5baaab4cc4a19998ef648556b0", + "0x91381846126ea819d40f84d3005e9fb233dc80071d1f9bb07f102bf015f813f61e5884ffffb4f5cd333c1b1e38a05a58", + "0x8ddcf382a9f39f75777160967c07012cfa89e67b19714a7191f0c68eaf263935e5504e1104aaabd0899348c972a8d3c6", + "0x82b93669f42a0a2aa5e250ffe6097269da06a9c02fcd1801abbad415a7729a64f830754bafc702e64600ba47671c2208", + "0x8ba2d8c88ad2b872db104ea8ddbb006ec2f3749fd0e19298a804bb3a5d94de19285cc7fb19fee58a66f7851d1a66c39f", + "0x989b8814d5de7937c4acafd000eec2b4cd58ba395d7b25f98cafd021e8efa37029b29ad8303a1f6867923f5852a220eb", + "0x98ffff6a61a3a6205c7820a91ca2e7176fab5dba02bc194c4d14942ac421cb254183c705506ab279e4f8db066f941c6c", + "0x8845cca6ff8595955f37440232f8e61d5351500bd016dfadd182b9d39544db77a62f4e0102ff74dd4173ae2c181d24ef", + "0x80e74c5c47414bd6eeef24b6793fb1fa2d8fb397467045fcff887c52476741d5bc4ff8b6d3387cb53ad285485630537f", + "0xb1dd0446bccc25846fb95d08c1c9cc52fb51c72c4c5d169ffde56ecfe800f108dc1106d65d5c5bd1087c656de3940b63", + "0xa4cad52e3369491ada61bf28ada9e85de4516d21c882e5f1cd845bea9c06e0b2887b0c5527fcff6fc28acd3c04f0a796", + "0x8958ae7b290f0b00d17c3e9fdb4dbf168432b457c7676829299dd428984aba892de1966fc106cfc58a772862ecce3976", + "0xae24547623465e87905eaffa1fa5d52bb7c453a8dbd89614fa8819a2abcedaf455c2345099b7324ae36eb0ad7c8ef977", + "0xb7ad43cbb22f6f892c2a1548a41dc120ab1f4e1b8dea0cb6272dd9cb02054c542ecabc582f7e16de709d48f5166cae86", + "0x9189d2d9a7c64791b19c0773ad4f0564ce6bea94aa275a917f78ad987f150fdb3e5e26e7fef9982ac184897ecc04683f", + "0x91dd8813a5d6dddcda7b0f87f672b83198cd0959d8311b2b26fb1fae745185c01f796fbd03aad9db9b58482483fdadd8", + "0xad344699198f3c6e8c0a3470f92aaffc805b76266734414c298e10b5b3797ca53578de7ccb2f458f5e0448203f55282b", + "0x94e3286fe5cd68c4c7b9a7d33ae3d714a7f265cf77cd0e9bc19fc51015b1d1c34ad7e3a5221c459e89f5a043ee84e3a9", + "0x8542784383eec4f565fcb8b9fc2ad8d7a644267d8d7612a0f476fc8df3aff458897a38003d506d24142ad18f93554f2b", + "0xb089614d830abc0afa435034cec7f851f2f095d479cacf1a3fb57272da826c499a52e7dcbc0eb85f4166fb94778e18e9", + "0x9743f5473171271ffdd3cc59a3ae50545901a7b45cd4bc3570db487865f3b73c0595bebabbfe79268809ee1862e86e4a", + "0xa0ea39574b26643f6f1f48f99f276a8a64b5481989cfb2936f9432a3f8ef5075abfe5c067dc5512143ce8bf933984097", + "0xaa9071cfa971e4a335a91ad634c98f2be51544cb21f040f2471d01bb97e1df2277ae1646e1ea8f55b7ba9f5c8c599b39", + "0x98ae5ea27448e236b6657ab5ef7b1cccb5372f92ab25f5fa651fbac97d08353a1dae1b280b1cd42b17d2c6a70a63ab9d", + "0xab13decb9e2669e33a7049b8eca3ca327c40dea15ad6e0e7fa63ed506db1d258bc36ac88b35f65cae0984e937eb6575d", + "0x85cf66292cbb30cec5fd835ab10c9fcb3aea95e093aebf123e9a83c26f322d76ebc89c4e914524f6c5f6ee7d74fc917d", + "0x8c30e4c034c02958384564cac4f85022ef36ab5697a3d2feaf6bf105049675bbf23d01b4b6814711d3d9271abff04cac", + "0x8ca01a143b8d13809e5a8024d03e6bc9492e22226073ef6e327edf1328ef4aff82d0bcccee92cb8e212831fa35fe1204", + "0xb1e49055c968dced47ec95ae934cf45023836d180702e20e2df57e0f62fb85d7ac60d657ba3ae13b8560b67210449459", + "0xaa3e420321ed6f0aa326d28d1a10f13facec6f605b6218a6eb9cbc074801f3467bf013a456d1415a5536f12599efa3d3", + "0x8aef4730bb65e44efd6bb9441c0ae897363a2f3054867590a2c2ecf4f0224e578c7a67f10b40f8453d9f492ac15a9b2d", + "0x88d76c028f534a62e019b4a52967bb8642ede6becfa3807be68fdd36d366fc84a4ac8dc176e80a68bc59eb62caf5dff9", + "0x9628088f8e0853cefadee305a8bf47fa990c50fa96a82511bbe6e5dc81ef4b794e7918a109070f92fc8384d77ace226f", + "0x83c6d70a640b33087454a4788dfd9ef3ed00272da084a8d36be817296f71c086b23b576f98178ab8ca6a74f04524b46b", + "0x92afce49773cb2e20fb21e4f86f18e0959ebb9c33361547ddb30454ee8e36b1e234019cbdca0e964cb292f7f77df6b90", + "0xb53f94612f818571b5565bbb295e74bada9b5f9794b3b91125915e44d6ddcc4da25510eab718e251a09c99534d6042d9", + "0x8445c135b7a48068d8ed3e011c6d818cfe462b445095e2fbf940301e50ded23f272d799eea47683fc027430ce14613ef", + "0xb29e097f2caadae3e0f0ae3473c072b0cd0206cf6d2e9b22c1a5ad3e07d433e32bd09ed1f4e4276a2da4268633357b7f", + "0xaaa78a3feaa836d944d987d813f9b9741afb076e6aca1ffa42682ab06d46d66e0c07b8f40b9dbd63e75e81efa1ef7b08", + "0xa13c32449dbedf158721c13db9539ae076a6ce5aeaf68491e90e6ad4e20e20d1cdcc4a89ed9fd49cb8c0dd50c17633c1", + "0x84df867b98c53c1fcd4620fef133ee18849c78d3809d6aca0fb6f50ff993a053a455993f216c42ab6090fa5356b8d564", + "0xae6f9fc21dd7dfa672b25a87eb0a41644f7609fab5026d5cedb6e43a06dbbfd6d6e30322a2598c8dedde88c52eaed626", + "0xaba16d29a47fc36f12b654fde513896723e2c700c4190f11b26aa4011da57737ad717daa02794aa3246e4ae5f0b0cc3a", + "0x8a4917b2ab749fc7343fc64bdf51b6c0698ff15d740cc7baf248c030475c097097d5a473bcc00d8c25817563fe0447b4", + "0xb0fec7791cfb0f96e60601e1aeced9a92446b61fedab832539d1d1037558612d78419efa87ff5f6b7aab8fd697d4d9de", + "0x99839f86cb700c297c58bc33e28d46b92931961548deac29ba8df91d3e11721b10ea956c8e16984f9e4acf1298a79b37", + "0x9355005b4878c87804fc966e7d24f3e4b02bed35b4a77369d01f25a3dcbff7621b08306b1ac85b76fe7b4a3eb5f839b1", + "0xb242238cd8362b6e440ba21806905714dd55172db25ec7195f3fc4937b2aba146d5cbf3cf691a1384b4752dc3b54d627", + "0xb7588748f55783077c27fc47d33e20c5c0f5a53fc0ac10194c003aa09b9f055d08ec971effa4b7f760553997a56967b3", + "0xab6223dca8bd6a4f969e21ccd9f8106fc5251d321f9e90cc42cea2424b3a9c4e5060a47eeef6b23c7976109b548498e8", + "0x8d9d5adcdd94c5ba3be4d9a7428133b42e485f040a28d16ee2384758e87d35528f7f9868de9bd23d1a42a594ce50a567", + "0xa24f71fc0db504da4e287dd118a4a74301cbcd16033937ba2abc8417956fcb4ae19b8e63b931795544a978137eff51cb", + "0xab99553bf31a84f2e0264eb34a08e13d8d15e2484aa9352354becf9a15999c76cc568d68274b70a65e49703fc23540d0", + "0x823907a3b6719f8d49b3a4b7c181bd9bb29fcf842d7c70660c4f351852a1e197ca46cf5e879b47fa55f616fa2b87ce5e", + "0xa630ef5ece9733b8c46c0a2df14a0f37647a85e69c63148e79ffdcc145707053f9f9d305c3f1cf3c7915cb46d33abd07", + "0xb47472a41d72dd2e8b72f5c4f8ad626737dde3717f63d6bc776639ab299e564cbad0a2ad5452a07f02ff49a359c437e5", + "0x8c922a0faa14cc6b7221f302df3342f38fc8521ec6c653f2587890192732c6da289777a6cd310747ea7b7d104af95995", + "0x86c95707db0495689afd0c2e39e97f445f7ca0edffad5c8b4cacd1421f2f3cc55049dfd504f728f91534e20383955582", + "0xb150bcc391884c996149dc3779ce71f15dda63a759ee9cc05871f5a8379dcb62b047098922c0f26c7bd04deb394c33f9", + "0x913e52b5c93989b5d15e0d91aa0f19f78d592bc28bcfdfddc885a9980c732b1f4debb8166a7c4083c42aeda93a702898", + "0x802101abd5d3c88876e75a27ffc2f9ddcce75e6b24f23dba03e5201281a7bd5cc7530b6a003be92d225093ca17d3c3bb", + "0x810360a1c9b88a9e36f520ab5a1eb8bed93f52deefbe1312a69225c0a08edb10f87cc43b794aced9c74220cefcc57e7d", + "0x8f5b9a0eecc589dbf8c35a65d5e996a659277ef6ea509739c0cb7b3e2da9895e8c8012de662e5b23c5fa85d4a8f48904", + "0xab7ab92c5d4d773068e485aa5831941ebd63db7118674ca38089635f3b4186833af2455a6fb9ed2b745df53b3ce96727", + "0xae8a11cfdf7aa54c08f80cb645e3339187ab3886babe9fae5239ba507bb3dd1c0d161ca474a2df081dcd3d63e8fe445e", + "0x9344905376aa3982b1179497fac5a1d74b14b7038fd15e3b002db4c11c8bfc7c39430db492cdaf58b9c47996c9901f28", + "0xa9f3a8b76912deb61d966c75daf5ddb868702ebec91bd4033471c8e533183df548742a81a2671de5be63a502d827437d", + "0x8029382113909af6340959c3e61db27392531d62d90f92370a432aec3eb1e4c36ae1d4ef2ba8ec6edb4d7320c7a453f6", + "0x94a24284afaeead61e70f3e30f87248d76e9726759445ca18cdb9360586c60cc9f0ec1c397f9675083e0b56459784e2e", + "0x991708fe9650a1f9a4e43938b91d45dc68c230e05ee999c95dbff3bf79b1c1b2bb0e7977de454237c355a73b8438b1d9", + "0xab4cfa02065017dd7f1aadc66f2c92f78f0f11b8597c03a5d69d82cb2eaf95a4476a836ac102908f137662472c8d914b", + "0xa8040e12ffc3480dd83a349d06741d1572ef91932c46f5cf03aee8454254156ee95786fd013d5654725e674c920cec32", + "0xa6b83821ba7c1f83cc9e4529cf4903adb93b26108e3d1f20a753070db072ad5a3689643144bdd9c5ea06bb9a7a515cd0", + "0xa91426fa500951ff1b051a248c050b7139ca30dde8768690432d597d2b3c4357b11a577be6b455a1c5d145264dcf81fc", + "0x8731176363ad7658a2862426ee47a5dce9434216cef60e6045fa57c40bb3ce1e78dac4510ae40f1f31db5967022ced32", + "0x8011bbb05705167afb47d4425065630f54cb86cd462095e83b81dfebf348f846e4d8fbcf1c13208f5de1931f81da40b9", + "0xb1015424d9364aeff75de191652dc66484fdbec3e98199a9eb9671ec57bec6a13ff4b38446e28e4d8aedb58dd619cd90", + "0x8f4379b3ebb50e052325b27655ca6a82e6f00b87bf0d2b680d205dd2c7afdc9ff32a9047ae71a1cdf0d0ce6b9474d878", + "0xa9bc213e28b630889476a095947d323b9ac6461dea726f2dc9084473ae8e196d66fb792a21905ad4ec52a6d757863e7d", + "0x877487384b207e53f5492f4e36c832c2227f92d1bb60542cfeb35e025a4a7afc2b885fae2528b33b40ab09510398f83e", + "0xa2066b3458fdf678ee487a55dd5bfb74fde03b54620cb0e25412a89ee28ad0d685e309a51e3e4694be2fa6f1593a344c", + "0xb73b8b4f1fd6049fb68d47cd96a18fcba3f716e0a1061aa5a2596302795354e0c39dea04d91d232aec86b0bf2ba10522", + "0x97cc72c36335bd008afbed34a3b0c7225933faba87f7916d0a6d2161e6f82e0cdcda7959573a366f638ca75d30e9dab1", + "0x9147379860cd713cd46c94b8cdf75125d36c37517fbecf81ace9680b98ce6291cd1c3e472f84249cc3b2b445e314b1b6", + "0x827f1bc8f54a35b7a4bd8154f79bcc055e45faed2e74adf7cf21cca95df44d96899e847bd70ead6bb27b9c0ed97bbd8b", + "0x91c9140c9e1ba6e330cb08f6b2ce4809cd0d5a0f0516f70032bf30e912b0ed684d07b413b326ab531ee7e5b4668c799b", + "0x90dafa3592bdbb3465c92e2a54c2531822ba0459d45d3e7a7092fa6b823f55af28357cb51896d4ec2d66029c82f08e26", + "0xac3a9b80a3254c42e5ed3a090a0dd7aee2352f480de96ad187027a3bb6c791eddfc3074b6ffd74eea825188f107cda4d", + "0x81c827826ec9346995ffccf62a241e3b2d32f7357acd1b1f8f7a7dbc97022d3eb51b8a1230e23ce0b401d2e535e8cd78", + "0x993bb99867bd9041a71a55ad5d397755cfa7ab6a4618fc526179bfc10b7dc8b26e4372fe9a9b4a15d64f2b63c1052dda", + "0x8d1eaa09a3180d8af1cbaee673db5223363cc7229a69565f592fa38ba0f9d582cedf91e15dabd06ebbf2862fc0feba54", + "0xb64b8d11fb3b01abb2646ac99fdb9c02b804ce15d98f9fe0fbf1c9df8440c71417487feb6cdf51e3e81d37104b19e012", + "0x995c758fd5600e6537089b1baa4fbe0376ab274ff3e82a17768b40df6f91c2e443411de9cafa1e65ea88fb8b87d504f4", + "0xb917361f6b95f759642638e0b1d2b3a29c3bdef0b94faa30de562e6078c7e2d25976159df3edbacbf43614635c2640b4", + "0x819485b036b7958508f15f3c19436da069cbe635b0318ebe8c014cf1ef9ab2df038c81161b7027475bcfa6fff8dd9faf", + "0xb71e31a06afe065773dd3f4a6e9ef81c3292e27a3b7fdfdd452d03e05af3b6dd654c355f7516b2a93553360c6681a73a", + "0xa1017eb83d5c4e2477e7bd2241b2b98c4951a3b391081cae7d75965cadc1acaec755cf350f1f3d29741b0828e36fedea", + "0xb98d609858671543e1c3b8564162ad828808bb50ded261a9f8690ded5b665ed8368c58f947365ed6e84e5a12e27b423d", + "0x856a41c54df393b6660b7f6354572a4e71c8bfca9cabaffb3d4ef2632c015e7ee2bc10056f3eccb3dbed1ad17d939178", + "0xa7065a9d02fb3673acf7702a488fbc01aa69580964932f6f40b6c2d1c386b19e50b0e104fcac24ea26c4e723611d0238", + "0x98cd4e996594e89495c078bfd52a4586b932c50a449a7c8dfdd16043ca4cda94dafbaa8ad1b44249c99bbcc52152506e", + "0x8e2081cfd1d062fe3ab4dab01f68062bac802795545fede9a188f6c9f802cb5f884e60dbe866710baadbf55dc77c11a4", + "0x845daedc5cf972883835d7e13c937b63753c2200324a3b8082a6c4abb4be06c5f7c629d4abe4bfaf1d80a1f073eb6ce6", + "0xb83a2842f36998890492ab1cd5a088d9423d192681b9a3a90ec518d4c541bce63e6c5f4df0f734f31fbfdd87785a2463", + "0xb9633a4a101461a782fc2aa092e9dbe4e2ad00987578f18cd7cf0021a909951d60fe79654eb7897806795f93c8ff4d1c", + "0x840bc3dbb300ea6f27d1d6dd861f15680bd098be5174f45d6b75b094d0635aced539fa03ddbccb453879de77fb5d1fe9", + "0xa14fda6b93923dd11e564ae4457a66f397741527166e0b16a8eb91c6701c244fd1c4b63f9dd3515193ec88fa6c266b35", + "0xa5333d4f227543e9cd741ccf3b81db79f2f03ca9e649e40d6a6e8ff9073e06da83683566d3b3c8d7b258c62970fb24d1", + "0xac923a93d7da7013e73ce8b4a2b14b8fd0cc93dc29d5de941a70285bdd19be4740fedfe0c56b046689252a3696e9c5bc", + "0x986c746c9b4249352d8e5c629e8d7d05e716b3c7aab5e529ca969dd1e984a14b5be41528baef4c85d2369a42d7209216", + "0xa6cf9c06593432d8eba23a4f131bb7f72b9bd51ab6b4b772a749fe03ed72b5ced835a349c6d9920dba2a39669cb7c684", + "0xaf26bb3358be9d280d39b21d831bb53145c4527a642446073fee5a86215c4c89ff49a3877a7a549486262f6f57a0f476", + "0x939e18c73befc1ba2932a65ede34c70e4b91e74cc2129d57ace43ed2b3af2a9cc22a40fbf50d79a63681b6d98852866d", + "0x9240aeeaff37a91af55f860b9badd466e8243af9e8c96a7aa8cf348cd270685ab6301bc135b246dca9eda696f8b0e350", + "0xb0d9d8b7116156d9dde138d28aa05a33e61f8a85839c1e9071ccd517b46a5b4b53acb32c2edd7150c15bc1b4bd8db9e3", + "0xb9b8190dac5bfdeb59fd44f4da41a57e7f1e7d2c21faba9da91fa45cbeca06dcf299c9ae22f0c89ece11ac46352d619f", + "0x8a014933a6aea2684b5762af43dcf4bdbb633cd0428d42d71167a2b6fc563ece5e618bff22f1db2ddb69b845b9a2db19", + "0xa6b8afabf65f2dee01788114e33a2f3ce25376fb47a50b74da7c3c25ff1fdc8aa9f41307534abbf48acb6f7466068f69", + "0xa2e6cb6978e883f9719c3c0d44cfe8de0cc6f644b98f98858433bea8bbe7b612c8aca5952fccce4f195f9d54f9722dc2", + "0xb40bce2b42b88678400ecd52955bbdadd15f8b9e1b3751a1a3375dc0efb5ca3ee258cf201e1140b3c09ad41217d1d49e", + "0xaeae06db3ec47e9e5647323fa02fac44e06e59b885ad8506bf71b184ab3895510c82f78b6b22a5d978e8218e7f761e9f", + "0xb566579d904b54ecf798018efcb824dccbebfc6753a0fd2128ac3b4bd3b038c2284a7c782b5ca6f310eb7ea4d26a3f0a", + "0x9978d5e30bedb7526734f9a1febd973a70bfa20890490e7cc6f2f9328feab1e24f991285dbc3711d892514e2d7d005ad", + "0x953bfd7f6c3a0469ad432072b9679a25486f5f4828092401eff494cfb46656c958641a4e6d0d97d400bc59d92dba0030", + "0xb5fb4f279300876a539a27a441348764908bc0051ebd66dc51739807305e73db3d2f6f0f294ffb91b508ab150eaf8527", + "0xa94ab2af2b6ee1bc6e0d4e689ca45380d9fbd3c5a65b9bd249d266a4d4c07bf5d5f7ef2ae6000623aee64027892bf8fe", + "0xafebc7585b304ceba9a769634adff35940e89cd32682c78002822aab25eec3edc29342b7f5a42a56a1fec67821172ad5", + "0xad78d9481c840f5202546bea0d13c776826feb8b1b7c72e83d99a947622f0bf38a4208551c4c41beb1270d7792075457", + "0x98ceb673aff36e1987d5521a3984a07079c3c6155974bb8b413e8ae1ce84095fe4f7862fba7aefa14753eb26f2a5805f", + "0xa0101cfdc94e42b2b976c0d89612a720e55d145a5ef6ef6f1f78cf6de084a49973d9b5d45915349c34ce712512191e3c", + "0xaa134416d8ff46f2acd866c1074af67566cfcf4e8be8d97329dfa0f603e1ff208488831ce5948ac8d75bfcba058ddcaa", + "0xb41c5185869071760ac786078a57a2ab4e2af60a890037ac0c0c28d6826f15c2cf028fddd42a9b6de632c3d550bfbc14", + "0x94393b1da6eaac2ffd186b7725eca582f1ddc8cdd916004657f8a564a7c588175cb443fc6943b39029f5bbe0add3fad8", + "0xae73e7256e9459db04667a899e0d3ea5255211fb486d084e6550b6dd64ca44af6c6b2d59d7aa152de9f96ce9b58d940d", + "0x8509d8a3f4a0ed378e0a1e28ea02f6bf1d7f6c819c6c2f5297c7df54c895b848f841653e32ba2a2c22c2ff739571acb8", + "0x8d4c16b5d98957c9da13d3f36c46f176e64e5be879f22be3179a2c0e624fe4758a82bf8c8027410002f973a3b84cd55a", + "0xafdd96fbcda7aa73bf9eeb2292e036c25753d249caee3b9c013009cc22e10d3ec29e2aa6ddbb21c4e949b0c0bccaa7f4", + "0x92d04a5b0ac5d8c8e313709b432c9434ecd3e73231f01e9b4e7952b87df60cbfa97b5dedd2200bd033b4b9ea8ba45cc1", + "0xb7abc3858d7a74bb446218d2f5a037e0fae11871ed9caf44b29b69c500c1fa1dcfad64c9cdccc9d80d5e584f06213deb", + "0x8dae7a0cffa2fd166859cd1bf10ff82dd1932e488af377366b7efc0d5dec85f85fe5e8150ff86a79a39cefc29631733a", + "0x9316e9e4ec5fab4f80d6540df0e3a4774db52f1d759d2e5b5bcd3d7b53597bb007eb1887cb7dc61f62497d51ffc8d996", + "0x909f22c1f1cdc87f7be7439c831a73484a49acbf8f23d47087d7cf867c64ef61da3bde85dc57d705682b4c3fc710d36e", + "0xa3084d173eacd08c9b5084a196719b57e47a0179826fda73466758235d7ecdb87cbcf097bd6b510517d163a85a7c7edd", + "0xaef8810af4fc676bf84a0d57b189760ddc3375c64e982539107422e3de2580b89bd27aa6da44e827b56db1b5555e4ee8", + "0xa296469f24f6f56da92d713afcd4dd606e7da1f79dc4e434593c53695847eefc81c7c446486c4b3b8c8d00c90c166f14", + "0xb92b74ac015262ca66c33f2d950221e19d940ba3bf4cf17845f961dc1729ae227aa9e1f2017829f2135b489064565c29", + "0xb33137084422fb643123f40a6df2b498065e65230fc65dc31791c330e898c51c3a65ff738930f32c63d78f3c9315f85b", + "0xb7968ecba568b8193b3058400af02c183f0a6df995a744450b3f7e0af7a772454677c3857f99c140bbdb2a09e832e8e0", + "0x980437dce55964293cb315c650c5586ffd97e7a944a83f6618af31c9d92c37b53ca7a21bb5bc557c151b9a9e217e7098", + "0x86dc564c9b545567483b43a38f24c41c6551a49cabeebb58ce86404662a12dbfafd0778d30d26e1c93ce222e547e3898", + "0xa65b3159df4ec48bebb67cb3663cd744027ad98d970d620e05bf6c48f230fa45bf17527fe726fdf705419bb7a1bb913e", + "0x9530dea4e0e19d6496f536f2e75cf7d814d65fde567055eb20db48fd8d20d501cd2a22fb506db566b94c9ee10f413d43", + "0xa9f9a368f0e0b24d00a35b325964c85b69533013f9c2cfad9708be5fb87ff455210f8cb8d2ce3ba58ca3f27495552899", + "0xb28468e9b04ee9d69003399a3cf4457c9bf9d59f36ab6ceeb8e964672433d06b58beeea198fedc7edbaa1948577e9fa2", + "0x869bd916aee8d86efe362a49010382674825d49195b413b4b4018e88ce43fe091b475d0b863ff0ba2259400f280c2b23", + "0x808d95762d33ddfa5d0ee3d7d9f327de21a994d681a5f372e2e3632963ea974da7f1f9e5bac8ccce24293509d1f54d27", + "0xb3b31f52370de246ee215400975b674f6da39b2f32514fe6bd54e747752eedca22bb840493b44a67df42a3639c5f901f", + "0xa7688b3b0a4fc1dd16e8ba6dc758d3cfe1b7cf401c31739484c7fa253cce0967df1b290769bcefc9d23d3e0cb19e6218", + "0xb01e9fcac239ba270e6877b79273ddd768bf8a51d2ed8a051b1c11e18eff3de5920e2fcbfbd26f06d381eddd3b1f1e1b", + "0xb2b53a496def0ba06e80b28f36530fbe0fb5d70a601a2f10722e59abee529369c1ae8fd0f2db9184dd4a2519bb832d94", + "0xb82d663e55c2a5ada7e169e9b1a87bc1c0177baf1ec1c96559b4cb1c5214ce1ddf2ab8d345014cab6402f3774235cf5a", + "0xae0d74644aba9a49521d3e9553813bcb9e18f0b43515e4c74366e503c52f47236be92dfbd99c7285b3248c267b1de5a0", + "0xab8e1a9446bbdd588d1690243b1549d230e6149c28f59662b66a8391a138d37ab594df38e7720fae53217e5c3573b5be", + "0xab480000fe194d23f08a7a9ec1c392334e9c687e06851f083845121ce502c06b54dda8c43092bcc1035df45cc752fe9b", + "0xb43baa7717fac02d4294f5b3bb5e58a65b3557747e3188b482410388daac7a9c177f762d943fd5dcf871273921213da8", + "0x8458c111df2a37f5dd91a9bee6c6f4b79f4f161c93fe78075b24a35f9817da8dde71763218d627917a9f1f0c4709c1ed", + "0xa510005b05c0b305075b27b243c9d64bcdce85146b6ed0e75a3178b5ff9608213f08c8c9246f2ca6035a0c3e31619860", + "0x8319567764b8295402ec1ebef4c2930a138480b37e6d7d01c8b4c9cd1f2fc3f6e9a44ae6e380a0c469b25b06db23305f", + "0xb70cf0a1d14089a4129ec4e295313863a59da8c7e26bf74cc0e704ed7f0ee4d7760090d0ddf7728180f1bf2c5ac64955", + "0xb43b8f61919ea380bf151c294e54d3a3ff98e20d1ee5efbfe38aa2b66fafbc6a49739793bd5cb1c809f8b30466277c3a", + "0xb6fd55dd156622ad7d5d51b7dde75e47bd052d4e542dd6449e72411f68275775c846dde301e84613312be8c7bce58b07", + "0x8b5f7a959f818e3baf0887f140f4575cac093d0aece27e23b823cf421f34d6e4ff4bb8384426e33e8ec7b5eed51f6b5c", + "0x8ed2ef8331546d98819a5dd0e6c9f8cb2630d0847671314a28f277faf68da080b53891dd75c82cbcf7788b255490785d", + "0x95e5c2f2e84eed88c6980bbba5a1c0bb375d5a628bff006f7516d45bb7d723da676add4fdd45956f312e7bab0f052644", + "0x80db045535d6e67a422519f5c89699e37098449d249698a7cc173a26ccd06f60238ae6cc7242eb780a340705c906790c", + "0xb9210713c78e19685608c6475bfa974b57ac276808a443f8b280945c5d5f9c39da43effa294bfb1a6c6f7b6b9f85bf6c", + "0xb9b03fd3bf07201ba3a039176a965d736b4ef7912dd9e9bf69fe1b57c330a6aa170e5521fe8be62505f3af81b41d7806", + "0x811648140080fe55b8618f4cf17f3c5a250adb0cd53d885f2ddba835d2b4433188e41fc0661faac88e4ff910b16278c0", + "0xa7fd4d2c8e7b59b8eed3d4332ae94b77a89a2616347402f880bc81bde072220131e6dbec8a605be3a1c760b775375879", + "0x8cb6bcbc39372d23464a416ea7039f57ba8413cf3f00d9a7a5b356ab20dcb8ed11b3561f7bce372b8534d2870c7ee270", + "0xa51ce78de512bd87bfa0835de819941dffbf18bec23221b61d8096fc9436af64e0693c335b54e7bfc763f287bdca2db6", + "0x89f5a683526b90c1c3ceebbb8dc824b21cff851ce3531b164f6626e326d98b27d3e1d50982e507d84a99b1e04e86a915", + "0xb8615bf43e13ae5d7b8dd903ce37190800cd490f441c09b22aa29d7a29ed2c0417b7a08ead417868f1de2589deaadd80", + "0xa219fb0303c379d0ab50893264919f598e753aac9065e1f23ef2949abc992577ab43c636a1d2c089203ec9ddb941e27d", + "0xa9fe1c060b974bee4d590f2873b28635b61bfcf614e61ff88b1be3eee4320f4874e21e8d666d8ac8c9aba672efc6ecae", + "0xb340cfd120f6a4623e3a74cf8c32bfd7cd61a280b59dfd17b15ca8fae4d82f64a6f15fbde4c02f424debc72b7db5fe67", + "0xafb27a86c4c2373088c96b9adf4433f2ebfc78ac5c526e9f0510670b6e4e5e0057c0a4f75b185e1a30331b9e805c1c15", + "0x82a69ce1ee92a09cc709d0e3cd22116c9f69d28ea507fe5901f5676000b5179b9abe4c1875d052b0dd42d39925e186bb", + "0x91cb4545d7165ee8ffbc74c874baceca11fdebbc7387908d1a25877ca3c57f2c5def424dab24148826832f1e880bede0", + "0x9148e6b814a7d779c19c31e33a068e97b597de1f8100513db3c581190513edc4d544801ce3dd2cf6b19e0cd6daedd28a", + "0xadbccf681e15b3edb6455a68d292b0a1d0f5a4cb135613f5e6db9943f02181341d5755875db6ee474e19ace1c0634a28", + "0xb9ff71461328f370ce68bf591aa7fb13027044f42a575517f3319e2be4aa4843fa281e756d0aa5645428d6dfa857cef2", + "0xa65faedf326bcfd8ef98a51410c78b021d39206704e8291cd1f09e096a66b9b0486be65ff185ca224c45918ac337ddeb", + "0xb29852f6aa6c60effdffe96ae88590c88abae732561d35cc19e82d3a51e26cb35ea00986193e07f90060756240f5346e", + "0x814603907c21463bcf4e59cfb43066dfe1a50344ae04ef03c87c0f61b30836c3f4dea0851d6fa358c620045b7f9214c8", + "0xb472e241e6956146cca57b97a8a204668d050423b4e76f857bad5b47f43b203a04c8391ba9d9c3e95093c071f9d376a1", + "0xb842cd5f8f5de5ca6c68cb4a5c1d7b451984930eb4cc18fd0934d52fdc9c3d2d451b1c395594d73bc3451432bfba653f", + "0x81a630bc41b3da8b3eb4bf56cba10cd9f93153c3667f009dc332287baeb707d505fb537e6233c8e53d299ec0f013290c", + "0xa13806bfc3eae7a7000c9d9f1bd25e10218d4e67f59ae798b145b098bca3edad2b1040e3fc1e6310e612fb8818f459ac", + "0xa0592cda5cdddf1340033a745fd13a6eff2021f2e26587116c61c60edead067e0f217bc2bef4172a3c9839b0b978ab35", + "0xa12c78ad451e0ac911260ade2927a768b50cb4125343025d43474e7f465cdc446e9f52a84609c5e7e87ae6c9b3f56cda", + "0xae30d65e9e20c3bfd603994ae2b175ff691d51f3e24b2d058b3b8556d12ca4c75087809062dddd4aaac81c94d15d8a17", + "0x903f89cc13ec6685ac7728521898781fecb300e9094ef913d530bf875c18bcc3ceed7ed51e7b482d45619ab4b025c2e9", + "0x8135806a02ead6aa92e9adb6fefb91349837ab73105aaa7be488ef966aa8dfaafdfa64bbae30fcbfa55dd135a036a863", + "0xa280f44877583fbb6b860d500b1a3f572e3ee833ec8f06476b3d8002058e25964062feaa1e5bec1536d734a5cfa09145", + "0x918d3e2222e10e05edb34728162a899ad5ada0aaa491aeb7c81572a9c0d506e31d5390e1803a91ff3bd8e2bb15d47f31", + "0xb678b4fbec09a8cc794dcbca185f133578f29e354e99c05f6d07ac323be20aecb11f781d12898168e86f2e0f09aca15e", + "0xae050271e01b528925302e71903f785b782f7bf4e4e7a7f537140219bc352dc7540c657ed03d3a297ad36798ecdb98cd", + "0xb47fe69960eb45f399368807cff16d941a5a4ebad1f5ec46e3dc8a2e4d598a7e6114d8f0ca791e9720fd786070524e2b", + "0xb92157b926751aaf7ef82c1aa8c654907dccab6376187ee8b3e8c0c82811eae01242832de953faa13ebaff7da8698b3e", + "0xb57eced93eec3371c56679c259b34ac0992286be4f4ff9489d81cf9712403509932e47404ddd86f89d7c1c3b6391b28c", + "0x809d12fe4039a0ec80dc9be6a89acaab7797e5f7f9b163378f52f9a75a1d73b2e9ae6e3dd49e32ced439783c1cabbef5", + "0x94c768384ce212bc2387e91ce8b45e4ff120987e42472888a317abc9dcdf3563b62e7a61c8e98d7cdcbe272167d91fc6", + "0x8c64d51774753623666b10ca1b0fe63ae42f82ed6aa26b81dc1d48c86937c5772eb1402624c52a154b86031854e1fb9f", + "0x8b801ba8e2ff019ee62f64b8cb8a5f601fc35423eb0f9494b401050103e1307dc584e4e4b21249cd2c686e32475e96c3", + "0x8bf2cb79bc783cb57088aae7363320cbeaabd078ffdec9d41bc74ff49e0043d0dad0086a30e5112b689fd2f5a606365d", + "0x82db43a99bc6573e9d92a3fd6635dbbb249ac66ba53099c3c0c8c8080b121dd8243cd5c6e36ba0a4d2525bae57f5c89c", + "0xb31006896f02bc90641121083f43c3172b1039334501fbaf1672f7bf5d174ddd185f945adf1a9c6cf77be34c5501483d", + "0x848e6e7a54ad64d18009300b93ea6f459ce855971dddb419b101f5ac4c159215626fadc20cc3b9ab1701d8f6dfaddd8b", + "0x838ba0c1e5bd1a6da05611ff1822b8622457ebd019cb065ece36a2d176bd2d889511328120b8a357e44569e7f640c1e6", + "0xa462b8bc97ac668b97b28b3ae24b9f5de60e098d7b23ecb600d2194cd35827fb79f77c3e50d358f5bd72ee83fef18fa0", + "0xae4a6b9d22a4a3183fac29e2551e1124a8ce4a561a9a2afa9b23032b58d444e6155bb2b48f85c7b6d70393274e230db7", + "0x8d9a8410518ea64f89df319bfd1fc97a0971cdb9ad9b11d1f8fe834042ea7f8dce4db56eeaf179ff8dda93b6db93e5ce", + "0xaa7c99d906b4d7922296cfe2520473fc50137c03d68b7865c5bfb8adbc316b1034310ec4b5670c47295f4a80fb8d61e9", + "0xabc28c155e09365cb77ffead8dc8f602335ef93b2f44e4ef767ce8fc8ef9dd707400f3a722e92776c2e0b40192c06354", + "0xa6b202e5dedc16a4073e04a11af3a8509b23dfe5a1952f899adeb240e75c3f5bde0c424f811a81ea48d343591faffe46", + "0x8bc33d4b40197fd4d49d1de47489d10b90d9b346828f53a82256f3e9212b0cbc6930b895e879da9cec9fedf026aadb3e", + "0xa28e59ce6ad02c2ce725067c0123117e12ac5a52c8f5af13eec75f4a9efc4f696777db18a374fa33bcae82e0734ebd16", + "0x82ee2fa56308a67c7db4fd7ef539b5a9f26a1c2cc36da8c3206ba4b08258fbb3cec6fe5cdbd111433fb1ba2a1e275927", + "0xa33b6250d4ac9e66ec51c063d1a6a31f253eb29bbaed12a0d67e2eccfffb0f3a52750fbf52a1c2aaba8c7692346426e7", + "0x96b48182121ccd9d689bf1dfdc228175564cd68dc904a99c808a7f0053a6f636c9d953e12198bdf2ea49ea92772f2e18", + "0x8e108be614604e09974a9ed90960c28c4ea330a3d9a0cb4af6dd6f193f84ab282b243ecdf549b3131036bebc8905690c", + "0xb070e61a6d813626144b312ded1788a6d0c7cec650a762b2f8df6e4743941dd82a2511cd956a3f141fc81e15f4e092da", + "0x81430b6d2998fc78ba937a1639c6020199c52da499f68109da227882dc26d005b73d54c5bdcac1a04e8356a8ca0f7017", + "0xa9b628c63d08b8aba6b1317f6e91c34b2382a6c85376e8ef2410a463c6796740ae936fc4e9e0737cb9455d1daa287bd8", + "0xa67de0e91ade8d69a0e00c9ff33ee2909b8a609357095fa12319e6158570c232e5b6f4647522efb7345ce0052aa9d489", + "0xb848057cca2ca837ee49c42b88422303e58ea7d2fc76535260eb5bd609255e430514e927cc188324faa8e657396d63ec", + "0x81ad8714f491cdff7fe4399f2eb20e32650cff2999dd45b9b3d996d54a4aba24cc6c451212e78c9e5550368a1a38fb3f", + "0xa042dff4bf0dfc33c178ba1b335e798e6308915128de91b12e5dbbab7c4ac8d60a01f6aea028c3a6d87b9b01e4e74c01", + "0x83ca44b15393d021de2a511fa5511c5bd4e0ac7d67259dce5a5328f38a3cce9c3a269405959a2486016bc27bb140f9ff", + "0xae3c19882d7a9875d439265a0c7003c8d410367627d21575a864b9cb4918de7dbdb58a364af40c5e045f3df40f95d337", + "0x8356d199a991e5cbbff608752b6291731b6b6771aed292f8948b1f41c6543e4ab1bedc82dd26d10206c907c03508df06", + "0xadf870fcb96e972c033ab7a35d28ae79ee795f82bc49c3bd69138f0e338103118d5529c53f2d72a9c0d947bf7d312af2", + "0x84d4ab787f0ac00f104f4a734dc693d62d48c2aeb03913153da62c2ae2c27d11b1110dcef8980368dd84682ea2c1a308", + "0xb2c49c4a33aa94b52b6410b599e81ff15490aafa7e43c8031c865a84e4676354a9c81eb4e7b8be6825fdcefd1e317d44", + "0xb0f948217b0d65df7599a0ba4654a5e43c84db477936276e6f11c8981efc6eaf14c90d3650107ed4c09af4cc8ec11137", + "0x83d4bc6b0be87c8a4f1e9c53f257719de0c73d85b490a41f7420e777311640937320557ff2f1d9bafd1daaa54f932356", + "0x8b2b0851a795c19191a692af55f7e72ad2474efdc5401bc3733cfdd910e34c918aaebe69d5ea951bdddf3c01cabbfc67", + "0xa9bd7d1de6c0706052ca0b362e2e70e8c8f70f1f026ea189b4f87a08ce810297ebfe781cc8004430776c54c1a05ae90c", + "0xa87430169c6195f5d3e314ff2d1c2f050e766fd5d2de88f5207d72dba4a7745bb86d0baca6e9ae156582d0d89e5838c7", + "0xa1412840fcc86e2aeec175526f2fb36e8b3b8d21a78412b7266daf81e51b3f68584ed8bd42a66a43afdd8c297b320520", + "0x8910e4e8a56bf4be9cc3bbf0bf6b1182a2f48837a2ed3c2aaec7099bfd7f0c83e14e608876b17893a98021ff4ab2f20d", + "0xae7d39670ecca3eb6db2095da2517a581b0e8853bdfef619b1fad9aacd443e7e6a40f18209fadd44038a55085c5fe8b2", + "0xae6d4add6d1a6f90b22792bc9d40723ee6850c27d0b97eefafd5b7fd98e424aa97868b5287cc41b4fbd7023bca6a322c", + "0x90ce4cc660714b0b673d48010641c09c00fc92a2c596208f65c46073d7f349dd8e6e077ba7dcef9403084971c3295b76", + "0x867e50e74281f28ecd4925560e2e7a6f8911b135557b688254623acce0dbc41e23ac3e706a184a45d54c586edc416eb0", + "0x91f3b7b73c8ccc9392542711c45fe6f236057e6efad587d661ad5cb4d6e88265f86b807bb1151736b1009ab74fd7acb4", + "0xb0ce79e7f9ae57abe4ff366146c3b9bfb38b0dee09c28c28f5981a5d234c6810ad4d582751948affb480d6ae1c8c31c4", + "0x90e9d00a098317ececaa9574da91fc149eda5b772dedb3e5a39636da6603aa007804fa86358550cfeff9be5a2cb7845e", + "0x88e35711b471e89218fd5f4d0eadea8a29405af1cd81974427bc4a5fb26ed60798daaf94f726c96e779b403a2cd82820", + "0xa84b47ceff13ed9c3e5e9cdf6739a66d3e7c2bd8a6ba318fefb1a9aecf653bb2981da6733ddb33c4b0a4523acc429d23", + "0x874c63baeddc56fbbca2ff6031f8634b745f6e34ea6791d7c439201aee8f08ef5ee75f7778700a647f3b21068513fce6", + "0x80d33d2e20e8fc170aa3cb4f69fffb72aeafb3b5bb4ea0bc79ab55da14142ca19b2d8b617a6b24d537366e3b49cb67c3", + "0x8ef476b118e0b868caed297c161f4231bbeb863cdfa5e2eaa0fc6b6669425ce7af50dc374abceac154c287de50c22307", + "0xb34a13968b9e414172fb5d5ece9a39cf2eb656128c3f2f6cc7a9f0c69c6bae34f555ecc8f8837dc34b5e470e29055c78", + "0xb2292d9181f16581a9a9142490b2bdcdfb218ca6315d1effc8592100d792eb89d5356996c890441f04f2b4a95763503e", + "0x8c205326c11d25a46717b780c639d89714c7736c974ae71287e3f4b02e6605ac2d9b4928967b1684f12be040b7bf2dd3", + "0xb538a7b97fbd702ba84645ca0a63725be1e2891c784b1d599e54e3480e4670d0025526674ef5cf2f87dddf2290ba09f0", + "0xb06207cdca46b125a27b3221b5b50cf27af4c527dd7c80e2dbcebbb09778a96df3af67e50f07725239ce3583dad60660", + "0xaaf6e7f7d54f8ef5e2e45dd59774ecbeecf8683aa70483b2a75be6a6071b5981bbaf1627512a65d212817acdfab2e428", + "0xa026904f4066333befd9b87a8fad791d014096af60cdd668ef919c24dbe295ff31f7a790e1e721ba40cf5105abca67f4", + "0x840ef44a733ff1376466698cd26f82cf56bb44811e196340467f932efa3ae1ef9958a0701b3b032f50fd9c1d2aed9ab5", + "0xb560a697eafab695bcef1416648a0a664a71e311ecbe5823ae903bd0ed2057b9d7574b9a86d3fe22aa3e6ddce38ea513", + "0xabf71106a05d501e84cc54610d349d7d5eae21a70bd0250f1bebbf412a130414d1c8dbe673ffdb80208fd72f1defa4d4", + "0x8f106b40588586ac11629b96d57808ad2808915d89539409c97414aded90b4ff23286a692608230a52bff696055ba5d6", + "0x956f82a6c2ae044635e85812581e4866c5fa2f427b01942047d81f6d79a14192f66fbbe77c9ffeaef4e6147097fdd2b5", + "0x8f6ee34128fac8bbf13ce2d68b2bb363eb4fd65b297075f88e1446ddeac242500eeb4ef0735e105882ff5ba8c44c139b", + "0xb3ded14e82d62ac7a5a036122a62f00ff8308498f3feae57d861babaff5a6628d43f0a0c5fc903f10936bcf4e2758ceb", + "0xb81b2162df045390f04df07cbd0962e6b6ca94275a63edded58001a2f28b2ae2af2c7a6cba4ecd753869684e77e7e799", + "0xa3503d16b6b27eb20c1b177bcf90d13706169220523a6271b85b2ce35a9a2b9c5bed088540031c0a4ebfdae3a4c6ab04", + "0xab2ad3a1bce2fbd55ca6b7c23786171fe1440a97d99d6df4d80d07dd56ac2d7203c294b32fc9e10a6c259381a73f24a1", + "0xa81dd26ec057c4032a4ed7ad54d926165273ed51d09a1267b2e477535cf6966835a257c209e4e92d165d74fa75695fa3", + "0x92073c1d11b168e4fa50988b0288638b4868e48bbc668c5a6dddf5499875d53be23a285acb5e4bad60114f6cf6c556e9", + "0x8574e1fc3acade47cd4539df578ce9205e745e161b91e59e4d088711a7ab5aa3b410d517d7304b92109924d9e2af8895", + "0xa5bce6055ff812e72ce105f147147c7d48d7a2313884dd1f488b1240ee320f13e8a33f5441953a8e7a3209f65b673ce1", + "0xb6132b2a34b0905dcadc6119fd215419a7971fe545e52f48b768006944b4a9d7db1a74b149e2951ea48c083b752d0804", + "0xb30d1f8c115d0e63bf48f595dd10908416774c78b3bbb3194192995154d80ea042d2e94d858de5f8aa0261b093c401fd", + "0x98caa6bd38916c08cf221722a675a4f7577f33452623de801d2b3429595f988090907a7e99960fff7c076d6d8e877b31", + "0xa0e1412ce4505daf1a2e59ce4f0fc0e0023e335b50d2b204422f57cd65744cc7a8ed35d5ef131a42c70b27111d3115b7", + "0x883a9c21c16a167a4171b0f084565c13b6f28ba7c4977a0de69f0a25911f64099e7bbb4da8858f2e93068f4155d04e18", + "0x83e42c46d88930c8f386b19fd999288f142d325e2ebc86a74907d6d77112cb0d449bc511c95422cc810574031a8cbba9", + "0xaea753290e51e2f6a21a9a0ee67d3a2713f95c2a5c17fe41116c87d3aa77b1683761264d704df1ac34f8b873bc88ef7b", + "0xae27e219277a73030da27ab5603c72c8bd81b6224b7e488d7193806a41343dff2456132274991a4722fdb0ef265d04cd", + "0xb1d2117fe811720bb997c7c93fe9e4260dc50fca8881b245b5e34f724aaf37ed970cdad4e8fcb68e05ac8cf55a274a53", + "0xaceb762edbb0f0c43dfcdb01ea7a1ac5918ca3882b1e7ebc4373521742f1ed5250d8966b498c00b2b0f4d13212e6dd0b", + "0x9210e6ceb05c09b46fd09d036287ca33c45124ab86315e5d6911ff89054f1101faaa3e83d123b7805056d388bcec6664", + "0x8d0e76dbd37806259486cd9a31bc8b2306c2b95452dc395546a1042d1d17863ef7a74c636b782e214d3aa0e8d717f94a", + "0x86e6f4608a00007fa533c36a5b054c5768ccafe41ad52521d772dcae4c8a4bcaff8f7609be30d8fab62c5988cbbb6830", + "0x8acfd83ddf7c60dd7c8b20c706a3b972c65d336b8f9b3d907bdd8926ced271430479448100050b1ef17578a49c8fa616", + "0xa46ba4d3947188590a43c180757886a453a0503f79cc435322d92490446f37419c7b999fdf868a023601078070e03346", + "0x84eee9d6bce039c52c2ebc4fccc0ad70e20c82f47c558098da4be2f386a493cbc76adc795b5488c8d11b6518c2c4fab8", + "0xa2d44faaeb2eff7915c83f32b13ca6f31a6847b1c1ce114ea240bac3595eded89f09b2313b7915ad882292e2b586d5b4", + "0xb52503f6e5411db5d1e70f5fb72ccd6463fa0f197b3e51ca79c7b5a8ab2e894f0030476ada72534fa4eb4e06c3880f90", + "0xb3f5f722af9dddb07293c871ce97abbccba0093ca98c8d74b1318fa21396fc1b45b69c15084f63d728f9908442024506", + "0x8ab8f71cd337fa19178924e961958653abf7a598e3f022138b55c228440a2bac4176cea3aea393549c03cd38a13eb3fc", + "0x803d530523fc9e1e0f11040d2412d02baef3f07eeb9b177fa9bfa396af42eea898a4276d56e1db998dc96ae47b644cb2", + "0xb9e7fbda650f18c7eb8b40e42cc42273a7298e65e8be524292369581861075c55299ce69309710e5b843cb884de171bd", + "0x88ee923c95c1dac99ae7ed6067906d734d793c5dc5d26339c1bb3314abe201c5dccb33b9007351885eb2754e9a8ea06c", + "0xa51b99c3088e473afdaa9e0a9f7e75a373530d3b04e44e1148da0726b95e9f5f0c7e571b2da000310817c36f84b19f7f", + "0xb75f3a28fa2cc8d36b49130cb7448a23d73a7311d0185ba803ad55c8219741d451c110f48b786e96c728bc525903a54f", + "0xa84bcd24c3da5e537e64a811b93c91bfc84d7729b9ead7f79078989a6eb76717d620c1fad17466a0519208651e92f5ff", + "0x81af4d2d87219985b9b1202d724fe39ef988f14fef07dfe3c3b11714e90ffba2a97250838e8535eb63f107abfe645e96", + "0xaba4898bf1ccea9b9e2df1ff19001e05891581659c1cbbde7ee76c349c7fc7857261d9785823c9463a8aea3f40e86b38", + "0xb43749b8df4b15bc9a3697e0f1c518e6b04114171739ef1a0c9c65185d8ec18e40e6954d125cbc14ebc652cf41ad3109", + "0xaac35e1cd655c94dec3580bb3800bd9c2946c4a9856f7d725af15fbea6a2d8ca51c8ad2772abed60ee0e3fb9cb24046b", + "0x8e1a8d823c4603f6648ec21d064101094f2a762a4ed37dd2f0a2d9aa97b2d850ce1e76f4a4b8cae58819b058180f7031", + "0xac2aff801448dbbfc13cca7d603fd9c69e82100d997faf11f465323b97255504f10c0c77401e4d1890339d8b224f5803", + "0xa28fb275b1845706c2814d9638573e9bc32ff552ebaed761fe96fdbce70395891ca41c400ae438369264e31a2713b15f", + "0x9471035d14f78ff8f463b9901dd476b587bb07225c351161915c2e9c6114c3c78a501379ab6fb4eb03194c457cbd22bf", + "0x81bf3a2d9755e206b515a508ac4d1109bf933c282a46a4ae4a1b4cb4a94e1d23642fad6bd452428845afa155742ade7e", + "0x8d4c6a1944ff94426151909eb5b99cfd92167b967dabe2bf3aa66bb3c26c449c13097de881b2cfc1bf052862c1ef7b03", + "0xb66f92aa3bf2549f9b60b86f99a0bd19cbdd97036d4ae71ca4b83d669607f275260a497208f6476cde1931d9712c2402", + "0x85d185f0397c24c2b875b09b6328a23b87982b84ee880f2677a22ff4c9a1ba9f0fea000bb3f7f66375a00d98ebafce17", + "0x980756ddf9d2253cfe6c94960b516c94889d09e612810935150892627d2ecee9a2517e04968eea295d0106850c04ca44", + "0x8d4a02bf99b2260c334e7d81775c5cf582b00b0c982ce7745e5a90624919028278f5e9b098573bad5515ce7fa92a80c8", + "0xa2867bb3f5ab88fbdae3a16c9143ab8a8f4f476a2643c505bb9f37e5b1fd34d216cab2204c9a017a5a67b7ad2dda10e8", + "0xa6e74b588e5af935c8b243e888582ef7718f8714569dd4992920740227518305eb35fab674d21a5551cca44b3e511ef2", + "0x934f8a17c5cbb827d7868f5c8ca00cb027728a841000a16a3428ab16aa28733f16b52f58c9c4fbf75ccc45df72d9c4df", + "0xa0f0eafce1e098a6b58c7ad8945e297cd93aaf10bc55e32e2e32503f02e59fc1d5776936577d77c0b1162cb93b88518b", + "0x89bb0c06effadefdaf34ffe4b123e1678a90d4451ee856c863df1e752eef41fd984689ded8f0f878bf8916d5dd8e8024", + "0xb9d8c35911009c4c8cad64692139bf3fc16b78f5a19980790cb6a7aea650a25df4231a4437ae0c351676a7e42c16134f", + "0xa722000b95a4a2d40bed81870793f15ba2af633f9892df507f2842e52452e02b5ea8dea6a043c2b2611d82376e33742a", + "0x85c229a07efa54a713d0790963a392400f55fbb1a43995a535dc6c929f20d6a65cf4efb434e0ad1cb61f689b8011a3bc", + "0x8d826deaeeb84a3b2d2c04c2300ca592501f992810582d6ae993e0d52f6283a839dba66c6c72278cff5871802b71173b", + "0xae8c9b43c49572e2e166d704caf5b4b621a3b47827bb2a3bcd71cdc599bba90396fd9a405261b13e831bb5d44c0827d7", + "0x9777b30be2c5ffe7d29cc2803a562a32fb43b59d8c3f05a707ab60ec05b28293716230a7d264d7cd9dd358fc031cc13e", + "0xb0ac9e27a5dadaf523010f730b28f0ebac01f460d3bbbe277dc9d44218abb5686f4fac89ae462682fef9edbba663520a", + "0x8f15dd732799c879ca46d2763453b359ff483ca33adb1d0e0a57262352e0476c235987dc3a8a243c74bc768f93d3014c", + "0xaa0875f423bd68b5f10ba978ddb79d3b96ec093bfbac9ff366323193e339ed7c4578760fb60f60e93598bdf1e5cc4995", + "0x852ae8b19a1d80aa8ae5382e7ee5c8e7670ceb16640871c56b20b96b66b3b60e00015a3dde039446972e57b49a999ddd", + "0x94955626bf4ce87612c5cfffcf73bf1c46a4c11a736602b9ba066328dc52ad6d51e6d4f53453d4ed55a51e0aad810271", + "0x809838b32bb4f4d0237e98108320d4b079ee16ed80c567e7548bd37e4d7915b1192880f4812ac0e00476d246aec1dbc8", + "0x83a0b86e7d4ed8f9ccdc6dfc8ff1484509a6378fa6f09ed908e6ab9d1073f03011dc497e14304e4e3d181b57de06a5ab", + "0x8031d17635d39dfe9705c485d2c94830b6fc9bc67b91300d9d2591b51e36a782e77ab5904662effa9382d9cca201f525", + "0x9356d3fd0edcbbb65713c0f2a214394f831b26f792124b08c5f26e7f734b8711a87b7c4623408da6a091c9aef1f6af3c", + "0xa0e07d43d96e2d85b6276b3c60aadb48f0aedf2de8c415756dc597249ea64d2093731d8735231dadc961e5682ac59479", + "0xb7f52709669bf92a2e070bfe740f422f0b7127392c5589c7f0af71bb5a8428697c762d3c0d74532899da24ea7d8695c2", + "0x827e50fc9ce56f97a4c3f2f4cbaf0b22f1c3ce6f844ff0ef93a9c57a09b8bf91ebfbd2ba9c7f83c442920bffdaf288cc", + "0xa9dff1df0a8f4f218a98b6f818a693fb0d611fed0fc3143537cbd6578d479af13a653a8155e535548a2a0628ae24fa58", + "0xb9c16ea2a07afa32dd6c7c06df0dec39bca2067a9339e45475c98917f47e2320f6f235da353fd5e15b477de97ddc68dd", + "0xb0ce48d815c2768fb472a315cad86aa033d0e9ca506f146656e2941829e0acb735590b4fbc713c2d18d3676db0a954ac", + "0xb6f6e1485d3ec2a06abaecd23028b200b2e4a0096c16144d07403e1720ff8f9ba9d919016b5eb8dc5103880a7a77a1d3", + "0x919a8cc128de01e9e10f5d83b08b52293fdd41bde2b5ae070f3d95842d4a16e5331cf2f3d61c765570c8022403610fa4", + "0xa383c2b6276fa9af346b21609326b53fb14fdf6f61676683076e80f375b603645f2051985706d0401e6fbed7eb0666b6", + "0xab5fe1cd12634bfa4e5c60d946e2005cbd38f1063ec9a5668994a2463c02449a0a185ef331bd86b68b6e23a8780cb3ba", + "0xb0a783832153650aa0d766a3a73ec208b6ce5caeb40b87177ffc035ab03c7705ecdd1090b6456a29f5fb7e90e2fa8930", + "0xb5be78ce638ff8c4aa84352b536628231d3f7558c5be3bf010b28feac3022e64691fa672f358c8b663904aebe24a54ed", + "0xa55f8961295a11e91d1e5deadc0c06c15dacbfc67f04ccba1d069cba89d72aa3b3d64045579c3ea8991b150ac29366ae", + "0x8cd25315e4318801c2776824ae6e7d543cb85ed3bc2498ba5752df2e8142b37653cf9e60104d674be3aeb0a66912e97a", + "0xa5750285f61ab8f64cd771f6466e2c0395e01b692fd878f2ef2d5c78bdd8212a73a3b1dfa5e4c8d9e1afda7c84857d3b", + "0xb487fefede2e8091f2c7bfe85770db2edff1db83d4effe7f7d87bff5ab1ace35e9b823a71adfec6737fede8d67b3c467", + "0xa31e5b633bda9ffa174654fee98b5d5930a691c3c42fcf55673d927dbc8d91c58c4e42e615353145431baa646e8bbb30", + "0x8b88dd3fa209d3063b7c5b058f7249ee9900fbc2287d16da61a0704a0a1d71e45d9c96e1cda7fdf9654534ec44558b22", + "0x99d273c80c7f2dc6045d4ed355d9fc6f74e93549d961f4a3b73cd38683f905934d359058cd1fc4da8083c7d75070487f", + "0x91afd6ee04f0496dc633db88b9370d41c428b04fd991002502da2e9a0ef051bcd7b760e860829a44fbe5539fa65f8525", + "0x84042243b955286482ab6f0b5df4c2d73571ada00716d2f737ca05a0d2e88c6349e8ee9e67934cfee4a1775dbf7f4800", + "0xad6ff16f40f6de3d7a737f8e6cebd8416920c4ff89dbdcd75eabab414af9a6087f83ceb9aff7680aa86bff98bd09c8cc", + "0xa7f8a63d809f1155722c57f375ea00412b00147776ae4444f342550279ef4415450d6f400000a326bf11fea6c77bf941", + "0x92221631c44d60d68c6bc7b287509f37ee44cbe5fdb6935cee36b58b17c7325098f98f7910d2c3ca5dc885ad1d6dabc7", + "0x995783ce38fd5f6f9433027f122d4cf1e1ff3caf2d196ce591877f4a544ce9113ead60de2de1827eaff4dd31a20d79a8", + "0x9777b8695b790e702159a4a750d5e7ff865425b95fa0a3c15495af385b91c90c00a6bd01d1b77bffe8c47d01baae846f", + "0xb5289ee5737f0e0bde485d32096d23387d68dab8f01f47821ab4f06cc79a967afe7355e72dc0c751d96b2747b26f6255", + "0xa298cb4f4218d0464b2fab393e512bbc477c3225aa449743299b2c3572f065bc3a42d07e29546167ed9e1b6b3b3a3af3", + "0x90dcce03c6f88fc2b08f2b42771eedde90cc5330fe0336e46c1a7d1b5a6c1641e5fcc4e7b3d5db00bd8afca9ec66ed81", + "0xa59a07e343b62ad6445a0859a32b58c21a593f9ddbfe52049650f59628c93715aa1f4e1f45b109321756d0eeec8a5429", + "0x87f2bd49859a364912023aca7b19a592c60214b8d6239e2be887ae80b69ebdeb59742bdebcfa73a586ab23b2c945586c", + "0xb1284b37e59b529f0084c0dacf0af6c0b91fc0f387bf649a8c74819debf606f7b07fc3e572500016fb145ec2b24e9f17", + "0x81c940944df7ecc58d3c43c34996852c3c7915ed185d7654627f7af62abae7e0048dd444a6c09961756455000bd96d09", + "0xa43c455ce377e0bc434386c53c752880687e017b2f5ae7f8a15c044895b242dffde4c92fb8f8bb50b18470b17351b156", + "0xb30b0a1e454a503ea3e2efdec7483eaf20b0a5c3cefc42069e891952b35d4b2c955cf615f3066285ed8fafd9fcfbb8f6", + "0xb50b9c321468da950f01480bb62b6edafd42f83c0001d6e97f2bd523a1c49a0e8574fb66380ea28d23a7c4d54784f9f0", + "0xae33cb4951191258a11044682de861bf8d92d90ce751b354932dd9f3913f542b6a0f8a4dc228b3cd9244ac32c4582832", + "0xa4311c4c20c4d7dd943765099c50f2fd423e203ccfe98ff00087d205467a7873762510cac5fdce7a308913ed07991ed7", + "0x92a730e30eb5f3231feb85f6720489dbb1afd42c43f05a1610c6b3c67bb949ec8fde507e924498f4ffc646f7b07d9123", + "0xb2762ba1c89ac3c9a983c242e4d1c2610ff0528585ed5c0dfc8a2c0253551142af9b59f43158e8915a1da7cc26b9df67", + "0x98d730c28f6fa692a389e97e368b58f4d95382fad8f0baa58e71a3d7baaea1988ead47b13742ce587456f083636fa98e", + "0x939e51f73022bc5dc6862a0adf8fb8a3246b7bfb9943cbb4b27c73743926cc20f615a036c7e5b90c80840e7f1bfee0e7", + "0x8d60f9df9fd303f625af90e8272c4ecb95bb94e6efc5da17b8ab663ee3b3f673e9f6420d890ccc94acf4d2cae7a860d8", + "0x897cc42ff28971ff54d2a55dd6b35cfb8610ac902f3c06e3a5cea0e0a257e870c471236a8e84709211c742a09c5601a6", + "0x8c1fc42482a0819074241746d17dc89c0304a2acdae8ed91b5009e9e3e70ff725ba063b4a3e68fdce05b74f5180c545e", + "0xb28233b46a8fb424cfa386a845a3b5399d8489ceb83c8f3e05c22c934798d639c93718b7b68ab3ce24c5358339e41cbb", + "0xacb72df56a0b65496cd534448ed4f62950bb1e11e50873b6ed349c088ee364441821294ce0f7c61bd7d38105bea3b442", + "0x979fc8b987b5cef7d4f4b58b53a2c278bd25a5c0ea6f41c715142ea5ff224c707de38451b0ad3aa5e749aa219256650a", + "0xa2b382fd5744e3babf454b1d806cc8783efeb4761bc42b6914ea48a46a2eae835efbe0a18262b6bc034379e03cf1262b", + "0xaf2f0cee7bf413204be8b9df59b9e4991bc9009e0d6dbe6815181df0ec2ca93ab8f4f3135b1c14d8f53d74bff0bd6f27", + "0xae709f2c339886b31450834cf29a38b26eb3b0779bd77c9ac269a8a925d1d78ea3837876c654b61a8fe834b3b6940808", + "0x926a9702500441243cd446e7cbf15dde16400259726794694b1d9a40263a9fc9e12f7bcbf12a27cb9aaba9e2d5848ddc", + "0xb08918cb6f736855e11d3daca1ddfbdd61c9589b203b5493143227bf48e2c77c2e8c94b0d1aa2fab2226e0eae83f2681", + "0x8eb8c83fef2c9dd30ea44e286e9599ec5c20aba983f702e5438afe2e5b921884327ad8d1566c72395587efac79ca7d56", + "0xb31877ad682583283baadd68dc1bebd83f5748b165aadd7fe9ef61a343773b88bcd3a022f36d6c92f339b7bfd72820a9", + "0x8c43b37be02f39b22029b20aca31bff661abce4471dca88aa3bddefd9c92304a088b2dfc8c4795acc301ca3160656af2", + "0x88f77f34ee92b3d36791bdf3326532524a67d544297dcf1a47ff00b47c1b8219ff11e34034eab7d23b507caa2fd3c6b9", + "0xb3dc21608a389a72d3a752883a382baaafc61ecc44083b832610a237f6a2363f24195acce529eb4aed4ef0e27a12b66e", + "0x817e85d8e3d19a4cbc1dec31597142c2daa4871bda89c2177fa719c00eda3344eb08b82eb92d4aa91a9eaacb3fc09783", + "0xa7057b24208928ad67914e653f5ac1792c417f413d9176ba635502c3f9c688f7e2ee81800d7e3dc0a340c464da2fd9c5", + "0x82310cb42f647d99a136014a9f881eb0b9791efd2e01fc1841907ad3fc8a9654d3d1dab6689c3607214b4dc2aca01cee", + "0x899ed2ade37236cec90056f3569bc50f984f2247792defafcceb49ad0ca5f6f8a2f06573705300e07f0de0c759289ff5", + "0xab1422dc41af2a227b973a6fd124dfcb2367e2a11a21faa1d381d404f51b7257e5bc82e9cf20cd7fe37d7ae761a2ab37", + "0xa92bac085d1194fbd1c88299f07a061d0bdd3f980b663e81e6254dbb288bf11478c0ee880e28e01560f12c5ccb3c0103", + "0x847af8973b4e300bb06be69b71b96183fd1a0b9d51b91701bef6fcfde465068f1eb2b1503b07afda380f18d69de5c9e1", + "0x960aa7906e9a2f11db64a26b5892ac45f20d2ccb5480f4888d89973beb6fa0dfdc06d68d241ff5ffc7f1b82b1aac242d", + "0x924d0e45c780f5bc1c1f35d15dfc3da28036bdb59e4c5440606750ecc991b85be18bc9a240b6c983bc5430baa4c68287", + "0xb4b1b3062512d6ae7417850c08c13f707d5838e43d48eb98dd4621baf62eee9e82348f80fe9b888a12874bfa538771f8", + "0xb7d2d65ea4d1ad07a5dee39e40d6c03a61264a56b1585b4d76fc5b2a68d80a93a42a0181d432528582bf08d144c2d6a9", + "0xb78a0c715738f56f0dc459ab99e252e3b579b208142836b3c416b704ca1de640ca082f29ebbcee648c8c127df06f6b1e", + "0xb7d26c26c5b33f77422191dca94977588ab1d4b9ce7d0e19c4a3b4cd1c25211b78c328dbf81e755e78cd7d1d622ad23e", + "0xa477491a1562e329764645e8f24d8e228e5ef28c9f74c6b5b3abc4b6a562c15ffb0f680d372aed04d9e1bf944dece7be", + "0xaaf7a34d3267e3b1ddbc54c641e3922e89303f7c86ebebc7347ebca4cffad5b76117dac0cbae1a133053492799cd936f", + "0x8a935f7a955c78f69d66f18eee0092e5e833fa621781c9581058e219af4d7ceee48b84e472e159dda6199715fb2f9acf", + "0x8893118be4a055c2b3da593dbca51b1ae2ea2469911acfb27ee42faf3e6c3ad0693d3914c508c0b05b36a88c8b312b76", + "0xa0561c27224baf0927ad144cb71e31e54a064c598373fcf0d66aebf98ab7af1d8e2f343f77baefff69a6da750a219e11", + "0x8391cd6e2f6b0c242de1117a612be99776c3dc95cb800b187685ea5bf7e2722275eddb79fd7dfc8be8e389c4524cdf70", + "0x9625cad224e163d387738825982d1e40eeff35fe816d10d7541d15fdc4d3eee48009090f3faef4024b249205b0b28f72", + "0x85a523a33d903280d70ac5938770453a58293480170c84926457ac2df45c10d5ff34322ab130ef4a38c916e70d81af53", + "0x84d6b69729f5aaa000cd710c2352087592cfbdf20d5e1166977e195818e593fa1a50d1e04566be23163a2523dc1612f1", + "0x8d45121efba8cc308a498e8ee39ea6fa5cae9fb2e4aab1c2ff9d448aa8494ccbec9a078f978a86fcd97b5d5e7be7522a", + "0xb2a6a2e50230c05613ace9e58bb2e98d94127f196f02d9dddc53c43fc68c184549ca12d713cb1b025d8260a41e947155", + "0x8bd361f5adb27fd6f4e3f5de866e2befda6a8454efeb704aacc606f528c03f0faae888f60310e49440496abd84083ce2", + "0xa735609a6bc5bfd85e58234fc439ff1f58f1ff1dd966c5921d8b649e21f006bf2b8642ad8a75063c159aaf6935789293", + "0x8c78f2e3675096fef7ebaa898d2615cd50d39ca3d8f02b9bdfb07e67da648ae4be3da64838dffc5935fd72962c4b96c7", + "0xa2f416379e52e3f5edc21641ea73dc76c99f7e29ea75b487e18bd233856f4c0183429f378d2bfc6cd736d29d6cadfa49", + "0xa65b946cf637e090baf2107c9a42f354b390e7316beb8913638130dbc67c918926eb87bec3b1fe92ef72bc77a170fa3b", + "0x8bc315eacedbcfc462ece66a29662ca3dcd451f83de5c7626ef8712c196208fb3d8a0faf80b2e80384f0dd9772f61a23", + "0xa04c9876acf2cfdc8ef96de4879742709270fa1d03fe4c8511fbef2d59eb0aaf0336fa2c7dfe41a651157377fa217813", + "0xacaed2cff8633d12c1d12bb7270c54d65b0b0733ab084fd47f81d0a6e1e9b6f300e615e79538239e6160c566d8bb8d29", + "0x81eb537b35b7602c45441cfc61b27fa9a30d3998fad35a064e05bc9479e9f10b62eba2b234b348219eea3cadcaac64bb", + "0xb619563a811cc531da07f4f04e5c4c6423010ff9f8ed7e6ec9449162e3d501b269fb1c564c09c0429431879b0f45df02", + "0xb5422912afbfcb901f84791b04f1ddb3c3fbdc76d961ee2a00c5c320e06d3cc5b5909c3bb805df66c5f10c47a292b13d", + "0xa33811770c6dfda3f7f74e6ad0107a187fe622d61b444bbd84fd7ef6e03302e693b093df76f6ab39bb4e02afd84a575a", + "0x8e7b8bf460f0d3c99abb19803b9e43422e91507a1c0c22b29ee8b2c52d1a384da4b87c292e28eff040db5be7b1f8641f", + "0x941d21dd57c9496aa68f0c0c05507405fdd413acb59bc668ce7e92e1936c68ec4b065c3c30123319884149e88228f0b2", + "0x8ab3836e0a8ac492d5e707d056310c4c8e0489ca85eb771bff35ba1d658360084e836a6f51bb990f9e3d2d9aeb18fbb5", + "0x85d7a2f4bda31aa2cb208b771fe03291a4ebdaf6f1dc944c27775af5caec412584c1f45bc741fca2a6a85acb3f26ad7d", + "0xae8d4b764a7a25330ba205bf77e9f46182cd60f94a336bbd96773cf8064e3d39caf04c310680943dc89ed1fbad2c6e0d", + "0xb3075ba6668ca04eff19efbfa3356b92f0ab12632dcda99cf8c655f35b7928c304218e0f9799d68ef9f809a1492ff7db", + "0x87ecb13a03921296f8c42ceb252d04716f10e09c93962239fcaa0a7fef93f19ab3f2680bc406170108bc583e9ff2e721", + "0x992c80192a519038082446b1fb947323005b275e25f2c14c33cc7269e0ec038581cc43705894f94bad62ae33a8b7f965", + "0x83302852db89424d5699f3f157e79e91dc1380f8d5895c5a772bb4ea3a5928e7c26c07db6775203ce33e62a114adaa99", + "0x8712d380a843b08b7b294f1f06e2f11f4ad6bcc655fdde86a4d8bc739c23916f6fad2b902fe47d6212f03607907e9f0e", + "0x81947c84bc5e28e26e2e533af5ae8fe10407a7b77436dbf8f1d5b0bbe86fc659eae10f974659dc7c826c6dabd03e3a4b", + "0xb8c6d769890a8ee18dc4f9e917993315877c97549549b34785a92543cbeec96a08ae3a28d6e809c4aacd69de356c0012", + "0x805d4f5ef24d46911cbf942f62cb84b0346e5e712284f82b0db223db26d51aabf43204755eb19519b00e665c7719fcaa", + "0xab005dd8d297045c39e2f72fb1c48edb501ccf3575d3d04b9817b3afee3f0bb0f3f53f64bda37d1d9cde545aae999bae", + "0x889ecf5f0ee56938273f74eb3e9ecfb5617f04fb58e83fe4c0e4aef51615cf345bc56f3f61b17f6eed3249d4afd54451", + "0xa280214cd3bb0fb7ecd2d8bcf518cbd9078417f2b91d2533ec2717563f090fb84f2a5fcfdbbeb2a2a1f8a71cc5aa5941", + "0xb7a64198300cb6716aa7ac6b25621f8bdec46ad5c07a27e165b3f774cdf65bcfdbf31e9bae0c16b44de4b00ada7a4244", + "0xab50dc9e6924c1d2e9d2e335b2d679fc7d1a7632e84964d3bac0c9fe57e85aa5906ec2e7b0399d98ddd022e9b19b5904", + "0xa6f815fba7ef9af7fbf45f93bc952e8b351f5de6568a27c7c47a00cb39a254c6b31753794f67940fc7d2e9cc581529f4", + "0xb771a28bc04baef68604d4723791d3712f82b5e4fe316d7adc2fc01b935d8e644c06d59b83bcb542afc40ebafbee0683", + "0xb6c03c1c97adf0c4bf4447ec71366c6c1bff401ba46236cd4a33d39291e7a1f0bb34bd078ba3a18d15c98993b153a279", + "0x8b48b9e758e8a8eae182f5cbec96f67d20cca6d3eee80a2d09208eb1d5d872e09ef23d0df8ebbb9b01c7449d0e3e3650", + "0xab0048336bd5c3def1a4064eadd49e66480c1f2abb4df46e03afbd8a3342c2c9d74ee35d79f08f4768c1646681440984", + "0x8d187c1e97638df0e4792b78e8c23967dac43d98ea268ca4aabea4e0fa06cb93183fd92d4c9df74118d7cc27bf54415e", + "0x8ab415bfcd5f1061f7687597024c96dd9c7cb4942b5989379a7a3b5742f7d394337886317659cbeacaf030234a24f972", + "0x90f57ba36ee1066b55d37384942d8b57ae00f3cf9a3c1d6a3dfee1d1af42d4b5fa9baeb0cd7e46687d1d6d090ddb931d", + "0xb474dfb5b5f4231d7775b3c3a8744956b3f0c7a871d835d7e4fd9cc895222c7b868d6c6ce250de568a65851151fac860", + "0xa9d19ec40f0ca07c238e9337c6d6a319190bdba2db76fb63902f3fb459aeeb50a1ac30db5b25ee1b4201f3ca7164a7f4", + "0xa9e9c6e52beb0013273c29844956b3ce291023678107cdc785f7b44eff5003462841ad8780761b86aefc6b734adde7cf", + "0x91e5cbf8bb1a1d50c81608c9727b414d0dd2fb467ebc92f100882a3772e54f94979cfdf8e373fdef7c7fcdd60fec9e00", + "0x88b28c20585aca50d10752e84b901b5c2d58efef5131479fbbe53de7bce2029e1423a494c0298e1497669bd55be97a5d", + "0xafb05548a69f0845ffcc5f5dc63e3cdb93cd270f5655173b9a950394b0583663f2b7164ba6df8d60c2e775c1d9f120af", + "0x9084a6ee8ec22d4881e9dcc8a9eb3c2513523d8bc141942370fd191ad2601bf9537a0b1e84316f3209b3d8a54368051e", + "0x93487ec939ed8e740f15335b58617c3f917f72d07b7a369befd479ae2554d04deb240d4a14394b26192efae4d2f4f35d", + "0x86ee253f3a9446a33e4d1169719b7d513c6b50730988415382faaf751988c10a421020609f7bcdef91be136704b906e2", + "0x8bf8993e81080c7cbba1e14a798504af1e4950b2f186ab3335b771d6acaee4ffe92131ae9c53d74379d957cb6344d9cd", + "0x91e9fe78cdac578f4a4687f71b800b35da54b824b1886dafec073a3c977ce7a25038a2f3a5b1e35c2c8c9d1a7312417c", + "0xaf0475779b5cee278cca14c82da2a9f9c8ef222eb885e8c50cca2315fea420de6e04146590ed0dd5a29c0e0812964df5", + "0x8abe4e2a4f6462b6c64b3f10e45db2a53c2b0d3c5d5443d3f00a453e193df771eda635b098b6c8604ace3557514027af", + "0xa1bbef0bd684a3f0364a66bde9b29326bac7aa3dde4caed67f14fb84fed3de45c55e406702f1495a3e2864d4ee975030", + "0x93a8bcf4159f455d1baa73d2ef2450dcd4100420de84169bbe28b8b7a5d1746273f870091a87a057e834f754f34204b1", + "0xb38bb4b44d827f6fd3bd34e31f9186c59e312dbfadd4a7a88e588da10146a78b1f8716c91ad8b806beb8da65cab80c4c", + "0xaad8c6cd01d785a881b446f06f1e9cd71bca74ba98674c2dcddc8af01c40aa7a6d469037498b5602e76e9c91a58d3dbd", + "0xa3d7ebeccde69d73d8b3e76af0da1a30884bb59729503ff0fb0c3bccf9221651b974a6e72ea33b7956fc3ae758226495", + "0x811bd8d1e3722b64cd2f5b431167e7f91456e8bba2cc669d3fbbce7d553e29c3c19f629fcedd2498bc26d33a24891d17", + "0x9433b99ee94f2d3fbdd63b163a2bdf440379334c52308bd24537f7defd807145a062ff255a50d119a7f29f4b85d250e3", + "0xb0bdc0f55cfd98d331e3a0c4fbb776a131936c3c47c6bffdc3aaf7d8c9fa6803fbc122c2fefbb532e634228687d52174", + "0x8cd1f1db1b2f4c85a3f46211599caf512d5439e2d8e184663d7d50166fd3008f0e9253272f898d81007988435f715881", + "0x96176d0a83816330187798072d449cbfccff682561e668faf6b1220c9a6535b32a6e4f852e8abb00f79abb87493df16b", + "0xb5378605fabe9a8c12a5dc55ef2b1de7f51aedb61960735c08767a565793cea1922a603a6983dc25f7cea738d0f7c40d", + "0x8d633fb0c4da86b2e0b37d8fad5972d62bff2ac663c5ec815d095cd4b7e1fe66ebef2a2590995b57eaf941983c7ad7a4", + "0xa64f7ff870bab4a8bf0d4ef6f5c744e9bf1021ed08b4c80903c7ad318e80ba1817c3180cc45cb5a1cae1170f0241655f", + "0xb8a7449ffac0a3f206677097baf7ce00ca07a4d2bd9b5356fbcb83f3649b0fda07cfebad220c1066afba89e5a52abf4b", + "0xb0592e1f2c54746bb076be0fa480e1c4bebc4225e1236bcda3b299aa3853e3afb401233bdbcfc4a007b0523a720fbf62", + "0x97df48da1799430f528184d30b6baa90c2a2f88f34cdfb342d715339c5ebd6d019aa693cea7c4993daafc9849063a3aa", + "0x971d9a2627ff2a6d0dcf2af3d895dfbafca28b1c09610c466e4e2bff2746f8369de7f40d65b70aed135fe1d72564aa88", + "0x943fd69fd656f37487cca3605dc7e5a215fddd811caf228595ec428751fc1de484a0cb84c667fe4d7c35599bfa0e5e34", + "0xa8fe69a678f9a194b8670a41e941f0460f6e2dbc60470ab4d6ae2679cc9c6ce2c3a39df2303bee486dbfde6844e6b31a", + "0xa32607360a71d5e34af2271211652d73d7756d393161f4cf0da000c2d66a84c6826e09e759bd787d4fd0305e2439d342", + "0xa85eeacb5e8fc9f3ed06a3fe2dc3108ab9f8c5877b148c73cf26e4e979bf5795edbe2e63a8d452565fd1176ed40402b2", + "0x98d1b58ba22e7289b1c45c79a24624f19b1d89e00f778eef327ec4856a9a897278e6f1a9a7e673844b31dde949153000", + "0xaebb19fc424d72c1f1822aa7adc744cd0ef7e55727186f8df8771c784925058c248406ebeeaf3c1a9ee005a26e9a10c6", + "0xadd2e80aa46aae95da73a11f130f4bda339db028e24c9b11e5316e75ba5e63bc991d2a1da172c7c8e8fee038baae3433", + "0xa0f3c93b22134f66f04b2553a53b738644d1665ceb196b8494b315a4c28236fb492017e4a0de4224827c78e42f9908b7", + "0xb188ebc6a8c3007001aa347ae72cc0b15d09bc6c19a80e386ee4b334734ec0cc2fe8b493c2422f38d1e6d133cc3db6fe", + "0x8b4bdf90d33360b7f428c71cde0a49fb733badba8c726876945f58c620ce7768ae0e98fc8c31fa59d8955a4823336bb1", + "0xabc2aa4616a521400af1a12440dc544e3c821313d0ab936c86af28468ef8bbe534837e364598396a81cf8d06274ed5a6", + "0x95a10856140e493354fdd12722c7fdded21b6a2ffbc78aa2697104af8ad0c8e2206f44b0bfee077ef3949d46bbf7c16b", + "0x87f11de7236d387863ec660d2b04db9ac08143a9a2c4dfff87727c95b4b1477e3bc473a91e5797313c58754905079643", + "0xa28882f0a055f96df3711de5d0aa69473e71245f4f3e9aa944e9d1fb166e02caa50832e46da6d3a03b4801735fd01b29", + "0xa732730ae4512e86a741c8e4c87fee8a05ee840fec0e23b2e037d58dba8dde8d10a9bc5191d34d00598941becbbe467f", + "0x93282e4d72b0aa85212a77b336007d8ba071eea17492da19860f1ad16c1ea8867ccc27ef5c37c74b052465cc11ea4f52", + "0x8e8a1ca971f2444b35af3376e85dccda3abb8e8e11d095d0a4c37628dfe5d3e043a377c3de68289ef142e4308e9941a0", + "0x8800c96adb0195c4fc5b24511450dee503c32bf47044f5e2e25bd6651f514d79a2dd9b01cd8c09f3c9d3859338490f57", + "0x862f0cffe3020cea7a5fd4703353aa1eb1be335e3b712b29d079ff9f7090d1d8b12013011e1bdcbaa80c44641fd37c9f", + "0xa8227f6e0a344dfe76bfbe7a1861be32c4f4bed587ccce09f9ce2cf481b2dda8ae4f566154bc663d15f962f2d41761bd", + "0xb09dbe501583220f640d201acea7ee3e39bf9eda8b91aa07b5c50b7641d86d71acb619b38d27835ce97c3759787f08e9", + "0x8f3be8e3b380ea6cdf9e9c237f5e88fd5a357e5ded80ea1fc2019810814de82501273b4da38916881125b6fa0cfd4459", + "0xac1722d097ce9cd7617161f8ec8c23d68f1fb1c9ca533e2a8b4f78516c2fd8fb38f23f834e2b9a03bb06a9d655693ca9", + "0xb5b8daa63a3735581e74a021b684a1038cea77168fdb7fdf83c670c2cfabcfc3ab2fc7359069b5f9048188351aef26b5", + "0xa6431b36db93c3b47353ba22e7c9592c9cdfb9cbdd052ecf2cc3793f5b60c1e89bc96e6bae117bfd047f2308da00dd2f", + "0x95c13e78d89474a47fbc0664f6f806744b75dede95a479bbf844db4a7f4c3ae410ec721cb6ffcd9fa9c323da5740d5ae", + "0x80d8b47a46dae1868a7b8ccfe7029445bbe1009dad4a6c31f9ef081be32e8e1ac1178c3c8fb68d3e536c84990cc035b1", + "0x8f3841fcf4105131d8c4d9885e6e11a46c448226401cf99356c291fadb864da9fa9d30f3a73c327f23f9fd99a11d633e", + "0x839b0b3c25dd412bee3dc24653b873cc65454f8f16186bb707bcd58259c0b6765fa4c195403209179192a4455c95f3b8", + "0x83be11727cd30ea94ccc8fa31b09b81c9d6a9a5d3a4686af9da99587332fe78c1f94282f9755854bafd6033549afec91", + "0xaff64f0fa009c7a6cf0b8d7a22ddb2c8170c3cb3eec082e60d5aadb00b0040443be8936d728d99581e33c22178c41c87", + "0xab7573dab8c9d46d339e3f491cb2826cabe8b49f85f1ede78d845fc3995537d1b4ab85140b7d0238d9c24daf0e5e2a7e", + "0x91607322bbad4a4f03fc0012d0821eff5f8c516fda45d1ec1133bface6f858bf04b25547be24159cab931a7aa08344d4", + "0x8503b467e8f5d6048a4a9b78496c58493a462852cab54a70594ae3fd064cfd0deb4b8f336a262155d9fedcaa67d2f6fd", + "0x8f91fd8cb253ba2e71cc6f13da5e05f62c2c3b485c24f5d68397d04665673167fce1fc1aec6085c69e87e66ec555d3fd", + "0xa6a4e2f71b8fa28801f553231eff2794c0f10d12e7e414276995e21195abc9c2983a8997e41af41e78d19ff6fbb2680b", + "0x8d20ca0a71a64a3f702a0825bb46bd810d03bebfb227683680d474a52f965716ff99e19a165ebaf6567987f4f9ee3c94", + "0xb17f975a00b817299ac7af5f2024ea820351805df58b43724393bfb3920a8cd747a3bbd4b8286e795521489db3657168", + "0x818ff0fd9cefd32db87b259e5fa32967201016fc02ef44116cdca3c63ce5e637756f60477a408709928444a8ad69c471", + "0xa3eb4665f18f71833fec43802730e56b3ee5a357ea30a888ad482725b169d6f1f6ade6e208ee081b2e2633079b82ba7d", + "0xab287c7d3addce74ce40491871c768abe01daaa0833481276ff2e56926b38a7c6d2681ffe837d2cc323045ad1a4414f9", + "0x8cfbf869ade3ec551562ff7f63c2745cc3a1f4d4dc853a0cd42dd5f6fe54228f86195ea8fe217643b32e9f513f34a545", + "0xa92454c300781f8ae1766dbbb50a96192da7d48ef4cbdd72dd8cbb44c6eb5913c112cc38e9144615fdc03684deb99420", + "0x8cd0f4e9e4fb4a37c02c1bde0f69359c43ab012eb662d346487be0c3758293f1ca560122b059b091fddce626383c3a8f", + "0x96b622a63153f393bb419bfcf88272ea8b3560dbd46b0aa07ada3a6223990d0abdd6c2adb356ef4be5641688c8d83941", + "0xa805a31139f8e0d6dae1ac87d454b23a3dc9fc653d4ca18d4f8ebab30fc189c16e73981c2cb7dd6f8c30454a5208109d", + "0x8a77b73e890b644c6a142bdbac59b22d6a676f3b63ddafb52d914bb9d395b8bf5aedcbcc90429337df431ebd758a07a6", + "0xa2c67ecc19c0178b2994846fea4c34c327a5d786ac4b09d1d13549d5be5996d8a89021d63d65cb814923388f47cc3a03", + "0x81316904b035a8bcc2041199a789a2e6879486ba9fddcba0a82c745cc8dd8374a39e523b91792170cd30be7aa3005b85", + "0x8d602ff596334efd4925549ed95f2aa762b0629189f0df6dbb162581657cf3ea6863cd2287b4d9c8ad52813d87fcd235", + "0x986415a82ca16ebb107b4c50b0c023c28714281db0bcdab589f6cb13d80e473a3034b7081b3c358e725833f6d845cb14", + "0xaae9e6b22f018ceb5c0950210bb8182cb8cb61014b7e14581a09d36ebd1bbfebdb2b82afb7fdb0cf75e58a293d9c456d", + "0x96ac564450d998e7445dd2ea8e3fc7974d575508fa19e1c60c308d83b645864c029f2f6b7396d4ff4c1b24e92e3bac37", + "0xa30ec6047ae4bc7da4daa7f4c28c93aedb1112cfe240e681d07e1a183782c9ff6783ac077c155af23c69643b712a533f", + "0x8328a1647398e832aadc05bd717487a2b6fcdaa0d4850d2c4da230c6a2ed44c3e78ec4837b6094f3813f1ee99414713f", + "0xb855e8f4fc7634ada07e83b6c719a1e37acb06394bc8c7dcab7747a8c54e5df3943915f021364bd019fdea103864e55f", + "0x835aad5c56872d2a2d6c252507b85dd742bf9b8c211ccb6b25b52d15c07245b6d89b2a40f722aeb5083a47cca159c947", + "0x8d51b692fa1543c51f6b62b9acb8625ed94b746ef96c944ca02859a4133a5629da2e2ce84e111a7af8d9a5b836401c64", + "0x8c0ee71eb01197b019275bcf96cae94e81d2cdc3115dbf2d8e3080074260318bc9303597e8f72b18f965ad601d31ec43", + "0x8d2f323a228aa8ba7b7dc1399138f9e6b41df1a16a7069003ab8104b8b68506a45141bc5fe66acf430e23e13a545190b", + "0xabaab92ea6152d40f82940277c725aa768a631ee0b37f5961667f82fb990fc11e6d3a6a2752b0c6f94563ed9bb28265c", + "0x8f652ab565f677fb1a7ba03b08004e3cda06b86c6f1b0b9ab932e0834acf1370abb2914c15b0d08327b5504e5990681c", + "0xb6e8d7be5076ee3565d5765a710c5ecf17921dd3cf555c375d01e958a365ae087d4a88da492a5fb81838b7b92bf01143", + "0x85051e841149a10e83f56764e042182208591396d0ce78c762c4a413e6836906df67f38c69793e158d64fef111407ba3", + "0xae3f248b5a7b0f92b7820a6c5ae21e5bd8f4265d4f6e21a22512079b8ee9be06393fd3133ce8ebac0faf23f4f8517e36", + "0x95153e8b1140df34ee864f4ca601cb873cdd3efa634af0c4093fbaede36f51b55571ab271e6a133020cd34db8411241f", + "0x813aab8bd000299cd37485b73cd7cba06e205f8efb87f1efc0bae8b70f6db2bc7702eb39510ad734854fb65515fe9d0f", + "0x870ba266a9bfa86ef644b1ef025a0f1b7609a60de170fe9508de8fd53170c0b48adb37f19397ee8019b041ce29a16576", + "0x9842d0c066c524592b76fbec5132bc628e5e1d21c424bec4555efca8619cc1fd8ea3161febcb8b9e8ab54702f4e815e2", + "0xb4980fd3ea17bac0ba9ee1c470b17e575bb52e83ebdd7d40c93f4f87bebeaff1c8a679f9d3d09d635f068d37d5bd28bd", + "0x831279437282f315e65a60184ef158f0a3dddc15a648dc552bdc88b3e6fe8288d3cfe9f0031846d81350f5e7874b4b33", + "0xa8187f9d22b193a5f578999954d6ec9aa9b32338ccadb8a3e1ce5bad5ea361d69016e1cdfac44e9d6c54e49dd88561b9", + "0x8c95718a4112512c4efbd496be38bf3ca6cdcaad8a0d128f32a3f9aae57f3a57bdf295a3b372a8c549fda8f4707cffed", + "0x95ae6219e9fd47efaa9cb088753df06bc101405ba50a179d7c9f7c85679e182d3033f35b00dbba71fdcd186cd775c52e", + "0xa34bca58a24979be442238cbb5ece5bee51ae8c0794dd3efb3983d4db713bc6f28a96e976ac3bd9a551d3ed9ba6b3e22", + "0x8845e5d5cc555ca3e0523244300f2c8d7e4d02aaebcb5bd749d791208856c209a6f84dd99fd55968c9f0ab5f82916707", + "0xb4ba0e0790dc29063e577474ffe3b61f5ea2508169f5adc1e394934ebb473e356239413a17962bc3e5d3762d72cce8c2", + "0xb17b5104a5dc665cdd7d47e476153d715eb78c6e5199303e4b5445c21a7fa7cf85fe7cfd08d7570f4e84e579b005428c", + "0x9645173e9ecefc4f2eae8363504f7c0b81d85f8949a9f8a6c01f2d49e0a0764f4eacecf3e94016dd407fc14494fce9f9", + "0x8b40bf12501dcbac78f5a314941326bfcddf7907c83d8d887d0bb149207f85d80cd4dfbd7935439ea7b14ea39a3fded7", + "0xb11d298bd167464b35fb923520d14832bd9ed50ed841bf6d7618424fd6f3699190af21759e351b89142d355952149da1", + "0xa70491538893552c20939fae6be2f07bfa84d97e2534a6bbcc0f1729246b831103505e9f60e97a8fa7d2e6c1c2384579", + "0xa56a1b854c3183082543a8685bb34cae1289f86cfa8123a579049dbd059e77982886bfeb61bf6e05b4b1fe4e620932e7", + "0x8a9be08eae0086c0f020838925984df345c5512ff32e37120b644512b1d9d4fecf0fd30639ca90fc6cf334a86770d536", + "0xb36a3fd677baa0d3ef0dac4f1548ff50a1730286b8c99d276a0a45d576e17b39b3cbadd2fe55e003796d370d4be43ce3", + "0x8781bc83bb73f7760628629fe19e4714b494dbed444c4e4e4729b7f6a8d12ee347841a199888794c2234f51fa26fc2b9", + "0x984b6f7d79835dffde9558c6bb912d992ca1180a2361757bdba4a7b69dc74b056e303adc69fe67414495dd9c2dd91e64", + "0x93e67a254ea8ce25e112d93cc927fadaa814152a2c4ec7d9a56eaa1ed47aec99b7e9916b02e64452cc724a6641729bbb", + "0xa74ba1f3bc3e6c025db411308f49b347ec91da1c916bda9da61e510ec8d71d25e0ac0f124811b7860e5204f93099af27", + "0x94ce8010f85875c045b0f014db93ef5ab9f1f6842e9a5743dce9e4cb872c94affd9e77c1f1d1ab8b8660b52345d9acb9", + "0x8611608a9d844f0e9d7584ad6ccf62a5087a64f764caf108db648a776b5390feb51e5120f0ef0e9e11301af3987dd7dc", + "0x8e5d8ba948aea5fd26035351a960e87f0d23efddd8e13236cc8e4545a3dda2e9a85e6521efb8577e03772d3637d213d9", + "0xa58bf1bbb377e4b3915df6f058a0f53b8fb8130fdec8c391f6bc82065694d0be59bb67ffb540e6c42cc8b380c6e36359", + "0xa830f05881ad3ce532a55685877f529d32a5dbe56cea57ffad52c4128ee0fad0eeaf0da4362b55075e77eda7babe70e5", + "0x8fb357ae49932d0babdf74fc7aa7464a65d3b6a2b3acf4f550b99601d3c0215900cfd67f2b6651ef94cfc323bac79fae", + "0xb26cd2501ee72718b0eebab6fb24d955a71f363f36e0f6dff0ab1d2d7836dab88474c0cef43a2cc32701fca7e82f7df3", + "0xb42557ccce32d9a894d538c48712cb3e212d06ac05cd5e0527ccd2db1078ee6ae399bf6a601ffdab1f5913d35fc0b20c", + "0xae193af9726da0ebe7df1f9ee1c4846a5b2a7621403baf8e66c66b60f523e719c30c6b4f897bb14b27d3ff3da8392eeb", + "0x955a933f3c18ec0f1c0e38fa931e4427a5372c46a3906ebe95082bcf878c35246523c23f0266644ace1fa590ffa6d119", + "0x8940f8772e05389f823b62b3adc3ed541f91647f0318d7a0d3f293aeeb421013de0d0a3664ea53dd24e5fbe02d7efef6", + "0xb62849a4f891415d74f434cdc1d23c4a69074487659ca96e1762466b2b7a5d8525b056b891d0feea6fe6845cba8bc7fb", + "0x876e438633931f7f895062ee16c4b9d10428875f7bc79a8e156a64d379a77a2c45bf5430c5ab94330f03da352f1e9006", + "0xacdadff26e3132d9478a818ef770e9fa0d2b56c6f5f48bd3bd674436ccce9bdfc34db884a73a30c04c5f5e9764cb2218", + "0xb87e8221c5341cd9cc8bb99c10fe730bc105550f25ed4b96c0d45e6142193a1b2e72f1b3857373a659b8c09be17b3d91", + "0x90cb776f8e5a108f1719df4a355bebb04bf023349356382cae55991b31720f0fd03206b895fa10c56c98f52453be8778", + "0x86e655d61502b979eeeeb6f9a7e1d0074f936451d0a1b0d2fa4fb3225b439a3770767b649256fe481361f481a8dbc276", + "0x966fd4463b4f43dd8ccba7ad50baa42292f9f8b2e70da23bb6780e14155d9346e275ef03ddaf79e47020dcf43f3738bd", + "0xa581b4af77feebc1fb897d49b5b507c6ad513d8f09b273328efbb24ef0d91eb740d01b4d398f2738125dacfe550330cd", + "0x97d5afe9b3897d7b8bb628b7220cf02d8ee4e9d0b78f5000d500aaf4c1df9251aaaabfd1601626519f9d66f00a821d4e", + "0xb91054108ae78b00e3298d667b913ebc44d8f26e531eae78a8fe26fdfb60271c97efb2dee5f47ef5a3c15c8228138927", + "0x926999579c8eec1cc47d7330112586bdca20b4149c8b2d066f527c8b9f609e61ce27feb69db67eea382649c6905efcf9", + "0xa63d278b842456ef15c278b37a6ea0f27c7b3ffffefca77c7a66d2ea06c33c4631eb242bbb064d730e70a8262a7b848a", + "0x98928d850247c6f7606190e687d5c94a627550198dbdbea0161ef9515eacdb1a0f195cae3bb293112179082daccf8b35", + "0x801cd96cde0749021a253027118d3ea135f3fcdbe895db08a6c145641f95ebd368dd6a1568d995e1d0084146aebe224a", + "0xb931c271513a0f267b9f41444a5650b1918100b8f1a64959c552aff4e2193cc1b9927906c6fa7b8a8c68ef13d79aaa52", + "0x8095030b7045cff28f34271386e4752f9a9a0312f8df75de4f424366d78534be2b8e1720a19cb1f9a2d21105d790a225", + "0xa2c6414eeb1234728ab0de94aa98fc06433a58efa646ca3fcbd97dbfb8d98ae59f7ce6d528f669c8149e1e13266f69c9", + "0xb9251cfe32a6dc0440615aadcd98b6b1b46e3f4e44324e8f5142912b597ee3526bea2431e2b0282bb58f71be5b63f65e", + "0xaa8d6e83d09ce216bfe2009a6b07d0110d98cf305364d5529c170a23e693aabb768b2016befb5ada8dabdd92b4d012bb", + "0x96c9125d38fca1a61ac21257b696f8ac3dae78def50285e44d90ea293d591d1c58f703540a7e4e99e070afe4646bbe15", + "0x877d98f731ffe3ee94b0b5b72d127630fa8a96f6ca4f913d2aa581f67732df6709493693053b3e22b0181632ac6c1e3b", + "0x94144b4a3ffc5eec6ba35ce9c245c148b39372d19a928e236a60e27d7bc227d18a8cac9983851071935d8ffb64b3a34f", + "0xa355e9b87f2f2672052f5d4d65b8c1c827d24d89b0d8594641fccfb69aef1b94009105f3242058bb31c8bf51caae5a41", + "0x8e425a99b71677b04fe044625d338811fbb8ee32368a424f6ab2381c52e86ee7a6cecedf777dc97181519d41c351bc22", + "0x89f337882ed3ae060aaee98efa20d79b6822bde9708c1c5fcee365d0ec9297f694cae37d38fd8e3d49717c1e86f078e7", + "0x938a59ae761359ee2688571e7b7d54692848eb5dde57ffc572b473001ea199786886f8c6346a226209484afb61d2e526", + "0x8260c8299b17898032c761c325ac9cabb4c5b7e735de81eacf244f647a45fb385012f4f8df743128888c29aefcaaad16", + "0xb003d1c459dacbcf1a715551311e45d7dbca83a185a65748ac74d1800bbeaba37765d9f5a1a221805c571910b34ebca8", + "0x8b6964f757a72a22a642e4d69102951897e20c21449184e44717bd0681d75f7c5bfa5ee5397f6e53febf85a1810d6ed1", + "0x859cafc3ee90b7ececa1ed8ef2b2fc17567126ff10ca712d5ffdd16aa411a5a7d8d32c9cab1fbf63e87dce1c6e2f5f53", + "0x849971d9d095ae067525b3cbc4a7dfae81f739537ade6d6cec1b42fb692d923176197a8770907c58069754b8882822d6", + "0x8816fc6e16ea277de93a6d793d0eb5c15e9e93eb958c5ef30adaf8241805adeb4da8ce19c3c2167f971f61e0b361077d", + "0xaa0a30f92843cf2f484066a783a1d75a7aa6f41f00b421d4baf20a6ac7886c468d0eea7ca8b17dd22f4f74631b62b640", + "0xaa7285b8e9712e06b091f64163f1266926a36607f9d624af9996856ed2aaf03a580cb22ce407d1ade436c28b44ca173f", + "0x8b49f12ba2fdf9aca7e5f81d45c07d47f9302a2655610e7634d1e4bd16048381a45ef2c95a8dd5b0715e4b7cf42273af", + "0x8185439c8751e595825d7053518cbe121f191846a38d4dbcb558c3f9d7a3104f3153401adaaaf27843bbe2edb504bfe3", + "0xb7b669b8e5a763452128846dd46b530dca4893ace5cc5881c7ddcd3d45969d7e73fbebdb0e78aa81686e5f7b22ec5759", + "0xb939be8175715e55a684578d8be3ceff3087f60fa875fff48e52a6e6e9979c955efef8ff67cfa2b79499ea23778e33b0", + "0xb39d37822e6cbe28244b5f42ce467c65a23765bd16eb6447c5b3e942278069793763483dafd8c4dd864f8917aad357fe", + "0xb1705ea4cb7e074efe0405fc7b8ee2ec789af0426142f3ec81241cacd4f7edcd88e39435e4e4d8e7b1df64f3880d6613", + "0xb5ac32b1d231957d91c8b7fc43115ce3c5c0d8c13ca633374402fa8000b6d9fb19499f9181844f0c10b47357f3f757ce", + "0xa9c022d4e37b0802284ce3b7ee9258628ab4044f0db4de53d1c3efba9de19d15d65cc5e608dbe149c21c2af47d0b07b5", + "0xad1fcd0cae0e76840194ce4150cb8a56ebed728ec9272035f52a799d480dfc85840a4d52d994a18b6edb31e79be6e8ad", + "0x883fb797c498297ccbf9411a3e727c3614af4eccde41619b773dc7f3259950835ee79453debf178e11dec4d3ada687a0", + "0xa9838d4c4e3f3a0075a952cf7dd623307ec633fcc81a7cf9e52e66c31780de33dbb3d74c320dc7f0a4b72f7a49949515", + "0xb9ffd8108eaebd582d665f8690fe8bb207fd85185e6dd9f0b355a09bac1bbff26e0fdb172bc0498df025414e88fe2eda", + "0xa0ab65fb9d42dd966cd93b1de01d7c822694669dd2b7a0c04d99cd0f3c3de795f387b9c92da11353412f33af5c950e9a", + "0x8221503f4cdbed550876c5dc118a3f2f17800c04e8be000266633c83777b039a432d576f3a36c8a01e8fd18289ebc10b", + "0x8b81b9ef6125c82a9bece6fdcb9888a767ac16e70527753428cc87c56a1236e437da8be4f7ecfe57b9296dc3ae7ba807", + "0x99aeb2a5e846b0a2874cca02c66ed40d5569eb65ab2495bc3f964a092e91e1517941f2688e79f8cca49cd3674c4e06dc", + "0x82c46781a3d730d9931bcabd7434a9171372dde57171b6180e5516d4e68db8b23495c8ac3ab96994c17ddb1cf249b9fb", + "0x8b9208ff4d5af0c2e3f53c9375da666773ac57197dfabb0d25b1c8d0588ba7f3c15ee9661bb001297f322ea2fbf6928b", + "0x8f05404e0c0258fdbae50e97ccb9b72ee17e0bd2400d9102c0dad981dac8c4c71585f03e9b5d50086d0a2d3334cb55d1", + "0x90f6de91ea50255f148ac435e08cf2ac00c772a466e38155bd7e8acf9197af55662c7b5227f88589b71abe9dcf7ba343", + "0xb54088f7217987c87e9498a747569ac5b2f8afd5348f9c45bf3fd9fbf713a20f495f49c8572d087efe778ac7313ad6d3", + "0xa486e1365bbc278dd66a2a25d258dc82f46b911103cb16aab3945b9c95ae87b386313a12b566df5b22322ede0afe25ad", + "0x874b1fbf2ebe140c683bd7e4e0ab017afa5d4ad38055aaa83ee6bbef77dbc88a6ce8eb0dcc48f0155244af6f86f34c2d", + "0xa672a88847652d260b5472d6908d1d57e200f1e492d30dd1cecc441cdfc9b76e016d9bab560efd4d7f3c30801de884a9", + "0x814955b4198933ee11c3883863b06ff98c7eceb21fc3e09df5f916107827ccf3323141983e74b025f46ae00284c9513b", + "0x905c95abda2c68a6559d8a39b6db081c68cef1e1b4be63498004e1b2f408409be9350b5b5d86a30fd443e2b3e445640a", + "0xb45686265a83bff69e312c5149db7bb70ac3ec790dc92e392b54d9c85a656e2bf58596ce269f014a906eafc97461aa5f", + "0x8e6bc6a7ea2755b4aaa19c1c1dee93811fcde514f03485fdc3252f0ab7f032c315614f6336e57cea25dcfb8fb6084eeb", + "0x918cefb8f292f78d4db81462c633daf73b395e772f47b3a7d2cea598025b1d8c3ec0cbff46cdb23597e74929981cde40", + "0xb4f8b350a6d88fea5ab2e44715a292efb12eb52df738c9b2393da3f1ddee68d0a75b476733ccf93642154bceb208f2b8", + "0x8b7601f0a3c6ad27f03f2d23e785c81c1460d60100f91ea9d1cab978aa03b523150206c6d52ce7c7769c71d2c8228e9e", + "0x87ec6108e2d63b06abed350f8b363b7489d642486f879a6c3aa90e5b0f335efc2ff2834eef9353951a42136f8e6a1b32", + "0x82ac7d3385e035115f1d39a99fc73e5919de44f5e6424579776d118d711c8120b8e5916372c6f27bed4cc64cac170b6c", + "0x87ffebdbfb69a9e1007ebac4ffcb4090ff13705967b73937063719aa97908986effcb7262fdadc1ae0f95c3690e3245d", + "0x97dbd3df37f0b481a311dfc5f40e59227720f367912200d71908ef6650f32cc985cb05b981e3eea38958f7e48d10a15d", + "0x827f6558c16841b5592ff089c9c31e31eb03097623524394813a2e4093ad2d3f8f845504e2af92195aaa8a1679d8d692", + "0x819915d6232e95ccd7693fdd78d00492299b1983bc8f96a08dcb50f9c0a813ed93ae53c0238345d5bea0beda2855a913", + "0xb416d2d45b44ead3b1424e92c73c2cf510801897b05d1724ff31cbd741920cd858282fb5d6040fe1f0aa97a65bc49424", + "0xb7a7da847f1202e7bc1672553e68904715e84fd897d529243e3ecda59faa4e17ba99c649a802d53f6b8dfdd51f01fb74", + "0xb00fea3b825e60c1ed1c5deb4b551aa65a340e5af36b17d5262c9cd2c508711e4dc50dc2521a2c16c7c901902266e64a", + "0x8871e8e741157c2c326b22cf09551e78da3c1ec0fc0543136f581f1550f8bab03b0a7b80525c1e99812cdbf3a9698f96", + "0xa37b47ea527b7e06c460776aa662d9a49ff4149d3993f1a974b0dd165f7171770d189b0e2ea54fd5fccb6a14b116e68a", + "0xa5caf423a917352e1b8e844f5968a6da4fdeae467d10c6f4bbd82b5eea46a660b82d2f5440d3641c717b2c3c9ed0be52", + "0x86fe5774112403ad83f9c55d58317eeb17ad8e1176d9f2f69c2afb7ed83bc718ed4e0245ceab4b377f5f062dcd4c00e7", + "0x827639d5ce7db43ba40152c8a0eaad443af21dc92636cc8cc2b35f10647da7d475a1e408901cd220552fddad79db74df", + "0xb75505d4f6b67d31e665cfaf5e4acdb5838ae069166b7fbcd48937c0608a59e40a25302fcc1873d2e81c1782808c70f0", + "0xb55395fca84dd3ccc05dd480cb9b430bf8631ff06e24cb51d54519703d667268c2f8afcde4ba4ed16bece8cc7bc8c6e0", + "0x8e96534c94693226dc32bca79a595ca6de503af635f802e86442c67e77564829756961d9b701187fe91318da515bf0e6", + "0x97a7503248e31e81b10eb621ba8f5210c537ad11b539c96dfb7cf72b846c7fe81bd7532c5136095652a9618000b7f8d3", + "0xb02e38fe790b492aa5e89257c4986c9033a8b67010fa2add9787de857d53759170fdd67715ca658220b4e14b0ca48124", + "0xad65cb6d57b48a2602568d2ec8010baed0eb440eec7638c5ec8f02687d764e9de5b5d42ad5582934e592b48471c22d26", + "0x96a3bc976e9d03765cc3fee275fa05b4a84c94fed6b767e23ca689394501e96f56f7a97cffddc579a6abff632bf153be", + "0xa833e62fe97e1086fae1d4917fbaf09c345feb6bf1975b5cb863d8b66e8d621c7989ab3dbecda36bc9eaffc5eaa6fa66", + "0x97510337ea5bbd5977287339197db55c60533b2ec35c94d0a460a416ae9f60e85cee39be82abeeacd5813cf54df05862", + "0x848397366300ab40c52d0dbbdafbafef6cd3dadf1503bb14b430f52bb9724188928ac26f6292a2412bc7d7aa620763c8", + "0x82e8ec43139cf15c6bbeed484b62e06cded8a39b5ce0389e4cbe9c9e9c02f2f0275d8d8d4e8dfec8f69a191bef220408", + "0x94b2f98ce86a9271fbd4153e1fc37de48421fe3490fb3840c00f2d5a4d0ba8810c6a32880b002f6374b59e0a7952518b", + "0x902c9f0095014c4a2f0dccaaab543debba6f4cc82c345a10aaf4e72511725dbed7a34cd393a5f4e48a3e5142b7be84ed", + "0xb873a7c88bf58731fe1bf61ff6828bf114cf5228f254083304a4570e854e83748fc98683ddba62d978fff7909f2c5c47", + "0xa63eea12efd89b62d3952bf0542a73890b104dd1d7ff360d4755ebfa148fd62de668edac9eeb20507967ea37fb220202", + "0xa85c5ab4d17d328bda5e6d839a9a6adcc92ff844ec25f84981e4f44a0e8419247c081530f8d9aa629c7eb4ca21affba6", + "0x8d67d43b8a06b0ff4fafd7f0483fa9ed1a9e3e658a03fb49d9d9b74e2e24858dc1bed065c12392037b467f255d4e5643", + "0x86fa32ebbf97328c5f5f15564e1238297e289ec3219b9a741724e9f3ae8d5c15277008f555863a478b247ba5dc601d44", + "0x880cc07968266dbfdcfbc21815cd69e0eddfee239167ac693fb0413912d816f2578a74f7716eecd6deefa68c6eccd394", + "0xa18e060aee3d49cde2389b10888696436bb7949a79ca7d728be6456a356ea5541b55492b2138da90108bd1ce0e6f5524", + "0xb2b8b3e15c1f645f07783e5628aba614e60157889db41d8161d977606788842b67f83f361eae91815dc0abd84e09abd5", + "0xafd94c1cb48758e5917804df03fb38a6da0e48cd9b6262413ea13b26973f9e266690a1b7d9d24bbaf7e82718e0e594b0", + "0x8ec679520455275cd957fca8122724d287db5df7d29f1702a322879b127bff215e5b71d9c191901465d19c86c8d8d404", + "0x8fabffa3ed792f05e414f5839386f6449fd9f7b41a47595c5d71074bd1bb3784cc7a1a7e1ad6b041b455035957e5b2dc", + "0xafbb0c520ac1b5486513587700ad53e314cb74bfbc12e0b5fbdcfdaac36d342e8b59856196a0d84a25cff6e6e1d17e76", + "0x96ab55e641ed2e677591f7379a3cd126449614181fce403e93e89b1645d82c4af524381ff986cae7f9cebe676878646d", + "0xb0be4937a925b3c05056ed621910d535ccabf5ab99fd3b9335080b0e51d9607d0fd36cb5781ff340018f6acfca4a9736", + "0xae9ceacbfe12137db2c1a271e1b34b8f92e4816bad1b3b9b6feecc34df0f8b3b0f7ed0133acdf59c537d43d33fc8d429", + "0xa2225da3119b9b7c83d514b9f3aeb9a6d9e32d9cbf9309cbb971fd53c4b2c001d10d880a8ad8a7c281b21d85ceca0b7c", + "0x92ab8077871037bd3b57b95cbb9fb10eb11efde9191690dcac655356986fd02841d8fdb25396faa0feadfe3f50baf56d", + "0x8c93ed74188ca23b3df29e5396974b9cc135c91fdefdea6c0df694c8116410e93509559af55533a3776ac11b228d69b1", + "0x980699cd51bac6283959765f5174e543ed1e5f5584b5127980cbc2ef18d984ecabba45042c6773b447b8e694db066028", + "0x9690ed9e7e53ed37ff362930e4096b878b12234c332fd19d5d064824084245952eda9f979e0098110d6963e468cf513e", + "0x80c869469900431f3eeefafdbe07b8afd8cee7739e659e6d0109b397cacff85a88247698f87dc4e2fe39a592f250ac64", + "0xb34bcc56a057589f34939a1adc51de4ff6a9f4fee9c7fa9aa131e28d0cf0759a0c871b640162acdfbf91f3f1b59a3703", + "0xb00cc8f257d659c22d30e6d641f79166b1e752ea8606f558e4cad6fc01532e8319ea4ee12265ba4140ac45aa4613c004", + "0x8131804c89bb3e74e9718bfc4afa547c1005ff676bd4db9604335032b203390cfa54478d45c6c78d1fe31a436ed4be9f", + "0x945a8d52d6d3db6663dbd3110c6587f9e9c44132045eeffba15621576d178315cb52870fa5861669f84f0bee646183fe", + "0x93252254d12511955f1aa464883ad0da793f84d900fea83e1df8bca0f2f4cf5b5f9acbaec06a24160d33f908ab5fea38", + "0xb41d66a13a4afafd5760062b77f79de7e6ab8ccacde9c6c5116a6d886912fb491dc027af435b1b44aacc6af7b3c887f2", + "0xad1cfda4f2122a20935aa32fb17c536a3653a18617a65c6836700b5537122af5a8206befe9eaea781c1244c43778e7f1", + "0xa5790fd629be70545093631efadddc136661f63b65ec682609c38ef7d3d7fa4e56bdf94f06e263bc055b90cb1c6bcefe", + "0xa61c2c27d3f7b9ff4695a17afedf63818d4bfba390507e1f4d0d806ce8778d9418784430ce3d4199fd3bdbc2504d2af3", + "0x843a4b34d9039bf79df96d79f2d15e8d755affb4d83d61872daf540b68c0a3888cf8fc00d5b8b247b38524bcb3b5a856", + "0x8c09a4f07a02b80654798bc63aada39fd638d3e3c4236ccd8a5ca280350c31e4a89e5f4c9aafb34116e71da18c1226b8", + "0x854630d08e3f0243d570cc2e856234cb4c1a158d9c1883bf028a76525aaa34be897fe918d5f6da9764a3735fa9ebd24a", + "0xa63ef47c3e18245b0482596a09f488a716df3cbd0f9e5cfabed0d742843e65db8961c556f45f49762f3a6ac8b627b3ef", + "0x8d2afc36b1e44386ba350c14a6c1bb31ff6ea77128a0c5287584ac3584282d18516901ce402b4644a53db1ed8e7fa581", + "0x8692e638dd60babf7d9f2f2d2ce58e0ac689e1326d88311416357298c6a2bffbfebf55d5253563e7b3fbbf5072264146", + "0xb76ed72b122c48679d221072efc0eeea063cb205cbf5f9ef0101fd10cb1075b8628166c83577cced654e1c001c7882f7", + "0x88807198910ec1303480f76a3683870246a995e36adaeadc29c22f0bdba8152fe705bd070b75de657b04934f7d0ccf80", + "0x9722869f7d1a3992850fe7be405ec93aa17dc4d35e9e257d2e469f46d2c5a59dbd504056c85ab83d541ad8c13e8bcd54", + "0x87a4892a0026d7e39ef3af632172b88337cb03669dea564bcdb70653b52d744730ebb5d642e20cb627acc9dbb547a26b", + "0x858520ad7aa1c9fed738e3b583c84168f2927837ad0e1d326afe9935c26e9b473d7f8c382e82ef1fe37d2b39bb40a1ee", + "0x83646bdf6053a04aa9e2f112499769e5bd5d0d10f2e13db3ca89bd45c0b3b7a2d752b7d137fb3909f9c62b78166c9339", + "0x865cb25b64b4531fb6fe4814d7c8cd26b017a6c6b72232ff53defc18a80fe3b39511b23f9e4c6c7249d06e03b2282ed2", + "0x87e67b928d97b62c49dac321ce6cb680233f3a394d4c9a899ac2e8db8ccd8e00418e66cdfd68691aa3cb8559723b580c", + "0xb7ce9fe0e515e7a6b2d7ddcb92bc0196416ff04199326aea57996eef8c5b1548bd8569012210da317f7c0074691d01b7", + "0x8dfdcd30583b696d2c7744655f79809f451a60c9ad5bf1226dc078b19f4585d7b3ef7fa9d54e1ac09520d95cbfd20928", + "0xb35c3a872e18e607b2555c51f9696a17fa18da1f924d503b163b4ec9fe22ed0c110925275cb6c93ce2d013e88f173d6a", + "0xa7c006692227a06db40bceac3d5b1daae60b5692dd9b54772bedb5fea0bcc91cbcdb530cac31900ffc70c5b3ffadc969", + "0x8f2f9fc50471bae9ea87487ebd1bc8576ef844cc42d606af5c4c0969670fdf2189afd643e4de3145864e7773d215f37f", + "0x8077d105317f4a8a8f1aadeb05e0722bb55f11abcb490c36c0904401107eb3372875b0ac233144829e734f0c538d8c1d", + "0x8874aca2a3767aa198e4c3fec2d9c62d496bc41ff71ce242e9e082b7f38cdf356089295f80a301a3cf1182bde5308c97", + "0xa4ebcaf668a888dd404988ab978594dee193dad2d0aec5cdc0ccaf4ec9a7a8228aa663db1da8ddc52ec8472178e40c32", + "0xa24776e9a840afda0003fa73b415d5bd6ecd9b5c2cc842b643ee51b8c6087f4eead4d0bfbd987eb174c489a7b952ff2a", + "0xa1b229fe32121e0b391b0f6e0180670b9dc89d79f7337de4c77ea7ad0073e9593846f06797c20e923092a08263204416", + "0xb6d52b53cea98f1d1d4c9a759c25bf9d8a50b604b144e4912acbdbdc32aab8b9dbb10d64a29aa33a4f502121a6fb481c", + "0x835e45e4a67df9fb51b645d37840b3a15c171d571a10b03a406dd69d3c2f22df3aa9c5cbe1e73f8d767ce01c4914ea9a", + "0xb9c7511a76ea5fb105de905d44b02edb17008335766ee357ed386b7b3cf19640a98b38785cb14603c1192bee5886c9b6", + "0x89f75583a16735f9dd8b7782a130437805b34280ccea8dac6ecaee4b83fe96947e7b53598b06fecfffdf57ffc12cc445", + "0x880798938fe4ba70721be90e666dfb62fcab4f3556fdb7b0dc8ec5bc34f6b4513df965eae78527136eb391889fe2caf9", + "0x915df4c38d301c8a4eb2dc5b1ba0ffaad67cbb177e0a80095614e9c711f4ef24a4cef133f9d982a63d2a943ba6c8669d", + "0x8db5a6660c3ac7fd7a093573940f068ee79a82bc17312af900b51c8c439336bc86ca646c6b7ab13aaaa008a24ca508ab", + "0xa00db59b8d4218faf5aeafcd39231027324408f208ec1f54d55a1c41228b463b88304d909d16b718cfc784213917b71e", + "0x8bf302978973632dd464bec819bdb91304712a3ec859be071e662040620422c6e75eba6f864f764cffa2799272efec39", + "0xb01461ad23b2a8fa8a6d241e1675855d23bc977dbf4714add8c4b4b7469ccf2375cec20e80cedfe49361d1a30414ac5b", + "0x8327c2d42590dfcdb78477fc18dcf71608686ad66c49bce64d7ee874668be7e1c17cc1042a754bbc77c9daf50b2dae07", + "0x8c64efa1da63cd08f319103c5c7a761221080e74227bbc58b8fb35d08aa42078810d7af3e60446cbaff160c319535648", + "0x96eb1d38319dc74afe7e7eb076fcd230d19983f645abd14a71e6103545c01301b31c47ae931e025f3ecc01fb3d2f31fa", + "0xa9b1883bd5f31f909b8b1b6dcb48c1c60ed20aa7374b3ffa7f5b2ed036599b5bef33289d23c80a5e6420d191723b92f7", + "0xa1fa1eac8f41a5197a6fb4aa1eae1a031c89f9c13ff9448338b222780cf9022e0b0925d930c37501a0ef7b2b00fdaf83", + "0x96c3d5dcd032660d50d7cd9db2914f117240a63439966162b10c8f1f3cf74bc83b0f15451a43b31dbd85e4a7ce0e4bb1", + "0xb6b9a384f70db9e298415b8ab394ee625dafff04be2886476e59df8d052ca832d11ac68a9b93fba7ab055b7bc36948a4", + "0x963f386cf944bb9b2ddebb97171b64253ea0a2894ac40049bdd86cda392292315f3a3d490ca5d9628c890cfb669f0acb", + "0xab8e20546c1db38d31493b5d5f535758afb17e459645c1b70813b1cf7d242fd5d1f4354a7c929e8f7259f6a25302e351", + "0x92994d3f57a569b7760324bb5ae4e8e14e1633d175dab06aa57b8e391540e05f662fdc08b8830f489a063f59b689a688", + "0xa4c8edf4aa33b709a91e1062939512419711c1757084e46f8f4b7ed64f8e682f4e78b7135920c12f0eb0422fe9f87a6a", + "0xaa286b27de2812de63108a1aec29d171775b69538dc6198640ac1e96767c2b83a50391f49259195957d457b493b667c9", + "0x8ebd8446b23e5adfcc393adc5c52fe172f030a73e63cd2d515245ca0dd02782ceed5bcdd9ccd9c1b4c5953dfac9c340c", + "0x893a594cf495535f6d216508f8d03c317dcf03446668cba688da90f52d0111ac83d76ad09bf5ea47056846585ee5c791", + "0x90077bd6cc0e4be5fff08e5d07a5a158d36cebd1d1363125bc4fae0866ffe825b26f933d4ee5427ba5cd0c33c19a7b06", + "0x8afd46fb23bf869999fa19784b18a432a1f252d09506b8dbb756af900518d3f5f244989b3d7c823d9029218c655d3dc6", + "0xab79e584011713e8a2f583e483a91a0c2a40771b77d91475825b5acbea82db4262132901cb3e4a108c46d7c9ee217a4e", + "0xade6ee49e1293224ddf2d8ab7f14bb5be6bc6284f60fd5b3a1e0cf147b73cff57cf19763b8a36c5083badc79c606b103", + "0xa9430b975ef138b6b2944c7baded8fe102d31da4cfe3bd3d8778bda79189c99d38176a19c848a19e2d1ee0bddd9a13c1", + "0x88c76f7700a1d23c30366a1d8612a796da57b2500f97f88fdf2d76b045a9d24e7426a8ffa2f4e86d3046937a841dad58", + "0xa68ab11a570a27853c8d67e491591dcba746bfbee08a2e75ae0790399130d027ed387f41ef1d7de8df38b472df309161", + "0x959724671e265a28d67c29d95210e97b894b360da55e4cf16e6682e7912491ed8ca14bfaa4dce9c25a25b16af580494f", + "0xaeffb91ccc7a72bbd6ffe0f9b99c9e66e67d59cec2e02440465e9636a613ab3017278cfa72ea8bc4aba9a8dc728cb367", + "0xb4a723bb19e8c18a01bd449b1bb3440ddb2017f10bb153da27deb7a6a60e9bb37619d6d5435fbb1ba617687838e01dd0", + "0xb71351fdfff7168b0a5ec48397ecc27ac36657a8033d9981e97002dcca0303e3715ce6dd3f39423bc8ef286fa2e9e669", + "0x92e62faaedea83a37f314e1d3cb4faaa200178371d917938e59ac35090be1db4b4f4e0edb78b9c991de202efe4f313d8", + "0x92fb88fe774c1ba1d4a08cae3c0e05467ad610e7a3f1d2423fd47751759235fe0a3036db4095bd6404716aa03820f484", + "0xb97868b0b2bc98032d68352a535a1b341b9ff3c7af4e3a7f3ebc82d3419daa1b5859d6aedc39994939623c7cd878bd9b", + "0x8fe79b53f06d33386c0ec7d6d521183c13199498594a46d44a8a716932c3ec480c60be398650bbfa044fa791c4e99b65", + "0xaf1c70512ec3a19d98b8a1fc3ff7f7f5048a27d17d438d43f561974bbdd116fcd5d5c21040f3447af3f0266848d47a15", + "0xb29c3adedd0bcad8a930625bc4dfdc3552a9afd5ca6dd9c0d758f978068c7982b50b711aa0eb5b97f2b84ee784637835", + "0x8c2f98f6880550573fad46075d3eba26634b5b025ce25a0b4d6e0193352c8a1f0661064027a70fe8190b522405f9f4e3", + "0xb64719cc5480709d1dae958f1d3082b32a43376da446c8f9f64cb02a301effc9c34d9102051733315a8179aed94d53cc", + "0x8510702e101b39a1efbf4e504e6123540c34b5689645e70d0bac1ecc1baf47d86c05cef6c4317a4e99b4edaeb53f2d00", + "0xa12a0ccd8f96e96e1bc6494341f7ebce959899341b3a084aa1aa87d1c0d489ac908552b7770b887bb47e7b8cbc3d8e66", + "0xb19b571ff4ae3e9f5d95acda133c455e72c9ea9973cae360732859836c0341c4c29ab039224dc5bc3deb824e031675d8", + "0x82d1ee40fe1569c29644f79fa6c4033b7ed45cd2c3b343881f6eb0de2e79548fded4787fae19bed6ee76ed76ff9f2f11", + "0xa9d77ed89c77ec1bf8335d08d41c3c94dcca9fd1c54f22837b4e54506b212aa38d7440126c80648ab7723ff18e65ed72", + "0xb5eb4f3eb646038ad2a020f0a42202532d4932e766da82b2c1002bf9c9c2e5336b54c8c0ffcc0e02d19dde2e6a35b6cc", + "0xb8f8f82cb11fea1c99467013d7e167ff03deb0c65a677fab76ded58826d1ba29aa7cf9fcd7763615735ea3ad38e28719", + "0x961ee30810aa4c93ae157fbe9009b8e443c082192bd36a73a6764ff9b2ad8b0948fe9a73344556e01399dd77badb4257", + "0x8c65d50433d9954fe28a09fa7ba91a70a590fe7ba6b3060f5e4be0f6cef860b9897fa935fb4ebc42133524eb071dd169", + "0xa41a4ffbbea0e36874d65c009ee4c3feffff322f6fc0e30d26ee4dbc1f46040d05e25d9d0ecb378cef0d24a7c2c4b850", + "0xb008ee2f895daa6abd35bd39b6f7901ae4611a11a3271194e19da1cdcc7f1e1ea008fe5c5440e50d2c273784541ad9c5", + "0x947f1abad982d65648ae4978e094332b4ecb90f482c9be5741d5d1cf5a28acf4680f1977bf6e49dd2174c37f11e01296", + "0x8f6a7d610d59d9f54689bbe6a41f92d9f6096cde919c1ab94c3c7fcecf0851423bc191e5612349e10f855121c0570f56", + "0xb53012dd10b5e7460b57c092eaa06d6502720df9edbbe3e3f61a9998a272bf5baaac4a5a732ad4efe35d6fac6feca744", + "0x8f9e291bf849feaa575592e28e3c8d4b7283f733d41827262367ea1c40f298c7bcc16505255a906b62bf15d9f1ba85fb", + "0x8db35fd53fca04faecd1c76a8227160b3ab46ac1af070f2492445a19d8ff7c25bbaef6c9fa0c8c088444561e9f7e4eb2", + "0xa633e0132197e6038197304b296ab171f1d8e0d0f34dcf66fe9146ac385b0239232a8470b9205a4802ab432389f4836d", + "0x9103e3bb74304186fa4e3e355a02da77da4aca9b7e702982fc2082af67127ebb23a455098313c88465bc9b7d26820dd5", + "0xaf0588a2a4afce2b1b13c1230816f59e8264177e774e4a341b289a101dcf6af813638fed14fb4d09cb45f35d5d032609", + "0xb34e7e6341fa9d854b2d3153bdda0c4ae2b2f442ab7af6f99a0975d45725aa48e36ae5f7011edd249862e91f499687d4", + "0x87eb00489071fa95d008c5244b88e317a3454652dcb1c441213aa16b28cd3ecaa9b22fec0bdd483c1df71c37119100b1", + "0x98e3811b55b1bacb70aa409100abb1b870f67e6d059475d9f278c751b6e1e2e2d6f2e586c81a9fb6597fda06e7923274", + "0x875a9f0c4ffe5bb1d8da5e3c8e41d0397aa6248422a628bd60bfae536a651417d4e8a7d2fb98e13f2dad3680f7bd86d3", + "0x95fd1981271f3ea3a41d654cf497e6696730d9ff7369f26bc4d7d15c7adb4823dd0c42e4a005a810af12d234065e5390", + "0xb8371f0e4450788720ac5e0f6cd3ecc5413d33895083b2c168d961ec2b5c3de411a4cc0712481cbe8df8c2fa1a7af006", + "0x94b390655557b1a09110018e9b5a14490681ade275bdc83510b6465a1218465260d9a7e2a6e4ec700f58c31dc3659962", + "0xb52d14ae33f4ab422f953392ae76a19c618cc31afc96290bd3fe2fb44c954b5c92c4789f3f16e8793f2c0c1691ade444", + "0x936bad397ad577a70cf99bf9056584a61bd7f02d2d5a6cf219c05d770ae30a5cd902ba38366ce636067fc1dd10108d31", + "0xab6742800b02728c92d806976764cb027413d6f86edd08ad8bb5922a2969ee9836878cd39db70db0bd9a2646862acc4f", + "0x9050e0e45bcc83930d4c505af35e5e4d7ca01cd8681cba92eb55821aececcebe32bb692ebe1a4daac4e7472975671067", + "0xb72ea85973f4b2a7e6e71962b0502024e979a73c18a9111130e158541fa47bbaaf53940c8f846913a517dc69982ba9e1", + "0x8708d752632d2435d2d5b1db4ad1fa2558d776a013655f88e9a3556d86b71976e7dfe5b8834fdec97682cd94560d0d0d", + "0x8d64a2b0991cf164e29835c8ddef6069993a71ec2a7de8157bbfa2e00f6367be646ed74cbaf524f0e9fe13fb09fa15fd", + "0x94444d96d39450872ac69e44088c252c71f46be8333a608a475147752dbb99db0e36acfc5198f158509401959c12b709", + "0xb682bface862008fea2b5a07812ca6a28a58fd151a1d54c708fc2f8572916e0d678a9cb8dc1c10c0470025c8a605249e", + "0x907453abca7d8e7151a05cc3d506c988007692fe7401395dc93177d0d07d114ab6cca0cc658eb94c0223fe8658295cad", + "0x8614f0630bdd7fbad3a31f55afd9789f1c605dc85e7dc67e2edfd77f5105f878bb79beded6e9f0b109e38ea7da67e8d5", + "0xac49de11edaaf04302c73c578cc0824bdd165c0d6321be1c421c1950e68e4f3589aa3995448c9699e93c6ebae8803e27", + "0x9048c6eba5e062519011e177e955a200b2c00b3a0b8615bdecdebc217559d41058d3315f6d05617be531ef0f6aef0e51", + "0xb86993c383c015ed8d847c6b795164114dd3e9efd25143f509da318bfba89389ea72a420699e339423afd68b6512fafb", + "0x906aaa4a7a7cdf01909c5cfbc7ded2abc4b869213cbf7c922d4171a4f2e637e56f17020b852ad339d83b8ac92f111666", + "0xa5993046e8f23b71ba87b7caa7ace2d9023fb48ce4c51838813174880d918e9b4d2b0dc21a2b9c6f612338c31a289df8", + "0x886d97b635975fc638c1b6afc493e5998ca139edba131b75b65cfe5a8e814f11bb678e0eeee5e6e5cd913ad3f2fefdfc", + "0xb3cb0963387ed28c0c0adf7fe645f02606e6e1780a24d6cecef5b7c642499109974c81a7c2a198b19862eedcea2c2d8c", + "0xb3019d6e591cf5b33eb972e49e06c6d0a82a73a75d78d383dd6f6a4269838289e6e07c245f54fed67f5c9bb0fd5e1c5f", + "0xad177f4f826a961adeac76da40e2d930748effff731756c797eddc4e5aa23c91f070fb69b19221748130b0961e68a6bb", + "0x94ac33d21c3d12ff762d32557860e911cd94d666609ddcc42161b9c16f28d24a526e8b10bb03137257a92cec25ae637d", + "0xa5b0ffc819451ea639cfd1c18cbc9365cc79368d3b2e736c0ae54eba2f0801e6eb0ee14a5f373f4a70ca463bdb696c09", + "0xb0d2460747d5d8b30fc6c6bd0a87cb343ddb05d90a51b465e8f67d499cfc5e3a9e365da05ae233bbee792cdf90ec67d5", + "0xb03a0bd160495ee626ff3a5c7d95bc79d7da7e5a96f6d10116600c8fa20bedd1132f5170f25a22371a34a2d763f2d6d0", + "0xb7e3da2282b65dc8333592bb345a473f03bd6df69170055fec60222de9897184536bf22b9388b08160321144d0940279", + "0xaa3450bb155a5f9043d0ef95f546a2e6ade167280bfb75c9f09c6f9cdb1fffb7ce8181436161a538433afa3681c7a141", + "0xa116862dca409db8beff5b1ccd6301cdd0c92ca29a3d6d20eb8b87f25965f42699ca66974dd1a355200157476b998f3b", + "0x88c0a4febd4068850557f497ea888035c7fc9f404f6cc7794e7cc8722f048ad2f249e7dc62743e7a339eb7473ad3b0cd", + "0x982b4d7b29aff22d527fd82d2a52601d95549bfb000429bb20789ed45e5abf1f4b7416c7b7c4b79431eb3574b29be658", + "0x915fdbe5e7de09c66c0416ae14a8750db9412e11dc576cf6158755fdcaf67abdbf0fa79b554cac4fe91c4ec245be073f", + "0xb78893a97e93d730c8201af2e0d3b31cb923d38dc594ffa98a714e627c473d42ea82e0c4d2eeb06862ee22a9b2c54588", + "0x86decd22b25d300508472c9ce75d3e465b737e7ce13bc0fcce32835e54646fe12322ba5bc457be18bfd926a1a6ca4a38", + "0xa80941c391f1eeafc1451c59e4775d6a383946ff22997aeaadf806542ba451d3b0f0c6864eeba954174a296efe2c1550", + "0xa7009b2c6b396138afe4754b7cc10dee557c51c7f1a357a11486b3253818531f781ea8107360c8d4c3b1cd96282353c0", + "0x96a8c35cb87f84fa84dcd6399cc2a0fd79cc9158ef4bdde4bae31a129616c8a9f2576cd19baa3f497ca34060979aed7d", + "0x8748d15d18b75ff2596f50d6a9c4ce82f61ecbcee123a6ceae0e43cab3012a29b6f83cf67b48c22f6f9d757c6caf76b2", + "0x8af5ef2107ad284e246bb56e20fef2a255954f72de791cbdfd3be09f825298d8466064f3c98a50496c7277af32b5c0bc", + "0xb74417d84597a485d0a8e1be07bf78f17ebb2e7b3521b748f73935b9afbbd82f34b710fb7749e7d4ab55b0c7f9de127d", + "0x81ab098a082b07f896c5ffd1e4446cb7fb44804cbbf38d125208b233fc82f8ec9a6a8d8dd1c9a1162dc28ffeec0dde50", + "0xaaf5fe493b337810889e777980e6bbea6cac39ac66bc0875c680c4208807ac866e9fda9b5952aa1d04539b9f4a4bec57", + "0x8cdb0890e33144d66391d2ae73f5c71f5a861f72bc93bff6cc399fc25dd1f9e17d8772592b44593429718784802ac377", + "0xb4c1b249e079f6ae1781af1d97a60b15855f49864c50496c09c91fe1946266915b799f0406084d7783f5b1039116dd8b", + "0x8d350f7c05fc0dcd9a1170748846fb1f5d39453e4cb31e6d1457bed287d96fc393b2ecc53793ca729906a33e59c6834a", + "0x88b7f029e079b6ae956042c0ea75d53088c5d0efd750dd018adaeacf46be21bf990897c58578c491f41afd3978d08073", + "0x85a279c493de03db6fa6c3e3c1b1b29adc9a8c4effc12400ae1128da8421954fa8b75ad19e5388fe4543b76fb0812813", + "0x89ad0163cad93e24129d63f8e38422b7674632a8d0a9016ee8636184cab177659a676c4ee7efba3abe1a68807c656d60", + "0xa9fe6ca8bf2961a3386e8b8dcecc29c0567b5c0b3bcf3b0f9169f88e372b80151af883871fc5229815f94f43a6f5b2b0", + "0x88aaf1acfc6e2e19b8387c97da707cb171c69812fefdd4650468e9b2c627bd5ccfb459f4d8e56bdfd84b09ddf87e128f", + "0x8ef94f7be4d85d5ad3d779a5cf4d7b2fc3e65c52fb8e1c3c112509a4af77a0b5be994f251e5e40fabeeb1f7d5615c22b", + "0x855885ed0b21350baeca890811f344c553cf9c21024649c722453138ba29193c6b02c4b4994cd414035486f923472e28", + "0xa6033db53925654e18ecb3ce715715c36165d7035db9397087ac3a0585e587998a53973d011ac6d48af439493029cee6", + "0x84f5bd7aab27b2509397aeb86510dd5ac0a53f2c8f73799bf720f2f87a52277f8d6b0f77f17bc80739c6a7119b7eb062", + "0x98cff5ecc73b366c6a01b34ac9066cb34f7eeaf4f38a5429bad2d07e84a237047e2a065c7e8a0a6581017dadb4695deb", + "0xa9a52a6bf98ee4d749f6d38be2c60a6d54b64d5cbe4e67266633dc096cf28c97fe998596707d31968cbe2064b72256bf", + "0x94b65e14022b5cf6a9b95f94be5ace2711957c96f4211c3f7bb36206bd39cfbd0ea82186cab5ad0577a23214a5c86e9e", + "0xaba176b92256efb68f574e543479e5cf0376889fb48e3db4ebfb7cba91e4d9bcf19dcfec444c6622d9398f06de29e2b9", + "0xb5635b7b972e195cab878b97dea62237c7f77eb57298538582a330b1082f6207a359f2923864630136d8b1f27c41b9aa", + "0x88af97ddc4937a95ec0dcd25e4173127260f91c8db2f6eac84afb789b363705fb3196235af631c70cafd09411d233589", + "0x848f1a981f5fc6cd9180cdddb8d032ad32cdfa614fc750d690dbae36cc0cd355cbf1574af9b3ffc8b878f1b2fafb9544", + "0xa83aeed488f9a19d8cfd743aa9aa1982ab3723560b1cd337fc2f91ad82f07afa412b3993afb845f68d47e91ba4869840", + "0x9597706983107eb23883e0812e1a2c58af7f3499d50c6e29b455946cb9812fde1aa323d9ed30d1c0ffd455abe32303cd", + "0x861d46a5d70b38d6c1cd72817a2813803d9f34c00320c8b62f8b9deb67f5b5687bc0b37c16d28fd017367b92e05da9ca", + "0x97678af29c68f9a5e213bf0fb85c265303714482cfc4c2c00b4a1e8a76ed08834ee6af52357b143a1ca590fb0265ea5a", + "0x89e72e86edf2aa032a0fc9acf4d876a40865fbb2c8f87cb7e4d88856295c4ac14583e874142fd0c314a49aba68c0aa3c", + "0xad80201fe75ef21c3ddbd98cf23591e0d7a3ba1036dfe77785c32f44755a212c31f0ceb0a0b6f5ee9b6dc81f358d30c3", + "0xb0371475425a8076d0dd5f733f55aabbe42d20a7c8ea7da352e736d4d35a327b2beb370dfcb05284e22cfd69c5f6c4cc", + "0x87e8e95ad2d62f947b2766ff405a23f7a8afba14e7f718a691d95369c79955cdebe24c54662553c60a3f55e6322c0f6f", + "0x9004c425a2e68870d6c69b658c344e3aa3a86a8914ee08d72b2f95c2e2d8a4c7bb0c6e7e271460c0e637cec11117bf8e", + "0x96351c72785c32e5d004b6f4a1259fb8153d631f0c93fed172f18e8ba438fbc5585c1618deeabd0d6d0b82173c2e6170", + "0xa6ec5ea80c7558403485b3b1869cdc63bde239bafdf936d9b62a37031628402a36a2cfa5cfbb8e26ac922cb0a209b3ba", + "0x93e6bc0a4708d16387cacd44cf59363b994dc67d7ada7b6d6dbd831c606d975247541b42b2a309f814c1bfe205681fc6", + "0x97a8b791a5a8f6e1d0de192d78615d73d0c38f1e557e4e15d15adc663d649e655bc8da3bcc499ef70112eafe7fb45c7a", + "0xaa6c51fa28975f709329adee1bbd35d49c6b878041841a94465e8218338e4371f5cb6c17f44a63ac93644bf28f15d20f", + "0xb37faa4d78fdc0bb9d403674dbea0176c2014a171c7be8527b54f7d1a32a76883d3422a3e7a5f5fcc5e9b31b57822eeb", + "0xade435ec0671b3621dde69e07ead596014f6e1daa1152707a8c18877a8b067bde2895dd47444ffa69db2bbef1f1d8816", + "0xa7b39a0a6a02823452d376533f39d35029867b3c9a6ad6bca181f18c54132d675613a700f9db2440fb1b4fa13c8bf18a", + "0xa7c2b0b915d7beba94954f2aa7dd08ec075813661e2a3ecca5d28a0733e59583247fed9528eb28aba55b972cdbaf06eb", + "0x83e0915aa2b09359604566080d411874af8c993beba97d4547782fdbe1a68e59324b800ff1f07b8db30c71adcbd102a8", + "0xb07a013f73cd5b98dae0d0f9c1c0f35bff8a9f019975c4e1499e9bee736ca6fcd504f9bc32df1655ff333062382cff04", + "0x85ac80bd734a52235da288ff042dea9a62e085928954e8eacd2c751013f61904ed110e5b3afe1ab770a7e6485efb7b5e", + "0xa5a8e80579de886fb7d6408f542791876885947b27ad6fa99a8a26e381f052598d7b4e647b0115d4b5c64297e00ce28e", + "0x8dc31701a01ee8137059ca1874a015130d3024823c0576aa9243e6942ec99d377e7715ed1444cd9b750a64b85dcaa3e5", + "0x8fb66187182629c861ddb6896d7ed3caf2ad050c3dba8ab8eb0d7a2c924c3d44c48d1a148f9e33fb1f061b86972f8d21", + "0xa22d811e1a20a75feac0157c418a4bfe745ccb5d29466ffa854dca03e395b6c3504a734341746b2846d76583a780b32e", + "0x82b196e49c6e861089a427c0b4671d464e9d15555ffb90954cd0d630d7ae02eb3d98ceb529d00719c2526cd96481355a", + "0xa8c452b8c4ca8e0a61942a8e08e28f17fb0ef4c5b018b4e6d1a64038280afa2bf1169202f05f14af24a06ca72f448ccd", + "0xb828bd3e452b797323b798186607849f85d1fb20c616833c0619360dfd6b3e3aa000fd09dafe4b62d74abc41072ff1a9", + "0xa08dacdd758e523cb8484f6bd070642c0c20e184abdf8e2a601f61507e93952d5b8b0c723c34fcbdd70a8485eec29db2", + "0x996aefd402748d8472477cae76d5a2b92e3f092fc834d5222ae50194dd884c9fb8b6ed8e5ccf8f6ed483ddbb4e80c747", + "0x91c3cad94a11a3197ae4f9461faab91a669e0dddb0371d3cab3ed9aeb1267badc797d8375181130e461eadd05099b2a2", + "0xb51ea03c58daf2db32c99b9c4789b183365168cb5019c72c4cc91ac30b5fb7311d3db76e6fa41b7cd4a8c81e2f6cdc94", + "0xa1573ff23ab972acdcd08818853b111fc757fdd35aa070186d3e11e56b172fb49d840bf297ac0dd222e072fc09f26a81", + "0xa30b69e39ad43dd540a43c521f05b51b5f1b9c4eed54b8162374ae11eac25da4f5756e7b70ce9f3c92c2eeceee7431ed", + "0xb5616b233fb3574a2717d125a434a2682ff68546dccf116dd8a3b750a096982f185614b9fb6c7678107ff40a451f56fa", + "0xb899cb2176f59a5cfba3e3d346813da7a82b03417cad6342f19cc8f12f28985b03bf031e856a4743fd7ebe16324805b0", + "0xb5748f6f660cc5277f1211d2b8649493ed8a11085b871cd33a5aea630abd960a740f08c08be5f9c21574600ac9bf5737", + "0x89ce3fb805aea618b5715c0d22a9f46da696b6fa86794f56fdf1d44155a33d42daf1920bcbe36cbacf3cf4c92df9cbc7", + "0xb5205989b92c58bdda71817f9a897e84100b5c4e708de1fced5c286f7a6f01ae96b1c8d845f3a320d77c8e2703c0e8b1", + "0x9148ea83b4436339580f3dbc9ba51509e9ab13c03063587a57e125432dd0915f5d2a8f456a68f8fff57d5f08c8f34d6e", + "0xb7642e325f4ba97ae2a39c1c9d97b35aafd49d53dba36aed3f3cb0ca816480b3394079f46a48252d46596559c90f4d58", + "0xb3748d472b1062e54572badbb8e87ac36534407f74932e7fc5b8392d008e8e89758f1671d1e4d30ab0fa40551b13bb5e", + "0x89174838e21639d6bdd91a0621f04dc056907b88e305dd66e46a08f6d65f731dea72ae87ca5e3042d609e8de8de9aa26", + "0xae1e77b90ca33728af07a4c03fb2ef71cd92e2618e7bf8ed4d785ce90097fc4866c29999eb84a6cf1819d75285a03af2", + "0x89579c51ac405ad7e9df13c904061670ce4b38372492764170e4d3d667ed52e5d15c7cd5c5991bbfa3a5e4e3fa16363e", + "0x922370fa49903679fc565f09c16a5917f8125e72acfeb060fcdbadbd1644eb9f4016229756019c93c6d609cda5d5d174", + "0xb7022695c16521c5704f49b7ddbdbec9b5f57ce0ceebe537bc0ebb0906d8196cc855a9afeb8950a1710f6a654464d93f", + "0x874b6b93e4ee61be3f00c32dd84c897ccd6855c4b6251eb0953b4023634490ed17753cd3223472873cbc6095b2945075", + "0xb8b2e9287ad803fb185a13f0d7456b397d4e3c8ad5078f57f49e8beb2e85f661356a3392dbd7bcf6a900baa5582b86a1", + "0xb627aee83474e7f84d1bab9b7f6b605e33b26297ac6bbf52d110d38ba10749032bd551641e73a383a303882367af429b", + "0x8327cba5a9ff0d3f5cd0ae55e77167448926d5fcf76550c0ad978092a14122723090c51c415e88e42a2b62eb07cc3981", + "0xa0c414f23f46ca6d69ce74c6f8a00c036cb0edd098af0c1a7d39c802b52cfb2d5dbdf93fb0295453d4646e2af7954d45", + "0xaee3557290d2dc10827e4791d00e0259006911f3f3fce4179ed3c514b779160613eca70f720bff7804752715a1266ffa", + "0x91ad21fc502eda3945f6de874d1b6bf9a9a7711f4d61354f9e5634fc73f9c06ada848de15ab0a75811d3250be862827d", + "0xaf2dea9683086bed1a179110efb227c9c00e76cd00a2015b089ccbcee46d1134aa18bda5d6cab6f82ae4c5cd2461ac21", + "0x8befbacc19e57f7c885d1b7a6028359eb3d80792fe13b92a8400df21ce48deb0bb60f2ddb50e3d74f39f85d7eab23adc", + "0xb6fe2723f0c47757932c2ddde7a4f8434f665612f7b87b4009c2635d56b6e16b200859a8ade49276de0ef27a2b6c970a", + "0x82eb41390800287ae56e77f2e87709de5b871c8bdb67c10a80fc65f3acb9f7c29e8fa43047436e8933f27449ea61d94d", + "0xaa07ac7b84a6d6838826e0b9e350d8ec75e398a52e9824e6b0da6ae4010e5943fec4f00239e96433f291fef9d1d1e609", + "0x9917e74fd45c3f71a829ff5498a7f6b5599b48c098dda2339bf04352bfc7f368ccf1a407f5835901240e76452ae807d7", + "0xb886f17fcbcbfcd08ac07f04bb9543ef58510189decaccea4b4158c9174a067cb67d14b6be3c934e6e2a18c77efa9c9c", + "0x8ec0f9d26f71b0f2e60a179e4fd1778452e2ffb129d50815e5d7c7cb9415fa69ae5890578086e8ef6bfde35ad2a74661", + "0xae6596ccfdf5cbbc5782efe3bb0b101bb132dbe1d568854ca24cacc0b2e0e9fabcb2ca7ab42aecec412efd15cf8cb7a2", + "0xb6cf9b02c0cd91895ad209e38c54039523f137b5848b9d3ad33ae43af6c20c98434952db375fe378de7866f2d0e8b18a", + "0xb662144505aa8432c75ffb8d10318526b6d5777ac7af9ebfad87d9b0866c364f7905a6352743bd8fd79ffd9d5dd4f3e6", + "0x8beff4d7d0140b86380ff4842a9bda94c2d2be638e20ac68a4912cb47dbe01a261857536375208040c0554929ced1ddc", + "0x8897fee93ce8fc1e1122e46b6d640bba309384dbd92e46e185e6364aa8210ebf5f9ee7e5e604b6ffba99aa80a10dd7d0", + "0x909a8d793f599e33bb9f1dc4792a507a97169c87cd5c087310bc05f30afcd247470b4b56dec59894c0fb1d48d39bb54e", + "0xae1d0ded32f7e6f1dc8fef495879c1d9e01826f449f903c1e5034aeeabc5479a9e323b162b688317d46d35a42d570d86", + "0x828beed62020361689ae7481dd8f116902b522fb0c6c122678e7f949fdef70ead011e0e6bffd25678e388744e17cdb69", + "0x8fd8967f8e506fef27d17b435d6b86b232ec71c1036351f12e6fb8a2e12daf01d0ee04451fb944d0f1bf7fd20e714d02", + "0xa45795fda3b5bb0ad1d3c628f6add5b2a4473a1414c1a232e80e70d1cfffd7f8a8d9861f8df2946999d7dbb56bf60113", + "0x8f664a965d65bc730c9ef1ec7467be984d4b8eb46bd9b0d64e38e48f94e6e55dda19aeac82cbcf4e1473440e64c4ca18", + "0x8d22f7b2ddb31458661abd34b65819a374a1f68c01fc6c9887edeba8b80c65bceadb8f57a3eb686374004b836261ef67", + "0x928b8e255a77e1f0495c86d3c63b83677b4561a5fcbbe5d3210f1e0fc947496e426d6bf3b49394a5df796c9f25673fc4", + "0x92b6d3c9444100b4d7391febfc1dddaa224651677c3695c47a289a40d7a96d200b83b64e6d9df51f534564f272a2c6c6", + "0xa3370898a1c5f33d15adb4238df9a6c945f18b9ada4ce2624fc32a844f9ece4c916a64e9442225b6592afa06d2e015f2", + "0x87874461df3c9aa6c0fa91325576c0590f367075f2f0ecfeb34afe162c04c14f8ce9d608c37ac1adc8b9985bc036e366", + "0x87f97f9e6d4be07e8db250e5dd2bffdf1390665bc5709f2b631a6fa69a7fca958f19bd7cc617183da1f50ee63e9352b5", + "0x873b935aae16d9f08adbc25353cee18af2f1b8d5f26dec6538d6bbddc515f2217ed7d235dcfea59ae61b428798b28637", + "0xb2f6eac5c869ad7f4a25161d3347093e2f70e66cd925032747e901189355022fab3038bca4d610d2f68feb7e719c110b", + "0xa0c03e329a707300081780f1e310671315b4c6a4cedcb29697aedfabb07a9d5df83f27b20e9c44cf6b16e39d9ded5b98", + "0xb228334445e37b9b49cb4f2cc56b454575e92173ddb01370a553bba665adadd52df353ad74470d512561c2c3473c7bb9", + "0x8866d62084d905c145ff2d41025299d8b702ac1814a7dec4e277412c161bc9a62fed735536789cb43c88693c6b423882", + "0x912d2597a07864de9020ac77083eff2f15ceb07600f15755aba61251e8ce3c905a758453b417f04d9c38db040954eb65", + "0x82fb30590e84b9e45db1ec475a39971cf554dc01bcc7050bc89265740725c02e2be5a972168c5170c86ae83e5b0ad2c0", + "0xa9108967a2fedd7c322711eca8159c533dd561bedcb181b646de98bf5c3079449478eab579731bee8d215ae8852c7e21", + "0x91d6486eb5e61d2b9a9e742c20ec974a47627c6096b3da56209c2b4e4757f007e793ebb63b2b246857c9839b64dc0233", + "0xa6e7220598c554abdcc3fdc587b988617b32c7bb0f82c06205467dbedb58276cc07cae317a190f19d19078773f4c2bbb", + "0x9359d914d1267633141328ed0790d81c695fea3ddd2d406c0df3d81d0c64931cf316fe4d92f4353c99ff63e2aefc4e34", + "0x8f44e3f0387293bc7931e978165abbaed08f53acd72a0a23ac85f6da0091196b886233bcee5b4a194db02f3d5a9b3f78", + "0x8bff18087f112be7f4aa654e85c71fef70eee8ae480f61d0383ff6f5ab1a0508f966183bb3fc4d6f29cb7ca234aa50d3", + "0x913363012528b50698e904de0588bf55c8ec5cf6f0367cfd42095c4468fcc64954fbf784508073e542fee242d0743867", + "0x83a0f9f5f265c5a0e54defa87128240235e24498f20965009fef664f505a360b6fb4020f2742565dfc7746eb185bcec0", + "0x98e6bec0568d3939b31d00eb1040e9b8b2a35db46ddf4369bdaee41bbb63cc84423d29ee510a170fb5b0e2df434ba589", + "0xa97e0fafe011abd70d4f99a0b36638b3d6e7354284588f17a88970ed48f348f88392779e9a038c6cbc9208d998485072", + "0x843e5a537c298666e6cf50fcc044f13506499ef83c802e719ff2c90e85003c132024e04711be7234c04d4b0125512d5d", + "0xb913501e1008f076e5eac6d883105174f88b248e1c9801e568fefaffa1558e4909364fc6d9512aa4d125cbd7cc895f05", + "0x8f79b5b8159e7fd0d93b0645f3c416464f39aec353b57d99ecf24f96272df8a068ad67a6c90c78d82c63b40bb73989bb", + "0x91245e59b4425fd4edb2a61d0d47c1ccc83d3ced8180de34887b9655b5dcda033d48cde0bdc3b7de846d246c053a02e8", + "0xad66a14f5a54ac69603b16e5f1529851183da77d3cc60867f10aea41339dd5e06a5257982e9e90a352cdd32750f42ee4", + "0xa28f176571e1a9124f95973f414d5bdbf5794d41c3839d8b917100902ac4e2171eb940431236cec93928a60a77ede793", + "0xafef616d341a9bc94393b8dfba68ff0581436aa3a3adb7c26a1bbf2cf19fa877066191681f71f17f3cd6f9cf6bf70b5a", + "0xa12a2aa3e7327e457e1aae30e9612715dd2cfed32892c1cd6dcda4e9a18203af8a44afb46d03b2eed89f6b9c5a2c0c23", + "0xa3c6707117a1e48697ed41062897f55d8119403eea6c2ee88f60180f6526f45172664bfee96bf61d6ec0b7fbae6aa058", + "0x995ff7de6181ddf95e3ead746089c6148da3508e4e7a2323c81785718b754d356789b902e7e78e2edc6b0cbd4ff22c78", + "0x8d66bb3b50b9df8f373163629f9221b3d4b6980a05ea81dc3741bfe9519cf3ebba7ab98e98390bae475e8ede5821bd5c", + "0x957fb10783e2bd0db1ba66b18e794df710bc3b2b05776be146fa5863c15b1ebdd39747b1a95d9564e1772cdfc4f37b8a", + "0xabe78cebc0f5a45d754140d1f685e387489acbfa46d297a8592aaa0d676a470654f417a4f7d666fc0b2508fab37d908e", + "0xb75c1fecc85b2732e96b3f23aefb491dbd0206a21d682aee0225838dc057d7ed3b576176353e8e90ae55663f79e986e4", + "0x8ea3028f4548a79a94c717e1ed28ad4d8725b8d6ab18b021063ce46f665c79da3c49440c6577319dab2d036b7e08f387", + "0x99b12b3665e473d01bc6985844f8994fb65cb15745024fb7af518398c4a37ff215da8f054e8fdf3286984ae36a73ca5e", + "0x8a26360335c73d1ab51cec3166c3cf23b9ea51e44a0ad631b0b0329ef55aaae555420348a544e18d5760969281759b61", + "0x9667c7300ff80f0140be002b0e36caab07aaee7cce72679197c64d355e20d96196acaf54e06e1382167d081fe6f739c1", + "0xabee05cf9abdbc52897ac1ce9ed157f5466ed6c383d6497de28616238d60409e5e92619e528af8b62cc552bf09970dc2", + "0xa4c3eb1f7160f8216fc176fb244df53008ff32f2892363d85254002e66e2de21ccfe1f3b1047589abee50f29b9d507e3", + "0xa0825c95ba69999b90eac3a31a3fd830ea4f4b2b7409bde5f202b61d741d6326852ce790f41de5cb0eccec7af4db30c1", + "0x96811875fa83133e0b3c0e0290f9e0e28bca6178b77fdf5350eb19344d453dbd0d71e55a0ef749025a5a2ca0ad251e81", + "0xb2c9d93c3ba4e511b0560b55d3501bf28a510745fd666b3cb532db051e6a8617841ea2f071dda6c9f15619c7bfd2737f", + "0xaef1393e7d97278e77bbf52ef6e1c1d5db721ccf75fe753cf47a881fa034ca61eaa5098ee5a344c156d2b14ff9e284ad", + "0xaddff62bb29430983fe578e3709b0949cdc0d47a13a29bc3f50371a2cb5c822ce53e2448cfaa01bcb6e0aa850d5a380e", + "0xa30568577c91866b9c40f0719d46b7b3b2e0b4a95e56196ac80898a2d89cc67880e1229933f2cd28ee3286f8d03414d7", + "0x8bcd6b1c3b02fffead432e8b1680bad0a1ac5a712d4225e220690ee18df3e7406e2769e1f309e2e803b850bc96f0e768", + "0xab337bd83ccdd2322088ffa8d005f450ced6b35790f37ab4534313315ee84312adc25e99cce052863a8bedee991729ed", + "0x8980a2b1d8f574af45b459193c952400b10a86122b71fca2acb75ee0dbd492e7e1ef5b959baf609a5172115e371f3177", + "0x98aa7d52284f6c1f22e272fbddd8c8698cf8f5fbb702d5de96452141fafb559622815981e50b87a72c2b1190f59a7deb", + "0xaf6230340cc0b66f5bf845540ed4fc3e7d6077f361d60762e488d57834c3e7eb7eacc1b0ed73a7d134f174a01410e50c", + "0x9370f326ea0f170c2c05fe2c5a49189f20aec93b6b18a5572a818cd4c2a6adb359e68975557b349fb54f065d572f4c92", + "0xb3b8fcf637d8d6628620a1a99dbe619eabb3e5c7ce930d6efd2197e261bf394b74d4e5c26b96c4b8009c7e523ccfd082", + "0x86dc027b95deb74c36a58a1333a03e63cb5ae22d3b29d114cfd2271badb05268c9d0c819a977f5e0c6014b00c1512e3a", + "0xa504dd7e4d6b2f4379f22cc867c65535079c75ccc575955f961677fa63ecb9f74026fa2f60c9fb6323c1699259e5e9c8", + "0x8e7594034feef412f055590fbb15b6322dc4c6ab7a4baef4685bd13d71a83f7d682b5781bdfa0d1c659489ce9c2b8000", + "0x8489822ad0647a7e06aa2aa5595960811858ddd4542acca419dd2308a8c5477648f4dd969a6740bb78aa26db9bfcc555", + "0xa8aa8151348dbd4ef40aaeb699b71b4c4bfd3218560c120d85036d14f678f6736f0ec68e80ce1459d3d35feccc575164", + "0xa9402dc9117fdb39c4734c0688254f23aed3dce94f5f53f5b7ef2b4bf1b71a67f85ab1a38ec224a59691f3bee050aeb3", + "0xa1b60f98e5e5106785a9b81a85423452ee9ef980fa7fa8464f4366e73f89c50435a0c37b2906052b8e58e212ebd366cf", + "0xa4bee50249db3df7fd75162b28f04e57c678ba142ce4d3def2bc17bcb29e4670284a45f218dad3969af466c62a903757", + "0x99299d73066e8eb128f698e56a9f8506dfe4bd014931e86b6b487d6195d2198c6c5bf15cccb40ccf1f8ddb57e9da44a2", + "0x92e0fe9063306894a2c6970c001781cff416c87e87cb5fbac927a3192655c3da4063e6fa93539f6ff58efac6adcc5514", + "0xa8d8550dcc64d9f1dd7bcdab236c4122f2b65ea404bb483256d712c7518f08bb028ff8801f1da6aed6cbfc5c7062e33b", + "0xaf49e740c752d7b6f17048014851f437ffd17413c59797e5078eaaa36f73f0017c3e7da020310cfe7d3c85f94a99f203", + "0x98abd6a02c7690f5a339adf292b8c9368dfc12e0f8069cf26a5e0ce54b4441638f5c66ea735142f3c28e00a0024267e6", + "0xac3893df7b4ceab23c6b9054e48e8ba40d6e5beda8fbe90b814f992f52494186969b35d8c4cdc3c99890a222c9c09008", + "0xaad915f31c6ba7fdc04e2aaac62e84ef434b7ee76a325f07dc430d12c84081999720181067b87d792efd0117d7ee1eab", + "0xa7428176d6918cd916a310bdc75483c72de660df48cac4e6e7478eef03205f1827ea55afc0df5d5fa7567d14bbea7fc9", + "0x87380cffdcffb1d0820fa36b63cc081e72187f86d487315177d4d04da4533eb19a0e2ff6115ceab528887819c44a5164", + "0xb19ebeda61c23d255cbf472ef0b8a441f4c55b70f0d8ed47078c248b1d3c7c62e076b43b95c00a958ec8b16d5a7cb0d7", + "0x87a1c6a1fdff993fa51efa5c3ba034c079c0928a7d599b906336af7c2dcab9721ceaf3108c646490af9dff9a754f54b3", + "0x920c832853e6ab4c851eecfa9c11d3acc7da37c823be7aa1ab15e14dfd8beb5d0b91d62a30cec94763bd8e4594b66600", + "0xb905c02ba451bfd411c135036d92c27af3b0b1c9c2f1309d6948544a264b125f39dd41afeff4666b12146c545adc168a", + "0xad594678b407db5d6ea2e90528121f84f2b96a4113a252a30d359a721429857c204c1c1c4ff71d8bb5768c833f82e80e", + "0xb38ddf33745e8d2ad6a991aefaf656a33c5f8cbe5d5b6b6fd03bd962153d8fd0e01b5f8f96d80ae53ab28d593ab1d4e7", + "0xaed3913afccf1aa1ac0eb4980eb8426d0baccebd836d44651fd72af00d09fac488a870223c42aca3ceb39752070405ae", + "0x948a6c79ba1b8ad7e0bed2fae2f0481c4e41b4d9bbdd9b58164e28e9065700e83f210c8d5351d0212e0b0b68b345b3a5", + "0xb8d873927936719d2484cd03a6687d65697e17dcf4f0d5aed6f5e4750f52ef2133d4645894e7ebfc4ef6ce6788d404c8", + "0x90b95e9be1e55c463ed857c4e0617d6dc3674e99b6aa62ed33c8e79d6dfcf7d122f4f4cc2ee3e7c5a49170cb617d2e2e", + "0x8780e086a244a092206edcde625cafb87c9ab1f89cc3e0d378bc9ee776313836160960a82ec397bc3800c0a0ec3da283", + "0x805b44f96e001e5909834f70c09be3efcd3b43632bcac5b6b66b6d227a03a758e4b1768ce2a723045681a1d34562aaeb", + "0x968e9ec7194ff424409d182ce0259acd950c384c163c04463bc8700a40b79beba6146d22b7fa7016875a249b7b31c602", + "0xa49e069bfadb1e2e8bff6a4286872e2a9765d62f0eaa4fcb0e5af4bbbed8be3510fb19849125a40a8a81d1e33e81c3eb", + "0x8900a7470b656639721d2abbb7b06af0ac4222ab85a1976386e2a62eb4b88bfb5b72cf7921ddb3cf3a395d7eeb192a2e", + "0xa656db14f1de9a7eb84f6301b4acb2fbf78bfe867f48a270e416c974ab92821eb4df1cb881b2d600cfed0034ac784641", + "0x858b7f7e2d44bdf5235841164aa8b4f3d33934e8cb122794d90e0c1cac726417b220529e4f896d7b77902ab0ccd35b3a", + "0x813d2506a28a2b01cb60f49d6bd5e63c9b056aa56946faf2f33bd4f28a8d947569cfead3ae53166fc65285740b210f86", + "0x820a94e69a927e077082aae66f6b292cfbe4589d932edf9e68e268c9bd3d71ef76cf7d169dd445b93967c25db11f58f1", + "0xa3a154c28e5580656a859f4efc2f5ebfa7eaa84ca40e3f134fa7865e8581586db74992dbfa4036aa252fba103773ddde", + "0xaa61f78130cebe09bc9a2c0a37f0dd57ed2d702962e37d38b1df7f17dc554b1d4b7a39a44182a452ce4c5eb31fa4cfcc", + "0xa584c434dfe194546526691b68fa968c831c31da42303a1d735d960901c74011d522246f37f299555416b8cf25c5a548", + "0xae46895c6d67ea6d469b6c9c07b9e5d295d9ae73b22e30da4ba2c973ba83a130d7eef39717ec9d0f36e81d56bf742671", + "0xaf43c86661fb15daf5d910a4e06837225e100fb5680bd3e4b10f79a2144c6ec48b1f8d6e6b98e067d36609a5d038889a", + "0x8a36c5732d3f1b497ebe9250610605ee62a78eaa9e1a45f329d09aaa1061131cf1d9df00f3a7d0fe8ad614a1ff9caaae", + "0xa6385bd50ecd548cfb37174cdbb89e10025b5cadaf3cff164c95d7aef5a33e3d6a9bf0c681b9e11db9ef54ebeee2a0c1", + "0xac846ceb89c9e5d43a2991c8443079dc32298cd63e370e64149cec98cf48a6351c09c856f2632fd2f2b3d685a18bbf8b", + "0x8b31dbb9457d23d416c47542c786e07a489af35c4a87dadb8ee91bea5ac4a5315e65625d78dad2cf8f9561af31b45390", + "0xab5a9361fa339eec8c621bdad0a58078983abd8942d4282b22835d7a3a47e132d42414b7c359694986f7db39386c2e19", + "0x8e2b8f797a436a1b661140e9569dcf3e1eea0a77c7ff2bc4ff0f3e49af04ed2de95e255df8765f1d0927fb456a9926b1", + "0xb5291484ef336024dd2b9b4cf4d3a6b751133a40656d0a0825bcc6d41c21b1c79cb50b0e8f4693f90c29c8f4358641f9", + "0x89623d7f6cb17aa877af14de842c2d4ab7fd576d61ddd7518b5878620a01ded40b6010de0da3cdf31d837eecf30e9847", + "0xb591a3e4db18a7345fa935a8dd7994bbac5cc270b8ebd84c8304c44484c7a74afb45471fdbe4ab22156a30fae1149b40", + "0xb5cb911325d8f963c41f691a60c37831c7d3bbd92736efa33d1f77a22b3fde7f283127256c2f47e197571e6fe0b46149", + "0x921322fc6a47dc091afa0ad6df18ed14cde38e48c6e71550aa513918b056044983aee402de21051235eecf4ce8040fbe", + "0xb36a7191f82fc39c283ffe53fc1f5a9a00b4c64eee7792a8443475da9a4d226cf257f226ea9d66e329af15d8f04984ec", + "0xa5e36556472a95ad57eb90c3b6623671b03eafd842238f01a081997ffc6e2401f76e781d049bb4aa94d899313577a9cf", + "0x88ef1bb322000c5a5515b310c838c9af4c1cdbb32eab1c83ac3b2283191cd40e9573747d663763a28dad0d64adc13840", + "0xa2e87cc06bf202e953fb1081933d8b4445527dde20e38ed1a4f440144fd8fa464a2b73e068b140562e9045e0f4bd3144", + "0xa0a4e9632a7a094b14b29b78cd9c894218cdf6783e61671e0203865dc2a835350f465fbaf86168f28af7c478ca17bc89", + "0x8d91410e004f76c50fdc05784157b4d839cb5090022c629c7c97a5e0c3536eeafee17a527b54b1165c3cd81774bb54ce", + "0xb1edf467c068cc163e2d6413cc22b16751e78b3312fe47b7ea82b08a1206d64415b2c8f2a677fa89171e82cc49797150", + "0xab1434c5e5065da826d10c2a2dba0facccab0e52b506ce0ce42fbe47ced5a741797151d9ecc99dc7d6373cfa1779bbf6", + "0xb7de4a1648fd63f3a918096ea669502af5357438e69dac77cb8102b6e6c15c76e033cfaa80dafc806e535ede5c1a20aa", + "0xaeadf34657083fc71df33bd44af73bf5281c9ca6d906b9c745536e1819ea90b56107c55e2178ebad08f3ba75b3f81c86", + "0xb273b024fa18b7568c0d1c4d2f0c4e79ec509dafac8c5951f14192d63ddbcf2d8a7512c1c1b615cc38fa3e336618e0c5", + "0xb4529f25e9b42ae8cf8338d2eface6ba5cd4b4d8da73af502d081388135c654c0b3afb3aa779ffc80b8c4c8f4425dd2b", + "0xabee85c462ac9a2c58e54f06c91b3e5cd8c5f9ab5b5deb602b53763c54826ed6deb0d6db315a8d7ad88733407e8d35e2", + "0xb4b77f2acfe945abf81f2605f906c10b88fb4d28628487fb4feb3a09f17f28e9780445dfcee4878349d4c6387a9d17d4", + "0x855189b3a105670779997690876dfaa512b4a25a24931a912c2f0f1936971d2882fb4d9f0b3d9daba77eaf660e9d05d5", + "0xab7647c32ca5e9856ac283a2f86768d68de75ceeba9e58b74c5324f8298319e52183739aba4340be901699d66ac9eb3f", + "0x8b30e2cd9b47d75ba57b83630e40f832249af6c058d4f490416562af451993eec46f3e1f90bc4d389e4c06abd1b32a46", + "0xae4ffeb9bdc76830d3eca2b705f30c1bdede6412fa064260a21562c8850c7fb611ec62bc68479fe48f692833e6f66d8d", + "0xa9461bb7d5490973ebaa51afc0bb4a5e42acdccb80e2f939e88b77ac28a98870e103e1042899750f8667a8cc9123bae9", + "0x9687d7df2f41319ca5469d91978fed0565a5f11f829ebadaa83db92b221755f76c6eacd7700735e75c91e257087512e3", + "0x8cc59c17307111723fe313046a09e0e32ea0cce62c13814ab7c6408c142d6a0311d801be4af53fc9240523f12045f9ef", + "0xb9d7d187407380df54ee9fef224c54eec1bfabf17dc8abf60765b7951f538f59aa26fffd5846cfe05546c35f59b573f4", + "0x89c5523f2574e1c340a955cbed9c2f7b5fbceb260cb1133160dabb7d41c2f613ec3f6e74bbfab3c4a0a6f0626dbe068f", + "0xaae0d632b6191b8ad71b027791735f1578e1b89890b6c22e37de0e4a6074886126988fe8319ae228ac9ef3b3bcccb730", + "0x92afd2f49a124aaba90de59be85ff269457f982b54c91b06650c1b8055f9b4b0640fd378df02a00e4fc91f7d226ab980", + "0x8b551cf89737d7d06d9b3b9c4c1c73b41f2ea0af4540999c70b82dabff8580797cf0a3caf34c86c59a7069eb2e38f087", + "0xa54e5a31716fccb50245898c99865644405b8dc920ded7a11f3d19bdc255996054b268e16f2e40273f11480e7145f41e", + "0xab6e55766e5bfb0cf0764ed909a8473ab5047d3388b4f46faeba2d1425c4754c55c6daf6ad4751e634c618b53e549529", + "0x86a930dd1ddcc16d1dfa00aa292cb6c2607d42c367e470aa920964b7c17ab6232a7108d1c2c11fc40fb7496547d0bbf8", + "0x82d47c332bbd31bbe83b5eb44a23da76d4a7a06c45d7f80f395035822bc27f62f59281d5174e6f8e77cc9b5c3193d6f0", + "0xa39a9dd41a0ff78c82979483731f1cd68d3921c3e9965869662c22e02dde3877802e180ba93f06e7346f96d9fa9261d2", + "0x8aa1518a80ea8b074505a9b3f96829f5d4afa55a30efe7b4de4e5dbf666897fdd2cf31728ca45921e21a78a80f0e0f10", + "0xa05a49a31e91dff6a52ac8b9c2cfdd646a43f0d488253f9e3cfbce52f26667166bbb9b608fc358763a65cbf066cd6d05", + "0x89646043028ffee4b69d346907586fd12c2c0730f024acb1481abea478e61031966e72072ff1d5e65cb8c64a69ad4eb1", + "0x8d17c22e0c8403b69736364d460b3014775c591032604413d20a5096a94d4030d7c50b9fe3240e31d0311efcf9816a47", + "0x8b07c95c6a06db8738d10bb03ec11b89375c08e77f0cab7e672ce70b2685667ca19c7e1c8b092821d31108ea18dfd4c7", + "0x8b7d2e4614716b1db18e9370176ea483e6abe8acdcc3dcdf5fb1f4d22ca55d652feebdccc171c6de38398d9f7bfdec7a", + "0xa3204c1747feabc2c11339a542195e7cb6628fd3964f846e71e2e3f2d6bb379a5e51700682ea1844eba12756adb13216", + "0x8d9d6255b65798d0018a8cccb0b6343efd41dc14ff2058d3eed9451ceaad681e4a0fa6af67b0a04318aa628024e5553d", + "0x81c03d8429129e7e04434dee2c529194ddb01b414feda3adee2271eb680f6c85ec872a55c9fa9d2096f517e13ed5abcc", + "0xaa18e4fdc1381b59c18503ae6f6f2d6943445bd00dd7d4a2ad7e5adad7027f2263832690be30d456e6d772ad76f22350", + "0x98ff6afc01d0bec80a278f25912e1b1ebff80117adae72e31d5b9fa4d9624db4ba2065b444df49b489b0607c45e26c4c", + "0xb95374e6b4fc0765708e370bc881e271abf2e35c08b056a03b847e089831ef4fe3124b9c5849d9c276eb2e35b3daf264", + "0x8c60dcc16c51087eb477c13e837031d6c6a3dc2b8bf8cb43c23f48006bc7173151807e866ead2234b460c2de93b31956", + "0x8594e11d5fc2396bcd9dbf5509ce4816dbb2b7305168021c426171fb444d111da5a152d6835ad8034542277011c26c0e", + "0x8195eede4ddb1c950459df6c396b2e99d83059f282b420acc34220cadeed16ab65c856f2c52568d86d3c682818ed7b37", + "0xa64bac89e7686932cdc5670d07f0b50830e69bfb8c93791c87c7ffa4913f8da881a9d8a8ce8c1a9ce5b6079358c54136", + "0x84126da6435699b0c09fa4032dec73d1fca21d2d19f5214e8b0bea43267e9a8dd1fc44f8132d8315e734c8e2e04d7291", + "0xa2ac374dfbb464bf850b4a2caf15b112634a6428e8395f9c9243baefd2452b4b4c61b0cb2836d8eae2d57d4900bf407e", + "0xa2c9679b151c041aaf5efeac5a737a8f70d1631d931609fca16be1905682f35e291292874cb3b03f14994f98573c6f44", + "0xa5ba4330bc5cb3dbe0486ddf995632a7260a46180a08f42ae51a2e47778142132463cc9f10021a9ad36986108fefa1a9", + "0xb4ce93199966d3c23251ca7f28ec5af7efea1763d376b0385352ffb2e0a462ef95c69940950278cf0e3dafd638b7bd36", + "0xa1c8d88d72303692eaa7adf68ea41de4febec40cc14ae551bb4012afd786d7b6444a3196b5d9d5040655a3366d96b7cd", + "0xa8506b54a88d17ac10fb1b0d1fe4aa40eae7553a064863d7f6b52ccc4236dd4b82d01dca6ba87da9a239e3069ba879fb", + "0x8283cfb0ef743a043f2b77ecaeba3005e2ca50435585b5dd24777ee6bce12332f85e21b446b536da38508807f0f07563", + "0x903cba8b1e088574cb04a05ca1899ab00d8960580c884bd3c8a4c98d680c2ad11410f2b75739d6050f91d7208cac33a5", + "0x8ffb33c4f6d05c413b9647eb6933526a350ed2e4278ca2ecc06b0e8026d8dbe829c476a40e45a6df63a633090a3f82ef", + "0x87787e9322e1b75e66c1f0d9ea0915722a232770930c2d2a95e9478c4b950d15ab767e30cea128f9ed65893bfc2d0743", + "0xa63f5c1e222775658421c487b1256b52626c6f79cb55a9b7deb2352622cedffb08502042d622eb3b02c97f9c09f9c957", + "0x9325ccbf64bf5d71b303e31ee85d486298f9802c5e55b2c3d75427097bf8f60fa2ab4fcaffa9b60bf922c3e24fbd4b19", + "0xb8c5c940d58be7538acf8672852b5da3af34f82405ef2ce8e4c923f1362f97fc50921568d0fd2fe846edfb0823e62979", + "0x8fab000a2b0eef851a483aec8d2dd85fe60504794411a2f73ed82e116960547ac58766cb73df71aea71079302630258d", + "0xab890222b44bc21b71f7c75e15b6c6e16bb03371acce4f8d4353ff3b8fcd42a14026589c5ed19555a3e15e4d18bfc3a3", + "0xa65c9cefe1fc35d089fe8580c2e7671ebefdb43014ac291528ff4deefd4883fd4df274af83711dad610dad0d615f9d65", + "0x8bdb0e8ec93b11e5718e8c13cb4f5de545d24829fd76161216340108098dfe5148ed25e3b57a89a516f09fa79043734d", + "0x829dbb0c76b996c2a91b4cbbe93ba455ca0d5729755e5f0c92aaee37dff7f36fcdc06f33aca41f1b609c784127b67d88", + "0x99e0cfa2bb57a7e624231317044c15e52196ecce020db567c8e8cb960354a0be9862ee0c128c60b44777e65ac315e59f", + "0xb69671a3c64e0a99d90b0ed108ce1912ff8ed983e4bddd75a370e9babde25ee1f5efb59ec707edddd46793207a8b1fe7", + "0x969bae484883a9ed1fbed53b26b3d4ee4b0e39a6c93ece5b3a49daa01444a1c25727dabe62518546f36b047b311b177c", + "0x91eea1b668e52f7a7a5087fabf1cab803b0316f78d9fff469fbfde2162f660c250e4336a9eea4cb0450bd30ac067bc8b", + "0x935c0ba4290d4595428e034b5c8001cbd400040d89ab00861108e8f8f4af4258e41f34a7e6b93b04bc253d3b9ffc13bf", + "0xb34867c6735d3c49865e246ddf6c3b33baf8e6f164db3406a64ebce4768cb46b0309635e11be985fee09ab7a31d81402", + "0x82c529f4e543c6bca60016dc93232c115b359eaee2798a9cf669a654b800aafe6ab4ba58ea8b9cdda2b371c8d62fa845", + "0xa8005d6c5960e090374747307ef0be2871a7a43fa4e76a16c35d2baab808e9777b496e9f57a4218b23390887c33a0b55", + "0xa365e871d30ba9291cedaba1be7b04e968905d003e9e1af7e3b55c5eb048818ae5b913514fb08b24fb4fbdccbb35d0b8", + "0x98eecc34b838e6ffd1931ca65eec27bcdb2fdcb61f33e7e5673a93028c5865e0d1bf6d3bec040c5e96f9bd08089a53a4", + "0x8874606b93266455fe8fdd25df9f8d2994e927460af06f2e97dd4d2d90db1e6b06d441b72c2e76504d753badca87fb37", + "0xb4251a9c4aab3a495da7a42e684ba4860dbcf940ad1da4b6d5ec46050cbe8dab0ab9ae6b63b5879de97b905723a41576", + "0xa27dc9cdd1e78737a443570194a03d89285576d3d7f3a3cf15cc55b3013e42635d4723e2e8fe1d0b274428604b630db9", + "0x89b5d514155d7999408334a50822508b9d689add55d44a240ff2bdde2eee419d117031f85e924e2a2c1ca77db9b91eea", + "0x82a0829469c1458d959c821148f15dacae9ea94bf56c59a6ab2d4dd8b3d16d73e313b5a3912a6c1f131d73a8f06730c4", + "0x8162546135cc5e124e9683bdfaa45833c18553ff06a0861c887dc84a5b12ae8cd4697f6794c7ef6230492c32faba7014", + "0x8a367941c07c3bdca5712524a1411bad7945c7c48ffc7103b1d4dff2c25751b0624219d1ccde8c3f70c465f954be5445", + "0xa266e627afcebcefea6b6b44cbc50f5c508f7187e87d047b0450871c2a030042c9e376f3ede0afcf9d1952f089582f71", + "0xb57f97959c208361de6d7e86dff2b873068adb0f158066e646f42ae90e650079798f165b5cd713141cd3a2a90a961d9a", + "0x82752ab52bdcc3cc2fc405cb05a2e694d3df4a3a68f2179ec0652536d067b43660b96f85f573f26fbd664a9ef899f650", + "0x997255fe51aaca6e5a9cb3359bcbf25b2bb9e30649bbd53a8a7c556df07e441c4e27328b38934f09c09d9500b5fabf66", + "0xb091e6d37b157b50d76bd297ad752220cd5c9390fac16dc838f8557aed6d9833fc920b61519df21265406216315e883f", + "0x8c6d5bdf87bd7f645419d7c6444e244fe054d437ed1ba0c122fde7800603a5fadc061e5b836cb22a6cfb2b466f20f013", + "0xb0cbfaf317f05f97be47fc9d69eda2dd82500e00d42612f271a1fe24626408c28881f171e855bd5bd67409f9847502b4", + "0x9454d0d32e7e308ddec57cf2522fb1b67a2706e33fb3895e9e1f18284129ab4f4c0b7e51af25681d248d7832c05eb698", + "0x98c717de9e01bef8842c162a5e757fe8552d53269c84862f4d451e7c656ae6f2ae473767b04290b134773f63be6fdb9d", + "0xab0836c6377a4dbc7ca6a4d6cf021d4cd60013877314dd05f351706b128d4af6337711ed3443cb6ca976f40d74070a9a", + "0x876693cba4301b251523c7d034108831df3ce133d8be5a514e7a2ca494c268ca0556fa2ad8310a1d92a16b55bcd99ea9", + "0x8f10c8ec41cdfb986a1647463076a533e6b0eec08520c1562401b36bb063ac972aa6b28a0b6ce717254e35940b900e3c", + "0xa044028ab4bcb9e1a2b9b4ca4efbf04c5da9e4bf2fff0e8bd57aa1fc12a71e897999c25d9117413faf2f45395dee0f13", + "0xa1930efb473f88001e47aa0b2b2a7566848cccf295792e4544096ecd14ee5d7927c173a8576b405bfa2eec551cd67eb5", + "0x885ff4e67d9ece646d02dd425aa5a087e485c3f280c3471b77532b0db6145b69b0fbefb18aa2e3fa5b64928b43a94e57", + "0xb19cadcde0f63bd1a9c24bd9c2806f53c14c0b9735bf351601498408ba503ddbd2037c891041cbba47f58b8c483f3b21", + "0x884e6d3b894a914c8cef946a76d5a0c8351843b2bffa2d1e56c6b5b99c84104381dd1320c451d551c0b966f4086e60f9", + "0xaf2456a09aa777d9e67aa6c7c49a1845ea5cdda2e39f4c935c34a5f8280d69d4eec570446998cbbe31ede69a91e90b06", + "0xaf760b0a30a1d6af3bc5cd6686f396bd41779aeeb6e0d70a09349bd5da17ca2e7965afc5c8ec22744198fbe3f02fb331", + "0x88118e9703200ca07910345fbb789e7a8f92bd80bbc79f0a9e040e8767d33df39f6eded403a9b636eabf9101e588482a", + "0xa5939153f0d1931bbda5cf6bdf20562519ea55fbfa978d6dbc6828d298260c0da7a50c37c34f386e59431301a96c2232", + "0xa4f14798508698fa3852e5cac42a9db9797ecee7672a54988aa74037d334819aa7b2ac7b14efea6b81c509134a6b7ad2", + "0xb0efad22827e562bd3c3e925acbd0d9425d19057868608d78c2209a531cccd0f2c43dc5673acf9822247428ffa2bb821", + "0xb00061c00131eded8305a7ce76362163deb33596569afb46fe499a7c9d7a0734c084d336b38d168024c2bb42b58e7660", + "0x8f0b7a317a076758b0dac79959ee4a06c08b07d0f10538a4b53d3da2eda16e2af26922feb32c090330dc4d969cf69bd3", + "0xaa8a3dd12bd60e3d2e05f9c683cdcb8eab17fc59134815f8d197681b1bcf65108cba63ac5c58ee632b1e5ed6bba5d474", + "0x8608b0c117fd8652fdab0495b08fadbeba95d9c37068e570de6fddfef1ba4a1773b42ac2be212836141d1bdcdef11a17", + "0xb632414c3da704d80ac2f3e5e0e9f18a3637cdc2ebeb613c29300745582427138819c4e7b0bec3099c1b8739dac1807b", + "0x94d86149b9c8443b46196f7e5a3738206dd6f3be7762df488bcbb9f9ee285a64c997ed875b7b16b26604fa59020a8199", + "0xa90a305c2cd0f184787c6be596fa67f436afd1f9b93f30e875f817ac2aae8bdd2e6e656f6be809467e6b3ad84adb86b1", + "0x864508f7077c266cc0cb3f7f001cb6e27125ebfe79ab57a123a8195f2e27d3799ff98413e8483c533b46a816a3557f1f", + "0xb07025a18b0e32dd5e12ec6a85781aa3554329ea12c4cd0d3b2c22e43d777ef6f89876dd90a9c8fb097ddf61cf18adc5", + "0x94400e5cf5d2700ca608c5fe35ce14623f71cc24959f2bc27ca3684092850f76b67fb1f07ca9e5b2ca3062cf8ad17bd4", + "0x8d58541f9f39ed2ee4478acce5d58d124031338ec11b0d55551f00a5a9a6351faa903a5d7c132dc5e4bb026e9cbd18e4", + "0xb64b0aa7b3a8f6e0d4b3499fe54e751b8c3e946377c0d5a6dbb677be23736b86a7e8a6be022411601dd75012012c3555", + "0xb689e554ba9293b9c1f6344a3c8fcb6951d9f9eac4a2e2df13de021aade7c186be27500e81388e5b8bcab4c80f220a31", + "0x8c3c8bad510b35da5ce5bd84b35c958797fbea024ad1c97091d2ff71d9b962e9222f65a9b776e5b3cc29c36e1063d2ee", + "0xad6ba94c787cd4361ca642c20793ea44f1f127d4de0bb4a77c7fbfebae0fcadbf28e2cb6f0c12c12a07324ec8c19761d", + "0x88aef260042db0d641a51f40639dbeeefa9e9811df30bee695f3791f88a2f84d318f04e8926b7f47bf25956cb9e3754f", + "0x8c7212d4a67b9ec70ebbca04358ad2d36494618d2859609163526d7b3acc2fc935ca98519380f55e6550f70a9bc76862", + "0xa1ce039c8f6cac53352899edb0e3a72c76da143564ad1a44858bd7ee88552e2fe6858d1593bbd74aeee5a6f8034b9b9d", + "0xab761c26527439b209af0ae6afccd9340bbed5fbe098734c3145b76c5d2cd7115d9227b2eb523882b7317fbb09180498", + "0x83440a9402b766045d7aca61a58bba2aa29cac1cf718199e472ba086f5d48093d9dda4d135292ba51d049a23964eceae", + "0x97c577be2cbbfdb37ad754fae9df2ada5fc5889869efc7e18a13f8e502fbf3f4067a509efbd46fd990ab47ce9a70f5a8", + "0x841d0031e22723f9328dd993805abd13e0c99b0f59435d2426246996b08d00ce73ab906f66c4eab423473b409e972ce0", + "0x91cd33bc2628d096269b23faf47ee15e14cb7fdc6a8e3a98b55e1031ea0b68d10ba30d97e660f7e967d24436d40fad73", + "0x9705e7c93f0cdfaa3fa96821f830fe53402ad0806036cd1b48adc2f022d8e781c1fbdab60215ce85c653203d98426da3", + "0xa95d42aa7ef1962520845aa3688f2752d291926f7b0d73ea2ee24f0612c03b43f2b0fe3c9a9a99620ffc8d487b981bc2", + "0xa04a961cdccfa4b7ef83ced17ab221d6a043b2c718a0d6cc8e6f798507a31f10bf70361f70a049bc8058303fa7f96864", + "0xa763e78995d55cd21cdb7ef75d9642d6e1c72453945e346ab6690c20a4e1eeec61bb848ef830ae4b56182535e3c71d8f", + "0xa070d20acce42518ece322c9db096f16aed620303a39d8d5735a0df6e70fbeceb940e8d9f5cc38f3314b2240394ec47b", + "0xb5f5f4c5c94944ecc804df6ab8687d64e27d988cbfeae1ba7394e0f6adbf778c5881ead7cd8082dd7d68542b9bb4ecd5", + "0xac3a1fa3b4a2f30ea7e0a114cdc479eb51773573804c2a158d603ad9902ae8e39ffe95df09c0d871725a5d7f9ba71a57", + "0xb55165477fe15b6abd2d0f4fddaa9c411710dcc4dd712daba3d30e303c9a3ee5415c256f9dc917ecf18c725b4dbab059", + "0xb8a915a3c685c2d4728f6931c4d29487cad764c5ce23c25e64b1a3259ac27235e41b23bfe7ae982921b4cb84463097df", + "0x8017d0c57419e414cbba504368723e751ef990cc6f05dad7b3c2de6360adc774ad95512875ab8337d110bf39a42026fa", + "0xa9a25ca87006e8a9203cbb78a93f50a36694aa4aad468b8d80d3feff9194455ca559fcc63838128a0ab75ad78c07c13a", + "0x864522a9af9857de9814e61383bebad1ba9a881696925a0ea6bfc6eff520d42c506bbe5685a9946ed710e889765be4a0", + "0xac0b4ffdb5ae08e586a9cdb98f9fe56f4712af3a97065e89e274feacfb52b53c839565aee93c4cfaaccfe51432c4fab0", + "0x80ecb7cc963e677ccaddbe3320831dd6ee41209acf4ed41b16dc4817121a3d86a1aac9c4db3d8c08a55d28257088af32", + "0x82416b74b1551d484250d85bb151fabb67e29cce93d516125533df585bc80779ab057ea6992801a3d7d5c6dcff87a018", + "0x96f0dea40ca61cefbee41c4e1fe9a7d81fbe1f49bb153d083ab70f5d0488a1f717fd28cedcf6aa18d07cce2c62801898", + "0xb4647c1b823516880f60d20c5cc38c7f80b363c19d191e8992226799718ee26b522a12ecb66556ed3d483aa4824f3326", + "0xb8f51019b2aa575f8476e03dcadf86cc8391f007e5f922c2a36b2daa63f5a503646a468990cd5c65148d323942193051", + "0xb4bcbe6eb666a206e2ea2f877912c1d3b5bdbd08a989fc4490eb06013e1a69ad1ba08bcdac048bf29192312be399077b", + "0x824499e89701036037571761e977654d2760b8ce21f184f2879fda55d3cda1e7a95306b8abacf1caa79d3cc075b9d27f", + "0x8bf8c27ad5140dde7f3d2280fd4cc6b29ab76537e8d7aa7011a9d2796ee3e56e9a60c27b5c2da6c5e14fc866301dc195", + "0xb144778921742418053cb3c70516c63162c187f00db2062193bb2c14031075dbe055d020cde761b26e8c58d0ea6df2c1", + "0xa10b5d8c260b159043b020d5dd62b3467df2671afea6d480ca9087b7e60ed170c82b121819d088315902842d66c8fb45", + "0x8086fb88e6260e9a9c42e9560fde76315ff5e5680ec7140f2a18438f15bc2cc7d7d43bfb5880b180b738c20a834e6134", + "0xafcfb6903ef13e493a1f7308675582f15af0403b6553e8c37afb8b2808ad21b88b347dc139464367dc260df075fea1ad", + "0xacefc5c6f8a1e7c24d7b41e0fc7f6f3dc0ede6cf3115ffb9a6e54b1d954cbca9bda8ad7a084be9be245a1b8e9770d141", + "0x8ecba560ac94905e19ce8d9c7af217bf0a145d8c8bd38e2db82f5e94cc3f2f26f55819176376b51f154b4aab22056059", + "0x806893a62e38c941a7dd6f249c83af16596f69877cc737d8f73f6b8cd93cbc01177a7a276b2b8c6b0e5f2ad864db5994", + "0x87f9c3b7ed01f54368aca6dbcf2f6e06bff96e183c4b2c65f8baa23b377988863a0a125d5cdd41a072da8462ced4c070", + "0x95418ad13b734b6f0d33822d9912c4c49b558f68d08c1b34a0127fcfa666bcae8e6fda8832d2c75bb9170794a20e4d7c", + "0xa772470262186e7b94239ba921b29f2412c148d6f97c4412e96d21e55f3be73f992f1ad53c71008f0558ec3f84e2b5a7", + "0x93d61bf88b192d6825cf4e1120af1c17aa0f994d158b405e25437eaeefae049f7b721a206e7cc8a04fdc29d3c42580a1", + "0xafd7efce6b36813082eb98257aae22a4c1ae97d51cac7ea9c852d4a66d05ef2732116137d8432e3f117119725a817d24", + "0xb98a1eeec2b19fecc8378c876d73645aa52fb99e4819903735b2c7a885b242787a30d1269a04bfb8573d72d9bbc5f0f0", + "0xafb43348498c38b0fa5f971b8cdd3a62c844f0eb52bc33daf2f67850af0880fce84ecfb96201b308d9e6168a0d443ae3", + "0xaabe2328ddf90989b15e409b91ef055cb02757d34987849ae6d60bef2c902bf8251ed21ab30acf39e500d1d511e90845", + "0xb8c9a837d20c3b53e6f578e4a257bb7ef8fc43178614ec2a154915b267ad2be135981d01ed2ee1b5fbd9d9bb27f0800a", + "0x810fa3ba3e96d843e3bafd3f2995727f223d3567c8ba77d684c993ba1773c66551eb5009897c51b3fe9b37196984f5ec", + "0xb6c7332e3b14813641e7272d4f69ecc7e09081df0037d6dab97ce13a9e58510f5c930d300633f208181d9205c5534001", + "0xaba4c02d8d57f2c92d5bc765885849e9ff8393d6554f5e5f3e907e5bfac041193a0d8716d7861104a4295d5a03c36b03", + "0x902116ce70d0a079ac190321c1f48701318c05f8e69ee09694754885d33a835a849cafe56f499a2f49f6cda413ddf9a7", + "0x8e827ccca1dd4cd21707140d10703177d722be0bbe5cac578db26f1ef8ad2909103af3c601a53795435b27bf95d0c9ed", + "0x8271624ff736b7b238e43943c81de80a1612207d32036d820c11fc830c737972ccc9c60d3c2359922b06652311e3c994", + "0x852c473150c91912d58ecb05769222fa18312800c3f56605ad29eec9e2d8667b0b81c379048d3d29100ed2773bb1f3c5", + "0x99ebfc3b8f9f98249f4d37a0023149ed85edd7a5abe062c8fb30c8c84555258b998bdcdd1d400bc0fa2a4aaa8b224466", + "0xa5d76acbb76741ce85be0e655b99baa04f7f587347947c0a30d27f8a49ae78cce06e1cde770a8b618d3db402be1c0c4b", + "0x87fab853638d7a29a20f3ba2b1a7919d023e9415bfa78ebb27973d8cbc7626f584dc5665d2e7ad71f1d760eba9700d88", + "0x83536c8456f306045a5f38ae4be2e350878fa7e164ea408d467f8c3bc4c2ee396bd5868008c089183868e4dfad7aa50b", + "0x8e0f8a8e8753e077dac95848212aeffd51c23d9b6d611df8b102f654089401954413ecbedc6367561ca599512ae5dda7", + "0x95cdf69c831ab2fad6c2535ede9c07e663d2ddccc936b64e0843d2df2a7b1c31f1759c3c20f1e7a57b1c8f0dbb21b540", + "0xb491976970fe091995b2ed86d629126523ccf3e9daf8145302faca71b5a71a5da92e0e05b62d7139d3efac5c4e367584", + "0x9438e036c836a990c5e17af3d78367a75b23c37f807228362b4d13e3ddcb9e431348a7b552d09d11a2e9680704a4514f", + "0xb8ef8de6ce6369a8851cd36db0ccf00a85077e816c14c4e601f533330af9e3acf0743a95d28962ed8bfcfc2520ef3cfe", + "0xa84f5d155ed08b9054eecb15f689ba81e44589e6e7207a99790c598962837ca99ec12344105b16641ca91165672f7153", + "0x811f548ef3a2e6a654f7dcb28ac9378de9515ed61e5a428515d9594a83e80b35c60f96a5cf743e6fab0d3cb526149f49", + "0x877c33de20d4ed31674a671ba3e8f01a316581e32503136a70c9c15bf0b7cb7b1cba6cd4eb641fad165fb3c3c6c235fd", + "0xa49342eacd1ec1148b8df1e253b1c015f603c39de11fa0a364ccb86ea32d69c34fd7aa6980a1fadcd8e785a57fa46f60", + "0xa5085eed3a95f9d4b1269182ea1e0d719b7809bf5009096557a0674bde4201b0ddc1f0f16a908fc468846b3721748ce3", + "0x93cb5970076522c5a0483693f6a35ffd4ea2aa7aaf3730c4eccd6af6d1bebfc1122fc4c67d53898ae13eb6db647be7e2", + "0x99c05fedf40ac4726ed585d7c1544c6e79619a0d3fb6bda75a08c7f3c0008e8d5e19ed4da48de3216135f34a15eba17c", + "0xb143edb113dec9f1e5105d4a93fbe502b859e587640d3db2f628c09a17060e6aec9e900e2c8c411cda99bc301ff96625", + "0x8739b7a9e2b4bc1831e7f04517771bc7cde683a5e74e052542517f8375a2f64e53e0d5ac925ef722327e7bb195b4d1d9", + "0x92fc68f595853ee8683930751789b799f397135d002eda244fe63ecef2754e15849edde3ba2f0cc8b865c9777230b712", + "0x9200c2a629b9144d88a61151b661b6c4256cc5dadfd1e59a8ce17a013c2d8f7e754aabe61663c3b30f1bc47784c1f8cf", + "0xa610447cb7ca6eea53a6ff1f5fe562377dcb7f4aaa7300f755a4f5e8eba61e863c51dc2aa9a29b35525b550fbc32a0fe", + "0xa8a771b81ed0d09e0da4d79f990e58eabcd2be3a2680419502dd592783fe52f657fe55125b385c41d0ba3b9b9cf54a83", + "0x8e5863786b641ce3140fbfe37124d7ad3925472e924f814ebfc45959aaf3f61dc554a597610b5defaecc85b59a99b50f", + "0x81934f3a7f8c1ae60ec6e4f212986bcc316118c760a74155d06ce0a8c00a9b9669ec4e143ca214e1b995e41271774fd9", + "0xa8db53224f70af4d991b9aae4ffe92d2aa5b618ad9137784b55843e9f16cefbfd25ada355d308e9bbf55f6d2f7976fb3", + "0xb01c3d56a0db84dc94575f4b6ee2de4beca3230e86bed63e2066beb22768b0a8efb08ebaf8ac3dedb5fe46708b084807", + "0xad72f0f1305e37c7e6b48c272323ee883320994cb2e0d850905d6655fafc9f361389bcb9c66b3ff8d2051dbb58c8aa96", + "0xaad34277ebaed81a6ec154d16736866f95832803af28aa5625bf0461a71d02b1faba02d9d9e002be51c8356425a56867", + "0xa88d0275510f242eab11fdb0410ff6e1b9d7a3cbd3658333539815f1b450a84816e6613d15aa8a8eb15d87cdad4b27a2", + "0x80b927f93ccf79dcf5c5b20bcf5a7d91d7a17bc0401bb7cc9b53a6797feac31026eb114257621f5a64a52876e4474cc1", + "0xb32a78480edd9ff6ba2f1eec4088db5d6ceb2d62d7e59e904ecaef7bb4a2e983a4588e51692b3be76e6ffbc0b5f911a5", + "0xac0bd594fb85a8d4fc26d6df0fa81f11919401f1ecf9168b891ec7f061a2d9368af99f7fd8d9b43b2ce361e7b8482159", + "0xb797a3442fc3b44f41baefd30346f9ac7f96e770d010d53c146ce74ce424c10fb62758b7e108b8abfdc5fafd89d745cb", + "0x89b5991a67db90024ddd844e5e1a03ef9b943ad54194ae0a97df775dde1addf31561874f4e40fbc37a896630f3bbda58", + "0xaf54167ac1f954d10131d44a8e0045df00d581dd9e93596a28d157543fbe5fb25d213806ed7fb3cba6b8f5b5423562db", + "0x907d6096c7c8c087d1808dd995d5d2b9169b3768c3f433475b50c2e2bd4b082f4d543afd8b0b0ddffa9c66222a72d51d", + "0x94451fc7fea3c5a89ba701004a9693bab555cb622caf0896b678faba040409fdfd14a978979038b2a81e8f0abc4994d2", + "0xa854b22c9056a3a24ab164a53e5c5cf388616c33e67d8ebb4590cb16b2e7d88b54b1393c93760d154208b5ca822dc68f", + "0xb365ac9c2bfe409b710928c646ea2fb15b28557e0f089d39878e365589b9d1c34baf5566d20bb28b33bb60fa133f6eff", + "0xaf2ebe1b7d073d03e3d98bc61af83bf26f7a8c130fd607aa92b75db22d14d016481b8aa231e2c9757695f55b7224a27f", + "0x9803abf45be5271e2f3164c328d449efc4b8fc92dfc1225d38e09630909fe92e90a5c77618daa5f592d23fc3ad667094", + "0x94f134acd0007c623fb7934bcb65ef853313eb283a889a3ffa79a37a5c8f3665f3d5b4876bc66223610c21dc9b919d37", + "0xaf5621707e0938320b15ddfc87584ab325fbdfd85c30efea36f8f9bd0707d7ec12c344eff3ec21761189518d192df035", + "0xa386420b738aba2d7145eb4cba6d643d96bda3f2ca55bb11980b318d43b289d55a108f4bc23a9606fb0bccdeb3b3bb30", + "0xb7805ebe4f1a4df414003dc10bca805f2ab86ca75820012653e8f9b79c405196b0e2cab099f2ab953d67f0d60d31a0f9", + "0xb0e81c63b764d7dfbe3f3fddc9905aef50f3633e5d6a4af6b340495124abedcff5700dfd1577bbbed7b6bf97d02719cb", + "0x8bca7cdf730cf56c7b2c8a2c4879d61361a6e1dba5a3681a1a16c17a56e168ace0e99cf0d15826a1f5e67e6b8a8a049a", + "0xa6ebecab0b72a49dfd01d69fa37a7f74d34fb1d4fef0aa10e3d6fceb9eccd671225c230af89f6eb514250e41a5f91f52", + "0x9569341fded45d19f00bcf3cbf3f20eb2b4d82ef92aba3c8abd95866398438a2387437e580d8b646f17cf6fde8c5af23", + "0x9524a7aa8e97a31a6958439c5f3339b19370f03e86b89b1d02d87e4887309dbbe9a3a8d2befd3b7ed5143c8da7e0a8ad", + "0xb39966e3076482079de0678477df98578377a094054960ee518ef99504d6851f8bcd3203e8da5e1d4f6f96776e1fe6eb", + "0xa3f5ddec412a5bec0ce15e3bcb41c6214c2b05d4e9135a0d33c8e50a78eaba71e0a5a6ea8b45854dec5c2ed300971fc2", + "0xa1f5e3fa558a9e89318ca87978492f0fb4f6e54a9735c1b8d2ecfb1d1c57194ded6e0dd82d077b2d54251f3bee1279e1", + "0xb1a09911ad3864678f7be79a9c3c3eb5c84a0a45f8dcb52c67148f43439aeaaa9fd3ed3471276b7e588b49d6ebe3033a", + "0x96511b860b07c8a5ed773f36d4aa9d02fb5e7882753bf56303595bcb57e37ccc60288887eb83bef08c657ec261a021a2", + "0x85d6e742e2fb16a7b0ba0df64bc2c0dbff9549be691f46a6669bca05e89c884af16822b85faefefb604ec48c8705a309", + "0xa58ee91bb556d43cf01f1398c5811f76dc0f11efdd569eed9ef178b3b0715e122060ec8f945b4dbf6eebfa2b90af6fa6", + "0x9862267a1311c385956b977c9aa08548c28d758d7ba82d43dbc3d0a0fd1b7a221d39e8399997fea9014ac509ff510ac4", + "0xb0fc7836369a3e4411d34792d6bd5617c14f61d9bba023dda64e89dc5fb0f423244e9b48ee64869258931daa9753a56f", + "0x97ad839a6302c410a47e245df84c01fb9c4dfef86751af3f9340e86ff8fc3cd52fa5ff0b9a0bd1d9f453e02ca80658a6", + "0x9305d9b4095258e79744338683fd93f9e657367b3ab32d78080e51d54eec331edbc224fad5093ebf8ee4bd4286757eb8", + "0x8ab95c94072b853d1603fdd0a43b30db617d13c1d1255b99075198e1947bfa5f59aed2b1147548a1b5e986cd9173d15c", + "0x85522c9576fd9763e32af8495ae3928ed7116fb70d4378448926bc9790e8a8d08f98cf47648d7da1b6e40d6a210c7924", + "0x8415ea4ab69d779ebd42d0fe0c6aef531d6a465a5739e429b1fcf433ec45aa8296c527e965a20f0ec9f340c9273ea3cf", + "0x96a3f68323d1c94e73d5938a18a377af31b782f56212de3f489d22bc289cf24793a95b37f1d6776edf88114b5c1fa695", + "0x8e1a94bec053ed378e524b6685152d2b52d428266f2b6eadd4bcb7c4e162ed21ab3e1364879673442ee2162635b7a4d8", + "0xa29eac6f0829791c728d71abc49569df95a4446ecbfc534b39f24f56c88fe70301838dfc1c19751e7f3c5c1b8c6af6a0", + "0x8f2cc8071eb56dffb70bda6dd433b556221dc8bba21c53353c865f00e7d4d86c9e39f119ea9a8a12ef583e9a55d9a6b6", + "0xb40d21390bb813ab7b70a010dff64c57178418c62685761784e37d327ba3cb9ef62df87ecb84277c325a637fe3709732", + "0x9180b8a718b971fd27bc82c8582d19c4b4f012453e8c0ffeeeffe745581fc6c07875ab28be3af3fa3896d19f0c89ac5b", + "0x8952377d8e80a85cf67d6b45499f3bad5fd452ea7bcd99efc1b066c4720d8e5bff1214cea90fd1f972a7f0baac3d29be", + "0x9616add009067ed135295fb74d5b223b006b312bf14663e547a0d306694ff3a8a7bb9cfc466986707192a26c0bce599f", + "0xb56f35d164c24b557dbcbc8a4bfa681ec916f8741ffcb27fb389c164f4e3ed2be325210ef5bdaeae7a172ca9599ab442", + "0x8105c7f3e4d30a29151849673853b457c1885c186c132d0a98e63096c3774bc9deb956cf957367e633d0913680bda307", + "0x8df5dcbefbfb4810ae3a413ca6b4bf08619ca53cd50eb1dde2a1c035efffc7b7ac7dff18d403253fd80104bd83dc029e", + "0xa18e7796054a340ef826c4d6b5a117b80927afaf2ebd547794c400204ae2caf277692e2eabb55bc2f620763c9e9da66d", + "0x99510799025e3e5e8fbf06dedb14c060c6548ba2bda824f687d3999dc395e794b1fb6514b9013f3892b6cf65cb0d65aa", + "0xa43304a067bede5f347775d5811cf65a6380a8d552a652a0063580b5c5ef12a0867a39c7912fa219e184f4538eba1251", + "0xb1f5bbf7c4756877b87bb42163ac570e08c6667c4528bf68b5976680e19beeff7c5effd17009b0718797077e2955457a", + "0x8c5590df96ec22179a4e8786de41beb44f987a1dcc508eb341eecbc0b39236fdfad47f108f852e87179ccf4e10091e59", + "0x989f42380ae904b982f85d0c6186c1aef5d6bcba29bcfbb658e811b587eb2749c65c6e4a8cc6409c229a107499a4f5d7", + "0xa464b75f95d01e5655b54730334f443c8ff27c3cb79ec7af4b2f9da3c2039c609908cd128572e1fd0552eb597e8cef8d", + "0x839ba65cffcd24cfffa7ab3b21faabe3c66d4c06324f07b2729c92f15cad34e474b0f0ddb16cd652870b26a756b731d3", + "0xb42a562805c661a50f5dea63108002c0f27c0da113da6a9864c9feb5552225417c0356c4209e8e012d9bcc9d182c7611", + "0x8875650cec543a7bf02ea4f2848a61d167a66c91ffaefe31a9e38dc8511c6a25bde431007eefe27a62af3655aca208dc", + "0x941c38e533ce4a673a3830845b56786585e5fe49c427f2e5c279fc6db08530c8f91db3e6c7822ec6bb4f956940052d18", + "0x960a6c36542876174d3fbc1505413e29f053ed87b8d38fef3af180491c7eff25200b45dd5fe5d4d8e63c7e8c9c00f4c8", + "0xa6edec90b5d25350e2f5f0518777634f9e661ec9d30674cf5b156c4801746d62517751d90074830ac0f4b09911c262f1", + "0x845a31006c680ee6a0cc41d3dc6c0c95d833fcf426f2e7c573fa15b2c4c641fbd6fe5ebb0e23720cc3467d6ee1d80dc4", + "0xa7309fc41203cb99382e8193a1dcf03ac190a7ce04835304eb7e341d78634e83ea47cb15b885601956736d04cdfcaa01", + "0xb4ad08aee48e176bda390b7d9acf2f8d5eb008f30d20994707b757dc6a3974b2902d29cd9b4d85e032810ad25ac49e97", + "0x958607569dc28c075e658cd4ae3927055c6bc456eef6212a6fea8205e48ed8777a8064f584cda38fe5639c371e2e7fba", + "0xb95d3b5aaf54ffca11f4be8d57f76e14afdb20afc859dc7c7471e0b42031e8f3d461b726ecb979bdb2f353498dfe95ea", + "0x90a799a8ce73387599babf6b7da12767c0591cadd36c20a7990e7c05ea1aa2b9645654ec65308ee008816623a2757a6a", + "0xa3dbad2ef060ae0bb7b02eaa4a13594f3f900450faa1854fc09620b01ac94ab896321dfb1157cf2374c27e5718e8026a", + "0x980a47d27416ac39c7c3a0ebe50c492f8c776ea1de44d5159ac7d889b6d554357f0a77f0e5d9d0ff41aae4369eba1fc2", + "0x85cf2a8cca93e00da459e3cecd22c342d697eee13c74d5851634844fc215f60053cf84b0e03c327cb395f48d1c71a8a4", + "0x8618190972086ebb0c4c1b4a6c94421a13f378bc961cc8267a301de7390c5e73c3333864b3b7696d81148f9d4843fd02", + "0x941ff3011462f9b5bf97d8cbdb0b6f5d37a1b1295b622f5485b7d69f2cb2bcabc83630dae427f0259d0d9539a77d8424", + "0xb6cc8588191e00680ee6c3339bd0f0a17ad8fd7f4be57d5d7075bede0ea593a19e67f3d7c1a20114894ee5bfcab71063", + "0x803be9c68c91b42b68e1f55e58917a477a9a6265e679ca44ee30d3eb92453f8c89c64eafc04c970d6831edd33d066902", + "0xb68a2208e0c587b5c31b5f6cb32d3e6058a9642e2d9855da4f85566e1412db528475892060bb932c55b3a80877ad7b4a", + "0x993fa7d8447407af0fbcd9e6d77f815fa5233ab00674efbcf74a1f51c37481445ae291cc7b76db7c178f9cb0e570e0fc", + "0xb86b4266e719d29c043d7ec091547aa6f65bbf2d8d831d1515957c5c06513b72aa82113e9645ad38a7bc3f5383504fa6", + "0xb11a833a49fa138db46b25ff8cdda665295226595bc212c0931b4931d0a55c99da972c12b4ef753f7e37c6332356e350", + "0x8bacdac310e1e49660359d0a7a17fe3d334eb820e61ae25e84cb52f863a2f74cbe89c2e9fc3283745d93a99b79132354", + "0xa961cf5654c46a1a22c29baf7a4e77837a26b7f138f410e9d1883480ed5fa42411d522aba32040b577046c11f007388e", + "0xae15487312f84ed6265e4c28327d24a8a0f4d2d17d4a5b7c29b974139cf93223435aaebe3af918f5b4bb20911799715f", + "0x8ee87877702a79aef923ab970db6fa81561b3c07d5bf1a072af0a7bad765b4cbaec910afe1a91703feacc7822fa38a94", + "0xae7d915eb9fc928b65a29d6edbc75682d08584d0014f7bcf17d59118421ae07d26a02137d1e4de6938bcd1ab8ef48fad", + "0xb9a8011eb5fcea766907029bf743b45262db3e49d24f84503687e838651ed11cb64c66281e20a0ae9f6aa51acc552263", + "0x8a19a09854e627cb95750d83c20c67442b66b35896a476358f993ba9ac114d32c59c1b3d0b8787ee3224cf3888b56c64", + "0x8e2a8f0f04562820dc8e7da681d5cad9fe2e85dd11c785fb6fba6786c57a857e0b3bd838fb849b0376c34ce1665e4837", + "0x94e86e9fe6addfe2c3ee3a547267ed921f4230d877a85bb4442c2d9350c2fa9a9c54e6fe662de82d1a2407e4ab1691c2", + "0x9198be7f1d413c5029b0e1c617bcbc082d21abe2c60ec8ce9b54ca1a85d3dba637b72fda39dae0c0ae40d047eab9f55a", + "0xa45a19f11fbbb531a704badbb813ed8088ab827c884ee4e4ebf363fa1132ff7cfa9d28be9c85b143e4f7cdbc94e7cf1a", + "0xa7f57d71940f0edbd29ed8473d0149cae71d921dd15d1ff589774003e816b54b24de2620871108cec1ab9fa956ad6ce6", + "0xae68dc4ba5067e825d46d2c7c67f1009ceb49d68e8d3e4c57f4bcd299eb2de3575d42ea45e8722f8f28497a6e14a1cfe", + "0x8d5aefef9f60cb27c1db2c649221204dda48bb9bf8bf48f965741da051340e8e4cab88b9d15c69f3f84f4c854709f48a", + "0x9850f3b30045e927ad3ec4123a32ed2eb4c911f572b6abb79121873f91016f0d80268de8b12e2093a4904f6e6cab7642", + "0xb7a57b21d13121907ee28c5c1f80ee2e3e83a3135a8101e933cf57171209a96173ff5037f5af606e9fd6d066de6ed693", + "0x901aa96deb26cda5d9321190ae6624d357a41729d72ef1abfd71bebf6139af6d690798daba53b7bc5923462115ff748a", + "0xa2812231e92c1ce74d4f5ac3ab6698520288db6a38398bb38a914ac9326519580af17ae3e27cde26607e698294022c81", + "0x93ffd3265fddb63724dfde261d1f9e22f15ecf39df28e4d89e9fea03221e8e88b5dd9b77628bacaa783c6f91802d47cc", + "0x99f31f66eaaa551749ad91d48a0d4e3ff4d82ef0e8b28f3184c54e852422ba1bdafd53b1e753f3a070f3b55f3c23b6a2", + "0x9344239d13fde08f98cb48f1f87d34cf6abe8faecd0b682955382a975e6eed64e863fa19043290c0736261622e00045c", + "0xb948f1b5ab755f3f5f36af27d94f503b070696d793b1240c1bdfd2e8e56890d69e6904688b5f8ff5a4bdf5a6abfe195f", + "0xa50c5869ca5d2b40722c056a32f918d47e0b65ca9d7863ca7d2fb4a7b64fe523fe9365cf0573733ceaadebf20b48fff8", + "0x87188213c8b5c268dc2b6da413f0501c95749e953791b727450af3e43714149c115b596b33b63a2f006a1a271b87efd0", + "0x83dbbb2fda7e287288011764a00b8357753a6a44794cc8245a2275237f11affdc38977214e463ad67aec032f3dfa37e9", + "0xac2643b14ece79dcb2e289c96776a47e2bebd40dd6dc74fd035df5bb727b5596f40e3dd2d2202141e69b0993717ede09", + "0x900a66418b082a24c6348d8644ddb1817df5b25cb33044a519ef47cc8e1f7f1e38d2465b7b96d32ed472d2d17f8414c6", + "0x92819a1fa48ab4902939bb72a0a4e6143c058ea42b42f9bc6cea5df45f49724e2530daf3fc4f097cceefa2a8b9db0076", + "0x978999b7d8aa3f28a04076f74d11c41ef9c89fdfe514936c4238e0f13c38ec97e51a5c078ebc6409e517bfe7ccb42630", + "0xaf2fcfc6b87967567e8b8a13a4ed914478185705724e56ce68fb2df6d1576a0cf34a61e880997a0d35dc2c3276ff7501", + "0x94a9d122f2f06ef709fd8016fd4b712d88052245a65a301f5f177ce22992f74ad05552b1f1af4e70d1eac62cef309752", + "0xb0b963ebcbbee847ab8ae740478544350b3ac7e86887e4dfb2299ee5096247cd2b03c1de74c774d9bde94ae2ee2dcd59", + "0xad61d3a2edf7c7533a04964b97499503fd8374ca64286dba80465e68fe932e96749b476f458c6fc57cb1a7ca85764d11", + "0x98d6dc78502d19eb9f921225475a6ebcc7b44f01a2df6f55ccf6908d65b27af1891be2a37735f0315b6e0f1576c1f8d8", + "0xb6224b605028c6673a536cc8ff9aeb94e7a22e686fda82cf16068d326469172f511219b68b2b3affb7933af0c1f80d07", + "0xb04b597b7760cf5dcf411ef896d1661e6d5b0db3257ac2cf64b20b60c6cc18fa10523bb958a48d010b55bac7b02ab3b1", + "0x827de3f03edfbde08570b72de6662c8bfa499b066a0a27ebad9b481c273097d17a5a0a67f01553da5392ec3f149b2a78", + "0x8508abbf6d3739a16b9165caf0f95afb3b3ac1b8c38d6d374cf0c91296e2c1809a99772492b539cda184510bce8a0271", + "0x99b1bc2021e63b561fe44ddd0af81fcc8627a91bfeecbbc989b642bc859abc0c8d636399701aad7bbaf6a385d5f27d61", + "0xb1fc0f052fae038a2e3de3b3a96b0a1024b009de8457b8b3adb2d315ae68a89af905720108a30038e5ab8d0d97087785", + "0x8bfa019391c9627e8e5f05c213db625f0f1e51ec68816455f876c7e55b8f17a4f13e5aae9e3fb9e1cf920b1402ee2b40", + "0x951da434da4b20d949b509ceeba02e24da7ed2da964c2fcdf426ec787779c696b385822c7dbea4df3e4a35921f1e912c", + "0xae4d5c872156061ce9195ac640190d8d71dd406055ee43ffa6f9893eb24b870075b74c94d65bc1d5a07a6573282b5520", + "0x97d75b144471bf580099dd6842b823ec0e6c1fb86dd0da0db195e65524129ea8b6fd4a7a9bbf37146269e938a6956596", + "0x989e71734f8119103586dc9a3c5f5033ddc815a21018b34c1f876cdfc112efa868d5751bf6419323e4e59fa6a03ece1c", + "0x817224d9359f5da6f2158c2c7bf9165501424f063e67ba9859a07ab72ee2ee62eb00ca6da821cfa19065c3282ca72c74", + "0x82c24550ed512a0d53fc56f64cc36b553823ae8766d75d772dacf038c460f16f108f87a39ceef7c66389790f799dbab3", + "0xacb0d205566bacc87bbe2e25d10793f63f7a1f27fd9e58f4f653ceae3ffeba511eaf658e068fad289eeb28f9edbeb35b", + "0xab357160c08a18319510a571eafff154298ce1020de8e1dc6138a09fcb0fcbcdd8359f7e9386bda00b7b9cdea745ffdc", + "0xa141b2d7a82f5005eaea7ae7d112c6788b9b95121e5b70b7168d971812f3381de8b0082ac1f0a82c7d365922ebd2d26a", + "0xb61cff7b4c49d010e133319fb828eb900f8a7e55114fc86b39c261a339c74f630e1a7d7e1350244ada566a0ff3d46c4b", + "0x982f2c85f83e852022998ff91bafbb6ff093ef22cf9d5063e083a48b29175ccbd51b9c6557151409e439096300981a6c", + "0x8fe9f7092ffb0b69862c8e972fb1ecf54308c96d41354ed0569638bb0364f1749838d6d32051fff1599112978c6e229c", + "0xa0b0822f15f652ce7962a4f130104b97bf9529797c13d6bd8e24701c213cc37f18157bd07f3d0f3eae6b7cd1cb40401f", + "0x960188cc0b4f908633a6840963a6fa2205fc42c511c6c309685234911c5304ef4c304e3ae9c9c69daa2fb6a73560c256", + "0xa4f59473a037077181a0a62f1856ec271028546ca9452b45cedfcb229d0f4d1aabfc13062b07e536cc8a0d4b113156a2", + "0xb06a2106d031a45a494adec0881cb2f82275dff9dcdd2bc16807e76f3bec28a6734edd3d54f0be8199799a78cd6228ad", + "0xada27fa4e90a086240c9164544d2528621a415a5497badb79f8019dc3dce4d12eb6b599597e47ec6ac39c81efda43520", + "0xa5dd379922549a956033e3d51a986a4b1508e575042b8eaa1df007aa77cf0b8c2ab23212f9c075702788fa9c53696133", + "0xa5ab076fa2e1c5c51f3ae101afdd596ad9d106bba7882b359c43d8548b64f528af19afa76cd6f40da1e6c5fca4def3fa", + "0x8a07e8f912a38d94309f317c32068e87f68f51bdfa082d96026f5f5f8a2211621f8a3856dda8069386bf15fb2d28c18f", + "0x918454b6bb8e44a2afa144695ba8d48ae08d0cdfef4ad078f67709eddf3bb31191e8b006f04e82ea45a54715ef4d5817", + "0x872231b9efa1cdd447b312099a5c164c560440a9441d904e70f5abfc3b2a0d16be9a01aca5e0a2599a61e19407587e3d", + "0xa984a0a3836de3d8d909c4629a2636aacb85393f6f214a2ef68860081e9db05ad608024762db0dc35e895dc00e2d4cdd", + "0xa6a230edb8518a0f49d7231bc3e0bceb5c2ac427f045819f8584ba6f3ae3d63ed107a9a62aad543d7e1fcf1f20605706", + "0xb9232d99620652a3aa7880cad0876f153ff881c4ed4c0c2e7b4ea81d5d42b70daf1a56b869d752c3743c6d4c947e6641", + "0x85808c65c485520609c9e61fa1bb67b28f4611d3608a9f7a5030ee61c3aa3c7e7dc17fff48af76b4aecee2cb0dbd22ac", + "0x93a388c83630331eca4da37ea4a97b3b453238af474817cc0a0727fd3138dcb4a22de38c04783ec829c22cb459cb4e8e", + "0x81d6c1a5f93c04e6d8e5a7e0678c1fc89a1c47a5c920bcd36180125c49fcf7c114866b90e90a165823560b19898a7c16", + "0x80e129b735dba49fa627a615d6c273119acec8e219b2f2c4373a332b5f98d66cbbdd688dfbe72a8f8bfefaccc02c50c1", + "0x97460a97ca1e1fa5ce243b81425edc0ec19b7448e93f0b55bc9785eedeeafe194a3c8b33a61a5c72990edf375f122777", + "0x87e0c31dcb736ea4604727e92dc1d9a3cf00adcff79df3546e02108355260f3dd171531c3c0f57be78d8b28058fcc8c0", + "0xb9d37e946fae5e4d65c1fbfacc8a62e445a1c9d0f882e60cca649125af303b3b23af53c81d7bac544fb7fcfc7a314665", + "0x89a7b7bdfc7e300d06a14d463e573d6296d8e66197491900cc9ae49504c4809ff6e61b758579e9091c61085ba1237b83", + "0x919878b27f3671fc78396f11531c032f3e2bd132d04cc234fa4858676b15fb1db3051c0b1db9b4fc49038216f11321ce", + "0xad7735d16ab03cbe09c029610aa625133a6daecfc990b297205b6da98eda8c136a7c50db90f426d35069708510d5ae9c", + "0xb95ac0848cd322684772119f5b682d90a66bbf9dac411d9d86d2c34844bbd944dbaf8e47aa41380455abd51687931a78", + "0x81798178cb9d8affa424f8d3be67576ba94d108a28ccc01d330c51d5a63ca45bb8ca63a2f569b5c5fe1303cecd2d777f", + "0xa9ebae46f86d3bd543c5f207ed0d1aed94b8375dc991161d7a271f01592912072e083e2daf30c146430894e37325a1b9", + "0xaa456bcfef6a21bb88181482b279df260297b3778e84594ebddbdf337e85d9e3d46ca1d0b516622fb0b103df8ec519b7", + "0xa75e29f29d38f09c879f971c11beb5368affa084313474a5ecafa2896180b9e47ea1995c2733ec46f421e395a1d9cffe", + "0x89174f79201742220ac689c403fc7b243eed4f8e3f2f8aba0bf183e6f5d4907cb55ade3e238e3623d9885f03155c4d2b", + "0x972699a4131c8ed27a2d0e2104d54a65a7ff1c450ad9da3a325c662ab26869c21b0a84d0700b98c8b5f6ce3b746873d7", + "0x82956072df0586562fda7e7738226f694e1c73518dd86e0799d2e820d7f79233667192c9236dcb27637e4c65ef19d493", + "0x92adcfb678cc2ba19c866f3f2b988fdcb4610567f3ab436cc0cb9acaf5a88414848d71133ebdbec1983e38e6190f1b5f", + "0xab95eea424f8a2cfd9fb1c78bb724e5b1d71a0d0d1e4217c5d0f98b0d8bbd3f8400a2002abc0a0e4576d1f93f46fefad", + "0xb199842d9141ad169f35cc7ff782b274cbaa645fdb727761e0a89edbf0d781a15f8218b4bf4eead326f2903dd88a9cc1", + "0x820b4fc2b63a9fda7964acf5caf19a2fc4965007cb6d6b511fcafcb1f71c3f673a1c0791d3f86e3a9a1eb6955b191cc0", + "0xb7a0f0e811222c91e3df98ff7f286b750bc3b20d2083966d713a84a2281744199e664879401e77470d44e5a90f3e5181", + "0x87a316fb213f4c5e30c5e3face049db66be4f28821bd96034714ec23d3e97849d7b301930f90a4323c7ccf53de23050c", + "0xa64542a1261a6ed3d720c2c3a802303aad8c4c110c95d0f12e05c1065e66f42da494792b6bfc5b9272363f3b1d457f58", + "0xa313252df653e29c672cbcfd2d4f775089cb77be1077381cf4dc9533790e88af6cedc8a119158e7da5bf6806ad9b91a1", + "0xa277f899f99edb8791889d0817ea6a96c24a61acfda3ad8c3379e7c62b9d4facc4b965020b588651672fd261a77f1bfc", + "0xa44800a3bb192066fa17a3f29029a23697240467053b5aa49b9839fb9b9b8b12bcdcbfc557f024b61f4f51a9aacdefcb", + "0xa34ae450a324fe8a3c25a4d653a654f9580ed56bbea213b8096987bbad0f5701d809a17076435e18017fea4d69f414bc", + "0x91894fb94cd4c1dd2ceaf9c53a7020c5799ba1217cf2d251ea5bc91ed26e1159dd758e98282ebe35a0395ef9f1ed15a0", + "0x85ea7fd5e10c7b659df5289b2978b2c89e244f269e061b9a15fcab7983fc1962b63546e82d5731c97ec74b6804be63ef", + "0x81d13153baebb2ef672b5bdb069d3cd669ce0be96b742c94e04038f689ff92a61376341366b286eee6bf3ae85156f694", + "0xade1e92722c2ffa85865d2426fb3d1654a16477d3abf580cfc45ea4b92d5668afc9d09275d3b79283e13e6b39e47424d", + "0x990a173d857d3ba81ff3789b931bfc9f5609cde0169b7f055fa3cb56451748d593d62d46ba33f80f9cafffe02b68dd14", + "0x863b2de04e89936c9a4a2b40380f42f20aefbae18d03750fd816c658aee9c4a03df7b12121f795c85d01f415baaeaa59", + "0x94981369e120265aed40910eebc37eded481e90f4596b8d57c3bec790ab7f929784bd33ddd05b7870aad6c02e869603b", + "0xb36c6f68fed6e6c85f1f4a162485f24817f2843ec5cbee45a1ebfa367d44892e464949c6669f7972dc7167af08d55d25", + "0x8eb967a495a38130ea28711580b7e61bcd1d051cd9e4f2dbf62f1380bd86e0d60e978d72f6f31e909eb97b3b9a2b867c", + "0x8e7eb8364f384a9161e81d3f1d52ceca9b65536ae49cc35b48c3e2236322ba4ae9973e0840802d9fa4f4d82ea833544f", + "0xb40e942b8fa5336910ff0098347df716bff9d1fa236a1950c16eeb966b3bc1a50b8f7b0980469d42e75ae13ced53cead", + "0xa25d92d7f70cf6a88ff317cfec071e13774516da664f5fac0d4ecaa65b8bf4eb87a64a4d5ef2bd97dfae98d388dbf5cc", + "0x93672d8607d4143a8f7894f1dcca83fb84906dc8d6dd7dd063bb0049cfc20c1efd933e06ca7bd03ea4cb5a5037990bfe", + "0xaf44983d5fc8cceee0551ef934e6e653f2d3efa385e5c8a27a272463a6f333e290378cc307c2b664eb923c78994e706e", + "0x81f9c43582cb42db3900747eb49ec94edb2284999a499d1527f03315fd330e5a509afa3bff659853570e9886aab5b28b", + "0x8c52857d68d6e9672df3db2df2dbf46b516a21a0e8a18eec09a6ae13c1ef8f369d03233320dd1c2c0bbe00abfc1ea18b", + "0xb0d09a91909ab3620c183bdf1d53d43d39eb750dc7a722c661c3de3a1a5d383ad221f71bae374f8a71867505958a3f76", + "0x80986d921be3513ef69264423f351a61cb48390c1be8673aee0f089076086aaebea7ebe268fd0aa7182695606116f679", + "0x9855315a12a4b4cf80ab90b8bd13003223ba25206e52fd4fe6a409232fbed938f30120a3db23eab9c53f308bd8b9db81", + "0x8d086a14803392b7318c28f1039a17e3cfdcece8abcaca3657ec3d0ac330842098a85c0212f889fabb296dfb133ce9aa", + "0xa0294e6b9958f244d29943debf24b00b538b3da1116269b6e452bb12dc742226712fd1a15b9c88195afeb5d2415f505c", + "0xad4ac099b935589c7b8fdfdf3db332b7b82bb948e13a5beb121ebd7db81a87d278024a1434bcf0115c54ca5109585c3d", + "0x91f1823657d30b59b2f627880a9a9cb530f5aca28a9fd217fe6f2f5133690dfe7ad5a897872e400512db2e788b3f7628", + "0xa00ec2d67789a7054b53f0e858a8a232706ccc29a9f3e389df7455f1a51a2e75801fd78469a13dbc25d28399ae4c6182", + "0x8c09328770ed8eb17afc6ac7ddd87bb476de18ed63cab80027234a605806895959990c47bd10d259d7f3e2ecb50074c9", + "0x9598548923ca119d6a15fd10861596601dd1dedbcccca97bb208cdc1153cf82991ea8cc17686fbaa867921065265970c", + "0xb6ec06a74d690f6545f0f0efba236e63d1fdfba54639ca2617408e185177ece28901c457d02b849fd00f1a53ae319d0a", + "0xa21d56153c7e5972ee9a319501be4faff199fdf09bb821ea9ce64aa815289676c00f105e6f00311b3a5b627091b0d0fc", + "0xb385f5ca285ff2cfe64dcaa32dcde869c28996ed091542600a0b46f65f3f5a38428cca46029ede72b6cf43e12279e3d3", + "0x8afe147b53ad99220f5ef9d763bfc91f9c20caecbcf823564236fb0e6ede49414c57d71eec4772c8715cc65a81af0047", + "0xa197813b1c65a8ea5754ef782522a57d63433ef752215ecda1e7da76b0412ee619f58d904abd2e07e0c097048b6ae1dd", + "0xb68b621bb198a763fb0634eddb93ed4b5156e59b96c88ca2246fd1aea3e6b77ed651e112ac41b30cd361fadc011d385e", + "0x95269dc787653814e0be899c95dba8cfa384f575a25e671c0806fd80816ad6797dc819d30ae06e1d0ed9cb01c3950d47", + "0xa43445036fbaa414621918d6a897d3692fdae7b2961d87e2a03741360e45ebb19fcb1703d23f1e15bb1e2babcafc56ac", + "0xb49f529975c09e436e6bc202fdc16e3fdcbe056db45178016ad6fdece9faad4446343e83aed096209690b21a6910724f", + "0x90952e5becec45b2b73719c228429a2c364991cf1d5a9d6845ae5b38018c2626f4308daa322cab1c72e0f6c621bb2b35", + "0x81f3c250a27ba14d8496a5092b145629eb2c2e6a5298438670375363f57e2798207832c8027c3e9238ad94ecdadfc4df", + "0x8b8aceace9a7b9b4317f1f01308c3904d7663856946afbcea141a1c615e21ccad06b71217413e832166e9dd915fbe098", + "0xa1dd302a02e37df15bf2f1147efe0e3c06933a5a767d2d030e1132f5c3ce6b98e216b6145eb39e1e2f74e76a83165b8d", + "0x8e181011564b17f7d787fe0e7f3c87f6b62da9083c54c74fd6c357a1f464c123c1d3d8ade3cf72475000b464b14e2be3", + "0xa1c88ccd30e934adfc5494b72655f8afe1865a84196abfb376968f22ddc07761210b6a9fb7638f1413d1b4073d430290", + "0x8e76162932346869f4618bde744647f7ab52ab498ad654bdf2a4feeb986ac6e51370841e5acbb589e38b6e7142bb3049", + "0xb9e60b737023f61479a4a8fd253ed0d2a944ea6ba0439bbc0a0d3abf09b0ad1f18d75555e4a50405470ae4990626f390", + "0x87e025558c8a0b0abd06dfc350016847ea5ced7af2d135a5c9eec9324a4858c4b21510fb0992ec52a73447f24945058e", + "0x9685d3756ce9069bf8bb716cf7d5063ebfafe37e15b137fc8c3159633c4e006ff4887ddd0ae90360767a25c3f90cba7f", + "0xa6aef86c8c0d92839f38544d91b767c582568b391071228ff5a5a6b859c87bf4f81a7d926094a4ada1993ddbd677a920", + "0xa247b45dd85ca7fbb718b328f30a03f03c84aef2c583fbdc9fcc9eb8b52b34529e8c8f535505c10598b1b4dac3d7c647", + "0x8d5724de45270ca91c94792e8584e676547d7ac1ac816a6bb9982ee854eb5df071d20545cdfd3771cd40f90e5ba04c8e", + "0x8b997fb25730d661918371bb41f2a6e899cac23f04fc5365800b75433c0a953250e15e7a98fb5ca5cc56a8cd34c20c57", + "0xa6a469c44b67ebf02196213e7a63ad0423aab9a6e54acc6fcbdbb915bc043586993454dc3cd9e4be8f27d67c1050879b", + "0x81a76d921f8ef88e774fd985e786a4a330d779b93fad7def718c014685ca0247379e2e2a007ad63ee7f729cd9ed6ce1b", + "0x8e5730070acf8371461ef301cc4523e8e672aa0e3d945d438a0e0aa6bdf8cb9c685dcf38df429037b0c8aff3955c6f5b", + "0xadf60180c99ca574191cbcc23e8d025b2f931f98ca7dfcebfc380226239b6329347100fcb8b0fcb12db108c6ad101c07", + "0x8ce0ce05e7d7160d44574011da687454dbd3c8b8290aa671731b066e2c82f8cf2d63cb8e932d78c6122ec610e44660e6", + "0x98b179f8a3d9f0d0a983c30682dd425a2ddc7803be59bd626c623c8951a5179117d1d2a68254c95c9952989877d0ee55", + "0xabb87ed86098c0c70a76e557262a494ff51a30fb193f1c1a32f8e35eafa34a43fcc07aa93a3b7a077d9e35afa07b1a3d", + "0xb787beeddfbfe36dd51ec4efd9cf83e59e84d354c3353cc9c447be53ae53d366ed1c59b686e52a92f002142c8652bfe0", + "0x8648e3c2f93d70b392443be116b48a863e4b75991bab5db656a4ef3c1e7f645e8d536771dfe4e8d1ceda3be8d32978b0", + "0x8913f281d8927f2b45fc815d0f7104631cb7f5f7278a316f1327d670d15868daadd2a64e3eb98e1f53fe7e300338cc80", + "0x91d12095cd7a88e7f57f254f02fdb1a1ab18984871dead2f107404bcf8069fe68258c4e6f6ebd2477bddf738135400bb", + "0xa40ddf7043c5d72a7246bd727b07f7fff1549f0e443d611de6f9976c37448b21664c5089c57f20105102d935ab82f27b", + "0x876784a9aff3d54faa89b2bacd3ff5862f70195d0b2edc58e8d1068b3c9074c0da1cfa23671fe12f35e33b8a329c0ccd", + "0x8a96676d56876fc85538db2e806e1cba20fd01aeb9fa3cb43ca6ca94a2c102639f65660db330e5d74a029bb72d6a0b39", + "0x8f3da353cd487c13136a85677de8cedf306faae0edec733cf4f0046f82fa4639db4745b0095ff33a9766aba50de0cbcf", + "0xab1b29f7ece686e6fa968a4815da1d64f3579fed3bc92e1f3e51cd13a3c076b6cf695ed269d373300a62463dc98a4234", + "0x9014c91d0f85aefd28436b5228c12f6353c055a9326c7efbf5e071e089e2ee7c070fcbc84c5fafc336cbb8fa6fec1ca1", + "0x8de0cf9ddc84c9b92c59b9b044387597799246b30b9f4d7626fc12c51f6e423e08ee4cbfe9289984983c1f9521c3e19d", + "0x8c171edbbbde551ec19e31b2091eb6956107dd9b1f853e1df23bff3c10a3469ac77a58335eee2b79112502e8e163f3de", + "0xa8571e113ea22b4b4fce41a094da8c70de37830ae32e62c65c2fa5ad06a9bc29e884b945e73d448c72b176d6ecebfb58", + "0x950e204e5f17112250b22ea6bb8423baf522fc0af494366f18fe0f949f51d6e6812074a80875cf1ed9c8e7420058d541", + "0x932d01fa174fdb0c366f1230cffde2571cc47485f37f23ba5a1825532190cc3b722aeb1f15aed62cf83ccae9403ba713", + "0x8afa11c0eef3c540e1e3460bc759bb2b6ea90743623f88e62950c94e370fe4fd01c22b6729beba4dcd4d581198d9358f", + "0xb5804c9d97efeff5ca94f3689b8088c62422d92a1506fd1d8d3b1b30e8a866ad0d6dad4abfa051dfc4471250cac4c5d9", + "0xa8c53dea4c665b30e51d22ca6bc1bc78aaf172b0a48e64a1d4b93439b053877ec26cb5221c55efd64fa841bbf7d5aff4", + "0xacdfa6fdd4a5acb7738cc8768f7cba84dbb95c639399b291ae8e4e63df37d2d4096900a84d2f0606bf534a9ccaa4993f", + "0xb748e530cd3afb96d879b83e89c9f1a444f54e55372ab1dcd46a0872f95ce8f49cf2363fc61be82259e04f555937ed16", + "0xa52ab60e28d69b333d597a445884d44fd2a7e1923dd60f763951e1e45f83e27a4dac745f3b9eff75977b3280e132c15d", + "0xb9e72b805c8ac56503f4a86c82720afbd5c73654408a22a2ac0b2e5caccdfb0e20b59807433a6233bc97ae58cf14c70a", + "0xb57e7f68e4eb1bd04aafa917b1db1bdab759a02aa8a9cdb1cba34ba8852b5890f655645c9b4e15d5f19bf37e9f2ffe9f", + "0xb2eef1fbd1a176f1f4cd10f2988c7329abe4eb16c7405099fb92baa724ab397bc98734ef7d4b24c0f53dd90f57520d04", + "0xac7e8e7a82f439127a5e40558d90d17990f8229852d21c13d753c2e97facf077cf59582b603984c3dd3faebd80aff4f5", + "0xab7dce05d59c10a84feb524fcb62478906b3fa045135b23afbede3bb32e0c678d8ebe59feabccb5c8f3550ea76cae44b", + "0x8589b2e9770340c64679062c5badb7bbef68f55476289b19511a158a9a721f197da03ece3309e059fc4468b15ac33aa3", + "0x8ff6b7265175beb8a63e1dbf18c9153fb2578c207c781282374f51b40d57a84fd2ef2ea2b9c6df4a54646788a62fd17f", + "0x83e129705c538787ed8e0fdc1275e6466a3f4ee21a1e6abedd239393b1df72244723b92f9d9d9339a0cab6ebf28f5a16", + "0x9268f70032584f416e92225d65af9ea18c466ebc7ae30952d56a4e36fd9ea811dde0a126da9220ba3c596ec54d8a335e", + "0xb17566ee3dcc6bb3b004afe4c0136dfe7dd27df9045ae896dca49fb36987501ae069eb745af81ba3fc19ff037e7b1406", + "0xb8a47555fa8710534150e1a3f13eab33666017be6b41005397afa647ea49708565f2b86b77ad4964d140d9ced6b4d585", + "0xb67a5162982ce6a55ccfb2f177b1ec26b110043cf18abd6a6c451cf140b5af2d634591eb4f28ad92177d8c7e5cd0a5e8", + "0xaadb68164ede84fc1cb3334b3194d84ba868d5a88e4c9a27519eef4923bc4abf81aab8114449496c073c2a6a0eb24114", + "0xa15268877fae0d21610ae6a31061ed7c20814723385955fac09fdc9693a94c33dea11db98bb89fdfe68f933490f5c381", + "0xa52990f9f3b8616ce3cdc2c74cd195029e6a969753dcf2d1630438700e7d6ebde36538532b3525ac516f5f2ce9dd27a3", + "0xb823cf8a9aee03dadd013eb9efe40a201b4b57ef67efaae9f99683005f5d1bf55e950bf4af0774f50859d743642d3fea", + "0xab087438d0a51078c378bf4a93bd48ef933ff0f1fa68d02d4460820df564e6642a663b5e50a5fe509527d55cb510ae04", + "0xa1a8bfc593d4ab71f91640bc824de5c1380ab2591cfdafcbc78a14b32de3c0e15f9d1b461d85c504baa3d4232c16bb53", + "0xb842814c359754ece614deb7d184d679d05d16f18a14b288a401cef5dad2cf0d5ee90bad487b80923fc5573779d4e4e8", + "0xb53ba3ef342601467e1f71aa280e100fbabbd38518fa0193e0099505036ee517c1ac78e96e9baeb549bb6879bb698fb0", + "0xa696dccf439e9ca41511e16bf3042d7ec0e2f86c099e4fc8879d778a5ea79e33aa7ce96b23dc4332b7ba26859d8e674d", + "0x8d6005d6536825661b13c5fdce177cb37c04e8b109b7eb2b6d82ea1cb70efecf6a0022b64f84d753d165edc2bba784a3", + "0xa79c20aa533de7a5d671c99eb9eb454803ba54dd4f2efa3c8fec1a38f8308e9905c71e9282955225f686146388506ff6", + "0xaf47467eb152e59870e21f0d4da2f43e093daf40180ab01438030684b114d025326928eaab12c41b81a066d94fce8436", + "0xaeadc47b41a8d8b4176629557646202f868b1d728b2dda58a347d937e7ffc8303f20d26d6c00b34c851b8aeec547885d", + "0x875d8c971e593ca79552c43d55c8c73b17cd20c81ff2c2fed1eb19b1b91e4a3a83d32df150dbfd5db1092d0aebde1e1f", + "0x8f6ca1e110e959a4b1d9a5ce5f212893cec21db40d64d5ac4d524f352d72198f923416a850bf845bc5a22a79c0ea2619", + "0xb343bd2aca8973888e42542218924e2dda2e938fd1150d06878af76f777546213912b7c7a34a0f94186817d80ffa185c", + "0xa9d533769ce6830211c884ae50a82a7bf259b44ac71f9fb11f0296fdb3981e6b4c1753fe744647b247ebc433a5a61436", + "0x9280096445fe7394d04aa1bc4620c8f9296e991cc4d6c131bd703cb1cc317510e6e5855ac763f4d958c5edfe7eebeed7", + "0xb69bc9d22ffa645baa55e3e02522e9892bb2daa7fff7c15846f13517d0799766883ee09ae0869df4139150c5b843ca8a", + "0xaeb2a0af2d2239fda9aa6b8234b019708e8f792834ff0dd9c487fa09d29800ddceddd6d7929faa9a3edcb9e1b3aa0d6b", + "0x980b22ef53b7bdf188a3f14bc51b0dbfdf9c758826daa3cbc1e3986022406a8aa9a6a79e400567120b88c67faa35ce5f", + "0xb142eb6c5f846de33227d0bda61d445a7c33c98f0a8365fe6ab4c1fabdc130849be597ef734305894a424ea715372d08", + "0xaed84d009f66544addabe404bf6d65af7779ce140dc561ff0c86a4078557b96b2053b7b8a43432ffb18cd814f143b9da", + "0x95719eb02e8a9dede1a888c656a778b1c69b7716fbe3d1538fe8afd4a1bc972183c7d32aa7d6073376f7701df80116d8", + "0x8d807e3dca9e7bef277db1d2cfb372408dd587364e8048b304eff00eacde2c723bfc84be9b98553f83cba5c7b3cba248", + "0xb130a6dba7645165348cb90f023713bed0eefbd90a976b313521c60a36d34f02032e69a2bdcf5361e343ed46911297ec", + "0xaf4fe92b01d42d03dd5d1e7fa55e96d4bbcb7bf7d4c8c197acd16b3e0f3455807199f683dcd263d74547ef9c244b35cc", + "0xb36c069ec085a612b5908314d6b84c00a83031780261d1c77a0384c406867c9847d5b0845deddfa512cc04a8df2046fb", + "0x845f1f10c6c5dad2adc7935f5cd2e2b32f169a99091d4f1b05babe7317b9b1cdce29b5e62f947dc621b9acbfe517a258", + "0xb9b7bd266f449a79bbfe075e429613e76c5a42ac61f01c8f0bbbd34669650682efe01ff9dbbc400a1e995616af6aa278", + "0xa4362e31ff4b05d278b033cf5eebea20de01714ae16d4115d04c1da4754269873afc8171a6f56c5104bfd7b0db93c3e7", + "0x856388bc78aef465dbcdd1f559252e028c9e9a2225c37d645c138e78f008f764124522705822a61326a6d1c79781e189", + "0x919f33a98e84015b2034b57b5ffe9340220926b2c6e45f86fd79ec879dbe06a148ae68b77b73bf7d01bd638a81165617", + "0x953a7cea1d857e09202c438c6108060961f195f88c32f0e012236d7a4b39d840c61b162ec86436e8c38567328bea0246", + "0xa922b188d3d0b69b4e4ea2a2aa076566962844637da12c0832105d7b31dea4a309eee15d12b7a336be3ea36fcbd3e3b7", + "0x97243189285aba4d49c53770c242f2faf5fd3914451da4931472e3290164f7663c726cf86020f8f181e568c72fd172d1", + "0xa4471d111db4418f56915689482f6144efc4664cfb0311727f36c864648d35734351becc48875df96f4abd3cfcf820f9", + "0xa9fc1c2061756b2a1a169c1b149f212ff7f0d2488acd1c5a0197eba793cffa593fc6d1d1b40718aa75ca3ec77eff10e1", + "0x94c0bfa66c9f91d462e9194144fdd12d96f9bbe745737e73bab8130607ee6ea9d740e2cfcbbd00a195746edb6369ee61", + "0x88c76e5c250810c057004a03408b85cd918e0c8903dc55a0dd8bb9b4fc2b25c87f9b8cf5943eb19fbbe99d36490050c5", + "0x82b67e61b88b84f4f4d4f65df37b3e3dcf8ec91ea1b5c008fdccd52da643adbe6468a1cfdb999e87d195afe2883a3b46", + "0xb8ccf78c08ccd8df59fd6eda2e01de328bc6d8a65824d6f1fc0537654e9bc6bf6f89c422dd3a295cce628749da85c864", + "0x95bf046f8c3a9c0ce2634be4de3713024daec3fc4083e808903b25ce3ac971145af90686b451efcc72f6b22df0216667", + "0xac693ddb00e48f76e667243b9b6a7008424043fb779e4f2252330285232c3fccac4da25cbd6d95fe9ad959ff305a91f6", + "0xac75399e999effe564672db426faa17a839e57c5ef735985c70cd559a377adec23928382767b55ed5a52f7b11b54b756", + "0xafc92714771b7aa6e60f3aee12efd9c2595e9659797452f0c1e99519f67c8bc3ac567119c1ddfe82a3e961ee9defea9a", + "0xb1e808260e368a18d9d10bdea5d60223ba1713b948c782285a27a99ae50cc5fc2c53d407de07155ecc16fb8a36d744a0", + "0x8166454a7089cc07758ad78724654f4e7a1a13e305bbf88ddb86f1a4b2904c4fc8ab872d7da364cdd6a6c0365239e2ad", + "0x8229bb030b2fc566e11fd33c7eab7a1bb7b49fed872ea1f815004f7398cb03b85ea14e310ec19e1f23e0bdaf60f8f76c", + "0xb642e5b17c1df4a4e101772d73851180b3a92e9e8b26c918050f51e6dd3592f102d20b0a1e96f0e25752c292f4c903ff", + "0xa22fd17c2f7ffe552bb0f23fa135584e8d2d8d75e3f742d94d04aded2a79e22a00dfe7acbb57d44e1cdb962fb22ae170", + "0x90bee6fff4338ba825974021b3b2a84e36d617e53857321f13d2b3d4a28954e6de3b3c0e629d61823d18a9763313b3bf", + "0x932778df6f60ac1639c1453ef0cbd2bf67592759dcccb3e96dcc743ff01679e4c7dd0ef2b0833dda548d32cb4eba49e2", + "0x96caf707e34f62811ee8d32ccf28d8d6ec579bc33e424d0473529af5315c456fd026aa910c1fed70c91982d51df7d3ca", + "0x8ccca4436f9017e426229290f5cd05eac3f16571a4713141a7461acfe8ae99cd5a95bf5b6df129148693c533966145da", + "0x87379c3bf231fdafcf6472a79e9e55a938d851d4dd662ab6e0d95fd47a478ed99e2ad1e6e39be3c0fc4f6d996a7dd833", + "0x863997b97ed46898a8a014599508fa3079f414b1f4a0c4fdc6d74ae8b444afa350f327f8bfc2a85d27f9e2d049c50135", + "0xa5caf5ff948bfd3c4ca3ffbdfcd91eec83214a6c6017235f309a0bbf7061d3b0b466307c00b44a1009cf575163898b43", + "0xb20c320a90cb220b86e1af651cdc1e21315cd215da69f6787e28157172f93fc8285dcd59b039c626ed8ca4633cba1a47", + "0x94b0393a41cd00f724aee2d4bc72103d626a5aecb4b5486dd1ef8ac27528398edf56df9db5c3d238d8579af368afeb09", + "0x8d729fa32f6eb9fd2f6a140bef34e8299a2f3111bffd0fe463aa8622c9d98bfd31a1df3f3e87cd5abc52a595f96b970e", + "0x960a375b17bdb325761e01e88a3ea57026b2393e1d887b34b8fa5d2532928079ce88dc9fd06a728b26d2bb41b12b9032", + "0x99fa038bb0470d45852bb871620d8d88520adb701712fcb1f278fed2882722b9e729e6cdce44c82caafad95e37d0e6f7", + "0xaf8a1655d6f9c78c8eb9a95051aa3baaf9c811adf0ae8c944a8d3fcba87b15f61021f3baf6996fa0aa51c81b3cb69de1", + "0xa1ba52a569f0461aaf90b49b92be976c0e73ec4a2c884752ee52ffb62dd137770c985123d405dfb5de70692db454b54a", + "0x9891b06455ec925a6f8eafffba05af6a38cc5e193acaaf74ffbf199df912c5197106c5e06d72942bbb032ce277b6417f", + "0x805874fde19ce359041ae2bd52a39e2841acabfd31f965792f2737d7137f36d4e4722ede8340d8c95afa6af278af8acb", + "0xb14fe91f4b07bf33b046e9285b66cb07927f3a8da0af548ac2569b4c4fb1309d3ced76d733051a20814e90dd5b75ffd1", + "0x900d149c8d79418cda5955974c450a70845e02e5a4ecbcc584a3ca64d237df73987c303e3eeb79da1af83bf62d9e579f", + "0x91ffb53e6d7e5f11159eaf13e783d6dbdfdb1698ed1e6dbf3413c6ea23492bbb9e0932230a9e2caac8fe899a17682795", + "0xb1990e42743a88de4deeacfd55fafeab3bc380cb95de43ed623d021a4f2353530bcab9594389c1844b1c5ea6634c4555", + "0xaeeefdbaba612e971697798ceaf63b247949dc823a0ad771ae5b988a5e882b338a98d3d0796230f49d533ec5ba411b39", + "0x805592e4a3cd07c1844bc23783408310accfdb769cca882ad4d07d608e590a288b7370c2cb327f5336e72b7083a0e30f", + "0xb790f410cf06b9b8daadceeb4fd5ff40a2deda820c8df2537e0a7554613ae3948e149504e3e79aa84889df50c8678eeb", + "0x97de1ab6c6cc646ae60cf7b86df73b9cf56cc0cd1f31b966951ebf79fc153531af55ca643b20b773daa7cab784b832f7", + "0x8bc201147a842453a50bec3ac97671397bc086d6dfc9377fa38c2124cdc286abda69b7324f47d64da094ae011d98d9d9", + "0x8056e0913a60155348300e3a62e28b5e30629a90f7dd4fe11289097076708110a1d70f7855601782a3cdc5bdb1ca9626", + "0xa046937cc6ea6a2e1adae543353a9fe929c1ae4ad655be1cc051378482cf88b041e28b1e9a577e6ccff2d3570f55e200", + "0xb8914bfb82815abb86da35c64d39ab838581bc0bf08967192697d9663877825f2b9d6fbdcf9b410463482b3731361aef", + "0xad3fa7b0edceb83118972a2935a09f409d09a8db3869f30be3a76f67aa9fb379cabb3a3aff805ba023a331cad7d7eb64", + "0x8cc28d75d5c8d062d649cbc218e31c4d327e067e6dbd737ec0a35c91db44fbbd0d40ec424f5ed79814add16947417572", + "0xa1d7fb3aecb896df3a52d6bd0943838b13f1bd039c936d76d03de2044c371d48865694b6f532393b27fd10a4cf642061", + "0x8bb156ade8faf149df7bea02c140c7e392a4742ae6d0394d880a849127943e6f26312033336d3b9fdc0092d71b5efe87", + "0xb1005644be4b085e3f5775aa9bd3e09a283e87ddada3082c04e7a62d303dcef3b8cf8f92944c200c7ae6bb6bdf63f832", + "0x902150e0cb1f16b9b59690db35281e28998ce275acb313900da8b2d8dfd29fa1795f8ca3ff820c31d0697de29df347c1", + "0x92b475dc8cb5be4b90c482f122a51bcb3b6c70593817e7e2459c28ea54a7845c50272af38119406eaadb9bcb993368d0", + "0xb7eed9cd400b2ca12bf1d9ae008214b8561fb09c8ad9ff959e626ffde00fee5ff2f5b6612e231f2a1a9b1646fcc575e3", + "0x90fbb030167fb47dcc13d604a726c0339418567c1d287d1d87423fa0cb92eec3455fbb46bcbe2e697144a2d3972142e4", + "0x904dfad4ba2cc1f6e60d1b708438a70b1743b400164cd981f13c064b8328d5973987d4fb9cf894068f29d3deaf624dfb", + "0xa17dd44181e5dab4dbc128e1af93ec22624b57a448ca65d2d9e246797e4af7d079e09c6e0dfb62db3a9957ce92f098d5", + "0x99db8422bb7302199eb0ff3c3d08821f8c32f53a600c5b6fb43e41205d96adae72be5b460773d1280ad1acb806af9be8", + "0xb2a2cba65f5b927e64d2904ba412e2bac1cf18c9c3eda9c72fb70262497ecf505b640827e2afebecf10eebbcf48ccd3e", + "0xaeb4d5fad81d2b505d47958a08262b6f1b1de9373c2c9ba6362594194dea3e002ab03b8cbb43f867be83065d3d370f19", + "0x9443fc631aed8866a7ed220890911057a1f56b0afe0ba15f0a0e295ab97f604b134b1ed9a4245e46ee5f9a93aa74f731", + "0xb5cf19002fbc88a0764865b82afcb4d64a50196ea361e5c71dff7de084f4dcbbc34ec94a45cc9e0247bd51da565981aa", + "0x921bf87cad947c2c33fa596d819423c10337a76fe5a63813c0a9dc78a728207ae7b339407a402fc4d0f7cba3af6da6fc", + "0xa34cbe05888e5e5f024a2db14cb6dcdc401a9cbd13d73d3c37b348f68688f87c24ca790030b8f84fef9e74b4eab5e412", + "0xa18ce1f846e3e3c4d846822f60271eecf0f5d7d9f986385ac53c5ace9589dc7c0188910448c19b91341a1ef556652fa9", + "0xb0de4693b4b9f932191a21ee88629964878680152a82996c0019ffc39f8d9369bbe2fe5844b68d6d9589ace54af947e4", + "0x8cd0ccf17682950b34c796a41e2ea7dd5367aba5e80a907e01f4cdc611e4a411918215e5aebf4292f8b24765d73314a6", + "0xa9b77784fda64987f97c3a23c5e8f61b918be0f7c59ba285084116d60465c4a2aaafc8857eb16823282cc83143eb9126", + "0x8f78e8b1556f9d739648ea3cab9606f8328b52877fe72f9305545a73b74d49884044ba9c1f1c6db7d9b7c7b7c661caba", + "0xa7e07a7801b871fc9b981a71e195a3b4ba6b6313bc132b04796a125157e78fe5c11a3a46cf731a255ac2d78a4ae78cd0", + "0x8561cd0f7a6dbcddd83fcd7f472d7dbcba95b2d4fb98276f48fccf69f76d284e626d7e41314b633352df8e6333fd52a1", + "0x8fab39f39c0f40182fcd996ade2012643fe7731808afbc53f9b26900b4d4d1f0f5312d9d40b3df8baa4739970a49c732", + "0x849b9efee8742502ffd981c4517c88ed33e4dd518a330802caff168abae3cd09956a5ee5eda15900243bc2e829016b74", + "0xaccbd739e138007422f28536381decc54bb6bd71d93edf3890e54f9ef339f83d2821697d1a4ac1f5a98175f9a9ecb9b5", + "0xb5303c2f72e84e170e66ae1b0fbd51b8c7a6f27476eaf5694b64e8737d5c84b51fe90100b256465a4c4156dd873cddb0", + "0xb27f56e840a54fbd793f0b7a7631aa4cee64b5947e4382b2dfb5eb1790270288884c2a19afebe5dc0c6ef335d4531c1c", + "0x993e932bcb616dbaa7ad18a4439e0565211d31071ef1b85a0627db74a05d978c60d507695eaeea5c7bd9868a21d06923", + "0xa72164a8554da8e103f692ac5ebb4aece55d5194302b9f74b6f2a05335b6e39beede0bf7bf8c5bfd4d324a784c5fb08c", + "0xa862253c937cf3d75d7183e5f5be6a4385d526aeda5171c1c60a8381fea79f88f5f52a4fab244ecc70765d5765e6dfd5", + "0xa9920f26fe0a6d51044e623665d998745c9eca5bce12051198b88a77d728c8238f97d4196f26e43b24f8841500b998d0", + "0xaff0fdbef7c188b120a02bc9085d7b808e88f73973773fef54707bf2cd772cd066740b1b6f4127b5c349f657bd97e738", + "0xa6fac04b6d86091158ebb286586ccfec2a95c9786e14d91a9c743f5f05546073e5e3cc717635a0c602cad8334e922346", + "0x8c9adee8410bdd99e5b285744cee61e2593b6300ff31a8a83b0ec28da59475a5c6fb9346fe43aadea2e6c3dad2a8e30a", + "0xa29037f8ef925c417c90c4df4f9fb27fb977d04e2b3dd5e8547d33e92ab72e7a00f5461de21e28835319eae5db145eb7", + "0x8fbc2bfd28238c7d47d4c03b1b910946c0d94274a199575e5b23242619b1de3497784e646a92aa03e3e24123ae4fcaba", + "0xb4f5e64a15c6672e4b55417ee5dc292dcf93d7ea99965a888b1cc4f5474a11e5b6520eacbcf066840b343f4ceeb6bf33", + "0xae13530b1dbc5e4dced9d909ea61286ec09e25c12f37a1ed2f309b0eb99863d236c3b25ed3484acc8c076ad2fa8cd430", + "0x9590bb1cba816dd6acd5ac5fba5142c0a19d53573e422c74005e0bcf34993a8138c83124cad35a3df65879dba6134edd", + "0xa071a85fb8274bac2202e0cb8e0e2028a5e138a82d6e0374d39ca1884a549c7c401312f00071b91f455c3a2afcfe0cda", + "0x83905f93b250d3184eaba8ea7d727c4464b6bdb027e5cbe4f597d8b9dc741dcbea709630bd4fd59ce24023bec32fc0f3", + "0x85291fbe10538d7da38efdd55a7acebf03b1848428a2f664c3ce55367aece60039f4f320b1771c9c89a35941797f717c", + "0xb6830e87233b8eace65327fdc764159645b75d2fd4024bf8f313b2dd5f45617d7ecfb4a0b53ccafb5429815a9a1adde6", + "0x9372ad12856fefb928ccb0d34e198df99e2f8973b07e9d417a3134d5f69e12e79ff572c4e03ccd65415d70639bc7c73e", + "0x923b2d25aa45b2e580ffd94cbb37dc8110f340f0f011217ee1bd81afb0714c0b1d5fb4db86006cdd2457563276f59c59", + "0xb21321fd2a12083863a1576c5930e1aecb330391ef83326d9d92e1f6f0d066d1394519284ddab55b2cb77417d4b0292f", + "0xb749501347e5ec07e13a79f0cb112f1b6534393458b3678a77f02ca89dca973fa7b30e55f0b25d8b92b97f6cb0120056", + "0xb0bdd3bacff077173d302e3a9678d1d37936188c7ecc34950185af6b462b7c679815176f3cce5db19aac8b282f2d60ad", + "0xad47271806161f61d3afa45cdfe2babceef5e90031a21779f83dc8562e6076680525b4970b2f11fe9b2b23c382768323", + "0xb582af8d8ff0bf76f0a3934775e0b54c0e8fed893245d7d89cae65b03c8125b7237edc29dc45b4fe1a3fe6db45d280ee", + "0x8a8893144d771dca28760cba0f950a5d634195fd401ec8cf1145146286caffb0b1a6ba0c4c1828d0a5480ce49073c64c", + "0xaf1c823930a3638975fb0cc5c59651771b2719119c3cd08404fbd4ce77a74d708cefbe3c56ea08c48f5f10e6907f338f", + "0xaa4b7ce2e0c2c9e9655bf21e3e5651c8503bce27483017b0bf476be743ba06db10228b3a4c721219c0779747f11ca282", + "0xad89d043c2f0f17806277ffdf3ecf007448e93968663f8a0b674254f36170447b7527d5906035e5e56f4146b89b5af56", + "0xb61b3599145ea8680011aa2366dc511a358b7d67672d5b0c5be6db03b0efb8ca5a8294cf220ea7409621f1664e00e631", + "0x81324be4a71208bbb9bca74b77177f8f1abb9d3d5d9db195d1854651f2cf333cd618d35400da0f060f3e1b025124e4b2", + "0x87364a5ea1d270632a44269d686b2402da737948dac27f51b7a97af80b66728b0256547a5103d2227005541ca4b7ed04", + "0xb514efa310dc4ad1258add138891e540d8c87142a881b5f46563cc58ecd1488e6d3a2fca54c0b72a929f3364ca8c333e", + "0xb80557871a6521b1b3c74a1ba083ae055b575df607f1f7b04c867ba8c8c181ea68f8d90be6031f4d25002cca27c44da2", + "0xa36395e22bc1d1ba8b0459a235203177737397da5643ce54ded3459d0869ff6d8d89f50c73cb62394bf66a959cde9b90", + "0x8f7d97c3b4597880d73200d074eb813d95432306e82dafc70b580b8e08cb8098b70f2d07b4b3ac6a4d77e92d57035031", + "0xaf651ef1b2a0d30a7884557edfad95b6b5d445a7561caebdc46a485aedd25932c62c0798465c340a76f6feaa196dd712", + "0x919dca5c5595082c221d5ab3a5bc230f45da7f6dec4eb389371e142c1b9c6a2c919074842479c2844b72c0d806170c0c", + "0xa9ec652a491b11f6a692064e955f3f3287e7d2764527e58938571469a1e29b5225b9415bd602a45074dfbfe9c131d6ca", + "0xa1a6494a994215e48ab55c70efa8ffdddce6e92403c38ae7e8dd2f8288cad460c6c7db526bbdf578e96ca04d9fe12797", + "0xa2d4e6c5f5569e9cef1cddb569515d4b6ace38c8aed594f06da7434ba6b24477392cc67ba867c2b079545ca0c625c457", + "0x9185b4f3b7da0ddb4e0d0f09b8a9e0d6943a4611e43f13c3e2a767ed8592d31e0ba3ebe1914026a3627680274291f6e5", + "0xa972bfbcf4033d5742d08716c927c442119bdae336bf5dff914523b285ccf31953da2733759aacaa246a9af9f698342c", + "0x91c0e1fb49afe46c7056400baa06dbb5f6e479db78ee37e2d76c1f4e88994357e257b83b78624c4ef6091a6c0eb8254d", + "0x8d37a442a76b06a02a4e64c2504aea72c8b9b020ab7bcc94580fe2b9603c7c50d7b1e9d70d2a7daea19c68667e8f8c31", + "0xb63fc4083eabb8437dafeb6a904120691dcb53ce2938b820bb553da0e1eecd476f72495aacb72600cf9cad18698fd3db", + "0xb52f418797d719f0d0d0ffb0846788b5cba5d0454a69a2925de4b0b80fa4dd7e8c445e5eac40afd92897ed28ca650566", + "0x8559f88a7ef13b4f09ac82ae458bbae6ab25671cfbf52dae7eac7280d6565dd3f0c3286aec1a56a8a16dc3b61d78ce47", + "0x924b4b2ebaafdcfdfedb2829a8bf46cd32e1407d8d725a5bd28bdc821f1bafb3614f030ea4352c671076a63494275a3f", + "0x8fcc5cbba1b94970f5ff2eb1922322f5b0aa7d918d4b380c9e7abfd57afd8b247c346bff7b87af82efbce3052511cd1b", + "0xb3c04945ba727a141e5e8aec2bf9aa3772b64d8fd0e2a2b07f3a91106a95cbcb249adcd074cbe498caf76fffac20d4ef", + "0xa05e84ed9ecab8d508d670c39f2db61ad6e08d2795ec32a3c9d0d3737ef3801618f4fc2a95f90ec2f068606131e076c5", + "0xb3ad18d7ece71f89f2ef749b853c45dc56bf1c796250024b39a1e91ed11ca32713864049c9aaaea60cde309b47486bbf", + "0x8be4ad3ac9ef02f7df09254d569939757101ee2eda8586fefcd8c847adc1efe5bdcb963a0cafa17651befaafb376a531", + "0xa464fb8bffe6bd65f71938c1715c6e296cc6d0311a83858e4e7eb5873b7f2cf0c584d2101e3407b85b64ca78b2ac93ce", + "0x98a891f4973e7d9aaf9ac70854608d4f7493dffc7e0987d7be9dd6029f6ea5636d24ef3a83205615ca1ff403750058e1", + "0xac6167ebfee1dbab338eff7642f5e785fc21ef0b4ddd6660333fe398068cbd6c42585f62e81e4edbb72161ce852a1a4f", + "0x946a4aad7f8647ea60bee2c5fcdeb6f9a58fb2cfca70c4d10e458027a04846e13798c66506151be3df9454b1e417893f", + "0xa2753f1e6e1a154fb117100a5bd9052137add85961f8158830ac20541ab12227d83887d10acf7fd36dcaf7c2596d8d23", + "0xa386fa189847bb3b798efca917461e38ead61a08b101948def0f82cd258b945ed4d45b53774b400af500670149e601b7", + "0xa8c46cff58931a1ce9cbe1501e1da90b174cddd6d50f3dfdfb759d1d4ad4673c0a8feed6c1f24c7af32865a7d6c984e5", + "0xb05a77baab70683f76209626eaefdda2d36a0b66c780a20142d23c55bd479ddd4ad95b24579384b6cf62c8eb4c92d021", + "0x98e5e61a6ab6462ba692124dba7794b6c6bde4249ab4fcc98c9edd631592d5bc2fb5e38466691a0970a38e48d87c2e43", + "0x83cd0cf62d63475e7fcad18a2e74108499cdbf28af2113cfe005e3b5887794422da450b1944d0a986eb7e1f4c3b18f25", + "0xa68b8f18922d550284c5e5dc2dda771f24c21965a6a4d5e7a71678178f46df4d8a421497aad8fcb4c7e241aba26378a0", + "0x8ffa2660dc52ed1cd4eff67d6a84a8404f358a5f713d04328922269bee1e75e9d49afeec0c8ad751620f22352a438e25", + "0x890e4404d0657c6c1ee14e1aac132ecf7a568bb3e04137b85ac0f84f1d333bd94993e8750f88eee033a33fb00f85dcc7", + "0x857fca899828cf5c65d26e3e8a6e658542782fc72762b3b9c73514919f83259e0f849a9d4838b40dc905fe43024d0d23", + "0xaaa3ff8639496864fcdbfdda1ac97edc4f08e3c9288b768f6c8073038c9fbbf7e1c4bea169b4d45c31935cdf0680d45e", + "0x8bfdf2c0044cc80260994e1c0374588b6653947b178e8b312be5c2a05e05767e98ea15077278506aee7df4fee1aaf89e", + "0xaef3cf5f5e3a2385ead115728d7059e622146c3457d266c612e778324b6e06fbfb8f98e076624d2f3ce1035d65389a07", + "0xa3cd55161befe795af93a38d33290fb642b8d80da8b786c6e6fb02d393ea308fbe87f486994039cbd7c7b390414594b6", + "0x865006fb5b475ada5e935f27b96f9425fc2d5449a3c106aa366e55ebed3b4ee42adc3c3f0ac19fd129b40bc7d6bc4f63", + "0xa5ca38c60be5602f2bfa6e00c687ac96ac36d517145018ddbee6f12eb0faa63dd57909b9eeed26085fe5ac44e55d10ab", + "0xb934c799d0736953a73d91e761767fdb78454355c4b15c680ce08accb57ccf941b13a1236980001f9e6195801cffd692", + "0xa82bf065676583e5c1d3b81987aaae5542f522ba39538263a944bb33ea5b514c649344a96c0205a3b197a3f930fcda6c", + "0xacbf0d3c697f57c202bb8c5dc4f3fc341b8fc509a455d44bd86acc67cad2a04495d5537bcd3e98680185e8aa286f2587", + "0xa4b330cf3f064f5b131578626ad7043ce2a433b6f175feb0b52d36134a454ca219373fd30d5e5796410e005b69082e47", + "0xb26c8615c5e47691c9ff3deca3021714662d236c4d8401c5d27b50152ce7e566266b9d512d14eb63e65bc1d38a16f914", + "0xafedbb34508b159eb25eb2248d7fe328f86ef8c7d84c62d5b5607d74aae27cc2cc45ee148eb22153b09898a835c58df4", + "0xa28f41678d6e60de76b0e36ab10e4516e53e02e9c77d2b5af3cfeee3ce94cfa30c5797bd1daab20c98e1cad83ad0f633", + "0xa9d6240b07d62e22ec8ab9b1f6007c975a77b7320f02504fc7c468b4ee9cfcfd945456ff0128bc0ef2174d9e09333f8d", + "0xb3f88174e03fdb443dd6addd01303cf88a4369352520187c739fc5ae6b22fa99629c63c985b4383219dab6acc5f6f532", + "0x951f6b2c1848ced9e8a2339c65918e00d3d22d3e59a0a660b1eca667d18f8430d737884e9805865ef3ed0fe1638a22d9", + "0xac7952b84b0dc60c4d858f034093b4d322c35959605a3dad2b806af9813a4680cb038c6d7f4485b4d6b2ff502aaeca25", + "0xaa6348a4f71927a3106ad0ea8b02fc8d8c65531e4ab0bd0a17243e66f35afe252e40ab8eef9f13ae55a72566ffdaff5c", + "0x84af7ad4a0e31fcbb3276ab1ad6171429cf39adcf78dc03750dc5deaa46536d15591e26d53e953dfb31e1622bc0743ab", + "0x906f67e4a32582b71f15940523c0c7ce370336935e2646bdaea16a06995256d25e99df57297e39d6c39535e180456407", + "0xa66a0f0779436a9a3999996d1e6d3000f22c2cac8e0b29cddef9636393c7f1457fb188a293b6c875b05d68d138a7cc4a", + "0xa223b4c85e0daa8434b015fd9170b5561fe676664b67064974a1e9325066ecf88fc81f97ab5011c59fad28cedd04b240", + "0xa09b27ccd71855512aba1d0c30a79ffbe7f6707a55978f3ced50e674b511a79a446dbc6d7946add421ce111135a460af", + "0x9398dc348d078a604aadc154e6eef2c0be1a93bb93ba7fe8976edc2840a3a318941338cc4d5f743310e539d9b46613d2", + "0x977e3e967eff19290a192cd11df3667d511b398fb3ac9a5114a0f3707e25a0edcb56105648b1b85a8b7519fc529fc6f6", + "0xa60ada971f9f2d79d436de5d3d045f5ab05308cae3098acaf5521115134b2a40d664828bb89895840db7f7fb499edbc5", + "0xa00361fd440f9decabd98d96c575cd251dc94c60611025095d1201ef2dedde51cb4de7c2ece47732e5ed9b3526c2012c", + "0x924f65ced61266a79a671ffb49b300f0ea44c50a0b4e3b02064faa99fcc3e4f6061ea8f38168ab118c5d47bd7804590e", + "0x8f5a5d893e1936ed062149d20eb73d98b62b7f50ab5d93a6429c03656b36688d1c80cb5010e4977491e51fa0d7dd35d5", + "0xa2b42c09d0db615853763552a48d2e704542bbd786aae016eb58acbf6c0226c844f5fb31e428cb6450b9db855f8f2a6f", + "0xaa125e96d4553b64f7140e5453ff5d2330318b69d74d37d283e84c26ad672fa00e3f71e530eb7e28be1e94afb9c4612e", + "0xa4320d73296ff8176ce0127ca1921c450e2a9c06eff936681ebaffb5a0b05b17fded24e548454de89aca2dcf6d7a9de4", + "0xa046a7d4de879d3ebd4284f08f24398e9e3bf006cd4e25b5c67273ade248689c69affff92ae810c07941e4904296a563", + "0x92085d1ed0ed28d8cabe3e7ff1905ed52c7ceb1eac5503760c52fb5ee3a726aba7c90b483c032acc3f166b083d7ec370", + "0xabb60fce29dec7ba37e3056e412e0ec3e05538a1fc0e2c68877378c867605966108bc5742585ab6a405ce0c962b285b6", + "0x8c549c03131ead601bc30eb6b9537b5d3beb7472f5bb1bcbbfd1e9f3704477f7840ab3ab7f7dc13bbbbcdff886a462d4", + "0xae6eb04674d04e982ca9a6add30370ab90e303c71486f43ed3efbe431af1b0e43e9d06c11c3412651f304c473e7dbf39", + "0xa2998977c91c7a53dc6104f5bc0a5b675e5350f835e2f0af69825db8af4aeb68435bdbcc795f3dd1f55e1dd50bc0507f", + "0xa24d7a8d066504fc3f5027ccb13120e2f22896860e02c45b5eba1dbd512d6a17c28f39155ea581619f9d33db43a96f92", + "0xa9f3483c6fee2fe41312d89dd4355d5b2193ac413258993805c5cbbf0a59221f879386d3e7a28e73014f10e65dd503d9", + "0xb950768136b260277590b5bec3f56bbc2f7a8bc383d44ce8600e85bf8cf19f479898bcc999d96dfbd2001ede01d94949", + "0xa0d9ca4a212301f97591bf65d5ef2b2664766b427c9dd342e23cb468426e6a56be66b1cb41fea1889ac5d11a8e3c50a5", + "0x880726def069c160278b12d2258eac8fa63f729cd351a710d28b7e601c6712903c3ac1e7bbd0d21e4a15f13ca49db5aa", + "0xac0b00c4322d1e4208e09cd977b4e54d221133ff09551f75b32b0b55d0e2be80941dda26257b0e288c162e63c7e9cf68", + "0xb2a3131a5d2fe7c8967047aa66e4524babae941d90552171cc109527f345f42aa0df06dcbb2fa01b33d0043917bbed69", + "0x863e99336ca6edf03a5a259e59a2d0f308206e8a2fb320cfc0be06057366df8e0f94b33a28f574092736b3c5ada84270", + "0xb23dc9e610abc7d8bd21d147e22509a0fa49db5be6ea7057b51aae38e31654b3aa044df05b94b718153361371ba2f622", + "0xa08d6b92d866270f29f4ce23a3f5d99b36b1e241a01271ede02817c8ec3f552a5c562db400766c07b104a331835c0c64", + "0x972284ce72f96a61c899260203dfa06fc3268981732bef74060641c1a5068ead723e3399431c247ca034b0dae861e8df", + "0x9954136812dffcd5d3f167a500e7ab339c15cfc9b3398d83f64b0daa3dd5b9a851204f424a3493b4e326d3de81e50a62", + "0xb7bf81c267a78efc6b9e5a904574445a6487678d7ef70054e3e93ea6a23f966c2b68787f9164918e3b16d2175459ed92", + "0x8f4df0f9feeb7a487e1d138d13ea961459a6402fd8f8cabb226a92249a0d04ded5971f3242b9f90d08da5ff66da28af6", + "0xb6c61d01fd8ce087ef9f079bf25bf10090db483dd4f88c4a786d31c1bdf52065651c1f5523f20c21e75cea17df69ab73", + "0xa6733d83ec78ba98e72ddd1e7ff79b7adb0e559e256760d0c590a986e742445e8cdf560d44b29439c26d87edd0b07c8c", + "0x9998a2e553a9aa9a206518fae2bc8b90329ee59ab23005b10972712389f2ec0ee746033c733092ffe43d73d33abbb8ef", + "0x89fce4ecd420f8e477af4353b16faabb39e063f3f3c98fde2858b1f2d1ef6eed46f0975a7c08f233b97899bf60ccd60a", + "0x9362e6b50b43dbefbc3254471372297b5dcce809cd3b60bf74a1268ab68bdb50e46e462cbd78f0d6c056330e982846af", + "0x96163138ac0ce5fd00ae9a289648fd9300a0ca0f63a88481d703ecd281c06a52a3b5178e849e331f9c85ca4ba398f4cc", + "0xb043306ed2c3d8a5b9a056565afd8b5e354c8c4569fda66b0d797a50a3ce2c08cffbae9bbe292da69f39e89d5dc7911e", + "0x827988ef6c1101cddc96b98f4a30365ff08eea2471dd949d2c0a9b35c3bbfa8c07054ad1f4c88c8fbf829b20bb5a9a4f", + "0x9727c6ae7f0840f0b6c8bfb3a1a5582ceee705e0b5c59b97def7a7a2283edd4d3f47b7971e902a3a2079e40b53ff69b8", + "0x91c215c73b195795ede2228b7ed1f6e37892e0c6b0f4a0b5a16c57aa1100c84df9239054a173b6110d6c2b7f4bf1ce52", + "0x94af9030b5ac792dd1ce517eaadcec1482206848bea4e09e55cc7f40fd64d4c2b3e9197027c5636b70d6122c51d2235d", + "0xa98e8ff02049b4da386e3ee93db23bbb13dfeb72f1cfde72587c7e6d962780b7671c63e8ac3fbaeb1a6605e8d79e2f29", + "0x80f65b205666b0e089bb62152251c48c380a831e5f277f11f3ef4f0d52533f0851c1b612267042802f019ec900dc0e8f", + "0x937a249a95813a5e2ef428e355efd202e15a37d73e56cfb7e57ea9f943f2ce5ca8026f2f1fd25bf164ba89d07077d858", + "0x944869912476baae0b114cced4ff65c0e4c90136f73ece5656460626599051b78802df67d7201c55d52725a97f5f29fe", + "0x81aee980c876949bf40782835eec8817d535f6f3f7e00bf402ddd61101fdcd60173961ae90a1cf7c5d060339a18c959d", + "0xb54724354eb515a3c8bed0d0677ff1db94ac0a07043459b4358cb90e3e1aa38ac23f2caa3072cf9647275d7cd61d0e80", + "0xb1bd90675411389bb66910b21a4bbb50edce5330850c5ab0b682393950124252766fc81f5ecfc72fb7184387238c402e", + "0xa7a9f52bda45e4148ed56dd176df7bd672e9b5ed18888ccdb405f47920fdb0844355f8565cefb17010b38324edd8315f", + "0xa7ddb91636e4506d8b7e92aa9f4720491bb71a72dadc47c7f4410e15f93e43d07d2b371951a0e6a18d1bd087aa96a5c4", + "0xa5e8971543c14274a8dc892b0be188c1b4fbc75c692ed29f166e0ea80874bc5520c2791342b7c1d2fb5dd454b03b8a5b", + "0xb84a0a0b030bdad83cf5202aa9afe58c9820e52483ab41f835f8c582c129ee3f34aa096d11c1cd922eda02ea1196a882", + "0xb59bc3d0a30d66c16e6a411cb641f348cb1135186d5f69fda8b0a0934a5a2e7f6199095ba319ec87d3fe8f1ec4a06368", + "0xac024a661ba568426bb8fce21780406537f518075c066276197300841e811860696f7588188bc01d90bace7bc73d56e3", + "0xa5973c161ab38732885d1d2785fd74bf156ba34881980cba27fe239caef06b24a533ffe6dbbbeca5e6566682cc00300a", + "0xa387a3c61676fb3381eefa2a45d82625635a666e999aba30e3b037ec9e040f414f9e1ad9652abd3bcad63f95d85038db", + "0xb9fb798324b1d1283fdc3e48288e3861a5449b2ab5e884b34ebb8f740225324af86e4711da6b5cc8361c1db15466602f", + "0x956f67ca49ad27c1e3a68c1faad5e7baf0160c459094bf6b7baf36b112de935fdfd79fa4a9ea87ea8de0ac07272969f4", + "0xb4d7028f7f76a96a3d7803fca7f507ae11a77c5346e9cdfccb120a833a59bda1f4264e425aa588e7a16f8e7638061d84", + "0xa0227d6708979d99edfc10f7d9d3719fd3fc68b0d815a7185b60307e4c9146ad2f9be2b8b4f242e320d4288ceeb9504c", + "0xa41acf96a02c96cd8744ff6577c244fc923810d17ade133587e4c223beb7b4d99fa56eae311a500d7151979267d0895c", + "0xae2eec6b328fccf3b47bcdac32901ac2744a51beb410b04c81dea34dee4912b619466a4f5e2780d87ecefaebbe77b46d", + "0xb44a4526b2f1d6eb2aa8dba23bfa385ff7634572ab2afddd0546c3beb630fbfe85a32f42dd287a7fec069041411537f7", + "0xb0f65a33ad18f154f1351f07879a183ad62e5144ad9f3241c2d06533dad09cbb2253949daff1bb02d24d16a3569f7ef0", + "0x89d9d480574f201a87269d26fb114278ed2c446328df431dc3556e3500e80e4cd01fcac196a2459d8646361ebda840df", + "0x8e03cae725b7f9562c5c5ab6361644b976a68bada3d7ca508abca8dfc80a469975689af1fba1abcf21bc2a190dab397d", + "0x90cb64d03534f913b411375cce88a9e8b1329ce67a9f89ca5df8a22b8c1c97707fec727dbcbb9737f20c4cf751359277", + "0x99ee555a4d9b3cf2eb420b2af8e3bc99046880536116d0ce7193464ac40685ef14e0e3c442f604e32f8338cb0ef92558", + "0xb5bd7d17372faff4898a7517009b61a7c8f6f0e7ed4192c555db264618e3f6e57fb30a472d169fea01bf2bf0362a19a8", + "0xb3c4548f14d58b3ab03c222da09e4381a0afe47a72d18d50a94e0008797f78e39e99990e5b4757be62310d400746e35a", + "0x92e79b22bc40e69f6527c969500ca543899105837b6b1075fa1796755c723462059b3d1b028e0b3df2559fa440e09175", + "0x8f017f13d4b1e3f0c087843582b52d5f8d13240912254d826dd11f8703a99a2f3166dfbdfdffd9a3492979d77524276b", + "0x99f35dce64ec99aa595e7894b55ce7b5a435851b396e79036ffb249c28206087db4c85379df666c4d95857db02e21ff9", + "0x98c35ddf645940260c490f384a49496a7352bb8e3f686feed815b1d38f59ded17b1ad6e84a209e773ed08f7b8ff1e4c2", + "0x8be54cec21e74bcc71de29dc621444263737db15f16d0bb13670f64e42f818154e04b484593d19ef95f2ee17e4b3fe21", + "0x997ca0987735cc716507cb0124b1d266d218b40c9d8e0ecbf26a1d65719c82a637ce7e8be4b4815d307df717bde7c72a", + "0xb70f381aafe336b024120453813aeab70baac85b9c4c0f86918797b6aee206e6ed93244a49950f3d8ec9f81f4ac15808", + "0xa8546b627c76b6ef5c93c6a98538d8593dbe21cb7673fd383d5401b0c935eea0bdeeefeb1af6ad41bad8464fb87bbc48", + "0x94c608a362dd732a1abc56e338637c900d59013db8668e49398b3c7a0cae3f7e2f1d1bf94c0299eeafe6af7f76c88618", + "0x89e1c8fbde8563763be483123a3ed702efac189c6d8ab4d16c85e74bbaf856048cc42d5d6e138633a38572ba5ec3f594", + "0x82beed1a2c4477e5eb39fc5b0e773b30cfec77ef2b1bf17eadaf60eb35b6d0dd9d8cf06315c48d3546badb3f21cd0cca", + "0xb93e1a4476f2c51864bb4037e7145f0635eb2827ab91732b98d49b6c07f6ac443111aa1f1da76d1888665cb897c3834e", + "0xb579adcfd9c6ef916a5a999e77a0cb21d378c4ea67e13b7c58709d5da23a56c2e54218691fc4ac39a4a3d74f88cc31f7", + "0x90a081890364b222eef54bf0075417f85e340d2fec8b7375995f598aeb33f26b44143ebf56fca7d8b4ebb36b5747b0eb", + "0x91b0bcf408ce3c11555dcb80c4410b5bc2386d3c05caec0b653352377efdcb6bab4827f2018671fc8e4a0e90d772acc1", + "0xa7838ef6696a9e4d2e5dfd581f6c8d6a700467e8fd4e85adabb5f7a56f514785dd4ab64f6f1b48366f7d94728359441b", + "0xa16dc8a653d67a7cd7ae90b2fffac0bf1ca587005430fe5ba9403edd70ca33e38ba5661d2ed6e9d2864400d997626a62", + "0x8ff7533dcff6be8714df573e33f82cf8e9f2bcaaa43e939c4759d52b754e502717950de4b4252fb904560fc31dce94a4", + "0x997173f07c729202afcde3028fa7f52cefc90fda2d0c8ac2b58154a5073140683e54c49ed1f254481070d119ce0ce02a", + "0xabdd733a36e0e0f05a570d0504e73801bf9b5a25ff2c78786f8b805704997acb2e6069af342538c581144d53149fa6d3", + "0x90224fcebb36865293bd63af786e0c5ade6b67c4938d77eb0cbae730d514fdd0fe2d6632788e858afd29d46310cf86df", + "0x82b338181b62fdc81ceb558a6843df767b6a6e3ceedc5485664b4ea2f555904b1a45fbb35f6cf5d96f27da10df82a325", + "0xa61a601c5bb27dcb97e37c8e2b9ce479c6b192a5e04d9ed5e065833c5a1017ee5f237b77d1a17be5d48f8e7cc0bcacf6", + "0x81ee54699da98f5620307893dcea8f64670609fa20e5622265d66283adeac122d458b3308c5898e6c57c298db2c8b24f", + "0x8b7c9ad446c6f63c11e1c24e24014bd570862b65d53684e107ba9ad381e81a2eaa96731b4b33536efd55e0f055071274", + "0xb223173f560cacb1c21dba0f1713839e348ad02cbfdef0626748604c86f89e0f4c919ed40b583343795bdd519ba952c8", + "0xa1e94042c796c2b48bc724352d2e9f3a22291d9a34705993357ddb6adabd76da6fc25dac200a8cb0b5bbd99ecddb7af6", + "0x8ef7caa5521f3e037586ce8ac872a4182ee20c7921c0065ed9986c047e3dda08294da1165f385d008b40d500f07d895f", + "0x91b7708869cdb5a7317f88c0312d103f8ce90be14fb4f219c2e074045a2a83636fdc3e69e862049fc7c1ef000e832541", + "0x8e627302ff3d686cff8872a1b7c2a57b35f45bf2fc9aa42b049d8b4d6996a662b8e7cbac6597f0cb79b0cc4e29fbf133", + "0x94a48ad40326f95bd63dff4755f863a1b79e1df771a1173b17937f9baba57b39e651e7695be9f66a472f098b339364fc", + "0xa2b54534e152e46c50d91fff03ae9cd019ff7cd9f4168b2fe7ac08ef8c3bbc134cadd3f9d6bd33d20ae476c2a8596c8a", + "0x8b6944fd8cb8540957a91a142fdcda827762aa777a31e8810ca6d026e50370ee1636fc351724767e817ca38804ebe005", + "0xb7b8dcbb179a07165f2dc6aa829fad09f582a71b05c3e3ea0396bf9e6fe73076f47035c031c2101e8e38e0d597eadd30", + "0x9310b5f6e675fdf60796f814dbaa5a6e7e9029a61c395761e330d9348a7efab992e4e115c8be3a43d08e90d21290c892", + "0x81d8bfc4b283cf702a40b87a2b96b275bdbf0def17e67d04842598610b67ea08c804d400c3e69fa09ea001eaf345b276", + "0x99de9eafdad3617445312341644f2bb888680ff01ce95ca9276b1d2e5ef83fa02dab5e948ebf66c17df0752f1bd37b70", + "0x8db21092f7c5f110fba63650b119e82f4b42a997095d65f08f8237b02dd66fdf959f788df2c35124db1dbd330a235671", + "0x8bf6c301240d2d1c8d84c71d33a6dfc6d9e8f1cfae66d4d0f7a256d98ae12b0bcebfa94a667735ee89f810bcd7170cff", + "0x8873725b81871db72e4ec3643084b1cdce3cbf80b40b834b092767728605825c19b6847ad3dcf328438607e8f88b4410", + "0xa2ea05ae37e673b4343232ae685ee14e6b88b867aef6dfac35db3589cbcd76f99540fed5c2641d5bb5a4a9f808e9bf0d", + "0xaa1cf3dc7c5dcfa15bbbc811a4bb6dbac4fba4f97fb1ed344ab60264d7051f6eef19ea9773441d89929ee942ed089319", + "0x874e507757cd1177d0dff0b0c62ce90130324442a33da3b2c8ee09dbca5d543e3ecfe707e9f1361e7c7db641c72794bb", + "0xb0d293835a24d64c2ae48ce26e550b71a8c94a0883103757fb6b07e30747f1a871707d23389ba2b2065fa6bafe220095", + "0xb3f7477c90c11596eb4f8bbf34adbcb832638c4ff3cdd090d4d477ee50472ac9ddaf5be9ad7eca3f148960d362bbd098", + "0xa2a67f57c4aa3c2aa1eeddbfd5009a89c26c2ce8fa3c96a64626aba19514beb125f27df8559506f737de3eae0f1fc18f", + "0xb66235eaaf47456bc1dc4bde454a028e2ce494ece6b713a94cd6bf27cf18c717fd0c57a5681caaa2ad73a473593cdd7a", + "0x899b0a678bb2db2cae1b44e75a661284844ebcdd87abf308fedeb2e4dbe5c5920c07db4db7284a7af806a2382e8b111a", + "0xb03ebfd6b71421dfd49a30460f9f57063eebfe31b9ceaa2a05c37c61522b35bdc09d7db3ad75c76c253c00ba282d3cd2", + "0xb6eef13040f17dd4eba22aaf284d2f988a4a0c4605db44b8d2f4bf9567ac794550b543cc513c5f3e2820242dd704152e", + "0xb503becb90acc93b1901e939059f93e671900ca52c6f64ae701d11ac891d3a050b505d89324ce267bc43ab8275da6ffe", + "0x967e3a828bc59409144463bcf883a3a276b5f24bf3cbfdd7a42343348cba91e00b46ac285835a9b91eef171202974204", + "0x983f365aa09bd85df2a6a2ad8e4318996b1e27d02090755391d4486144e40d80b1fbfe1c798d626db92f52e33aa634da", + "0xb36b65f85546ebfdbe98823d5555144f96b4ab39279facd19c0de3b8919f105ba0315a0784dce4344b1bc62d8bb4a5a3", + "0x84f3afac024f576b0fd9acc6f2349c2fcefc3f77dbe5a2d4964d14b861b88e9b1810334b908cf3427d9b67a8aee74b18", + "0x811eff750456a79ec1b1249d76d7c1547065b839d8d4aaad860f6d4528eb5b669473dcceeeea676cddbc3980b68461b7", + "0xa8d206f6c5a14c80005849474fde44b1e7bcf0b2d52068f5f97504c3c035b09e65e56d1cf4b5322791ae2c2fdbd61859", + "0xad09a45a698a6beb3e0915f540ef16e9af7087f53328972532d6b5dfe98ce4020555ece65c6cbad8bd6be8a4dfefe6fd", + "0x80f3d3efbbb9346ddd413f0a8e36b269eb5d7ff6809d5525ff9a47c4bcab2c01b70018b117f6fe05253775612ff70c6b", + "0x911da0a6d6489eb3dab2ec4a16e36127e8a291ae68a6c2c9de33e97f3a9b1f00da57a94e270a0de79ecc5ecb45d19e83", + "0xb236459565b7b966166c4a35b2fa71030b40321821b8e96879d95f0e83a0baf33fa25721f30af4a631df209e25b96061", + "0xac6a7f2918768eb6a43df9d3a8a04f8f72ee52f2e91c064c1c7d75cad1a3e83e5aba9fe55bb94f818099ac91ccf2e961", + "0x998603102ac63001d63eb7347a4bb2bf4cf33b28079bb48a169076a65c20d511ccd3ef696d159e54cc8e772fb5d65d50", + "0x8b9e960782576a59b2eb2250d346030daa50bbbec114e95cdb9e4b1ba18c3d34525ae388f859708131984976ca439d94", + "0xa101b3d58b7a98659244b88de0b478b3fb87dc5fc6031f6e689b99edf498abd43e151fd32bd4bbd240e0b3e59c440359", + "0xad48f8d0ce7eb3cc6e2a3086ad96f562e5bed98a360721492ae2e74dc158586e77ec8c35d5fd5927376301b7741bad2b", + "0x8a0b49d8a254ca6d91500f449cbbfbb69bb516c6948ac06808c65595e46773e346f97a5ce0ef7e5a5e0de278af22709c", + "0x98a8538145f0d86f7fbf9a81c9140f6095c5bdd8960b1c6f3a1716428cd9cca1bf8322e6d0af24e6169abcf7df2b0ff6", + "0x8c1cd212d0b010905d560688cfc036ae6535bc334fa8b812519d810b7e7dcf1bb7c5f43deaa40f097158358987324a7f", + "0x81ea9d1fdd9dd66d60f40ce0712764b99da9448ae0b300f8324e1c52f154e472a086dda840cb2e0b9813dc8ce8afd4b5", + "0x8c352852c906fae99413a84ad11701f93f292fbf7bd14738814f4c4ceab32db02feb5eb70bc73898b0bc724a39d5d017", + "0x98d1ff2525e9718ee59a21d8900621636fcd873d9a564b8dceb4be80a194a0148daf1232742730b3341514b2e5a5436c", + "0xb9ddff8986145e33851b4de54d3e81faa3352e8385895f357734085a1616ef61c692d925fe62a5ed3be8ca49f5d66306", + "0x83480007a88f1a36dea464c32b849a3a999316044f12281e2e1c25f07d495f9b1710b4ba0d88e9560e72433addd50bc2", + "0x959969d16680bc535cdc6339e6186355d0d6c0d53d7bbfb411641b9bf4b770fd5f575beef5deec5c4fa4d192d455c350", + "0xacd0947a35cb167a48bcd9667620464b54ac0e78f9316b4aa92dcaab5422d7a732087e52e1c827faa847c6b2fe6e7766", + "0xa8f6dd26100b512a8c96c52e00715c4b2cb9ac457f17aed8ffe1cf1ea524068fe5a1ddf218149845fc1417b789ecfc98", + "0xa8104b462337748b7f086a135d0c3f87f8e51b7165ca6611264b8fb639d9a2f519926cb311fa2055b5fadf03da70c678", + "0xb0fbe81c719f89a57d9ea3397705f898175808c5f75f8eb81c2193a0b555869ba7bd2e6bc54ee8a60cea11735e21c68c", + "0x818ccfe46e700567b7f3eb400e5a35f6a5e39b3db3aa8bc07f58ace35d9ae5a242faf8dbccd08d9a9175bbce15612155", + "0xb72c7f5541c9ac6b60a7ec9f5415e7fb14da03f7164ea529952a29399f3a071576608dbbcc0d45994f21f92ddbeb1e19", + "0xaa315cd3c60247a6ad4b04f26c5404c2713b95972843e4b87b5a36a89f201667d70f0adf20757ebe1de1b29ae27dda50", + "0xa7561f8827ccd75b6686ba5398bb8fc3083351c55a589b18984e186820af7e275af04bcd4c28e1dc11be1e8617a0610b", + "0xb8bab44c7dd53ef9edf497dcb228e2a41282c90f00ba052fc52d57e87b5c8ab132d227af1fcdff9a12713d1f980bcaae", + "0x81917ff87e5ed2ae4656b481a63ced9e6e5ff653b8aa6b7986911b8bc1ee5b8ef4f4d7882c3f250f2238e141b227e510", + "0x88a2462a26558fc1fbd6e31aa8abdc706190a17c27fdc4217ffd2297d1b1f3321016e5c4b2384c5454d5717dc732ed03", + "0xa02db682bdc117a84dcb9312eb28fcbde12d49f4ce915cc92c610bb6965ec3cc38290f8c5b5ec70afe153956692cda95", + "0x93bbf6d7432a7d98ade3f94b57bf9f4da9bc221a180a370b113066dd42601bb9e09edd79e2e6e04e00423399339eebda", + "0x892e0a910dcf162bcea379763c3e2349349e4cda9402949255ac4a78dd5a47e0bf42f5bd0913951576b1d206dc1e536a", + "0xb7ecc7b4831f650202987e85b86bc0053f40d983f252e9832ef503aea81c51221ce93279da4aa7466c026b2d2070e55d", + "0x99ff6a899e156732937fb81c0cced80ae13d2d44c40ba99ac183aa246103b31ec084594b1b7feb96da58f4be2dd5c0ed", + "0xaf2cf95f30ef478f018cf81d70d47d742120b09193d8bb77f0d41a5d2e1a80bfb467793d9e2471b4e0ad0cb2c3b42271", + "0x84525af21a8d78748680b6535bbc9dc2f0cf9a1d1740d12f382f6ecb2e73811d6c1da2ad9956070b1a617c61fcff9fe5", + "0x948b204d103917461a01a6c57a88f2d66b476eae5b00be20ec8c747650e864bc8a83aee0aff59cb7584b7a3387e0ee48", + "0xa06a8e53abcff271b1394bcc647440f81fb1c1a5f29c27a226e08f961c3353f4891620f2d59b9d1902bf2f5cc07a4553", + "0x96f714ebd54617198bd636ba7f7a7f8995a61db20962f2165078d9ed8ee764d5946ef3cbdc7ebf8435bb8d5dd4c1deac", + "0xa0fff520045e14065965fb8accd17e878d3fcaf9e0af2962c8954e50be6683d31fa0bf4816ab68f08630dbac6bfce52a", + "0x8ac76721f0d2b679f023d06cbd28c85ae5f4b43c614867ccee88651d4101d4fd352dbdb65bf36bfc3ebc0109e4b0c6f9", + "0xade632d04a4c8bbab6ca7df370b2213cb9225023e7973f0e29f4f5e52e8aeaabc65171306bbdd12a67b195dfbb96d48f", + "0xa11ac738de75fd60f15a34209d3825d5e23385796a4c7fc5931822f3f380af977dd0f7b59fbd58eed7777a071e21b680", + "0x8cb5c2a6bd956875d88f41ae24574434f1308514d44057b55c9c70f13a3366ed054150eed0955a38fda3f757be73d55f", + "0xadd389a4d358c585f1274b73f6c3c45b58ef8df11f9d11221f620e241bf3579fba07427b288c0c682885a700cc1fa28d", + "0xaf80f0b87811ae3124f68108b4ca1937009403f87928bbc53480e7c5408d072053ace5eeaf5a5aba814dab8a45502085", + "0xa09d3ce5e748da84802436951acc3d3ea5d8ec1d6933505ed724d6b4b0d69973ab0930daec9c6606960f6e541e4a3ce2", + "0x972220ac5b807f53eac37dccfc2ad355d8b21ea6a9c9b011c09fe440ddcdf7513e0b43d7692c09ded80d7040e26aa28f", + "0xb487f1bc59485848c98222fd3bc36c8c9bb3d2912e2911f4ceca32c840a7921477f9b1fe00877e05c96c75d3eecae061", + "0x8fee895f0a140d88104ce442fed3966f58ff9d275e7373483f6b4249d64a25fb5374bbdc6bce6b5ab0270c2847066f83", + "0xa23407ee02a495bed06aa7e15f94cfb05c83e6d6fba64456a9bbabfa76b2b68c5c47de00ba169e710681f6a29bb41a22", + "0xa8640479556fb59ebd1c40c5f368fbd960932fdbb782665e4a0e24e2bdb598fc0164ce8c0726d7759cfc59e60a62e182", + "0x8ef4c37487b139d6756003060600bb6ebac7ea810b9c4364fc978e842f13ac196d1264fbe5af60d76ff6d9203d8e7d3f", + "0x81bca7954d0b9b6c3d4528aadf83e4bc2ef9ea143d6209bc45ae9e7ae9787dbcd8333c41f12c0b6deee8dcb6805e826a", + "0x8aa02787663d6be9a35677d9d8188b725d5fcd770e61b11b64e3def8808ea5c71c0a9afd7f6630c48634546088fcd8e2", + "0x967eb57bf2aa503ee0c6e67438098149eac305089c155f1762cf5e84e31f0fbf27c34a9af05621e34645c1ec96afaec8", + "0xb06b780e5a5e8eb4f4c9dc040f749cf9709c8a4c9ef15e925f442b696e41e5095db0778a6c73bcd329b265f2c6955c8b", + "0xa946f05ed9972f71dfde0020bbb086020fa35b482cce8a4cc36dd94355b2d10497d7f2580541bb3e81b71ac8bba3c49f", + "0xa6916945e10628f7497a6cdc5e2de113d25f7ade3e41e74d3de48ccd4fce9f2fa9ab69645275002e6f49399b798c40af", + "0xa7c0c749baef811ab31b973c39ceb1d94750e2bc559c90dc5eeb20d8bb6b78586a2b363c599ba2107d6be65cd435f24e", + "0xb9a6eb492d6dd448654214bd01d6dc5ff12067a11537ab82023fc16167507ee25eed2c91693912f4155d1c07ed9650b3", + "0xaeb3266a9f16649210ab2df0e1908ac259f34ce1f01162c22b56cf1019096ee4ea5854c36e30bb2feb06c21a71e8a45c", + "0xb70d247ba7cad97c50b57f526c2ba915786e926a94e8f8c3eebc2e1be6f4255411b9670e382060049c8f4184302c40b2", + "0x83bf4c4a9f3ca022c631017e7a30ea205ba97f7f5927cba8fc8489a4646eac6712cb821c5668c9ffe94d69d524374a27", + "0xa2afb24ad95a6f14a6796315fbe0d8d7700d08f0cfaf7a2abe841f5f18d4fecf094406cbd54da7232a159f9c5b6e805e", + "0xb117b1ea381adce87d8b342cba3a15d492ff2d644afa28f22424cb9cbc820d4f7693dfc1a4d1b3697046c300e1c9b4c8", + "0xab676d2256c6288a88e044b3d9ffd43eb9d5aaee00e8fc60ac921395fb835044c71a26ca948e557fed770f52d711e057", + "0xb6c90961f68b5e385d85c9830ec765d22a425f506904c4d506b87d8944c2b2c09615e740ed351df0f9321a7b93979cae", + "0x8ddf10ccdd72922bed36829a36073a460c2118fc7a56ff9c1ac72581c799b15c762cb56cb78e3d118bb9f6a7e56cb25e", + "0xa2f731e43251d04ed3364aa2f072d05355f299626f2d71a8a38b6f76cf08c544133f7d72dd0ab4162814b674b9fc7fa6", + "0xa131b56f9537f460d304e9a1dd75702ace8abd68cb45419695cb8dee76998139058336c87b7afd6239dc20d7f8f940cc", + "0x856a74fe8b37a2e3afeac858c8632200485d438422a16ae3b29f359e470e8244995c63ad79c7e007ed063f178d0306fd", + "0xb193e341d6a047d15eea33766d656d807b89393665a783a316e9ba10518e5515c8e0ade3d6e15641d917a8a172a5a635", + "0x8d4f83a5bfec05caf5910e0ce538ee9816ee18d0bd44c1d0da2a87715a23cd2733ad4d47552c6dc0eb397687d611dd19", + "0xa607b49d73689ac64f25cec71221d30d53e781e1100d19a2114a21da6507a60166166369d860bd314acb226596525670", + "0xa49e2c176a350251daef1218efaccc07a1e06203386ede59c136699d25ca5cb2ac1b800c25b28dd05678f14e78e51891", + "0xa4ef087bea9c20eb0afc0ee4caba7a9d29dfa872137828c721391273e402fb6714afc80c40e98bbd8276d3836bffa080", + "0x84189eefb521aff730a4fd3fd5b10ddfd29f0d365664caef63bb015d07e689989e54c33c2141dd64427805d37a7e546e", + "0xa563afec25b7817bfa26e19dc9908bc00aa8fc3d19be7d6de23648701659009d10e3e4486c28e9c6b13d48231ae29ac5", + "0x874c0944b7fedc6701e53344100612ddcb495351e29305c00ec40a7276ea5455465ffb7bded898886c1853139dfb1fc7", + "0xb6fa841e81f9f2cad0163a02a63ae96dc341f7ae803b616efc6e1da2fbea551c1b96b11ad02c4afbdf6d0cc9f23da172", + "0x97ecea5ce53ca720b5d845227ae61d70269a2f53540089305c86af35f0898bfd57356e74a8a5e083fa6e1ea70080bd31", + "0x86877217105f5d0ec3eeff0289fc2a70d505c9fdf7862e8159553ef60908fb1a27bdaf899381356a4ef4649072a9796c", + "0xb091443b0ce279327dc37cb484e9a5b69b257a714ce21895d67539172f95ffa326903747b64a3649e99aea7bb10d03f7", + "0xb1b6d405d2d18f9554b8a358cc7e2d78a3b34269737d561992c8de83392ac9a2857be4bf15de5a6c74e0c9d0f31f393c", + "0xa871ce28e39ab467706e32fec1669fda5a4abba2f8c209c6745df9f7a0fa36bbf1919cf14cb89ea26fa214c4c907ae03", + "0x8560aec176a4242b39f39433dd5a02d554248c9e49d3179530815f5031fee78ba9c71a35ceeb2b9d1f04c3617c13d8f0", + "0xa08711c2f7d45c68fb340ac23597332e1bcaec9198f72967b9921204b9d48a7843561ff318f87908c05a44fc35e3cc9d", + "0xb81ea2ffaaff2bb00dd59a9ab825ba5eed4db0d8ac9c8ed1a632ce8f086328a1cddd045fbe1ace289083c1325881b7e7", + "0xa3fc9abb12574e5c28dcb51750b4339b794b8e558675eef7d26126edf1de920c35e992333bcbffcbf6a5f5c0d383ce62", + "0xa0d44dd2a4438b809522b130d0938c3fe7c5c46379365dbd1810a170a9aa5818e1c783470dd5d0b6d4ac7edbb7330910", + "0x8b8e8972ac0218d7e3d922c734302803878ad508ca19f5f012bc047babd8a5c5a53deb5fe7c15a4c00fd6d1cb9b1dbd0", + "0x96fb88d89a12049091070cb0048a381902965e67a8493e3991eaabe5d3b7ff7eecd5c94493a93b174df3d9b2c9511755", + "0x83ba433661c05dcc5d562f4a9a261c8110dac44b8d833ae1514b1fc60d8b4ee395b18804baea04cb10adb428faf713c3", + "0x93fdf4697609c5ae9c33b9ca2f5f1af44abeb2b98dc4fdf732cf7388de086f410730dc384d9b7a7f447bb009653c8381", + "0xa9a18a2ab2fae14542dc336269fe612e9c1af6cf0c9ac933679a2f2cb77d3c304114f4d219ca66fe288adde30716775b", + "0x9477802410e263e4f938d57fa8f2a6cac7754c5d38505b73ee35ea3f057aad958cb9722ba6b7b3cfc4524e9ca93f9cdc", + "0xa5dd4ae51ae48c8be4b218c312ade226cffce671cf121cb77810f6c0990768d6dd767badecb5c69921d5574d5e8433d3", + "0xa7e490b2c40c2446fcd91861c020da9742c326a81180e38110558bb5d9f2341f1c1885e79b364e6419023d1cbdc47380", + "0x8c932be83ace46f65c78e145b384f58e41546dc0395270c1397874d88626fdeda395c8a289d602b4c312fe98c1311856", + "0x94c218c91a9b73da6b7a495b3728f3028df8ad9133312fc0c03e8c5253b7ccb83ed14688fd4602e2fd41f29a0bc698bd", + "0x93334fedf19a3727a81a6b6f2459db859186227b96fe7a391263f69f1a0884e4235de64d29edebc7b99c44d19e7c7d7a", + "0xb1527b71df2b42b55832f72e772a466e0fa05743aacc7814f4414e4bcc8d42a4010c9e0fd940e6f254cafedff3cd6543", + "0x90aba2f68bddb2fcce6c51430dacdfeec43ea8dc379660c99095df11017691ccf5faa27665cf4b9f0eea7728ae53c327", + "0x99cfd87a94eab7d35466caa4ed7d7bb45e5c932b2ec094258fb14bf205659f83c209b83b2f2c9ccb175974b2a33e7746", + "0xb31bb95a0388595149409c48781174c340960d59032ab2b47689911d03c68f77a2273576fbe0c2bf4553e330656058c7", + "0x901502436a1169ba51dc479a5abe7c8d84e0943b16bc3c6a627b49b92cd46263c0005bc324c67509edd693f28e612af1", + "0x835304f8619188b4d14674d803103d5a3fa594d48e96d9699e653115dd05fdc2dda6ba3641cf7ad53994d448da155f02", + "0xaf0fbc1ba05b4b5b63399686df3619968be5d40073de0313cbf5f913d3d4b518d4c249cdd2176468ccaa36040a484f58", + "0x83539597ff5e327357ee62bc6bf8c0bcaec2f227c55c7c385a4806f0d37fb461f1690bad5066b8a5370950af32fafbef", + "0xb4720e744943f70467983aa34499e76de6d59aa6fadf86f6b787fdce32a2f5b535b55db38fe2da95825c51002cfe142d", + "0x99fc03ab7810e94104c494f7e40b900f475fde65bdec853e60807ffd3f531d74de43335c3b2646b5b8c26804a7448898", + "0x91c1556631cddd4c00b65b67962b39e4a33429029d311c8acf73a18600e362304fb68bccb56fde40f49e95b7829e0b87", + "0x84ff81d73f3828340623d7e3345553610aa22a5432217ef0ebd193cbf4a24234b190c65ca0873c22d10ea7b63bd1fbed", + "0x95c8c458fd01aa23ecf120481a9c6332ebec2e8bb70a308d0576926a858457021c277958cf79017ddd86a56cacc2d7db", + "0x88e0e84d358cbb93755a906f329db1537c3894845f32b9b0b691c29cbb455373d9452fadd1e77e20a623f6eaf624de6f", + "0x8581b2d36abe6f553add4d24be761bec1b8efaa2929519114346615380b3c55b59e6ad86990e312f7e234d0203bdf59b", + "0xb24207e61462f6230f3cd8ccf6828357d03e725769f7d1de35099ef9ee4dca57dbce699bb49ed994462bee17059d25ce", + "0x924055e804d82a99ea4bb160041ea4dc14b568abf379010bc1922fde5d664718c31d103b8b807e3a1ae809390e708c73", + "0x948252dac8026bbbdb0a06b3c9d66ec4cf9532163bab68076fda1bd2357b69e4b514729c15aaa83b5618b1977bbc60c4", + "0xa88c3d5770148aee59930561ca1223aceb2c832fb5417e188dca935905301fc4c6c2c9270bc1dff7add490a125eb81c6", + "0xab524165fd4c71b1fd395467a14272bd2b568592deafa039d8492e9ef36c6d3f96927c95c72d410a768dc0b6d1fbbc9b", + "0x95d9cecfc018c6ed510e441cf84c712d9909c778c16734706c93222257f64dcd2a9f1bd0b400ca271e22c9c487014274", + "0x80f68f4bfc337952e29504ee5149f15093824ea7ab02507efd1317a670f6cbc3611201848560312e3e52e9d9af72eccf", + "0x848d16505b04804afc773aebabb51b36fd8aacfbb0e09b36c0d5d57df3c0a3b92f33e7d5ad0a7006ec46ebb91df42b8c", + "0x87ef9b4d3dc71ac86369f8ed17e0dd3b91d16d14ae694bc21a35b5ae37211b043d0e36d8ff07dcc513fb9e6481a1f37f", + "0xad50fcb92c2675a398cf07d4c40a579e44bf8d35f27cc330b57e54d5ea59f7d898af0f75dccfe3726e5471133d70f92b", + "0x94dc7d1aec2c28eb43d93b111fa59aaa0d77d5a09501220bd411768c3e52208806abf973c6a452fd8292ff6490e0c9e2", + "0xa2e92ae6d0d237d1274259a8f99d4ea4912a299816350b876fba5ebc60b714490e198a916e1c38c6e020a792496fa23c", + "0x904b1f7534e053a265b22d20be859912b9c9ccb303af9a8d6f1d8f6ccdc5c53eb4a45a1762b880d8444d9be0cd55e7f9", + "0xad4048f19b8194ed45b6317d9492b71a89a66928353072659f5ce6c816d8f21e69b9d1817d793effe49ca1874daa1096", + "0x89affffaa63cb2df3490f76f0d1e1d6ca35c221dd34057176ba739fa18d492355e6d2a5a5ad93a136d3b1fed0bb8aa19", + "0x8ae3c5329a5e025b86b5370e06f5e61177df4bda075856fade20a17bfef79c92f54ed495f310130021ba94fb7c33632b", + "0x959fd71149af82cc733619e0e5bf71760ca2650448c82984b3db74030d0e10f8ab1ce1609a6de6f470fe8b5bd90df5b3", + "0xa1302953015e164bf4c15f7d4d35e3633425a78294406b861675667eec77765ff88472306531e5d3a4ec0a2ff0dd6a9e", + "0x8b67403702d06979be19f1d6dc3ec73cc2e81254d6b7d0cc49cd4fdda8cd51ab0835c1d2d26fc0ecab5df90585c2f351", + "0x825149f9081ecf07a2a4e3e8b5d21bade86c1a882475d51c55ee909330b70c5a2ac63771c8600c6f38df716af61a3ea1", + "0xa1220a8ebc5c50ceed76a74bc3b7e0aa77f6884c71b64b67c4310ac29ce5526cb8992d6abc13ef6c8413ce62486a6795", + "0x8f79c4ec0ec1146cb2a523b52fe33def90d7b5652a0cb9c2d1c8808a32293e00aec6969f5b1538e3a94cd1efa3937f86", + "0xa11675a1721a4ba24dd3d0e4c3c33a6edf4cd1b9f6b471070b4386c61f77452266eae6e3f566a40cfc885eada9a29f23", + "0xa61838af8d95c95edf32663a68f007d95167bf6e41b0c784a30b22d8300cfdd5703bd6d16e86396638f6db6ae7e42a85", + "0x981af5dc2daa73f7fa9eae35a93d81eb6edba4a7f673b55d41f6ecd87a37685d31bb40ef4f1c469b3d72f2f18b925a17", + "0xb42a578a7787b71f924e7def425d849c1c777156b1d4170a8ee7709a4a914e816935131afd9a0412c4cb952957b20828", + "0x8cf5c4b17fa4f3d35c78ce41e1dc86988fd1135cd5e6b2bb0c108ee13538d0d09ae7102609c6070f39f937b439b31e33", + "0x87c3ac72084aca5974599d3232e11d416348719e08443acaba2b328923af945031f86432e170dcdd103774ec92e988c9", + "0xb78cfd19f94d24e529d0f52e18ce6185cb238edc6bd43086270fd51dd99f664f43dd4c7d2fe506762fbd859028e13fcf", + "0x909f8a5c13ec4a59b649ed3bee9f5d13b21d7f3e2636fd2bb3413c0646573fdf9243d63083356f12f5147545339fcd55", + "0xa418eb1e9fb84cb32b370610f56f3cb470706a40ac5a47c411c464299c45c91f25b63ae3fcd623172aa0f273c0526c13", + "0x874f4ecd408c76e625ea50bc59c53c2d930ee25baf4b4eca2440bfbffb3b8bc294db579caa7c68629f4d9ec24187c1ba", + "0x97efab8941c90c30860926dea69a841f2dcd02980bf5413b9fd78d85904588bf0c1021798dbc16c8bbb32cce66c82621", + "0x89057b9783212add6a0690d6bb99097b182738deff2bd9e147d7fd7d6c8eacb4c219923633e6309ad993c24572289901", + "0xaf2ae50b392bdc013db2d12ce2544883472d72424fc767d3f5cb0ca2d973fc7d1f425880101e61970e1a988d0670c81b", + "0xb188423e707640ab0e75a061e0b62830cde8afab8e1ad3dae30db69ffae4e2fc005bababbdcbd7213b918ed4f70e0c14", + "0x95bd0fcfb42f0d6d8a8e73d7458498a85bcddd2fb132fd7989265648d82ac2707d6d203fac045504977af4f0a2aca4b7", + "0x85ba52ce9d700a5dcf6c5b00559acbe599d671ce5512467ff4b6179d7fad550567ce2a9c126a50964e3096458ea87920", + "0x88889ff4e271dc1c7e21989cc39f73cde2f0475acd98078281591ff6c944fadeb9954e72334319050205d745d4df73df", + "0x8bdbff566ae9d368f114858ef1f009439b3e9f4649f73efa946e678d6c781d52c69af195df0a68170f5f191b2eac286b", + "0xb3db467464415fcad36dc1de2d6ba7686772a577cc2619242ac040d6734881a45d3b40ed4588db124e4289cfeec4bbf6", + "0x899023ba6096a181448d927fed7a0fe858be4eac4082a42e30b3050ee065278d72fa9b9d5ce3bc1372d4cbd30a2f2976", + "0xa74632d13bbe2d64b51d7a9c3ae0a5a971c19f51cf7596a807cea053e6a0f3719700976d4e394b356c0329a2dced9aa2", + "0xa31feb1be3f5a0247a1f7d487987eb622e34fca817832904c6ee3ee60277e5847945a6f6ea1ac24542c72e47bdf647df", + "0xb5b9e005c1f456b6a368a3097634fb455723abe95433a186e8278dceb79d4ca2fbe21f8002e80027b3c531e5bf494629", + "0xb2efed8e799f8a15999020900dc2c58ece5a3641c90811b86a5198e593d7318b9d53b167818ccdfbe7df2414c9c34011", + "0xa8edf4710b5ab2929d3db6c1c0e3e242261bbaa8bcec56908ddadd7d2dad2dca9d6eb9de630b960b122ebeea41040421", + "0x914e9a38829834c7360443b8ed86137e6f936389488eccf05b4b4db7c9425611705076ecb3f27105d24b85c852be7511", + "0x8b2e83562ccd23b7ad2d17f55b1ab7ef5fbef64b3a284e6725b800f3222b8bdf49937f4a873917ada9c4ddfb090938c2", + "0xa6e8740cc509126e146775157c2eb278003e5bb6c48465c160ed27888ca803fa12eee1f6a8dd7f444f571664ed87fdc1", + "0xb449c65e8195202efdcb9bdb4e869a437313b118fef8b510cbbf8b79a4e99376adb749b37e9c20b51b31ed3310169e27", + "0xa03ea050fc9b011d1b04041b5765d6f6453a93a1819cd9bd6328637d0b428f08526466912895dcc2e3008ee58822e9a7", + "0x8f28e8d78e2fe7fa66340c53718e0db4b84823c8cfb159c76eac032a62fb53da0a5d7e24ca656cf9d2a890cb2a216542", + "0xa57ca39c23617cd2cf32ff93b02161bd7baf52c4effb4679d9d5166406e103bc8f3c6b5209e17c37dbb02deb8bc72ddd", + "0xae87e5c1b9e86c49a23dceda4ecfd1dcf08567f1db8e5b6ec752ebd45433c11e7da4988573cdaebbb6f4135814fc059e", + "0x970a29b075faccd0700fe60d1f726bdebf82d2cc8252f4a84543ebd3b16f91be42a75c9719a39c4096139f0f31393d58", + "0x93f28a81ac8c0ec9450b9d762fae9c7f8feaace87a6ee6bd141ef1d2d0697ef1bbd159fe6e1de640dbdab2b0361fca8a", + "0x84319e67c37a9581f8b09b5e4d4ae88d0a7fb4cbb6908971ab5be28070c3830f040b1de83ee663c573e0f2f6198640e4", + "0x860e407d353eac070e2418ef6cb80b96fc5f6661d6333e634f6f306779651588037be4c2419562c89c61f9aa2c4947f5", + "0x8820a6d73180f3fe255199f3f175c5eb770461ad5cfdde2fb11508041ed19b8c4ce66ad6ecebf7d7e836cc2318df47ca", + "0x8078c9e5cd05e1a8c932f8a1d835f61a248b6e7133fcbb3de406bf4ffc0e584f6f9f95062740ba6008d98348886cf76b", + "0x90591d7b483598c94e38969c4dbb92710a1a894bcf147807f1bcbd8aa3ac210b9f2be65519aa829f8e1ccdc83ad9b8cf", + "0x833c51d0d0048f70c3eefb4e70e4ff66d0809c41838e8d2c21c288dd3ae9d9dfaf26d1742bf4976dab83a2b381677011", + "0x9982f02405978ddc4fca9063ebbdb152f524c84e79398955e66fe51bc7c1660ec1afc3a86ec49f58d7b7dde03505731c", + "0x93a6ff30a5c0edf8058c89aba8c3259e0f1b1be1b80e67682de651e5346f7e1b4b4ac3d87cbaebf198cf779524aff6bf", + "0xb30ffaaf94ee8cbc42aa2c413175b68afdb207dbf351fb20be3852cb7961b635c22838da97eaf43b103aff37e9e725cc", + "0x8b896f9bb21d49343e67aec6ad175b58c0c81a3ca73d44d113ae4354a0065d98eb1a5cafedaf232a2bb9cdc62152f309", + "0xb83c0589b304cec9ede549fde54f8a7c2a468c6657da8c02169a6351605261202610b2055c639b9ed2d5b8c401fb8f56", + "0xa526914efdc190381bf1a73dd33f392ecf01350b9d3f4ae96b1b1c3d1d064721c7d6eec5788162c933245a3943f5ee51", + "0x91c3c4b658b42d8d3448ae1415d4541d02379a40dc51e36a59bd6e7b9ba3ea51533f480c7c6e8405250ee9b96a466c29", + "0xb7793e41adda6c82ba1f2a31f656f6205f65bf8a3d50d836ee631bc7ce77c153345a2d0fc5c60edf8b37457c3729c4ec", + "0xa9af3022727f2aa2fca3b096968e97edad3f08edcbd0dbca107b892ae8f746a9c0485e0d6eb5f267999b23a845923ed0", + "0xb5eaf0c8506e101f1646bcf049ee38d99ea1c60169730da893fd6020fd00a289eb2f415947e44677af49e43454a7b1be", + "0x9332663ef1d1dcf805c3d0e4ce7a07d9863fb1731172e766b3cde030bf81682cc011e26b773fb9c68e0477b4ae2cfb79", + "0x89070847dc8bbf5bc4ed073aa2e2a1f699cf0c2ca226f185a0671cecc54e7d3e14cd475c7752314a7a8e7476829da4bc", + "0xb896cb2bc2d0c77739853bc59b0f89b2e008ba1f701c9cbe3bef035f499e1baee8f0ff1e794854a48c320586a2dfc81a", + "0x91426065996b0743c5f689eb3ca68a9f7b9e4d01f6c5a2652b57fa9a03d8dc7cd4bdbdab0ca5a891fee1e97a7f00cf02", + "0x8229e0876dfe8f665c3fb19b250bd89d40f039bbf1b331468b403655be7be2e104c2fd07b9983580c742d5462ca39a43", + "0x983d84b2e53ffa4ae7f3ba29ef2345247ea2377686b74a10479a0ef105ecf90427bf53b74c96dfa346d0f842b6ffb25b", + "0x868726fd49963b24acb5333364dffea147e98f33aa19c7919dc9aca0fd26661cfaded74ede7418a5fadbe7f5ae67b67b", + "0xaeabf026d4c783adc4414b5923dbd0be4b039cc7201219f7260d321f55e9a5b166d7b5875af6129c034d0108fdc5d666", + "0xac9ed0a071517f0ae4f61ce95916a90ba9a77a3f84b0ec50ef7298acdcd44d1b94525d191c39d6bd1bb68f4471428760", + "0xb9f49f0edb7941cc296435ff0a912e3ad16848ee8765ab5f60a050b280d6ea585e5b34051b15f6b8934ef01ceb85f648", + "0xa8b2a64f865f51a5e5e86a66455c093407933d9d255d6b61e1fd81ffafc9538d73caaf342338a66ba8ee166372a3d105", + "0x91fec01e86dd1537e498fff7536ea3ca012058b145f29d9ada49370cd7b7193ac380e116989515df1b94b74a55c45df3", + "0x8fda6cef56ed33fefffa9e6ac8e6f76b1af379f89761945c63dd448801f7bb8ca970504a7105fac2f74f652ccff32327", + "0x812bcdeb9fe5f12d0e1df9964798056e1f1c3de3b17b6bd2919b6356c4b86d8e763c01933efbe0224c86a96d5198a4be", + "0xa66de045ce7173043a6825e9dc440ac957e2efb6df0a337f4f8003eb0c719d873a52e6eba3cb0d69d977ca37d9187674", + "0x88c47301dd30998e903c84e0b0f2c9af2e1ce6b9f187dab03528d44f834dc991e4c86d0c474a2c63468cf4020a1e24a0", + "0xb87fb12f12c0533b005adad0487f03393ff682e13575e3cb57280c3873b2c38ba96a63c49eef7a442753d26b7005230b", + "0xa99fc8de0c38dbf7b9e946de83943a6b46a762167bafe2a603fb9b86f094da30d6de7ed55d639aafc91936923ee414b3", + "0x9962118780e20fe291d10b64f28d09442a8e1b5cffd0f3dd68d980d0614050a626c616b44e9807fbee7accecae00686a", + "0xa593b6b0ef26448ce4eb3ab07e84238fc020b3cb10d542ff4b16d4e2be1bcde3797e45c9cf753b8dc3b0ffdb63984232", + "0xa4aa8de70330a73b2c6458f20a1067eed4b3474829b36970a8df125d53bbdda4f4a2c60063b7cccb0c80fc155527652f", + "0x82d8cabf13ab853db0377504f0aec00dba3a5cd3119787e8ad378ddf2c40b022ecfc67c642b7acc8c1e3dd03ab50993e", + "0x8d761863c9b6edbd232d35ab853d944f5c950c2b643f84a1a1327ebb947290800710ff01dcfa26dc8e9828481240e8b1", + "0x8add7d908de6e1775adbd39c29a391f06692b936518db1f8fde74eb4f533fc510673a59afb86e3a9b52ade96e3004c57", + "0x98c95b9f6f5c91f805fb185eedd06c6fc4457d37dd248d0be45a6a168a70031715165ea20606245cbdf8815dc0ac697f", + "0x8e3a3029be7edb8dd3ab1f8216664c8dc50d395f603736061d802cef77627db7b859ef287ed850382c13b4d22d6a2d80", + "0x9375ecd3ed16786fe161af5d5c908f56eeb467a144d3bbddfc767e90065b7c94fc53431adebecba2b6c9b5821184d36e", + "0xa5bfe6282c771bc9e453e964042d44eff4098decacb89aecd3be662ea5b74506e1357ab26f3527110ba377711f3c9f41", + "0xae7db24731da2eaa6efc4f7fcba2ecc26940ddd68038dce43acf2cee15b72dc4ef42a7bfdd32946d1ed78786dd7696b3", + "0xb2f5f7fa26dcd3b6550879520172db2d64ee6aaa213cbef1a12befbce03f0973a22eb4e5d7b977f466ac2bf8323dcedd", + "0xa296ad23995268276aa351a7764d36df3a5a3cffd7dbeddbcea6b1f77adc112629fdeffa0918b3242b3ccd5e7587e946", + "0xb87547f0931e164e96de5c550ca5aa81273648fe34f6e193cd9d69cf729cb432e17aa02e25b1c27a8a0d20a3b795e94e", + "0xb9ac86a900899603452bd11a7892a9bfed8054970bfcbeaa8c9d1930db891169e38d6977f5258c25734f96c8462eee3b", + "0xa422bc6bd68b8870cfa5bc4ce71781fd7f4368b564d7f1e0917f6013c8bbb5b240a257f89ecfdbecb40fe0f3aa31d310", + "0xb59b0c60997de1ee00b7c388bc7101d136c9803bf5437b1d589ba57c213f4f835a3e4125b54738e78abbc21b000f2016", + "0x985e0c61094281532c4afb788ecb2dfcba998e974b5d4257a22040a161883908cdd068fe80f8eb49b8953cfd11acf43a", + "0xb3661bf19e2da41415396ae4dd051a9272e8a2580b06f1a1118f57b901fa237616a9f8075af1129af4eabfefedbe2f1c", + "0x8d15911aacf76c8bcd7136e958febd6963104addcd751ce5c06b6c37213f9c4fb0ffd4e0d12c8e40c36d658999724bfd", + "0x80602032c43c9e2a09154cc88b83238343b7a139f566d64cb482d87436b288a98f1ea244fd3bff8da3c398686a900c14", + "0xa279da8878af8d449a9539bec4b17cea94f0242911f66fab275b5143ab040825f78c89cb32a793930609415cfa3a1078", + "0xb7db68ba4616ea072b37925ec4fb39096358c2832cc6d35169e032326b2d6614479f765ae98913c267105b84afcb9bf2", + "0xa8dacc943765d930848288192f4c69e2461c4b9bc6e79e30eeef9a543318cf9ae9569d6986c65c5668a89d49993f8e07", + "0xb7eab77c2d4687b60d9d7b04e842b3880c7940140012583898d39fcc22d9b9b0a9be2c2e3788b3e6f30319b39c338f09", + "0xaf67a73911b372bf04e57e21f289fc6c3dfac366c6a01409b6e76fea4769bdb07a6940e52e8d7d3078f235c6d2f632c6", + "0x80b7dbfdcaf40f0678012acc634eba44ea51181475180d9deb2050dc4f2de395289edd0223018c81057ec79b04b04c49", + "0xadcf54e752d32cbaa6cb98fbca48d8cd087b1db1d131d465705a0d8042c8393c8f4d26b59006eb50129b21e6240f0c06", + "0xb5e748eb1a7a1e274ff0cc56311c198f2c076fe4b7e73e5f80396fe85358549df906584e6bb2c8195b3e2be7736850a5", + "0xae0bfe0cdc97c09542a7431820015f2d16067b30dca56288013876025e81daa8c519e5e347268e19aa1a85fa1dc28793", + "0x81f7999e7eeea30f3e1075e6780bbf054f2fb6f27628a2afa4d41872a385b4216dd5f549da7ce6cf39049b2251f27fb7", + "0xb2f970dbad15bfbefb38903c9bcc043d1367055c55dc1100a850f5eb816a4252c8c194b3132c929105511e14ea10a67d", + "0xa94e1da570a38809c71e37571066acabff7bf5632737c9ab6e4a32856924bf6211139ab3cedbf083850ff2d0e0c0fcfc", + "0x824aed0951957b00ea2f3d423e30328a3527bf6714cf9abbae84cf27e58e5c35452ba89ccc011de7c68c75d6e021d8f1", + "0x86a187e13d8fba5addcfdd5b0410cedd352016c930f913addd769ee09faa6be5ca3e4b1bdb417a965c643a99bd92be42", + "0x8c3b8be685b0f8aad131ee7544d0e12f223f08a6f8edaf464b385ac644e0ddc9eff7cc7cb5c1b50ab5d71ea0f41d2213", + "0x97e26a46e068b605ce96007197ecd943c9a23881862f4797a12a3e96ba2b8d07806ad9e2a0646796b1889c6b7d75188c", + "0xad4115182ad784cfe11bcfc5ce21fd56229cc2ce77ac82746e91a2f0aa53ca6593a22efd2dc4ed8d00f84542643d9c58", + "0x8af85343dfe1821464c76ba11c216cbef697b5afc69c4d821342e55afdac047081ec2e3f7b09fc14b518d9a23b78c003", + "0x8b96462508d77ee083c376cd90807aebad8de96bca43983c84a4a6f196d5faf6619a2351f43bfeec101864c3bf255519", + "0x95785411715c9ae9d8293ce16a693a2aa83e3cb1b4aa9f76333d0da2bf00c55f65e21e42e50e6c5772ce213dd7b4f7a0", + "0x9539c5cbba14538b2fe077ecf67694ef240da5249950baaabea0340718b882a966f66d97f08556b08a4320ceb2cc2629", + "0xb7b080420cc4d808723b98b2a5b7b59c81e624ab568ecdfdeb8bf3aa151a581b6f56e983ef1b6f909661e25db40b0c69", + "0x8c8f78f88b7e22dd7e9150ab1c000f10c28e696e21d85d6469a6fe315254740f32e73d81ab1f3c1cf8f544c86df506e8", + "0xa7227c439f14c48e2577d5713c97a5205feb69acb0b449152842e278fa71e8046adfab468089c8b2288af1fc51fa945b", + "0x8159b953ffece5693edadb2e906ebf76ff080ee1ad22698950d2d3bfc36ac5ea78f58284b2ca180664452d55bd54716c", + "0xa406db2f15fdd135f346cc4846623c47edd195e80ba8c7cb447332095314d565e4040694ca924696bb5ee7f8996ea0ba", + "0xaa96156d1379553256350a0a3250166add75948fb9cde62aa555a0a9dc0a9cb7f2f7b8428aff66097bf6bfedaf14bbe2", + "0xb9d2945bdb188b98958854ba287eb0480ef614199c4235ce5f15fc670b8c5ffe8eeb120c09c53ea8a543a022e6a321ac", + "0x8c2e2c338f25ea5c25756b7131cde0d9a2b35abf5d90781180a00fe4b8e64e62590dc63fe10a57fba3a31c76d784eb01", + "0x8f9dc6a54fac052e236f8f0e1f571ac4b5308a43acbe4cc8183bce26262ddaf7994e41cf3034a4cbeca2c505a151e3b1", + "0x819f97f337eea1ffb2a678cc25f556f1aab751c6b048993a1d430fe1a3ddd8bb411c152e12ca60ec6e057c190cd1db9a", + "0xb36b4de6d1883b6951f59cfae381581f9c6352fcfcf1524fccdab1571a20f80441d9152dc6b48bcbbf00371337ca0bd5", + "0x859c56b71343fce4d5c5b87814c47bf55d581c50fd1871a17e77b5e1742f5af639d0e94d19d909ec7dfe27919e954e0c", + "0x85a33ed75d514ece6ad78440e42f7fcdb59b6f4cff821188236d20edae9050b3a042ce9bc7d2054296e133d033e45022", + "0xa90eec4a6a3a4b8f9a5b93d978b5026fcf812fe65585b008d7e08c4aaf21195a1d0699f12fc16f79b6a18a369af45771", + "0xa43681597bc574d2dae8964c9a8dc1a07613d7a1272bdcb818d98c85d44e16d744250c33f3b5e4d552d97396b55e601f", + "0x8d228244e26132b234930ee14c75d88df0943cdb9c276a8faf167d259b7efc1beec2a87c112a6c608ad1600a239e9aae", + "0xb102c237cb2e254588b6d53350dfda6901bd99493a3fbddb4121d45e0b475cf2663a40d7b9a75325eda83e4ba1e68cb3", + "0x9896d21dc2e8aad87b76d6df1654f10cd7bceed4884159d50a818bea391f8e473e01e14684814c7780235f28e69dca6e", + "0xb9ad5f660b65230de54de535d4c0fcae5bc6b59db21dea5500fdc12eea4470fb8ea003690fdd16d052523418d5e01e8c", + "0x99c3b0bb15942c301137765d4e19502f65806f3b126dc01a5b7820c87e8979bce6a37289a8f6a4c1e4637227ad5bf3bf", + "0x95cd4ad88d51f0f2efcfd0c2df802fe252bb9704d1afbf9c26a248df22d55da87bdfaf41d7bc6e5df38bd848f0b13f42", + "0x90fbfc1567e7cd4e096a38433704d3f96a2de2f6ed3371515ccc30bc4dd0721a704487d25a97f3c3d7e4344472702d8d", + "0xa4d183f63c1b4521a6b52226fc19106158fc8ea402461a5cccdaa35fee93669df6a8661f45c1750cd01308149b7bf08e", + "0xad7e810efd61ed4684aeda9ed8bb02fb9ae4b4b63fda8217d37012b94ff1b91c0087043bfa4e376f961fff030c729f3b", + "0x835d71ed5e919d89d8e6455f234f3ff215462c4e3720c371ac8c75e83b19dfe3ae15a81547e4dc1138e5f5997f413cc9", + "0xaf191ca3089892cb943cd97cf11a51f38e38bd9be50844a4e8da99f27e305e876f9ed4ab0628e8ae3939066b7d34a15f", + "0x92328719e97ce60e56110f30a00ac5d9c7a2baaf5f8d22355d53c1c77941e3a1fec7d1405e6fbf8959665fe2ba7a8cad", + "0xa3bfafdae011a19f030c749c3b071f83580dee97dd6f949e790366f95618ca9f828f1daaeabad6dcd664fcef81b6556d", + "0x902e2415077f063e638207dc7e14109652e42ab47caccd6204e2870115791c9defac5425fd360b37ac0f7bd8fe7011f8", + "0x971d85121ea108e6769d54f9c51299b0381ece8b51d46d49c89f65bedc123bab4d5a8bc14d6f67f4f680077529cbae4c", + "0xaed358853f2b54dcbddf865e1816c2e89be12e940e1abfa661e2ee63ffc24a8c8096be2072fa83556482c0d89e975124", + "0xb4f7edc7468b176a4a7c0273700c444fa95c726af6697028bed4f77eee887e3400f9c42ee15b782c0ca861c4c3b8c98a", + "0xa40b8cd8deb8ae503d20364d64cab7c2801b7728a9646ed19c65edea6a842756a2f636283494299584ad57f4bb12cd0b", + "0x8c4cf34ca60afd33923f219ffed054f90cd3f253ffeb2204a3b61b0183417e366c16c07fae860e362b0f2bfe3e1a1d35", + "0xa3a9ddedc2a1b183eb1d52de26718151744db6050f86f3580790c51d09226bf05f15111691926151ecdbef683baa992c", + "0xb7f9f90e0e450f37b081297f7f651bad0496a8b9afd2a4cf4120a2671aaaa8536dce1af301258bfbfdb122afa44c5048", + "0xb10c9a96745722c85bdb1a693100104d560433d45b9ac4add54c7646a7310d8e9b3ca9abd1039d473ae768a18e489845", + "0x81c743c104fc3cb047885c9fa0fb9705c3a83ee24f690f539f4985509c3dafd507af3f6a2128276f45d5939ef70c167f", + "0xa745304604075d60c9db36cada4063ac7558e7ec2835d7da8485e58d8422e817457b8da069f56511b02601289fbb8981", + "0xa85534e88c2bd43c043792eaa75e50914b21741a566635e0e107ae857aed0412035f7576cf04488ade16fd3f35fdbb87", + "0xb25d178df8c2df8051e7c888e9fa677fde5922e602a95e966db9e4a3d6b23ce043d7dc48a5b375c6b7c78e966893e8c3", + "0x8c411050b63c9053dd0cd81dacb48753c3d7f162028098e024d17cd6348482703a69df31ad6256e3d25a8bbf7783de39", + "0x88d031745dd0ae07d61a15b594be5d4b2e2a29e715d081649ad63605e3404b0c3a5353f0fd9fad9c05c18e93ce674fa1", + "0x90f87456d9156e6a1f029a833bf3c7dbed98ca2f2f147a8564922c25ae197a55f7ea9b2ee1f81bf7383197c4bad2e20c", + "0x9105f5de8699b5bdb6bd3bb6cc1992d1eac23929c29837985f83b22efdda92af64d9c574aa9640475087201bbbe5fd73", + "0xa808a4f17ac21e3fb5cfef404e61fae3693ca3e688d375f99b6116779696059a146c27b06de3ac36da349b0649befd56", + "0xa0c92cf5a9ed843714f3aea9fe7b880f622d0b4a3bf66de291d1b745279accf6ba35097849691370f41732ba64b5966b", + "0x87bc2ee7a0c21ba8334cd098e35cb703f9af57f35e091b8151b9b63c3a5b0f89bd7701dbd44f644ea475901fa6d9ef08", + "0xa0a9adc872ebc396557f484f1dd21954d4f4a21c4aa5eec543f5fa386fe590839735c01f236574f7ff95407cd12de103", + "0x82a01d0168238ef04180d4b6e0a0e39024c02c2d75b065017c2928039e154d093e1af4503f4d1f3d8a948917abb5d09f", + "0x94a1e40c151191c5b055b21e86f32e69cbc751dcbdf759a48580951834b96a1eed75914c0d19a38aefd21fb6c8d43d0c", + "0xa29b59bcfab51f9b3c490a3b96f0bf1934265c315349b236012adbd64a56d7f6941b2c8cc272b412044bc7731f71e1dc", + "0x9832f49b0147f4552402e54593cfa51f99540bffada12759b71fcb86734be8e500eea2d8b3d036710bdf04c901432de9", + "0x849d7d044f9d8f0aab346a9374f0b3a5d14a9d1faa83dbacccbdc629ad1ef903a990940255564770537f8567521d17f0", + "0x9245ba307a7a90847da75fca8d77ec03fdfc812c871e7a2529c56a0a79a6de16084258e7a9ac4ae8a3756f394336e21c", + "0x8e7e8a1253bbda0e134d62bfe003a2669d471b47bd2b5cde0ff60d385d8e62279d54022f5ac12053b1e2d3aaa6910b4c", + "0xaa40e38172806e1e045e167f3d1677ef12d5dcdc89b43639a170f68054bd196c4fae34c675c1644d198907a03f76ba57", + "0x8870b83ab78a98820866f91ac643af9f3ff792a2b7fda34185a9456a63abdce42bfe8ad4dc67f08a6392f250d4062df4", + "0x8d6d2785e30f3c29aad17bd677914a752f831e96d46caf54446d967cb2432be2c849e26f0d193a60bee161ea5c6fe90a", + "0xb3dca58cd69ec855e2701a1d66cad86717ff103ef862c490399c771ad28f675680f9500cb97be48de34bcdc1e4503ffd", + "0xa8f7a55cf04b38cd4e330394ee6589da3a07dc9673f74804fdf67b364e0b233f14aec42e783200a2e4666f7c5ff62490", + "0xb72db6d141267438279e032c95e6106c2ccb3164b842ba857a2018f3a35f4b040da92680881eb17cd61d0920d5b8f006", + "0xb9fc6d1c24f48404a4a64fbe3e43342738797905db46e4132aee5f086aaa4c704918ad508aaefa455cfe1b36572e6242", + "0xa2f06003b9713e7dd5929501ed485436b49d43de80ea5b15170763fd6346badf8da6de8261828913ee0dacd8ff23c0e1", + "0x91a55dfd0efefcd03dc6dacc64ec93b8d296cb83c0ee72400a36f27246e7f2a60e73b7b70ba65819e9cfb73edb7bd297", + "0xa21b6a790011396e1569ec5b2a423857b9bec16f543e63af28024e116c1ea24a3b96e8e4c75c6537c3e4611fd265e896", + "0x809f0196753024821b48a016eca5dbb449a7c55750f25981bb7a4b4c0e0846c09b8f6128137905055fc43a3f0deb4a74", + "0xb4bc7e7e30686303856472bae07e581a0c0bfc815657c479f9f5931cff208d5c12930d2fd1ff413ebd8424bcd7a9b571", + "0xa9b17c36ae6cd85a0ed7f6cabc5b47dc8f80ced605db327c47826476dc1fb8f8669aa7a7dc679fbd4ee3d8e8b4bd6a6f", + "0xa28f08c473db06aaf4c043a2fae82b3c8cfaa160bce793a4c208e4e168fb1c65115ff8139dea06453c5963d95e922b94", + "0xb49b32c76d4ec1a2c68d4989285a920a805993bc6fcce6dacd3d2ddae73373050a5c44ba8422a3781050682fa0ef6ba2", + "0xb25e32da1a8adddf2a6080725818b75bc67240728ad1853d90738485d8924ea1e202df0a3034a60ffae6f965ec55cf63", + "0xaa3d59f6e2e96fbb66195bc58c8704e139fa76cd15e4d61035470bd6e305db9f98bcbf61ac1b95e95b69ba330454c1b3", + "0xb4010b37ec4d7c2af20800e272539200a6b623ae4636ecbd0e619484f4ab9240d02bc5541ace3a3fb955dc0a3d774212", + "0xb3b4259d37b1b14aee5b676c9a0dd2d7f679ab95c120cb5f09f9fbf10b0a920cb613655ddb7b9e2ba5af4a221f31303c", + "0xacf74db78cc33138273127599eba35b0fb4e7b9a69fe02dae18fc6692d748ca332bd00b22afa8e654ed587aab11833f3", + "0xae931b6eaeda790ba7f1cd674e53dc87f6306ff44951fa0df88d506316a5da240df9794ccbd7215a6470e6b31c5ea193", + "0x89f8cf36501ad8bdfeab863752a9090e3bfda57cf8fdeca2944864dc05925f501e252c048221bcc57136ab09a64b64b2", + "0x990d91740041db770d0e0eb9d9d97d826f09fd354b91c41e0716c29f8420e0e8aac0d575231efba12fe831091ec38d5a", + "0x8d13db896ccfea403bd6441191995c1a65365cab7d0b97fbe9526da3f45a877bd1f4ef2edef160e8a56838cd1586330e", + "0x99663087e3d5000abbec0fbda4e7342ec38846cc6a1505191fb3f1a337cb369455b7f8531a6eb8b0f7b2c4baf83cbe2b", + "0xb0210d0cbb3fbf3b8cdb39e862f036b0ff941cd838e7aaf3a8354e24246e64778d22f3de34572e6b2a580614fb6425be", + "0xb99c0a8359c72ab88448bae45d4bf98797a26bca48b0d4460cd6cf65a4e8c3dd823970ac3eb774ae5d0cea4e7fadf33e", + "0xa97a55c0a492e53c047e7d6f9d5f3e86fb96f3dddc68389c0561515343b66b4bc02a9c0d5722dff1e3445308240b27f7", + "0xaf30243c66ea43b9f87a061f947f7bce745f09194f6e95f379c7582b9fead920e5d6957eaf05c12ae1282ada4670652f", + "0x876ab3cea7484bbfd0db621ec085b9ac885d94ab55c4bb671168d82b92e609754b86aaf472c55df3d81421d768fd108a", + "0xace50841e718265b290c3483ed4b0fdd1175338c5f1f7530ae9a0e75d5f80216f4de37536adcbc8d8c95982e88808cd0", + "0x881ec1fc514e926cdc66480ac59e139148ff8a2a7895a49f0dff45910c90cdda97b66441a25f357d6dd2471cddd99bb3", + "0xaea3ff3822d09dba1425084ca95fd359718d856f6c133c5fabe2b2eed8303b6e0ba0d8698b48b93136a673baac174fd9", + "0xb619ffa8733b470039451e224b777845021e8dc1125f247a4ff2476cc774657d0ff9c5279da841fc1236047de9d81c60", + "0x85f01d28603a8fdf6ce6a50cb5c44f8a36b95b91302e3f4cd95c108ce8f4d212e73aec1b8d936520d9226802a2bd9136", + "0xa0dd99fcf3f5cead5aaf08e82212df3a8bb543c407a4d6fab88dc5130c1769df3f147e934a46f291d6c1a55d92b86917", + "0xb02609d65ebfe1fe8e52f21224a022ea4b5ea8c1bd6e7b9792eed8975fc387cdf9e3b419b8dd5bcce80703ab3a12a45f", + "0xa646e5dec1b713ae9dfdf7bdc6cd474d5731a320403c7dfcfd666ffc9ae0cff4b5a79530e8df3f4aa9cb80568cb138e9", + "0x884b85fe012ccbcd849cb68c3ad832d83b3ef1c40c3954ffdc97f103b1ed582c801e1a41d9950f6bddc1d11f19d5ec76", + "0xb67d87b176a9722945ec7593777ee461809861c6cfd1b945dde9ee4ff009ca4f19cf88f4bbb5c80c9cbab2fe25b23ac8", + "0xa0ce988b7d3c40b4e496aa83a09e4b5472a2d98679622f32bea23e6d607bc7de1a5374fb162bce0549a67dad948519be", + "0x86e2a8dea86427b424fa8eada881bdff896907084a495546e66556cbdf070b78ba312bf441eb1be6a80006d25d5097a3", + "0xb5a4e7436d5473647c002120a2cb436b9b28e27ad4ebdd7c5f122b91597c507d256d0cbd889d65b3a908531936e53053", + "0xa94b90ad3c3d6c4bbe169f8661a790c40645b40f0a9d1c7220f01cf7fc176e04d80bab0ced9323fcafb93643f12b2760", + "0x8cfb09fe2e202faa4cebad932b1d35f5ca204e1c2a0c740a57812ac9a6792130d1312aabd9e9d4c58ca168bfebd4c177", + "0xaa047857a47cc4dfc08585f28640420fcf105b881fd59a6cf7890a36516af0644d143b73f3515ab48faaa621168f8c31", + "0x902d6d77bb49492c7a00bc4b70277bc28c8bf9888f4307bb017ac75a962decdedf3a4e2cf6c1ea9f9ba551f4610cbbd7", + "0x8048fee7f276fcd504aed91284f28e73693615e0eb3858fa44bcf79d7285a9001c373b3ef71d9a3054817ba293ebe28c", + "0x85bb00415ad3c9be99ff9ba83672cc59fdd24356b661ab93713a3c8eab34e125d8867f628a3c3891b8dc056e69cd0e83", + "0x888f0e1e4a34f48eb9a18ef4de334c27564d72f2cf8073e3d46d881853ac1424d79e88d8ddb251914890588937c8f711", + "0x87a326f57713ac2c9dffeb3af44b9f3c613a8f952676fc46343299122b47ee0f8d792abaa4b5db6451ced5dd153aabd0", + "0xa053ee339f359665feb178b4e7ee30a85df37debd17cacc5a27d6b3369d170b0114e67ad1712ed26d828f1df641bcd99", + "0x91452bfa75019363976bb7337fe3a73f1c10f01637428c135536b0cdc7da5ce558dae3dfc792aa55022292600814a8ef", + "0x8f20b1e9ba87d0a3f35309b985f3c18d2e8800f1ca7f0c52cadef773f1496b6070c936eea48c4a1cae83fd2524e9d233", + "0x95d128fc369df4ad8316b72aea0ca363cbc7b0620d6d7bb18f7076a8717a6a46956ff140948b0cc4f6d2ce33b5c10054", + "0xa29f5b4522db26d88f5f95f18d459f8feefab02e380c2edb65aa0617a82a3c1a89474727a951cef5f15050bcf7b380fb", + "0x84b97b1e6408b6791831997b03cd91f027e7660fd492a93d95daafe61f02427371c0e237c75706412f442991dfdff989", + "0x81a7009b9e67f1965fa7da6a57591c307de91bf0cd35ab4348dc4a98a4961e096d004d7e7ad318000011dc4342c1b809", + "0x8ac0d3bebc1cae534024187e7c71f8927ba8fcc6a1926cb61c2b6c8f26bb7831019e635a376146c29872a506784a4aaa", + "0xa633005e2c9f2fd94c8bce2dd5bb708fe946b25f1ec561ae65e54e15cdd88dc339f1a083e01f0d39610c8fe24151aaf0", + "0x9782f38cd9c9d3385ec286ebbc7cba5b718d2e65a5890b0a5906b10a89dc8ed80d417d71d7c213bf52f2af1a1f513ea7", + "0x932946532e3c397990a1df0e94c90e1e45133e347a39b6714c695be21aeb2d309504cb6b1dde7228ff6f6353f73e1ca2", + "0xaffbbfac9c1ba7cbfa1839d2ae271dd6149869b75790bf103230637da41857fc326ef3552ff31c15bda0694080198143", + "0x8ae84322662a57c6d729e6ff9d2737698cc2da2daeb1f39e506618750ed23442a6740955f299e4a15dda6db3e534d2c6", + "0x82fcd53d803b1c8e4ed76adc339b7f3a5962d37042b9683aabac7513ac68775d4a566a9460183926a6a95dbe7d551a1f", + "0xa73980fcef053f1b60ebbb5d78ba6332a475e0b96a0c724741a3abf3b59dd344772527f07203cf4c9cb5155ebed81fa0", + "0x86580af86df1bd2c385adb8f9a079e925981b7184db66fc5fe5b14cddb82e7d836b06eaeef14924ac529487b23dae111", + "0x80fb0c116e0fd6822a04b9c25f456bdca704e2be7bdc5d141dbf5d1c5eeb0a2c4f5d80db583b03ef3e47517e4f9a1b10", + "0xb31e8abf4212e03c3287bb2c0a153065a7290a16764a0bac8f112a72e632185a654bb4e88fdd6053e6c7515d9719fadb", + "0xb265644c29f628d1c7e8e25a5e845cabb21799371814730a41a363e1bda8a7be50fee7c3996a365b7fcba4642add10db", + "0xb9cf00f8fb5e2ef2b836659fece15e735060b2ea39b8e901d3dcbdcf612be8bf82d013833718c04cd46ffaa70b85f42e", + "0xac5f061a0541152b876cbc10640f26f1cc923c9d4ae1b6621e4bb3bf2cec59bbf87363a4eb72fb0e5b6d4e1c269b52d5", + "0xaaff4ef27a7a23be3419d22197e13676d6e3810ceb06a9e920d38125745dc68a930f1741c9c2d9d5c875968e30f34ab5", + "0xafec53b2301dc0caa8034cd9daef78c48905e6068d692ca23d589b84a6fa9ddc2ed24a39480597e19cb3e83eec213b3f", + "0x882d664714cc0ffe53cbc9bef21f23f3649824f423c4dbad1f893d22c4687ab29583688699efc4d5101aa08b0c3e267a", + "0xab37735af2412d2550e62df9d8b3b5e6f467f20de3890bf56faf1abf2bf3bd1d98dc3fa0ad5e7ab3fce0fa20409eb392", + "0xb98461ac71f554b2f03a94e429b255af89eec917e208a8e60edf5fc43b65f1d17a20de3f31d2ce9f0cb573c25f2f4d98", + "0x8d5e1368ec7e3c65640d216bcc5d076f3d9845924c734a34f3558ac0f16e40597c1a775a25bf38b187213fbdba17c93b", + "0xacecabf84a6f9bbed6b2fc2e7e4b48f02ef2f15e597538a73aea8f98addc6badda15e4695a67ecdb505c1554e8f345ec", + "0xb3278a3fa377ac93af7cfc9453f8cb594aae04269bbc99d2e0e45472ff4b6a2f97a26c4c57bf675b9d86f5e77a5d55d1", + "0x8e52b451a299f30124505de2e74d5341e1b5597bdd13301cc39b05536c96e4380e7f1b5c7ef076f5b3005a868657f17c", + "0xa65152f376113e61a0e468759de38d742caa260291b4753391ee408dea55927af08a4d4a9918600a3bdf1df462dffe76", + "0xa95f640e26fb1106ced1729d6053e41a16e4896acac54992279ff873e5a969aad1dcfa10311e28b8f409ac1dab7f03bb", + "0xb85c7f1cfb0ed29addccf7546023a79249e8f15ac2d14a20accbfef4dd9dc11355d599815fa09d2b6b4e966e6ea8cff1", + "0x8d4a7d8fa6f55a30df37bcf74952e2fa4fd6676a2e4606185cf154bdd84643fd01619f8fb8813a564f72e3f574f8ce30", + "0xb5d59075cb5abde5391f64b6c3b8b50adc6e1f654e2a580b6d6d6eff3f4fbdd8fffc92e06809c393f5c8eab37f774c4b", + "0xa3c76166a3bdb9b06ef696e57603b58871bc72883ee9d45171a30fe6e1d50e30bc9c51b4a0f5a7270e19a77b89733850", + "0x83d1c38800361633a3f742b1cb2bfc528129496e80232611682ddbe403e92c2ac5373aea0bca93ecb5128b0b2b7a719e", + "0x8d3425e1482cd1e76750a76239d33c06b3554c3c3c87c15cb7ab58b1cee86a4c5c4178b44e23f36928365a1b484bde02", + "0xb0fdb639d449588a2ca730afcba59334e7c387342d56defdfb7ef79c493f7fd0e5277eff18e7203e756c7bdda5803047", + "0xb3fe2a9a389c006a831dea7e777062df84b5c2803f9574d7fbe10b7e1c125817986af8b6454d6be9d931a5ac94cfe963", + "0x871311c9c7220c932e738d59f0ecc67a34356d1429fe570ca503d340c9996cb5ee2cd188fad0e3bd16e4c468ec1dbebd", + "0xa18e16b57445f88730fc5d3567bf5a176861dc14c7a08ed2996fe80eed27a0e7628501bcb78a1727c5e9ac55f29c12c4", + "0xa84c8cb84b9d5cfb69a5414f0a5283a5f2e90739e9362a1e8c784b96381b59ac6c18723a4aa45988ee8ef5c1f45cc97d", + "0xb3b579cb77573f19c571ad5eeeb21f65548d7dff9d298b8d7418c11f3e8cd3727c5b467f013cb87d6861cfaceee0d2e3", + "0x94ccdafc84920d320ed22de1e754adea072935d3c5f8c2d1378ebe53d140ea29853f056fb3fb1e375846061a038cc9bc", + "0x8b6eff675632a6fad0111ec72aacc61c7387380eb87933fd1d098856387d418bd38e77d897e65d6fe35951d0627c550b", + "0x8d765808c00b3543ff182e2d159c38ae174b12d1314da88ea08e13bd9d1c37184cb515e6bf6420531b5d41767987d7ce", + "0xa188b37d363ac072a766fd5d6fa27df07363feff1342217b19e3c37385e42ffde55e4be8355aceaa2f267b6d66b4ac41", + "0xa0fa855adc5ba469f35800c48414b8921455950a5c0a49945d1ef6e8f2a1881f2e2dfae47de6417270a6bf49deeb091d", + "0x9495639e3939fad2a3df00a88603a5a180f3c3a0fe4d424c35060e2043e0921788003689887b1ed5be424d9a89bb18bb", + "0xb7dd2de0284844392f7dfb56fe7ca3ede41e27519753ffc579a0a8d2d65ceb8108d06b6b0d4c3c1a2588951297bd1a1e", + "0x9014537885ce2debad736bc1926b25fdab9f69b216bf024f589c49dc7e6478c71d595c3647c9f65ff980b14f4bb2283b", + "0xa6b7aea5c545bb76df0f230548539db92bc26642572cb7dd3d5a30edca2b4c386f44fc8466f056b42de2a452b81aff5b", + "0x8c69fbca502046cb5f6db99900a47b34117aef3f4b241690cdb3b84ca2a2fc7833e149361995dc41fa78892525bce746", + "0xb9c223b65a3281587fa44ec829e609154b32f801fd1de6950e01eafb07a8324243b960d5735288d0f89f0078b2c42b5b", + "0xa789d4ca55cbba327086563831b34487d63d0980ba8cf55197c016702ed6da9b102b1f0709ce3da3c53ff925793a3d73", + "0x9245162fab42ac01527424f6013310c3eb462982518debef6c127f46ba8a06c705d7dc9f0a41e796ba8d35d60ae6cc64", + "0xa03c474bb915aad94f171e8d96f46abb2a19c9470601f4c915512ec8b9e743c3938450a2a5b077b4618b9df8809e1dc1", + "0x8f22435702716d76b1369750694540742d909d5e72b54d0878245fab7c269953b1c6f2b29c66f08d5e0263ca3a731771", + "0xa4026a52d277fcea512440d2204f53047718ebfcae7b48ac57ea7f6bfbc5de9d7304db9a9a6cbb273612281049ddaec5", + "0x9442d18e2489613a7d47bb1cb803c8d6f3259d088cd079460976d87f7905ee07dea8f371b2537f6e1d792d36d7e42723", + "0xa249cfcbca4d9ba0a13b5f6aac72bf9b899adf582f9746bb2ad043742b28915607467eb794fca3704278f9136f7642be", + "0x8d2ae9179fcf2b0c69850554580b52c1f4a5bd865af5f3028f222f4acad9c1ad69a8ef6c7dc7b03715ee5c506b74325e", + "0x89eb5ff83eea9df490e5beca1a1fbbbbcf7184a37e2c8c91ede7a1e654c81e8cd41eceece4042ea7918a4f4646b67fd6", + "0xa780c4bdd9e4ba57254b09d745075cecab87feda78c88ffee489625c5a3cf96aa6b3c9503a374a37927d9b78de9bd22b", + "0xa1c8b4e42ebcbd8927669a97f1b72e236fb19249325659e72be7ddaaa1d9e81ca2abb643295d41a8c04a2c01f9c0efd7", + "0xa4149530b7f85d1098ba534d69548c6c612c416e8d35992fc1f64f4deeb41e09e49c6cf7aadbed7e846b91299358fe2d", + "0xa10c2564936e967a390cb14ef6e8f8b04ea9ece5214a38837eda09e79e0c7970b1f83adf017c10efd6faa8b7ffa2c567", + "0xb47e4df18002b7dac3fee945bf9c0503159e1b8aafcce2138818e140753011b6d09ef1b20894e08ba3006b093559061b", + "0xa9e7338d6d4d9bfec91b2af28a8ed13b09415f57a3a00e5e777c93d768fdb3f8e4456ae48a2c6626b264226e911a0e28", + "0x982eb03bbe563e8850847cd37e6a3306d298ab08c4d63ab6334e6b8c1fa13fce80cf2693b09714c7621d74261a0ff306", + "0xa64d6a264a681b49d134c655d5fc7756127f1ee7c93d328820f32bca68869f53115c0d27fef35fe71f7bc4fdaed97348", + "0x88b92f6f42ae45e9f05b16e52852826e933efd0c68b0f2418ac90957fd018df661bc47c8d43c2a7d7bfcf669dab98c3c", + "0x88aa123d9e0cf309d46dddb6acf634b1ade3b090a2826d6e5e78669fa1220d6df9a6697d7778cd9b627db17eea846126", + "0xb916eccff2a95519400bbf76b5f576cbe53cf200410370a19d77734dc04c05b585cfe382e8864e67142d548cd3c4c2f4", + "0xa183753265c5f7890270821880cce5f9b2965b115ba783c6dba9769536f57a04465d7da5049c7cf8b3fcf48146173c18", + "0xa2ea3be4fc17e9b7ce3110284038d46a09e88a247b6971167a7878d9dcf36925d613c382b400cfa4f37a3ebea3699897", + "0xa3c533e9b3aa04df20b9ff635cb1154ce303e045278fcf3f10f609064a5445552a1f93989c52ce852fd0bbd6e2b6c22e", + "0xa5d1da4d6aba555919df44cbaa8ff79378a1c9e2cfdfbf9d39c63a4a00f284c5a5724e28ecbc2d9dba27fe4ee5018bd5", + "0xb0f6d1442533ca45c9399e0a63a11f85ff288d242cea6cb3b68c02e77bd7d158047cae2d25b3bcd9606f8f66d9b32855", + "0xa69becee9c93734805523b92150a59a62eed4934f66056b645728740d42223f2925a1ad38359ba644da24d9414f4cdda", + "0xaaafdd1bec8b757f55a0433eddc0a39f818591954fd4e982003437fcceb317423ad7ee74dbf17a2960380e7067a6b4e2", + "0x86dfc3b78e841c708aff677baa8ee654c808e5d257158715097c1025d46ece94993efe12c9d188252ad98a1e0e331fec", + "0x8c77bfe9e191f190a49d46f05600603fa42345592539b82923388d72392404e0b29a493a15e75e8b068dddcd444c2928", + "0xa97025fd5cbcebe8ef865afc39cd3ea707b89d4e765ec817fd021d6438e02fa51e3544b1fd45470c58007a08efac6edd", + "0xac5e5a941d567fa38fdbcfa8cf7f85bb304e3401c52d88752bcd516d1fa9bac4572534ea2205e38423c1df065990790f", + "0xb794d127fbedb9c5b58e31822361706ffac55ce023fbfe55716c3c48c2fd2f2c7660a67346864dfe588812d369cb50b6", + "0xb4e6db232e028a1f989bb5fc13416711f42d389f63564d60851f009dcffac01acfd54efa307aa6d4c0f932892d4e62b0", + "0xa8d906a4786455eb74613aba4ce1c963c60095ffb8658d368df9266fdd01e30269ce10bf984e7465f34b4fd83beba26a", + "0x848e30bf7edf2546670b390d5cf9ab71f98fcb6add3c0b582cb34996c26a446dee5d1bde4fdcde4fc80c10936e117b29", + "0x82eb2414898e9c3023d57907a2b17de8e7eea5269029d05a94bfd7bf5685ac4a799110fbb375eb5e0e2bd16acf6458ae", + "0x92677836061364685c2aaf0313fa32322746074ed5666fd5f142a7e8f87135f45cd10e78a17557a4067a51dfde890371", + "0xb58fcf4659d73edb73175bd9139d18254e94c3e32031b5d4b026f2ed37aa19dca17ec2eb54c14340231615277a9d347e", + "0x86339e8a75293e4b3ae66b5630d375736b6e6b6b05c5cda5e73fbf7b2f2bd34c18a1d6cefede08625ce3046e77905cb8", + "0xb1d36e8ca812be545505c8214943b36cabee48112cf0de369957afa796d37f86bf7249d9f36e8e990f26f1076f292b13", + "0xb4f7bfacab7b2cafe393f1322d6dcc6f21ffe69cd31edc8db18c06f1a2b512c27bd0618091fd207ba8df1808e9d45914", + "0x97f4137445c2d98b0d1d478049de952610ad698c91c9d0f0e7227d2aae690e9935e914ec4a2ea1fbf3fc1dddfeeacebb", + "0xab4c7a44e2d9446c6ff303eb49aef0e367a58b22cc3bb27b4e69b55d1d9ee639c9234148d2ee95f9ca8079b1457d5a75", + "0xab6a8e4bbc78d4a7b291ad3e9a8fe2d65f640524ba3181123b09d2d18a9e300e2509ccf7000fe47e75b65f3e992a2e7e", + "0x906dc51d6a90c089b6704b47592805578a6eed106608eeb276832f127e1b8e858b72e448edcbefb497d152447e0e68ff", + "0xaa6286e27ac54f73e63dbf6f41865dd94d24bc0cf732262fcaff67319d162bb43af909f6f8ee27b1971939cfbba08141", + "0x82f5381c965b7a0718441131c4d13999f4cdce637698989a17ed97c8ea2e5bdb5d07719c5f7be8688edb081b23ede0f4", + "0xa4edb52c2b51495ccd1ee6450fc14b7b3ede8b3d106808929d02fb31475bacb403e112ba9c818d2857651e508b3a7dd1", + "0x856d33282e8a8e33a3d237fb0a0cbabaf77ba9edf2fa35a831fdafcadf620561846aa6cbb6bdc5e681118e1245834165", + "0x991b00f8b104566b63a12af4826b61ce7aa40f4e5b8fff3085e7a99815bdb4471b6214da1e480214fac83f86a0b93cc5", + "0x89c78be9efb624c97ebca4fe04c7704fa52311d183ffd87737f76b7dadc187c12c982bd8e9ed7cd8beb48cdaafd2fd01", + "0x9633918fde348573eec15ce0ad53ac7e1823aac86429710a376ad661002ae6d049ded879383faaa139435122f64047c6", + "0x866ef241520eacb6331593cfcb206f7409d2f33d04542e6e52cba5447934e02d44c471f6c9a45963f9307e9809ab91d9", + "0x831aa917533d077da07c01417feaa1408846363ba2b8d22c6116bb858a95801547dd88b7d7fa1d2e3f0a02bdeb2e103d", + "0x8b09b0f431a7c796561ecf1549b85048564de428dac0474522e9558b6065fede231886bc108539c104ce88ebd9b5d1b0", + "0x89f81b61adda20ea9d0b387a36d0ab073dc7c7cbff518501962038be19867042f11fcc7ff78096e5d3b68c6d8dc04d9b", + "0x8800e2a46af96696dfbdcbf2ca2918b3dcf28ad970170d2d1783b52b8d945a9167d052beeb55f56c126da7ffa7059baa", + "0xb75122748560f73d15c01a8907d36d06dc068e82ce22b84b322ac1f727034493572f7907dec34ebc3ddcc976f2f89ed7", + "0xa56ff4ddd73d9a6f5ab23bb77efa25977917df63571b269f6a999e1ad6681a88387fcc4ca3b26d57badf91b236503a29", + "0xb5c72aa4147c19f8c4f3a0a62d32315b0f4606e0a7025edc5445571eaf4daff64f4b7a585464821574dd50dbe1b49d08", + "0xb4ddf571317e44f859386d6140828a42cf94994e2f1dcbcc9777f4eebbfc64fc1e160b49379acc27c4672b8e41835c5d", + "0x85128fec9c750c1071edfb15586435cc2f317e3e9a175bb8a9697bcda1eb9375478cf25d01e7fed113483b28f625122d", + "0xa7ee76aec273aaae03b3b87015789289551969fb175c11557da3ab77e39ab49d24634726f92affae9f4d24003050d974", + "0x92e46ab472c56cfc6458955270d3c72b7bde563bb32f7d4ab4d959db6f885764a3d864e1aa19802fefaa5e16b0cb0b54", + "0xa2a0bb7f3a0b23a2cbc6585d59f87cd7e56b2bbcb0ae48f828685edd9f7af0f5edb4c8e9718a0aaf6ef04553ba71f3b7", + "0x8897e73f576d86bc354baa3bd96e553107c48cf5889dcc23c5ba68ab8bcd4e81f27767be2233fdfa13d39f885087e668", + "0x95a392d82db51e26ade6c2ccd3396d7e40aff68fa570b5951466580d6e56dda51775dce5cf3a74a7f28c3cb2eb551c4d", + "0x92eafe2e869a3dd8519bbbceb630585c6eb21712b2f31e1b63067c0acb5f9bdbbcbdb612db4ea7f9cc4e7be83d31973f", + "0x993352d9278814ec89b26a11c4a7c4941bf8f0e6781ae79559d14749ee5def672259792db4587f85f0100c7bb812f933", + "0x8c751496065da2e927cf492aa5ca9013b24f861d5e6c24b30bbf52ec5aaf1905f40f9a28175faef283dd4ed4f2182a09", + "0x988f982004ada07a22dd345f2412a228d7a96b9cae2c487de42e392afe1e35c2655f829ce07a14629148ce7079a1f142", + "0x90ab3f6f67688888a31ffc2a882bb37adab32d1a4b278951a21646f90d03385fc976715fc639a785d015751171016f10", + "0x8df6304a3d9cf40100f3f687575419c998cd77e5cc27d579cf4f8e98642de3609af384a0337d145dd7c5635172d26a71", + "0x96266dc2e0df18d8136d79f5b59e489978eee0e6b04926687fe389d4293c14f36f055c550657a8e27be4118b64254901", + "0xae6bda03aa10da3d2abbc66d764ca6c8d0993e7304a1bdd413eb9622f3ca1913baa6da1e9f4f9e6cf847f14f44d6924d", + "0xb1100255a1bcf5e05b6aff1dfeb6e1d55b5d68d43a7457ba10cc76b61885f67f4d0d5179abda786e037ae95deb8eea45", + "0xb4440e48255c1644bcecf3a1e9958f1ec4901cb5b1122ee5b56ffd02cad1c29c4266999dbb85aa2605c1b125490074d4", + "0xa88e8348fed2b26acca6784d19ef27c75963450d99651d11a950ea81d4b93acd2c43e0ecce100eaf7e78508263d5baf3", + "0xa3757f722776e50de45c62d9c4a2ee0f5655a512344c4cbec542d8045332806568dd626a719ef21a4eb06792ca70f204", + "0x909420122c3e723289ca4e7b81c2df5aff312972a2203f4c45821b176e7c862bf9cac7f7df3adf1d59278f02694d06e7", + "0x812ae3315fdc18774a8da3713a4679e8ed10b9405edc548c00cacbe25a587d32040566676f135e4723c5dc25df5a22e9", + "0x8d7f708c3ee8449515d94fc26b547303b53d8dd55f177bc3b25d3da2768accd9bc8e9f09546090ebb7f15c66e6c9c723", + "0x88c87dfcb8ba6cbfe7e1be081ccfadbd589301db2cb7c99f9ee5d7db90aa297ed1538d5a867678a763f2deede5fd219a", + "0xa48ee6b86b88015d6f0d282c1ae01d2a5b9e8c7aa3d0c18b35943dceb1af580d08a65f54dc6903cde82fd0d73ce94722", + "0xb9b55b4a1422677d95821e1d042ab81bbf0bf087496504021ec2e17e238c2ca6b44fb3b635a5c9eac0871a724b8d47c3", + "0x989867da6415036d19b4bacc926ce6f4df7a556f50a1ba5f3c48eea9cefbb1c09da81481c8009331ee83f0859185e164", + "0xb5d9c75bb41f964cbff3f00e96d9f1480c91df8913f139f0d385d27a19f57a820f838eb728e46823cbff00e21c660996", + "0xb79aaaacefc49c3038a14d2ac468cfec8c2161e88bdae91798d63552cdbe39e0e02f9225717436b9b8a40a022c633c6e", + "0xa2339e2f2b6072e88816224fdd612c04d64e7967a492b9f8829db15367f565745325d361fd0607b0def1be384d010d9e", + "0x8dbb3220abc6a43220adf0331e3903d3bfd1d5213aadfbd8dfcdf4b2864ce2e96a71f35ecfb7a07c3bbabf0372b50271", + "0xb5e39534070de1e5f6e27efbdd3dc917d966c2a9b8cf2d893f964256e95e954330f2442027dc148c776d63a95bcde955", + "0x98430592afd414394f98ddfff9f280fcb1c322dbe3510f45e1e9c4bb8ee306b3e0cf0282c0ee73ebb8ba087d4d9e0858", + "0x97583e08ecb82bbc27c0c8476d710389fa9ffbead5c43001bd36c1b018f29faa98de778644883e51870b69c5ffb558b5", + "0xa10f502051968f14b02895393271776dee7a06db9de14effa0b3471825ba94c3f805302bdddac4d397d08456f620999d", + "0x81d072b4ad258b3646f52f399bced97c613b22e7ad76373453d80b1650c0ca87edb291a041f8253b649b6e5429bb4cff", + "0x8ed9cbf69c6ff3a5c62dd9fe0d7264578c0f826a29e614bc2fb4d621d90c8c9992438accdd7a614b1dca5d1bb73dc315", + "0xa4e15ead76da0214d702c859fb4a8accdcdad75ed08b865842bd203391ec4cba2dcc916455e685f662923b96ee0c023f", + "0x837da4cf09ae8aa0bceb16f8b3bfcc3b3367aecac9eed6b4b56d7b65f55981ef066490764fb4c108792623ecf8cad383", + "0xaf0c69f65184bb06868029ad46f8465d75c36814c621ac20a5c0b06a900d59305584f5a6709683d9c0e4b6cd08d650a6", + "0x80d8d4c5542f223d48240b445d4d8cf6a75d120b060bc08c45e99a13028b809d910b534d2ac47fb7068930c54efd8da9", + "0x875d7bda46efcb63944e1ccf760a20144df3b00d53282b781e95f12bfc8f8316dfe6492c2efbf796f1150e36e436e9df", + "0x961776c8576030c39f214ea6e0a3e8b3d32f023d2600958c098c95c8a4e374deeb2b9dc522adfbd6bda5949bdc09e2a2", + "0xb51c7957a3d18c4e38f6358f2237b3904618d58b1de5dec53387d25a63772e675a5b714ad35a38185409931157d4b529", + "0x9606f3ce5e63886853ca476dc0949e7f1051889d529365c0cb0296fdc02abd088f0f0318ecd2cf36740a3634132d36f6", + "0x8419d28318c19ea4a179b7abb43669fe96347426ef3ac06b158d79c0acf777a09e8e770c2fb10e14b3a0421705990b23", + "0x85a3c9fc7638f5bf2c3e15ba8c2fa1ae87eb1ceb44c6598c67a2948667a9dfa41e61f66d535b4e7fda62f013a5a8b885", + "0xb6657e5e31b3193874a1bace08f42faccbd3c502fb73ad87d15d18a1b6c2a146f1baa929e6f517db390a5a47b66c0acf", + "0x98bc9798543f5f1adc9f2cfcfa72331989420e9c3f6598c45269f0dc9b7c8607bbeaf03faa0aea2ddde2b8f17fdceff5", + "0xac4ff909933b3b76c726b0a382157cdc74ab851a1ac6cef76953c6444441804cc43abb883363f416592e8f6cfbc4550b", + "0x80ae04dbd41f4a35e33f9de413b6ad518af0919e5a30cb0fa1b061b260420780bb674f828d37fd3b52b5a31673cbd803", + "0xb7cdd0a3fbd79aed93e1b5a44ca44a94e7af5ed911e4492f332e3a5ed146c7286bde01b52276a2fcc02780d2109874dd", + "0x8c5e0af6330a8becb787e4b502f34f528ef5756e298a77dc0c7467433454347f3a2e0bd2641fbc2a45b95e231c6e1c02", + "0x83ca1a56b8a0be4820bdb5a9346357c68f9772e43f0b887729a50d2eb2a326bbcede676c8bf2e51d7c89bbd8fdb778a6", + "0xb4eebd5d80a7327a040cafb9ccdb12b2dfe1aa86e6bc6d3ac8a57fadfb95a5b1a7332c66318ff72ba459f525668af056", + "0xb8d71fa0fa05ac9e443c9b4929df9e7f09a919be679692682e614d24227e04894bfc14a5c73a62fb927fedff4a0e4aa7", + "0xb268b73bf7a179b6d22bd37e5e8cb514e9f5f8968c78e14e4f6d5700ca0d0ca5081d0344bb73b028970eebde3cb4124e", + "0xb0453d9903d08f508ee27e577445dc098baed6cde0ac984b42e0f0efed62760bd58d5816cf1e109d204607b7b175e30c", + "0x8a9c613996b5e51dadb587a787253d6081ea446bf5c71096980bf6bd3c4b69905062a8e8a3792de2d2ece3b177a71089", + "0xab64593e034c6241d357fcbc32d8ea5593445a5e7c24cac81ad12bd2ef01843d477a36dc1ba21dbe63b440750d72096a", + "0x8de778d4742f945df40004964e165592f9c6b1946263adcdd5a88b00244bda46c7bb49098c8eb6b3d97a0dd46148a8ca", + "0x8862296162451b9b6b77f03bf32e6df71325e8d7485cf3335d66fd48b74c2a8334c241db8263033724f26269ad95b395", + "0xb08e1fdf20e6a9b0b4942f14fa339551c3175c1ffc5d0ab5b226b6e6a322e9eb0ba96adc5c8d59ca4259e2bdd04a7eb0", + "0xb4ccbb8c3a2606bd9b87ce022704663af71d418351575f3b350d294f4efc68c26f9a2ce49ff81e6ff29c3b63d746294e", + "0xae68c6ccc454318cdd92f32b11d89116a3b8350207a36d22a0f626718cad671d960090e054c0c77ac3162ae180ecfd4b", + "0x8543493bf564ce6d97bd23be9bff1aba08bd5821ca834f311a26c9139c92a48f0c2d9dfe645afa95fec07d675d1fd53b", + "0xb573d5f38e4e9e8a3a6fd82f0880dc049efa492a946d00283019bf1d5e5516464cf87039e80aef667cb86fdea5075904", + "0xa30fc2f3a4cb4f50566e82307de73cd7bd8fe2c1184e9293c136a9b9e926a018d57c6e4f308c95b9eb8299e94d90a2a1", + "0xb83f4da811f9183c25de8958bc73b504cf790e0f357cbe74ef696efa7aca97ad3b7ead1faf76e9f982c65b6a4d888fc2", + "0x98480ba0064e97a2e7a6c4769b4d8c2a322cfc9a3b2ca2e67e9317e2ce04c6e1108169a20bd97692e1cb1f1423b14908", + "0x97cfcba08ebec05d0073992a66b1d7d6fb9d95871f2cdc36db301f78bf8069294d1c259efef5c93d20dc937eedae3a1a", + "0x94c79501ded0cfcbab99e1841abe4a00a0252b3870e20774c3da16c982d74c501916ec28304e71194845be6e3113c7ab", + "0x9387ac49477bd719c2f92240d0bdfcf9767aad247ca93dc51e56106463206bc343a8ec855eb803471629a66fffb565d6", + "0x90856f7f3444e5ad44651c28e24cc085a5db4d2ffe79aa53228c26718cf53a6e44615f3c5cda5aa752d5f762c4623c66", + "0xb36fed027c2f05a5ef625ca00b0364b930901e9e4420975b111858d0941f60e205546474bb25d6bfa6928d37305ae95f", + "0xa7ba7efede25f02e88f6f4cbf70643e76784a03d97e0fbd5d9437c2485283ad7ca3abb638a5f826cd9f6193e5dec0b6c", + "0x95dce7a3d4f23ac0050c510999f5fbf8042f771e8f8f94192e17bcbfa213470802ebdbe33a876cb621cf42e275cbfc8b", + "0x8d0e0073cca273daaaa61b6fc54bfe5a009bc3e20ae820f6c93ba77b19eca517d457e948a2de5e77678e4241807157cb", + "0xa61cc8263e9bc03cce985f1663b8a72928a607121005a301b28a278e9654727fd1b22bc8a949af73929c56d9d3d4a273", + "0xa9214f523957b59c7a4cb61a40251ad72aba0b57573163b0dc0f33e41d2df483fb9a1b85a5e7c080e9376c866790f8cb", + "0xa49942f04234a7d8492169da232cfff8051df86e8e1ba3db46aede02422c689c87dc1d99699c25f96cb763f5ca0983e5", + "0xb0fcab384fd4016b2f1e53f1aafd160ae3b1a8865cd6c155d7073ecc1664e05b1d8bca1def39c158c7086c4e1103345e", + "0x84183b5fc4a7997a8ae5afedb4d21dce69c480d5966b5cbdafd6dd10d29a9a6377f3b90ce44da0eb8b176ac3af0253bb", + "0xa63ad69c9d25704ce1cc8e74f67818e5ed985f8f851afa8412248b2df5f833f83b95b27180e9e7273833ed0d07113d3b", + "0x8be5a5f6bc8d680e5092d6f9a6585acbaaaa2ddc671da560dcf5cfa4472f4f184b9597b5b539438accd40dda885687cc", + "0x896b25b083c35ac67f0af3784a6a82435b0e27433d4d74cd6d1eafe11e6827827799490fb1c77c11de25f0d75f14e047", + "0xadc9e6718a8f9298957d1da3842a7751c5399bbdf56f8de6c1c4bc39428f4aee6f1ba6613d37bf46b9403345e9d6fc81", + "0xb9dfb0c8df84104dbf9239ccefa4672ef95ddabb8801b74997935d1b81a78a6a5669a3c553767ec19a1281f6e570f4ff", + "0xa441f9136c7aa4c08d5b3534921b730e41ee91ab506313e1ba5f7c6f19fd2d2e1594e88c219834e92e6fb95356385aa7", + "0xa58e469f65d366b519f9a394cacb7edaddac214463b7b6d62c2dbc1316e11c6c5184ce45c16de2d77f990dcdd8b55430", + "0x9820a9bbf8b826bec61ebf886de2c4f404c1ebdc8bab82ee1fea816d9de29127ce1852448ff717a3fe8bbfe9e92012e5", + "0x82f485cdefd5642a6af58ac6817991c49fac9c10ace60f90b27f1788cc026c2fe8afc83cf499b3444118f9f0103598a8", + "0x98dfc2065b1622f596dbe27131ea60bef7a193b12922cecb27f8c571404f483014f8014572e86ae2e341ab738e4887ef", + "0xb23d6f8331eef100152d60483cfa14232a85ee712c8538c9b6417a5a7c5b353c2ac401390c6c215cb101f5cee6b5f43e", + "0xa9ef2f63ec6d9beb8f3d04e36807d84bda87bdd6b351a3e4a9bf7edcb5618c46c1f58cfbf89e64b40f550915c6988447", + "0xa7d3487da56cda93570cc70215d438204f6a2709bfb5fda6c5df1e77e2efc80f4235c787e57fbf2c74aaff8cbb510a14", + "0xb59c8e803b4c3486777d15fc2311b97f9ded1602fa570c7b0200bada36a49ee9ef4d4c1474265af8e1c38a93eb66b18b", + "0xa9d4da70ff676fa55d1728ba6ab03b471fa38b08854d99e985d88c2d050102d8ccffbe1c90249a5607fa7520b15fe791", + "0xb321991d12f6ac07a5de3c492841d1a27b0d3446082fbce93e7e1f9e8d8fe3b45d41253556261c21b70f5e189e1a7a6f", + "0xb5085ecbe793180b40dbeb879f4c976eaaccaca3a5246807dced5890e0ed24d35f3f86955e2460e14fb44ff5081c07ba", + "0x835a10809ccf939bc46cf950a33b36d71be418774f51861f1cd98a016ade30f289114a88225a2c11e771b8b346cbe6ef", + "0x8b51b916402aa2c437fce3bcad6dad3be8301a1a7eab9d163085b322ffb6c62abf28637636fe6114573950117fc92898", + "0x89f2f3f7a8da1544f24682f41c68114a8f78c86bd36b066e27da13acb70f18d9f548773a16bd8e24789420e17183f137", + "0x961da00cc8750bd84d253c08f011970ae1b1158ad6778e8ed943d547bceaf52d6d5a212a7de3bf2706688c4389b827d2", + "0xb0e4b0efa3237793e9dcce86d75aafe9879c5fa23f0d628649aef2130454dcf72578f9bf227b9d2b9e05617468e82588", + "0x8c50e5d1a24515a9dd624fe08b12223a75ca55196f769f24748686315329b337efadca1c63f88bee0ac292dd0a587440", + "0x92c2153a4733a62e4e1d5b60369f3c26777c7d01cd3c8679212660d572bd3bac9b8a8a64e1f10f7dbf5eaa7579c4e423", + "0x84de53b11671abc9c38710e19540c5c403817562aeb22a88404cdaff792c1180f717dbdfe8f54940c062c4d032897429", + "0x97fa404df48433a00c85793440e89bb1af44c7267588ae937a1f5d53e01e1c4d4fc8e4a6d517f3978bfdd6c2dfde012f", + "0xa230124424a57fad3b1671f404a94d7c05f4c67b7a8fbacfccea28887b78d7c1ed40b92a58348e4d61328891cd2f6cee", + "0x8cf251d6f5229183b7f3fe2f607a90b4e4b6f020fb4ba2459d28eb8872426e7be8761a93d5413640a661d73e34a5b81f", + "0x8b9d764ece7799079e63c7f01690c8eff00896a26a0d095773dea7a35967a8c40db7a6a74692f0118bf0460c26739af4", + "0x9085e1fdf9f813e9c3b8232d3c8863cd84ab30d45e8e0d3d6a0abd9ebc6fd70cdf749ff4d04390000e14c7d8c6655fc7", + "0xa9ee57540e1fd9c27f4f0430d194b91401d0c642456c18527127d1f95e2dba41c2c86d1990432eb38a692fda058fafde", + "0xaec15f40805065c98e2965b1ae12a6c9020cfdb094c2d0549acfc7ea2401a5fb48d3ea7d41133cf37c4e096e7ff53eb9", + "0x94f51f8a4ed18a6030d0aaa8899056744bd0e9dc9ac68f62b00355cddab11da5da16798db75f0bfbce0e5bdfe750c0b6", + "0xb8e8fdddae934a14b57bc274b8dcd0d45ebb95ddbaabef4454e0f6ce7d3a5a61c86181929546b3d60c447a15134d08e1", + "0x97b20b5b4d6b9129da185adfbf0d3d0b0faeba5b9715f10299e48ea0521709a8296a9264ce77c275a59c012b50b6519a", + "0xaa8c34e164019743fd8284b84f06c3b449aae7996e892f419ee55d82ad548cb300fd651de329da0384243954c0ef6a60", + "0x8368f8b12a5bceb1dba25adb3a2e9c7dc9b1a77a1f328e5a693f5aec195cd1e06b0fe9476b554c1c25dac6c4a5b640a3", + "0x8e6d4044b55ab747e83ec8762ea86845f1785cc7be0279c075dadf08aca3ccc5a096c015bb3c3f738f647a4eadea3ba5", + "0xa31c05f7032f30d1dac06678be64d0250a071fd655e557400e4a7f4c152be4d5c7aa32529baf3e5be7c4bd49820054f6", + "0xa580df5e58c4274fe0f52ac2da1837e32f5c9db92be16c170187db4c358f43e5cfdda7c5911dcc79d77a5764e32325f5", + "0xb1f040fc5cc51550cb2c25cf1fd418ecdd961635a11f365515f0cb4ffb31da71f48128c233e9cc7c0cf3978d757ec84e", + "0x8dbe5abf4031ec9ba6bb06d1a47dd1121fb9e03b652804069250967fd5e9577d0039e233441b7f837a7c9d67ba18c28e", + "0x8a3f1157fb820d1497ef6b25cd70b7e16bb8b961b0063ad340d82a79ee76eb2359ca9e15e6d42987ed7f154f5eeaa2da", + "0xa557198c6f3d5382be9fb363feb02e2e243b0c3c61337b3f1801c4a0943f18e38ce1a1c36b5c289c8fa2aa9d58742bab", + "0xa0a6258700cadbb9e241f50766573bf9bdb7ad380b1079dc3afb4054363d838e177b869cad000314186936e40359b1f2", + "0xa7b75901520c06e9495ab983f70b61483504c7ff2a0980c51115d11e0744683ce022d76e3e09f4e99e698cbd21432a0d", + "0xa18f2e98d389dace36641621488664ecbb422088ab03b74e67009b8b8acacaaa24fdcf42093935f355207d934adc52a8", + "0xa6c6113ebf72d8cf3163b2b8d7f3fa24303b13f55752522c660a98cd834d85d8c79214d900fa649499365e2e7641f77a", + "0xac30d50ee8ce59a10d4b37a3a35e62cdb2273e5e52232e202ca7d7b8d09d28958ee667fae41a7bb6cdc6fe8f6e6c9c85", + "0xabae12df83e01ec947249fedd0115dc501d2b03ff7232092979eda531dbbca29ace1d46923427c7dde4c17bdf3fd7708", + "0xb2a75bff18e1a6b9cf2a4079572e41205741979f57e7631654a3c0fcec57c876c6df44733c9da3d863db8dff392b44a3", + "0xb3145ffaf603f69f15a64936d32e3219eea5ed49fdfd2f5bf40ea0dfd974b36fb6ff12164d4c2282d892db4cf3ff3ce1", + "0xb87998cecf7b88cde93d1779f10a521edd5574a2fbd240102978639ec57433ba08cdb53849038a329cebbe74657268d2", + "0x8802581bba66e1952ac4dab36af371f66778958f4612901d95e5cac17f59165e6064371d02de8fb6fccf89c6dc8bd118", + "0xa0c6155f42686cbe7684a1dc327100962e13bafcf3db97971fc116d9f5c0c8355377e3d70979cdbd58fd3ea52440901c", + "0xac36b84a4ac2ebd4d6591923a449c564e3be8a664c46092c09e875c2998eba16b5d32bfd0882fd3851762868e669f0b1", + "0xb92479599e806516ce21fb0bd422a1d1d925335ebe2b4a0a7e044dd275f30985a72b97292477053ac5f00e081430da80", + "0xb79d77260b25daf9126dab7a193df2d7d30542786fa1733ffaf6261734770275d3ca8bae1d9915d1181a78510b3439db", + "0xb32e5d0fba024554bd5fe8a793ebe8003335ddd7f585876df2048dcf759a01285fecb53daae4950ba57f3a282a4d8495", + "0xa699c1e654e7c484431d81d90657892efeb4adcf72c43618e71ca7bd7c7a7ebbb1db7e06e75b75dc4c74efd306b5df3f", + "0x94619f5de05e07b32291e1d7ab1d8b7337a2235e49d4fb5f3055f090a65e932e829efa95db886b32b153bdd05a53ec8c", + "0xb59053e1081d2603f1ca0ba553804d6fa696e1fd996631db8f62087b26a40dfef02098b0326bb75f99ec83b9267ca738", + "0xa03fb9ed8286aacfa69fbd5d953bec591c2ae4153400983d5dbb6cd9ea37fff46ca9e5cceb9d117f73e9992a6c055ad2", + "0x874022d99c16f60c22de1b094532a0bc6d4de700ad01a31798fac1d5088b9a42ad02bef8a7339af7ed9c0d4f16b186ee", + "0xa9f5eee196d608efe4bcef9bf71c646d27feb615e21252cf839a44a49fd89da8d26a758419e0085a05b1d59600e2dc42", + "0xa93774a03519d2f20fdf2ef46547b0a5b77c137d6a3434b48d56a2cbef9e77120d1b85d0092cf8842909213826699477", + "0x841705cd5cd76b943e2b7c5e845b9dd3c8defe8ef67e93078d6d5e67ade33ad4b0fd413bc196f93b0a4073c855cd97d4", + "0xa70a6a80ce407f07804c0051ac21dc24d794b387be94eb24e1db94b58a78e1bcfb48cd0006db8fc1f9bedaece7a44fbe", + "0xa99365dcd1a00c66c9db6924b97c920f5c723380e823b250db85c07631b320ec4e92e586f7319e67a522a0578f7b6d6c", + "0x865b11e0157b8bf4c5f336024b016a0162fc093069d44ac494723f56648bc4ded13dfb3896e924959ea11c96321afefc", + "0xa13c4a3ac642ede37d9c883f5319e748d2b938f708c9d779714108a449b343f7b71a6e3ef4080fee125b416762920273", + "0x88c0f66bada89f8a43e5a6ead2915088173d106c76f724f4a97b0f6758aed6ae5c37c373c6b92cdd4aea8f6261f3a374", + "0xa4083149432eaaf9520188ebf4607d09cf664acd1f471d4fb654476e77a9eaae2251424ffda78d09b6cb880df35c1219", + "0x99a676d5af49f0ba44047009298d8474cabf2d5bca1a76ba21eff7ee3c4691a102fdefea27bc948ccad8894a658abd02", + "0x9767440d58c57d3077319d3a330e5322b9ba16981ec74a5a14d53462eab59ae7fd2b14025bfc63b268862094acb444e6", + "0xa9ee604ada50adef82e29e893070649d2d4b7136cc24fa20e281ce1a07bd736bf0de7c420369676bcbcecff26fb6e900", + "0xb78d4219f95a2dbfaa7d0c8a610c57c358754f4f43c2af312ab0fe8f10a5f0177e475332fb8fd23604e474fc2abeb051", + "0xb097479e967504deb6734785db7e60d1d8034d6ca5ba9552887e937f5e17bb413fccac2c1d1082154ed76609127860ad", + "0xaa5cc43f5b8162b016f5e1b61214c0c9d15b1078911c650b75e6cdfb49b85ee04c6739f5b1687d15908444f691f732de", + "0x875d3acb9af47833b72900bc0a2448999d638f153c5e97e8a14ec02d0c76f6264353a7e275e1f1a5855daced523d243b", + "0x8f3947433d9bd01aa335895484b540a9025a19481a1c40b4f72dd676bfcf332713714fd4010bde936eaf9470fd239ed0", + "0xa2cbf045e1bed38937492c1f2f93a5ba41875f1f262291914bc1fc40c60bd0740fb3fea428faf6da38b7c180fe8ac109", + "0x9536d262b7a42125d89f4f32b407d737ba8d9242acfc99d965913ab3e043dcac9f7072a43708553562cac4cba841df30", + "0xa8173865c64634ba4ac2fa432740f5c05056a9deaf6427cb9b4b8da94ca5ddbc8c0c5d3185a89b8b28878194de9cdfcd", + "0x94ff52181aadae832aed52fc3b7794536e2a31a21fc8be3ea312ca5c695750d37f08002f286b33f4023dba1e3253ecfa", + "0xb098a3c49f2aaa28b6b3e85bc40ce6a9cdd02134ee522ae73771e667ad7629c8d82c393fba9f27f5416986af4c261438", + "0xa3c622eb387c9d15e7bda2e3e84d007cb13a6d50d655c3f2f289758e49d3b37b9a35e4535d3cc53d8efd51f407281f19", + "0x8c40afd3701629421fec1df1aac4e849384ef2e80472c0e28d36cb1327acdf2826f99b357f3d7afdbc58a6347fc40b3c", + "0x882cb6b76dbdc188615dcf1a8439eba05ffca637dd25197508156e03c930b17b9fed2938506fdd7b77567cb488f96222", + "0xaafc0f19bfd71ab5ae4a8510c7861458b70ad062a44107b1b1dbacbfa44ba3217028c2824bd7058e2fa32455f624040b", + "0xa72375b797283f0f4266dec188678e2b2c060dfed5880fc6bb0c996b06e91a5343ea2b695adaab0a6fd183b040b46b56", + "0x81e15875d7ea7f123e418edf14099f2e109d4f3a6ce0eb65f67fe9fb10d2f809a864a29f60ad3fc949f89e2596b21783", + "0x889e6a0e136372ca4bac90d1ab220d4e1cad425a710e8cdd48b400b73bb8137291ceb36a39440fa84305783b1d42c72f", + "0x8a441434934180ab6f5bc541f86ebd06eadbee01f438836d797e930fa803a51510e005c9248cecc231a775b74d12b5e9", + "0x91b509b87eb09f007d839627514658c7341bc76d468920fe8a740a8cb96a7e7e631e0ea584a7e3dc1172266f641d0f5c", + "0xad0934368da823302e1ac08e3ede74b05dfdbfffca203e97ffb0282c226814b65c142e6e15ec1e754518f221f01b30f7", + "0x85480f5c10d4162a8e6702b5e04f801874d572a62a130be94b0c02b58c3c59bdcd48cd05f0a1c2839f88f06b6e3cd337", + "0xb03d038d813e29688b6e6f444eb56fec3abba64c3d6f890a6bcf2e916507091cdb2b9d2c7484617be6b26552ed1c56cb", + "0xa77af9b094bc26966ddf2bf9e1520c898194a5ccb694915950dadc204facbe3066d3d89f50972642d76b14884cfbaa21", + "0x879e058e72b73bb1f4642c21ffdb90544b846868139c6511f299aafe59c2d0f0b944dffc7990491b7c4edcd6a9889250", + "0xaf02e56ce886ff2253bc0a68faad76f25ead84b2144e5364f3fb9b648f03a50ee9dc0b2c33ebacf7c61e9e43201ef9ef", + "0xaa5150e911a8e1346868e1b71c5a01e2a4bb8632c195861fb6c3038a0e9b85f0e09b3822e9283654a4d7bb17db2fc5f4", + "0x93ba7468bb325639ec2abd4d55179c69fd04eaaf39fc5340709227bbaa4ad0a54ea8b480a1a3c8d44684e3be0f8d1980", + "0xa810cd473832b6581c36ec4cb403f2849357ba2d0b54df98ef3004b8a530c078032922a81d40158f5fb0043d56477f6e", + "0xa78253e3e3eece124bef84a0a8807ce76573509f6861d0b6f70d0aa35a30a123a9da5e01e84969708c40b0669eb70aa6", + "0xa759c48b7e4a685e735c01e5aa6ef9c248705001f470f9ad856cd87806983e917a8742a3bd5ee27db8d76080269b7c83", + "0x920adfb644b534789943cdae1bdd6e42828dda1696a440af2f54e6b97f4f97470a1c6ea9fa6a2705d8f04911d055acd1", + "0x92b8c07050d635b8dd4fd09df9054efe4edae6b86a63c292e73cc819a12a21dd7d104ce51fa56af6539dedf6dbe6f7b6", + "0x95ca86cd384eaceaa7c077c5615736ca31f36824bd6451a16142a1edc129fa42b50724aeed7c738f08d7b157f78b569e", + "0x8dea7243e9c139662a7fe3526c6c601eee72fd8847c54c8e1f2ad93ef7f9e1826b170afe58817dac212427164a88e87f", + "0x95bd7edb4c4cd60e3cb8a72558845a3cce6bb7032ccdf33d5a49ebb6ddf203bc3c79e7b7e550735d2d75b04c8b2441e8", + "0xa0f2b2c39bcea4b50883e2587d16559e246248a66ecb4a4b7d9ab3b51fb39fe98d83765e087eee37a0f86b0ba4144c02", + "0xa63083ca7238ea2b57d15a475963cf1d4f550d8cd76db290014a0461b90351f1f26a67d674c837b0b773b330c7c3d534", + "0xb8ae9f1452909e0c412c7a7fe075027691ea8df1347f65a5507bc8848f1d2c833d69748076db1129e5b4fb912f65c86c", + "0xab729328d98d295f8f3272afaf5d8345ff54d58ff9884da14f17ecbdb7371857fdf2f3ef58080054e9874cc919b46224", + "0xb3722a15c66a0014ce4d082de118def8d39190c15678a472b846225585f3a83756ae1b255b2e3f86a26168878e4773b2", + "0x872f6341476e387604a7e93ae6d6117e72d164e38ebc2b825bc6df4fcce815004d7516423c190c1575946b5de438c08d", + "0x8a94f5f632068399c359c4b3a3653cb6df2b207379b3d0cdace51afdf70d6d5cce6b89a2b0fee66744eba86c98fb21c2", + "0xb79303453100654c04a487bdcadc9e3578bc80930c489a7069a52e8ca1dba36c492c8c899ce025f8364599899baa287d", + "0x888427bdf76caec90814c57ee1c3210a97d107dd88f7256f14f883ad0f392334b82be11e36dd8bfec2b37935177c7831", + "0xa4c992f08c2f8bac0b74b3702fb0c75c9838d2ce90b28812019553d47613c14d8ce514d15443159d700b218c5a312c49", + "0xb9b524aad924f9acc63d002d617488f31b0016e0f0548f050cada285ce7491b74a125621638f19e9c96eabb091d945be", + "0x8e4b1db12fd760a17214c9e47f1fce6e43c0dbb4589a827a13ac61aaae93759345697bb438a00edab92e0b7b62414683", + "0x86433b6135d9ed9b5ee8cb7a6c40e5c9d30a68774cec04988117302b8a02a11a71a1e03fd8e0264ef6611d219f103007", + "0xb9c6ec14b1581a03520b8d2c1fbbc31fb8ceaef2c0f1a0d0080b6b96e18442f1734bea7ef7b635d787c691de4765d469", + "0x80a784b0b27edb51ef2bad3aee80e51778dcaa0f3f5d3dcb5dc5d4f4b2cf7ae35b08de6680ea9dac53f8438b92eb09ef", + "0xa093f6a857b8caaff80599c2e89c962b415ecbaa70d8fd973155fa976a284c6b29a855f5f7a3521134d00d2972755188", + "0xb914148ca717721144ebb3d3bf3fcea2cd44c30c5f7051b89d8001502f3856fef30ec167174d5b76265b55d70f8716b5", + "0x97f179e01a947a906e1cbeafa083960bc9f1bade45742a3afee488dfb6011c1c6e2db09a355d77f5228a42ccaa7bdf8e", + "0x85447eea2fa26656a649f8519fa67279183044791d61cf8563d0783d46d747d96af31d0a93507bbb2242666aa87d3720", + "0xa44793ab4035443f8f2968a40e043b4555960193ffa3358d22112093aadfe2c136587e4139ffd46d91ed4107f61ea5e0", + "0xaac9438382a856caf84c5a8a234282f71b5fc5f65219103b147e7e6cf565522285fbfd7417b513bdad8277a00f652ca1", + "0x96774d0ef730d22d7ab6d9fb7f90b9ead44285219d076584a901960542756700a2a1603cdf72be4708b267200f6c36a9", + "0xa42832173f9d9491c7bd93b21497fbfa4121687cd4d2ab572e80753d7edcbb42cfa49f460026fbde52f420786751a138", + "0xb430ccab85690db02c2d0eb610f3197884ca12bc5f23c51e282bf3a6aa7e4a79222c3d8761454caf55d6c01a327595f9", + "0x8459e4fb378189b22b870a6ef20183deb816cefbf66eca1dc7e86d36a2e011537db893729f500dc154f14ce24633ba47", + "0x976acdb0efb73e3a3b65633197692dedc2adaed674291ae3df76b827fc866d214e9cac9ca46baefc4405ff13f953d936", + "0x89d0ebb287c3613cdcae7f5acc43f17f09c0213fc40c074660120b755d664109ffb9902ed981ede79e018ddb0c845698", + "0x9490ce9442bbbd05438c7f5c4dea789f74a7e92b1886a730544b55ba377840740a3ae4f2f146ee73f47c9278b0e233bc", + "0xabaccb1bd918a8465f1bf8dbe2c9ad4775c620b055550b949a399f30cf0d9eb909f3851f5b55e38f9e461e762f88f499", + "0xb71ef144c9a98ce5935620cb86c1590bd4f48e5a2815d25c0cdb008fde628cf628c31450d3d4f67abbfeb16178a74cfd", + "0xa243c030c858f1f60cccd26b45b024698cc6d9d9e6198c1ed4964a235d9f8d0baf9cde10c8e63dfaa47f8e74e51a6e85", + "0x90ce664f5e4628a02278f5cf5060d1a34f123854634b1870906e5723ac9afd044d48289be283b267d45fcbf3f4656aaf", + "0xaa5d9e60cc9f0598559c28bb9bdd52aa46605ab4ffe3d192ba982398e72cec9a2a44c0d0d938ce69935693cabc0887ea", + "0xb1f34b14612c973a3eceb716dc102b82ab18afef9de7630172c2780776679a7706a4874e1df3eaadf541fb009731807f", + "0xb0afe6e7cb672e18f0206e4423f51f8bd0017bf464c4b186d46332c5a5847647f89ff7fa4801a41c1b0b42f6135bcc92", + "0xa97a4a5cd8d51302e5e670aee78fe6b5723f6cc892902bbb4f131e82ca1dfd5de820731e7e3367fb0c4c1922a02196e3", + "0x8139e5dd9cf405e8ef65f11164f0440827d98389ce1b418b0c9628be983a9ddd6cf4863036ccb1483b40b8a527acd9ed", + "0xb00f706fa4de1f663f021e8ad3d155e84ce6084a409374b6e6cd0f924a0a0b51bebaaaf1d228c77233a73b0a5a0df0e9", + "0xb2dd1a2f986395bb4e3e960fbbe823dbb154f823284ebc9068502c19a7609790ec0073d08bfa63f71e30c7161b6ef966", + "0x851613517966de76c1c55a94dc4595f299398a9808f2d2f0a84330ba657ab1f357701d0895f658c18a44cb00547f6f57", + "0xabd923831fbb427e06e0dd335253178a9e5791395c84d0ab1433c07c53c1209161097e9582fb8736f8a60bde62d8693e", + "0x8f4ce1c59e22b1ce7a0664caaa7e53735b154cfba8d2c5cc4159f2385843de82ab58ed901be876c6f7fce69cb4130950", + "0x9353128b5ebe0dddc555093cf3e5942754f938173541033e8788d7331fafc56f68d9f97b4131e37963ab7f1c8946f5f1", + "0x95f58f5c82de2f2a927ca99bf63c9fc02e9030c7e46d0bf6b67fe83a448d0ae1c99541b59caf0e1ccab8326231af09a5", + "0xaaad8d6f6e260db45d51b2da723be6fa832e76f5fbcb77a9a31e7f090dd38446d3b631b96230d78208cae408c288ac4e", + "0x97ef55662f8a1ec0842b22ee21391227540adf7708f491436044f3a2eb18c471525e78e1e14fa292507c99d74d7437c6", + "0x97ccb15dfadc7c59dca08cfe0d22df2e52c684cf97de1d94bc00d7ba24e020025130b0a39c0f4d46e4fc872771ee7875", + "0x8ff96e81c1a4a2ab1b4476c21018fae0a67e92129ee36120cae8699f2d7e57e891f5c624902cb1b845b944926a605cc3", + "0xb46dbe1cb3424002aa7de51e82f600852248e251465c440695d52538d3f36828ff46c90ed77fc1d11534fe3c487df8ef", + "0x807fb5ee74f6c8735b0b5ca07e28506214fe4047dbeb00045d7c24f7849e98706aea79771241224939cb749cf1366c7d", + "0xb795f6a8b9b826aaeee18ccd6baf6c5adeeec85f95eb5b6d19450085ec7217e95a2d9e221d77f583b297d0872073ba0e", + "0x808d42238e440e6571c59e52a35ae32547d502dc24fd1759d8ea70a7231a95859baf30b490a4ba55fa2f3aaa11204597", + "0xb18ca8a3325adb0c8c18a666d4859535397a1c3fe08f95eebfac916a7a99bbd40b3c37b919e8a8ae91da38bc00fa56c0", + "0x891f2fcd2c47cbea36b7fa715968540c233313f05333f09d29aba23c193f462ed490dd4d00969656e89c53155fdfe710", + "0x80dc1db20067a844fe8baceca77f80db171a5ca967acb24e2d480eae9ceb91a3343c31ad1c95b721f390829084f0eae6", + "0x8db106a37d7b88f5d995c126abb563934dd8de516af48e85695d02b1aea07f79217e3cdd03c6f5ca57421830186c772b", + "0xadce6f7c30fd221f6b10a0413cc76435c4bb36c2d60bca821e5c67409fe9dbb2f4c36ef85eb3d734695e4be4827e9fd3", + "0xa7b78b8c8d057194e8d68767f1488363f77c77bddd56c3da2bc70b6354c7aa76247c86d51f7371aa38a4aa7f7e3c0bb7", + "0xb720caaff02f6d798ac84c4f527203e823ff685869e3943c979e388e1c34c3f77f5c242c6daa7e3b30e511aab917b866", + "0x89fe366096097e38ec28dd1148887112efa5306cc0c3da09562aafa56f4eb000bf46ff79bf0bdd270cbde6bf0e1c8957", + "0x8c6f11123b26633e1abb9ed857e0bce845b2b3df91cc7b013b2fc77b477eee445da0285fc6fc793e29d5912977f40916", + "0xa7b361663f7495939ed7f518ba45ea9ff576c4e628995b7aea026480c17a71d63fc2c922319f0502eb7ef8f14a406882", + "0x87403d46a2bf63170fff0b857acacf42ee801afe9ccba8e5b4aea967b68eac73a499a65ca46906c2eb4c8f27bc739faa", + "0xb9c7f487c089bf1d20c822e579628db91ed9c82d6ca652983aa16d98b4270c4da19757f216a71b9c13ddee3e6e43705f", + "0xa7ad9e96ffd98db2ecdb6340c5d592614f3c159abfd832fe27ee9293519d213a578e6246aae51672ee353e3296858873", + "0xb48d723894b7782d96ac8433c48faca1bdfa5238019c451a7f47d958097cce3ae599b876cf274269236b9d6ff8b6d7ca", + "0xb619972d48e7e4291542dcde08f7a9cdc883c892986ded2f23ccb216e245cd8d9ad1d285347b0f9d7611d63bf4cee2bc", + "0xab7151acc41fffd8ec6e90387700bcd7e1cde291ea669567295bea1b9dd3f1df2e0f31f3588cd1a1c08af8120aca4921", + "0x81ecd99f22b3766ce0aca08a0a9191793f68c754fdec78b82a4c3bdc2db122bbb9ebfd02fc2dcc6e1567a7d42d0cc16a", + "0x9791d1183fae270e226379af6c497e7da803ea854bb20afa74b253239b744c15f670ee808f708ede873e78d79a626c9a", + "0x8689d1a870514568a074a38232e2ceb4d7df30fabeb76cff0aed5b42bf7f02baea12c5fadf69f4713464dbd52aafa55f", + "0x88020ff971dc1a01a9e993cd50a5d2131ffdcbb990c1a6aaa54b20d8f23f9546a70918ea57a21530dcc440c1509c24ad", + "0x82e0b181adc5e3b1c87ff8598447260e839d53debfae941ebea38265575546c3a74a14b4325a030833a62ff6c52d9365", + "0x87e8b16832843251fe952dadfd01d41890ed4bb4b8fa0254550d92c8cced44368225eca83a6c3ad47a7f81ff8a80c984", + "0x843203e07fce3c6c81f84bc6dc5fb5e9d1c50c8811ace522dc66e8658433a0ef9784c947e6a62c11bf705307ef05212e", + "0x8db56c5ac763a57b6ce6832930c57117058e3e5a81532b7d19346346205e2ec614eb1a2ee836ef621de50a7bc9b7f040", + "0xa254baa10cb26d04136886073bb4c159af8a8532e3fd36b1e9c3a2e41b5b2b6a86c4ebc14dbe624ee07b7ccdaf59f9ab", + "0x8e5e62a7ca9c2f58ebaab63db2ff1fb1ff0877ae94b7f5e2897f273f684ae639dff44cc65718f78a9c894787602ab26a", + "0xa5c516a438f916d1d68ca76996404792e0a66e97b7f18fc54c917bf10cf3211b62387932756e39e67e47b0bd6e88385a", + "0xa2bed800a6d95501674d9ee866e7314063407231491d794f8cf57d5be020452729c1c7cefd8c50dc1540181f5caab248", + "0x8251e29af4c61ae806fc5d032347fb332a94d472038149225298389495139ce5678fae739d02dfe53a231598a992e728", + "0xab8beb2c8353fc9f571c18fdd02bdb977fc883313469e1277b0372fbbb33b80dcff354ca41de436d98d2ed710faa467e", + "0xb90317f4505793094d89365beb35537f55a6b5618904236258dd04ca61f21476837624a2f45fef8168acf732cab65579", + "0xac52a3c8d3270ddfe1b5630159da9290a5ccf9ccbdef43b58fc0a191a6c03b8a5974cf6e2bbc7bd98d4a40a3581482d7", + "0x8b74f7e6c2304f8e780df4649ef8221795dfe85fdbdaa477a1542d135b75c8be45bf89adbbb6f3ddf54ca40f02e733e9", + "0x90499e45f5b9c81426f3d735a52a564cafbed72711d9279fdd88de8038e953bc48c57b58cba85c3b2e4ce56f1ddb0e11", + "0x84c202adeaff9293698022bc0381adba2cd959f9a35a4e8472288fd68f96f6de8be9da314c526d88e291c96b1f3d6db9", + "0xa9ba0991296caa2aaa4a1ceacfb205544c2a2ec97088eace1d84ee5e2767656a172f75d2f0c4e16a3640a0e0dec316e0", + "0x8857830a7351025617a08bc44caec28d2fae07ebf5ffc9f01d979ce2a53839a670e61ae2783e138313929129790a51a1", + "0xaa0ff87d676b418ec08f5cbf577ac7e744d1d0e9ebd14615b550eb86931eafd2a36d4732cc5d6fab1713fd7ab2f6f7c0", + "0xb8206809c6cd027ed019f472581b45f7e12288f89047928ba32b4856b6560ad30395830d71e5e30c556f6f182b1fe690", + "0xb70f68c596dcdeed92ad5c6c348578b26862a51eb5364237b1221e840c47a8702f0fbc56eb520a22c0eed99795d3903e", + "0xb94836bf406ac2cbacb10e6df5bcdfcc9d9124ae1062767ca4e322d287fd5e353fdcebd0e52407cb3cd68571258a8900", + "0x875547fb67951ad37b02466b79f0c9b985ccbc500cfb431b17823457dc79fb9597ec42cd9f198e15523fcd88652e63a4", + "0x8adf6638e18aff3eb3b47617da696eb6c4bdfbecbbc3c45d3d0ab0b12cbad00e462fdfbe0c35780d21aa973fc150285e", + "0xac830726544bfe7b5467339e5114c1a75f2a2a8d89453ce86115e6a789387e23551cd64620ead6283dfa4538eb313d86", + "0xaa283834ebd18e6c99229ce4b401eda83f01d904f250fedd4e24f1006f8fa0712a6a89a7296a9bf2ce8de30e28d1408e", + "0x88bc2cd7458532e98c596ef59ea2cf640d7cc31b4c33cef9ed065c078d1d4eb49677a67de8e6229cc17ea48bace8ee5a", + "0xabf4e970b02bef8a102df983e22e97e2541dd3650b46e26be9ee394a3ea8b577019331857241d3d12b41d4eacd29a3ac", + "0xa7a20d45044cf6492e0531d0b8b26ffbae6232fa05a96ed7f06bdb64c2b0f5ca7ec59d5477038096a02579e633c7a3ff", + "0x8aaf580aaf75c1b7a5f99ccf60503506e62058ef43b28b02f79b8536a96be3f019c9f71caf327b4e6730134730d1bef5", + "0xa1610c721a2d9af882bb6b39bea97cff1527a3aea041d25934de080214ae77c959e79957164440686d15ab301e897d4d", + "0xb7fe28543eca2a716859a76ab9092f135337e28109544f6bd2727728d0a7650428af5713171ea60bfc273d1c821d992c", + "0x9103097d088be1f75ab9d3da879106c2f597e2cc91ec31e73430647bdd5c33bcfd771530d5521e7e14df6acda44f38a6", + "0xa8c6b763de2d4b2ed42102ef64eccfef31e2fb2a8a2776241c82912fa50fc9f77f175b6d109a97ede331307c016a4b1a", + "0x9778172bbd9b1f2ec6bbdd61829d7b39a7df494a818e31c654bf7f6a30139899c4822c1bf418dd4f923243067759ce63", + "0xa64a831b908eee784b8388b45447d2885ec0551b26b0c2b15e5f417d0a12c79e867fb7bd3d008d0af98b44336f8ec1ad", + "0x82878c1285cfa5ea1d32175c9401f3cc99f6bb224d622d3fd98cc7b0a27372f13f7ab463ce3a33ec96f9be38dbe2dfe3", + "0x94f0ab7388ac71cdb67f6b85dfd5945748afb2e5abb622f0b5ad104be1d4d0062b651f134ba22385c9e32c2dfdcccce1", + "0xad990e888d279ac4e8db90619d663d5ae027f994a3992c2fbc7d262b5990ae8a243e19157f3565671d1cb0de17fe6e55", + "0xa19191b713a07efe85c266f839d14e25660ee74452e6c691cd9997d85ae4f732052d802d3deb018bdd847caa298a894b", + "0x905a9299e7e1853648e398901dfcd437aa575c826551f83520df62984f5679cb5f0ea86aa45ed3e18b67ddc0dfafe809", + "0x993d7916fa213c6d66e7c4cafafc1eaec9a2a86981f91c31eb8a69c5df076c789cbf498a24c84e0ee77af95b42145026", + "0xaac262cb7cba7fd62c14daa7b39677cabc1ef0947dd06dd89cac8570006a200f90d5f0353e84f5ff03179e3bebe14231", + "0x88f3261d1e28a58b2dee3fcc799777ad1c0eb68b3560f9b4410d134672d9533532a91ea7be28a041784872632d3c9d80", + "0xb5d28fa09f186ebc5aa37453c9b4d9474a7997b8ae92748ecb940c14868792292ac7d10ade01e2f8069242b308cf97e5", + "0x817c608fc8cacdd178665320b5a7587ca21df8bdd761833c3018b967575d25e3951cf3d498a63619a3cd2ad4406f5f28", + "0xa3e90bb5c97b07789c2f32dff1aec61d0a2220928202f5ad5355ae71f8249237799d6c8a22602e32e572cb12eabe0c17", + "0xa157ba9169c9e3e6748d9f1dd67fbe08b9114ade4c5d8fc475f87a764fb7e6f1d21f66d7905cd730f28a1c2d8378682a", + "0xa03f49b81c15433f121680aa02d734bb9e363af2156654a62bcb5b2ba2218398ccb0ff61104ea5d7df5b16ea18623b1e", + "0x9215fd8983d7de6ae94d35e6698226fc1454977ae58d42d294be9aad13ac821562ad37d5e7ee5cdfe6e87031d45cd197", + "0x83e3041af302485399ba6cd5120e17af61043977083887e8d26b15feec4a6b11171ac5c06e6ad0971d4b58a81ff12af3", + "0x8bc36066f69dc89f7c4d1e58d67497675050c6aa002244cebd9fc957ec5e364c46bab4735ea3db02b73b3ca43c96e019", + "0x8726cf1b26b41f443ff7485adcfddc39ace2e62f4d65dd0bb927d933e262b66f1a9b367ded5fbdd6f3b0932553ac1735", + "0xaedae3033cb2fb7628cb4803435bdd7757370a86f808ae4cecb9a268ad0e875f308c048c80cbcac523de16b609683887", + "0x81b43614f1c28aa3713a309a88a782fb2bdfc4261dd52ddc204687791a40cf5fd6a263a8179388596582cccf0162efc2", + "0xa5dfec96ca3c272566e89dc453a458909247e3895d3e44831528130bc47cc9d0a0dac78dd3cad680a4351d399d241967", + "0xb58864f0acd1c2afa29367e637cbde1968d18589245d9936c9a489c6c495f54f0113ecdcbe4680ac085dd3c397c4d0c3", + "0xb15a5c8cba5de080224c274d31c68ed72d2a7126d347796569aef0c4e97ed084afe3da4d4b590b9dda1a07f0c2ff3dfb", + "0xace70b32491bda18eee4a4d041c3bc9effae9340fe7e6c2f5ad975ee0874c17f1a7da7c96bd85fccff9312c518fac6e9", + "0xa29b4d144e0bf17a7e8353f2824cef0ce85621396babe8a0b873ca1e8a5f8d508b87866cf86da348470649fceefd735c", + "0xadefa9b27a62edc0c5b019ddd3ebf45e4de846165256cf6329331def2e088c5232456d3de470fdce3fa758bfdd387512", + "0x8106333ba4b4de8d1ae43bc9735d3fea047392e88efd6a2fa6f7b924a18a7a265ca6123c3edc0f36307dd7fb7fe89257", + "0x93efc82d2017e9c57834a1246463e64774e56183bb247c8fc9dd98c56817e878d97b05f5c8d900acf1fbbbca6f146556", + "0x92af3151d9e6bfb3383d85433e953c0160859f759b0988431ec5893542ba40288f65db43c78a904325ef8d324988f09d", + "0x992b3ad190d6578033c13ed5abfee4ef49cbc492babb90061e3c51ee4b5790cdd4c8fc1abff1fa2c00183b6b64f0bbbe", + "0x9906f2fa25c0290775aa001fb6198113d53804262454ae8b83ef371b5271bde189c0460a645829cb6c59f9ee3a55ce4d", + "0xa1dc3b6c968f3de00f11275092290afab65b2200afbcfa8ddc70e751fa19dbbc300445d6d479a81bda3880729007e496", + "0x89b4008d767aad3c6f93c349d3b956e28307311a5b1cec237e8d74bb0dee7e972c24f347fd56afd915a2342bd7bc32f0", + "0x8ac5adb82d852eba255764029f42e6da92dcdd0e224d387d1ef94174038db9709ac558d90d7e7c57ad4ce7f89bbfc38c", + "0x911989e9f43e580c886656377c6f856cdd4ff1bd001b6db3bbd86e590a821d34a5c6688a29b8d90f28680e9fdf03ba69", + "0x8ecce20f3ef6212edef07ec4d6183fda8e0e8cad2c6ccd0b325e75c425ee1faba00b5c26b4d95204238931598d78f49d", + "0x923dd9e0d6590a9307e8c4c23f13bae3306b580e297a937711a8b13e8de85e41a61462f25b7d352b682e8437bf2b4ab3", + "0xa2512a252587d200d2092b44c914df54e04ff8bcef36bf631f84bde0cf5a732e3dc7f00f662842cfd74b0b0f7f24180e", + "0xa0d3e64c9c71f84c0eef9d7a9cb4fa184224b969db5514d678e93e00f98b41595588ca802643ea225512a4a272f5f534", + "0xa41fb1f327ef91dcb7ac0787918376584890dd9a9675c297c45796e32d6e5985b12f9b80be47fc3a8596c245f419d395", + "0xa7614e8d0769dccd520ea4b46f7646e12489951efaef5176bc889e9eb65f6e31758df136b5bf1e9107e68472fa9b46ec", + "0x84d3b32fa62096831cc3bf013488a9f3f481dfe293ae209ed19585a03f7db8d961a7a9dd0db82bd7f62d612707575d9c", + "0x9330c3e1fadd9e08ac85f4839121ae20bbeb0a5103d84fa5aadbd1213805bdcda67bf2fb75fc301349cbc851b5559d20", + "0x81c4860cccf76a34f8a2bc3f464b7bfd3e909e975cce0d28979f457738a56e60a4af8e68a3992cf273b5946e8d7f76e2", + "0x8a382418157b601ce4c3501d3b8409ca98136a4ef6abcbf62885e16e215b76b035c94d149cc41ff92e42ccd7c43b9b3d", + "0x926c13efbe90604f6244be9315a34f72a1f8d1aab7572df431998949c378cddbf2fe393502c930fff614ff06ae98a0ce", + "0xb09f31f305efcc65589adf5d3690a76cf339efd67cd43a4e3ced7b839507466e4be72dd91f04e89e4bbef629d46e68c0", + "0x83a41a83dbcdf0d22dc049de082296204e848c453c5ab1ba75aa4067984e053acf6f8b6909a2e1f0009ed051a828a73b", + "0x918528bb8e6a055ad4db6230d3a405e9e55866da15c4721f5ddd1f1f37962d4904aad7a419218fe6d906fe191a991806", + "0x848b5d196427f6fc1f762ee3d36e832b64a76ec1033cfedc8b985dea93932a7892b8ef1035c653fb9dcd9ab2d9a44ac8", + "0xa6a1bb9c7d32cb0ca44d8b75af7e40479fbce67d216b48a2bb680d3f3a772003a49d3cd675fc64e9e0f8fabeb86d6d61", + "0xa7b7b73a6ae2ed1009c49960374b0790f93c74ee03b917642f33420498c188a169724945a975e5adec0a1e83e07fb1b2", + "0x840c8462785591ee93aee2538d9f1ec44ba2ca61a569ab51d335ac873f5d48099ae8d7a7efa0725d9ff8f9475bfa4f56", + "0xaf8d70711e81cdddfb39e67a1b76643292652584c1ce7ce4feb1641431ad596e75c9120e85f1a341e7a4da920a9cdd94", + "0xa954a75791eeb0ce41c85200c3763a508ed8214b5945a42c79bfdcfb1ec4f86ad1dd7b2862474a368d4ac31911a2b718", + "0xb57946b2332077fbcdcb406b811779aefd54473b5559a163cd65cb8310679b7e2028aa55c12a1401fdcfcac0e6fae29a", + "0xae391c12e0eb8c145103c62ea64f41345973311c3bf7281fa6bf9b7faafac87bcf0998e5649b9ef81e288c369c827e07", + "0x92bb4f9f85bc8c028a3391306603151c6896673135f8a7aefedd27acb322c04ef5dac982fc47b455d6740023e0dd3ea3", + "0xb8baa9e4b950b72ff6b88a6509e8ed1304bc6fd955748b2e59a523a1e0c5e99f52aec3da7fa9ff407a7adf259652466c", + "0x86b55b54d7adefc12954a9252ee23ae83efe8b5b4b9a7dc307904413e5d69868c7087a818b2833f9b004213d629be8ad", + "0x826d2c1faea54061848b484e288a5f4de0d221258178cf87f72e14baaa4acc21322f8c9eab5dde612ef497f2d2e1d60b", + "0x923f68a6aa6616714cf077cf548aeb845bfdd78f2f6851d8148cba9e33a374017f2f3da186c39b82d14785a093313222", + "0xab2f37a573c82e96a8d46198691cd694dfa860615625f477e41f91b879bc58a745784fccd8ffa13065834ffd150d881d", + "0x95b6e531b38648049f0d19de09b881baa1f7ea3b2130816b006ad5703901a05da57467d1a3d9d2e7c73fb3f2e409363c", + "0xb08f5cdaabec910856920cd6e836c830b863eb578423edf0b32529488f71fe8257d90aed4a127448204df498b6815d79", + "0xa2fef1b0b2874387010e9ae425f3a9676d01a095d017493648bcdf3b31304b087ccddb5cf76abc4e1548b88919663b6b", + "0x89f830825416802477cc81fdf11084885865ee6607aa15aa4eb28e351c569c49b8a1b9b5e95ddc04fa0ebafe20071313", + "0x8836a72d301c42510367181bb091e4be377777aed57b73c29ef2ce1d475feedd7e0f31676284d9a94f6db01cc4de81a2", + "0xb3b7dc63baec9a752e8433c0cdee4d0f9bc41f66f2b8d132faf925eef9cf89aae756fc132c45910f057122462605dc10", + "0x8148d72b975238b51e6ea389e5486940d22641b48637d7dfadfa603a605bfc6d74a016480023945d0b85935e396aea5d", + "0x91cffa2a17e64eb7f76bccbe4e87280ee1dd244e04a3c9eac12e15d2d04845d876eb24fe2ec6d6d266cce9efb281077f", + "0xb3c00d8ece1518fca6b1215a139b0a0e26d9cba1b3a424f7ee59f30ce800a5db967279ed60958dd1f3ee69cf4dd1b204", + "0x82507fd4ebe9fa656a7f2e084d64a1fa6777a2b0bc106d686e2d9d2edafc58997e58cb6bfd0453b2bf415704aa82ae62", + "0x873b6db725e7397d11bc9bed9ac4468e36619135be686790a79bc6ed4249058f1387c9a802ea86499f692cf635851066", + "0x88dba51133f2019cb266641c56101e3e5987d3b77647a2e608b5ff9113dfc5f85e2b7c365118723131fbc0c9ca833c9c", + "0x85595d061d677116089a6064418b93eb44ff79e68d12bd9625078d3bbc440a60d0b02944eff6054433ee34710ae6fbb4", + "0x96b8bf2504b4d28fa34a4ec378e0e0b684890c5f44b7a6bb6e19d7b3db2ab27b1e2686389d1de9fbd981962833a313ea", + "0xb24dbd5852f8f24921a4e27013b6c3fa8885b973266cb839b9c388efad95821d5d746348179dcc07542bd0d0aefad1ce", + "0xa2c69fe1d36f235215432dad48d75887a44c99dfa0d78149acc74087da215a44bdb5f04e6eef88ff7eff80a5a7decc77", + "0xa14703347e44eb5059070b2759297fcfcfc60e6893c0373eea069388eba3950aa06f1c57cd2c30984a2d6f9e9c92c79e", + "0xa44766b6251af458fe4f5f9ed1e02950f35703520b8656f09fc42d9a2d38a700c11a7c8a0436ac2e5e9f053d0bb8ff91", + "0x967ed453e1f1a4c5b7b6834cc9f75c13f6889edc0cc91dc445727e9f408487bbf05c337103f61397a10011dfbe25d61d", + "0xa0052f44a31e5741a331f7cac515a08b3325666d388880162d9a7b97598fde8b61f9ff35ff220df224eb5c4e40ef0567", + "0x99bfbe5f3e46d4d898a578ba86ed26de7ed23914bd3bcdf3c791c0bcd49398a52419077354a5ab75cea63b6c871c6e96", + "0x906e19ec8b8edd58bdf9ae05610a86e4ea2282b1bbc1e8b00b7021d093194e0837d74cf27ac9916bdb8ec308b00da3da", + "0xb7a096dc3bad5ca49bee94efd884aa3ff5615cf3825cf95fbe0ce132e35f46581d6482fa82666c7ef5f1643eaee8f1ca", + "0xa202d8b65613c42d01738ccd68ed8c2dbc021631f602d53f751966e04182743ebc8e0747d600b8a8676b1da9ae7f11ab", + "0xa3c827741b34a03254d4451b5ab74a96f2b9f7fb069e2f5adaf54fd97cc7a4d516d378db5ca07da87d8566d6eef13726", + "0x8bd877e9d4591d02c63c6f9fc9976c109de2d0d2df2bfa5f6a3232bab5b0b8b46e255679520480c2d7a318545efa1245", + "0x86e5a24f0748b106dee2d4d54e14a3b0af45a96cbee69cac811a4196403ebbee17fd24946d7e7e1b962ac7f66dbaf610", + "0x91fa9f5f8000fe050f5b224d90b59fcce13c77e903cbf98ded752e5b3db16adb2bc1f8c94be48b69f65f1f1ad81d6264", + "0xa9a1eb399ed95d396dccd8d1ac718043446f8b979ec62bdce51c617c97a312f01376ab7fb87d27034e5f5570797b3c33", + "0x903c58e57ddd9c446afab8256a6bb6c911121e6ccfb4f9b4ed3e2ed922a0e500a5cb7fa379d5285bc16e11dac90d1fda", + "0x9414e1959c156cde1eb24e628395744db75fc24b9df4595350aaad0bc38e0246c9b4148f6443ef68b8e253a4a6bcf11c", + "0x8cc5c6bb429073bfef47cae7b3bfccb0ffa076514d91a1862c6bda4d581e0df87db53cc6c130bf8a7826304960f5a34e", + "0x9116dade969e7ce8954afcdd43e5cab64dc15f6c1b8da9d2d69de3f02ba79e6c4f6c7f54d6bf586d30256ae405cd1e41", + "0x8d4009a75ccb2f29f54a5f16684b93202c570d7a56ec1a8b20173269c5f7115894f210c26b41e8d54d4072de2d1c75d0", + "0xb656a27d06aade55eadae2ad2a1059198918ea6cc3fd22c0ed881294d34d5ac7b5e4700cc24350e27d76646263b223aa", + "0xa98918a5dc7cf610fe55f725e4fd24ce581d594cb957bb9b4e888672e9c0137003e1041f83e3f1d7b9caab06462c87d4", + "0xb3f52aaa4cd4221cb9fc45936cc67fd3864bf6d26bf3dd86aa85aa55ecfc05f5e392ecce5e7cf9406b4b1c4fce0398c8", + "0xa8e02926430813caa851bb2b46de7f0420f0a64eb5f6b805401c11c9091d3b6d67d841b5674fa2b1dce0867714124cd8", + "0x865619436076c2760d9e87ddc905023c6de0a8d56eef12c98a98c87837f2ca3f27fd26a2ad752252dbcbe2b9f1d5a032", + "0x85ee16d8901c272cfbbe966e724b7a891c1bd5e68efd5d863043ad8520fc409080af61fd726adc680b3f1186fe0ac8b8", + "0xa9ff6c347ac6f4c6ab993b748802e96982eaf489dc69032269568412fc9a79e7c2850dfc991b28211b3522ee4454344b", + "0xa89d49d1e267bb452d6cb621b9a90826fe55e9b489c0427b94442d02a16f390eed758e209991687f73f6b5a032321f42", + "0x925c4f8eab2531135cd71a4ec88e7035b5eea34ba9d799c5898856080256b4a15ed1a746e002552e2a86c9c157e22e83", + "0x8e9ba68ded0e94935131b392b28218315a185f63bf5e3c1a9a9dd470944509ca0ba8f6122265f8da851b5cc2abce68f1", + "0x950ee01291754feace97c2e933e4681e7ddfbc4fcd079eb6ff830b0e481d929c93d0c7fb479c9939c28ca1945c40da09", + "0x8b2fb4432c05653303d8c8436473682933a5cb604da10c118ecfcd2c8a0e3132e125afef562bdbcc3df936164e5ce4f2", + "0x971b86fc4033485e235ccb0997a236206ba25c6859075edbcdf3c943116a5030b7f75ebca9753d863a522ba21a215a90", + "0xa8a977f51473a91d178ee8cfa45ffef8d6fd93ab1d6e428f96a3c79816d9c6a93cd70f94d4deda0125fd6816e30f3bea", + "0xa1017677f97dda818274d47556d09d0e4ccacb23a252f82a6cfe78c630ad46fb9806307445a59fb61262182de3a2b29c", + "0x8a39d763c08b926599ab1233219c49c825368fad14d9afc7c0c039224d37c00d8743293fd21645bf0b91eaf579a99867", + "0x809d152a7e2654c7fd175b57f7928365a521be92e1ed06c05188a95864ddb25f7cab4c71db7d61bbf4cae46f3a1d96ce", + "0xa2b79a582191a85dbe22dc384c9ca3de345e69f6aa370aa6d3ff1e1c3de513e30b72df9555b15a46586bd27ea2854d9d", + "0xb62515d539ec21a155d94fc00ea3c6b7e5f6636937bce18ed5b618c12257fb82571886287fd5d1da495296c663ebc512", + "0x8a8a5392a0e2ea3c7a8c51328fab11156004e84a9c63483b64e8f8ebf18a58b6ffa8fe8b9d95af0a2f655f601d096396", + "0xb6ba290623cd8dd5c2f50931c0045d1cfb0c30877bc8fe58cbc3ff61ee8da100045a39153916efa1936f4aee0892b473", + "0xa8bcdc1ce5aa8bfa683a2fc65c1e79de8ff5446695dcb8620f7350c26d2972a23da22889f9e2b1cacb3f688c6a2953dc", + "0xa51007e4346060746e6b0e4797fc08ef17f04a34fe24f307f6b6817edbb8ce2b176f40771d4ae8a60d6152cbebe62653", + "0xa02ab8bd4c3d114ea23aebdd880952f9495912817da8c0c08eabc4e6755439899d635034413d51134c72a6320f807f1c", + "0x97dbf96c6176379fdb2b888be4e757b2bca54e74124bd068d3fa1dbd82a011bbeb75079da38e0cd22a761fe208ecad9b", + "0xb4ef79a46a2126f53e2ebe62770feb57fd94600be29459d70a77c5e9cc260fa892be06cd60f886bf48459e48eb50d063", + "0x87e6894643815c0ea48cb96c607266c5ee4f1f82ba5fe352fb77f9b6ed14bfc2b8e09e80a99ac9047dfcf62b2ae26795", + "0x95466cc1a78c9f33a9aaa3829a4c8a690af074916b56f43ae46a67a12bb537a5ac6dbe61590344a25b44e8512355a4a7", + "0x81a3fc07a7b68d92c6ee4b6d28f5653ee9ec85f7e2ee1c51c075c1b130a8c5097dc661cf10c5aff1c7114b1a6a19f11a", + "0x8650ac644f93bbcb88a6a0f49fee2663297fd4bc6fd47b6a89b9d8038d32370438ab3a4775ec9b58cb10aea8a95ef7b6", + "0xa7c0447849bb44d04a0393a680f6cd390093484a79a147dd238f5d878030d1c26646d88211108e59fe08b58ad20c6fbd", + "0xad4b2691f6f19da1d123aaa23cca3e876247ed9a4ab23c599afdbc0d3aa49776442a7ceaa996ac550d0313d9b9a36cee", + "0xa0275767a270289adc991cc4571eff205b58ad6d3e93778ddbf95b75146d82517e8921bd0d0564e5b75fa0ccdab8e624", + "0xa4ddd3eab4527a2672cf9463db38bc29f61460e2a162f426b7852b7a7645fbd62084fd39a8e4d60e1958cce436dd8f57", + "0xb4d4f87813125a6b355e4519a81657fa97c43a6115817b819a6caf4823f1d6a1169683fd68f8d025cdfa40ebf3069acb", + "0x9557e55377e279f4b6b5e0ffe01eca037cc13aac242d67dfcd0374a1e775c5ed5cb30c25fe21143fee54e3302d34a3ea", + "0xb885b3ace736cd373e8098bf75ba66fa1c6943ca1bc4408cd98ac7074775c4478594f91154b8a743d9c697e1b29f5840", + "0x93e55f92bdbccc2de655d14b1526836ea2e52dba65eb3f87823dd458a4cb5079bf22ce6ef625cb6d6bfdd0995ab9a874", + "0xad26c3aa35ddfddc15719b8bb6c264aaec7065e88ac29ba820eb61f220fef451609a7bb037f3722d022e6c86e4f1dc88", + "0x859e21080310c8d6a38e12e2ac9f90a156578cdeb4bb2e324700e97d9a5511cd6045dc39d1d0de3f94aeed043a24119d", + "0xb65eb2c63d8a30332eb24ee8a0c70156fc89325ebbb38bacac7cf3f8636ad8a472d81ccca80423772abc00192d886d8a", + "0x90ff017b4804c2d0533b72461436b10603ab13a55f86fd4ec11b06a70ef8166f958c110519ca1b4cc7beba440729fe2d", + "0x89e4c22ffb51f2829061b3c7c1983c5c750cad158e3a825d46f7cf875677da5d63f653d8a297022b5db5845c9271b32b", + "0xb52423b4a8c37d3c3e2eca8f0ddbf7abe0938855f33a0af50f117fab26415fb0a3da5405908ec5fdc22a2c1f2ca64892", + "0xaea145a0f6e0ba9df8e52e84bb9c9de2c2dc822f70d2724029b153eb68ee9c17de7d35063dcd6a39c37c59fdd12138f7", + "0x83967e69bf2b361f86361bd705dce0e1ad26df06da6c52b48176fe8dfcbeb03c462c1a4c9e649eff8c654b18c876fdef", + "0xa050be52e54e676c151f7a54453bbb707232f849beab4f3bf504b4d620f59ed214409d7c2bd3000f3ff13184ccda1c35", + "0xa79b096dff98038ac30f91112dd14b78f8ad428268af36d20c292e2b3b6d9ed4fb28480bb04e465071cc67d05786b6d1", + "0x82dd331fb3f9e344ebdeeb557769b86a2cc8cc38f6c298d7572a33aea87c261afa9dbd898989139b9fc16bc1e880a099", + "0xaeb019cb80dc4cb4207430d0f2cd24c9888998b6f21d9bf286cc638449668d2eec0018a4cf3fe6448673cd6729335e2b", + "0xb6fa547bb0bb83e5c5be0ed462a8783fba119041c136a250045c09d0d2af330c604331e7de960df976ff76d67f8000cd", + "0x9091594f488b38f9d2bb5df49fd8b4f8829d9c2f11a197dd1431ed5abbc5c954bbde3387088f9ee3a5a834beb7619bce", + "0x935dd28f2896092995c5eff1618e5b6efe7a40178888d7826da9b0503c2d6e68a28e7fac1a334e166d0205f0695ef614", + "0xac7019af65221b0cc736287b32d7f1a3561405715ba9a6a122342e04e51637ba911c41573de53e4781f2230fdcb2475f", + "0x9106d94f23cc1eacec8316f16d6f0a1cc160967c886f51981fdb9f3f12ee1182407d2bb24e5b873de58cb1a3ee915a6b", + "0xa0a547b5f0967b1c3e5ec6c6a9a99f0578521489180dfdfbb5561f4d166baac43a2f06f950f645ce991664e167537eed", + "0x997cb55c26996586ba436a95566bd535e9c22452ca5d2a0ded2bd175376557fa895f9f4def4519241ff386a063f2e526", + "0x9904d23a7c1c1d2e4bab85d69f283eb0a8e26d46e8b7b30224438015c936729b2f0af7c7c54c03509bb0500acb42d8a4", + "0x832c6f01d6571964ea383292efc8c8fa11e61c0634a25fa180737cc7ab57bc77f25e614aac9a2a03d98f27b3c1c29de2", + "0xb515a767e95704fb7597bca9e46f1753abacdc0e56e867ee3c6f4cd382643c2a28e65312c05ad040eaa3a8cbe7217a65", + "0x8332f3b63a6dc985376e8b1b25eeae68be6160fbe40053ba7bcf6f073204f682da72321786e422d3482fd60c9e5aa034", + "0x84f7128920c1b0bb40eee95701d30e6fc3a83b7bb3709f16d97e72acbb6057004ee7ac8e8f575936ca9dcb7866ab45f7", + "0x85325cfa7ded346cc51a2894257eab56e7488dbff504f10f99f4cd2b630d913003761a50f175ed167e8073f1b6b63fb0", + "0x8c7d246985469ff252c3f4df6c7c9196fc79f05c1c66a609d84725c78001d0837c7a7049394ba5cf7e863e2d58af8417", + "0x8cb595466552e7c4d42909f232d4063e0a663a8ef6f6c9b7ce3a0542b2459cde04e0e54c7623d404acb5b82775ac04f6", + "0x8c294058bed53d7290325c363fe243f6ec4f4ea2343692f4bac8f0cb86f115c069ccb8334b53d2e42c067691ad110dba", + "0xa685d75b91aea04dbc14ab3c1b1588e6de96dae414c8e37b8388766029631b28dd860688079b12d09cd27f2c5af11adf", + "0xae908c42d208759da5ee9b405df85a6532ea35c6f0f6a1288d22870f59d98edc896841b8ac890a538e6c8d1e8b02d359", + "0xb37c0026c7b32eb02cacac5b55cb5fe784b8e48b2945c64d3037af83ece556a117f0ff053a5968c2f5fa230e291c1238", + "0xb13c4088b61a06e2c03ac9813a75ff1f68ffdfee9df6a8f65095179a475e29cc49119cad2ce05862c3b1ac217f3aace9", + "0x877352a22fc8052878a57effc159dac4d75fe08c84d3d5324c0bab6d564cdf868f33ceee515eee747e5856b62cfa0cc7", + "0xb842dd4af8befe00a97c2d0f0c33c93974761e2cb9e5ab8331b25170318ddd5e4bdbc02d8f90cbfdd5f348f4f371c1f7", + "0xb4eac4b91e763666696811b7ed45e97fd78310377ebea1674b58a2250973f80492ac35110ed1240cd9bb2d17493d708c", + "0x81e09ff55214960775e1e7f2758b9a6c4e4cd39edf7ec1adfaad51c52141182b79fe2176b23ddc7df9fd153e5f82d668", + "0x8eac204208d99a2b738648df96353bbb1b1065e33ee4f6bba174b540bbbd37d205855e1f1e69a6b7ff043ca377651126", + "0xa1a13549c82c877253ddefa36a29ea6a23695ee401fdd48e65f6f61e5ebd956d5e0edeff99484e9075cb35071fec41e2", + "0xb351b4dc6d98f75b8e5a48eb7c6f6e4b78451991c9ba630e5a1b9874c15ac450cd409c1a024713bf2cf82dc400e025ef", + "0xadf34b002b2b26ab84fc1bf94e05bd8616a1d06664799ab149363c56a6e0c807fdc473327d25632416e952ea327fcd95", + "0x8d3ec6032778420dfa8be52066ba0e623467df33e4e1901dbadd586c5d750f4ccde499b5197e26b9ea43931214060f69", + "0xb1bb0f2527db6d51f42b9224383c0f96048bbc03d469bf01fe1383173ef8b1cc9455d9dd8ba04d46057f46949bfc92b5", + "0x9202503bd29a6ec198823a1e4e098f9cfe359ed51eb5174d1ca41368821bfeebcbd49debfd02952c41359d1c7c06d2b1", + "0xb1820ebd61376d91232423fc20bf008b2ba37e761199f4ef0648ea2bd70282766799b4de814846d2f4d516d525c8daa7", + "0xa20421b8eaf2199d93b083f2aff37fb662670bd18689d046ae976d1db1fedd2c2ff897985ecc6277b396db7da68bcb27", + "0xa8a6ee06e3af053b705a12b59777267c546f33ba8a0f49493af8e6df4e15cf8dd2d4fb4daf7e84c6b5d3a7363118ff03", + "0x92164a9d841a2b828cedf2511213268b698520f8d1285852186644e9a0c97512cafa4bfbe29af892c929ebccd102e998", + "0x9174ffff0f2930fc228f0e539f5cfd82c9368d26b074467f39c07a774367ff6cccb5039ac63f107677d77706cd431680", + "0x919b938e56d4b32e2667469d0bdccb95d9dda3341aa907683ee70a14bbbe623035014511c261f4f59b318b610ac90aa3", + "0x8563afb12e53aed71ac7103ab8602bfa8371ae095207cb0d59e8fd389b6ad1aff0641147e53cb6a7ca16c7f37c9c5e6b", + "0xa0056c3353227f6dd9cfc8e3399aa5a8f1d71edf25d3d64c982910f50786b1e395c508d3e3727ac360e3e040c64b5298", + "0x98d4d89d358e0fb7e212498c73447d94a83c1b66e98fc81427ab13acddb17a20f52308983f3a5a8e0aaacec432359604", + "0xae6a2a4dedfc2d1811711a8946991fede972fdf2a389b282471280737536ffc0ac3a6d885b1f8bda0366eb0b229b9979", + "0x8f9899a6d7e8eb4367beb5c060a1f8e94d8a21099033ae582118477265155ba9e72176a67f7f25d7bad75a152b56e21a", + "0xb8d695dd33dc2c3bc73d98248c535b2770ad7fa31aa726f0aa4b3299efb0295ba9b4a51c71d314a4a1bd5872307534d1", + "0x922f666bc0fd58b6d7d815c0ae4f66d193d32fc8382c631037f59eeaeae9a8ca6c72d08e72944cf9e800b8d639094e77", + "0xa2673bf9bc621e3892c3d7dd4f1a9497f369add8cbaa3472409f4f86bd21ac67cfac357604828adfee6ada1835365029", + "0x8532171ea13aa7e37178e51a6c775da469d2e26ec854eb16e60f3307db4acec110d2155832c202e9ba525fc99174e3b0", + "0x8d9fd88040076c28420e3395cbdfea402e4077a3808a97b7939d49ecbcf1418fe50a0460e1c1b22ac3f6e7771d65169a", + "0xb55a8d30d4403067def9b65e16f867299f8f64c9b391d0846d4780bc196569622e7e5b64ce799b5aefac8f965b2a7a7b", + "0x85d38dffd99487ae5bb41ab4a44d80a46157bbbe8ef9497e68f061721f74e4da513ccc3422936b059575975f6787c936", + "0xb3cb29ff73229f0637335f28a08ad8c5f166066f27c6c175164d0f26766a927f843b987ee9b309ed71cbf0a65d483831", + "0xb479ec4bb79573d32e0ec93b92bdd7ec8c26ddb5a2d3865e7d4209d119fd3499eaac527615ffac78c440e60ef3867ae0", + "0x898ee4aefa923ffec9e79f2219c7389663eb11eb5b49014e04ed4a336399f6ea1691051d86991f4c46ca65bcd4fdf359", + "0x8d507712152babd6d142ee682638da8495a6f3838136088df9424ef50d5ec28d815a198c9a4963610b22e49b4cdf95e9", + "0x89f035a1ed8a1e302ac893349ba8ddf967580fcb6e73d44af09e3929cde445e97ff60c87dafe489e2c0ab9c9986cfa00", + "0xa8087fcc6aa4642cb998bea11facfe87eb33b90a9aa428ab86a4124ad032fc7d2e57795311a54ec9f55cc120ebe42df1", + "0xb4817e85fd0752d7ebb662d3a51a03367a84bac74ebddfba0e5af5e636a979500f72b148052d333b3dedf9edd2b4031b", + "0xa932fb229f641e9abbd8eb2bd874015d97b6658ab6d29769fc23b7db9e41dd4f850382d4c1f08af8f156c5937d524473", + "0x820437f3f6f9ad0f5d7502815b221b83755eb8dc56cd92c29e9535eb0b48fb8d08c9e4fcc26945f9c8cca60d89c44710", + "0xaadbd8be0ae452f7f9450c7d2957598a20cbf10139a4023a78b4438172d62b18b0de39754dd2f8862dbd50a3a0815e53", + "0xa7ec0d8f079970e8e34f0ef3a53d3e0e45428ddcef9cc776ead5e542ef06f3c86981644f61c5a637e4faf001fb8c6b3e", + "0x83f1e59e3abeed18cdc632921672673f1cb6e330326e11c4e600e13e0d5bc11bdc970ae12952e15103a706fe720bf4d6", + "0xa0fe58ea9eb982d7654c8aaf9366230578fc1362f6faae0594f8b9e659bcb405dff4aac0c7888bbe07f614ecf0d800a6", + "0xb2fa99806dd2fa3de09320b615a2570c416c9bcdb052e592b0aead748bbe407ec9475a3d932ae48b71c2627eb81986a6", + "0xaa5a4eef849d7c9d2f4b018bd01271c1dd83f771de860c4261f385d3bdcc130218495860a1de298f14b703ec32fa235f", + "0xad8964baf98c1f02e088d1d9fcb3af6b1dfa44cdfe0ed2eae684e7187c33d3a3c28c38e8f4e015f9c04d451ed6f85ff6", + "0x92532b74886874447c0300d07eda9bbe4b41ed25349a3da2e072a93fe32c89d280f740d8ff70d5816793d7f2b97373cc", + "0x92566730c3002f4046c737032487d0833c971e775de59fe02d9835c9858e2e3bc37f157424a69764596c625c482a2219", + "0x952743b06e8645894aeb6440fc7a5f62dd3acf96dab70a51e20176762c9751ea5f2ba0b9497ccf0114dc4892dc606031", + "0x870016b4678bab3375516db0187a2108b2e840bae4d264b9f4f27dbbc7cc9cac1d7dc582d7a04d6fd1ed588238e5e513", + "0xae2a3f078b89fb753ce4ed87e0c1a58bb19b4f0cfb6586dedb9fcab99d097d659a489fb40e14651741e1375cfc4b6c5f", + "0x99d645e1b642c2dc065bac9aaa0621bc648c9a8351efb6891559c3a41ba737bd155fb32d7731950514e3ecf4d75980e4", + "0xb274f140d77a3ce0796f5e09094b516537ccaf27ae1907099bff172e6368ba85e7c3ef8ea2a07457cac48ae334da95b3", + "0xb60325cd5d36461d07ef253d826f37f9ee6474a760f2fff80f9873d01fd2b57711543cdc8d7afa1c350aa753c2e33dea", + "0x9558e10fb81250b9844c99648cf38fa05ec1e65d0ccbb18aa17f2d1f503144baf59d802c25be8cc0879fff82ed5034ad", + "0x8a44809568ebe50405bede19b4d2607199159b26a1b33e03d180e6840c5cf59d991a4fb150d111443235d75ecad085b7", + "0xaf0632a238bb1f413c7ea8e9b4c3d68f2827bd2e38cd56024391fba6446ac5d19a780d0cfd4a78fe497d537b766a591a", + "0xb7653f353564feb164f0f89ec7949da475b8dad4a4d396d252fc2a884f6932d027b7eb2dc4d280702c74569319ed701a", + "0x94347a9542ff9d18f7d9eaa2f4d9b832d0e535fe49d52aa2de08aa8192400eddabdb6444a2a78883e27c779eed7fdf5a", + "0xaa173f0ecbcc6088f878f8726d317748c81ebf501bba461f163b55d66099b191ec7c55f7702f351a9c8eb42cfa3280e2", + "0x81a1f1681bda923bd274bfe0fbb9181d6d164fe738e54e25e8d4849193d311e2c4253614ed673c98af2c798f19a93468", + "0x940b5f80478648bac025a30f3efeb47023ce20ee98be833948a248bca6979f206bb28fc0f17b90acf3bb4abd3d14d731", + "0xa8924c7035e99eaed244ca165607e7e568b6c8085510dcdbaf6ebdbed405af2e6c14ee27d94ffef10d30aa52a60bf66d", + "0xa819d6dfd4aef70e52b8402fe5d135f8082d40eb7d3bb5c4d7997395b621e2bb10682a1bad2c9caa33dd818550fc3ec6", + "0x91dabfd30a66710f1f37a891136c9be1e23af4abf8cb751f512a40c022a35f8e0a4fb05b17ec36d4208de02d56f0d53a", + "0x89a6a04baf9cccc1db55179e1650b1a195dd91fb0aebc197a25143f0f393524d2589975e3fbfc2547126f0bced7fd6f2", + "0xae0a361067c52efbe56c8adf982c00432cd478929459fc7f74052c8ee9531cd031fe1335418fde53f7c2ef34254eb7ac", + "0xb4614058e8fa21138fc5e4592623e78b8982ed72aa35ee4391b164f00c68d277fa9f9eba2eeefc890b4e86eba5124591", + "0xa8d4cdd423986bb392a0a92c12a8bd4da3437eec6ef6af34cf5310944899287452a2eb92eb5386086d5063381189d10e", + "0x9036feafb4218d1f576ef89d0e99124e45dacaa6d816988e34d80f454d10e96809791d5b78f7fd65f569e90d4d7238c5", + "0xa27b144f1565e4047ba0e3f4840ef19b5095d1e281eaa463c5358f932114cbd018aa6dcf97546465cf2946d014d8e6d6", + "0xb5af1fa7894428a53ea520f260f3dc3726da245026b6d5d240625380bfb9c7c186df0204bb604efac5e613a70af5106e", + "0x85e6509d711515534d394e6cacbed6c81da710074d16ef3f4950bf2f578d662a494d835674f79c4d6315bced4defc5f0", + "0x998f4e2d12708b4fd85a61597ca2eddd750f73c9e0c9b3cf0825d8f8e01f1628fd19797dcaed3b16dc50331fc6b8b821", + "0xa478b6e9d058a2e01d2fc053b739092e113c23a6a2770a16afbef044a3709a9e32f425ace9ba7981325f02667c3f9609", + "0xa914b3a28509a906c3821463b936455d58ff45dcbe158922f9efb2037f2eb0ce8e92532d29b5d5a3fcd0d23fa773f272", + "0xb6a42ff407c9dd132670cdb83cbad4b20871716e44133b59a932cd1c3f97c7ac8ff7f61acfaf8628372508d8dc8cad7c", + "0xa4b8df79e2be76e9f5fc5845f06fe745a724cf37c82fcdb72719b77bdebea3c0e763f37909373e3a94480cc5e875cba0", + "0xb462ee09dc3963a14354244313e3444de5cc37ea5ccfbf14cd9aca8027b59c4cb2a949bc30474497cab8123e768460e6", + "0x92d388acdcb49793afca329cd06e645544d2269234e8b0b27d2818c809c21726bc9cf725651b951e358a63c83dedee24", + "0xb0b0f61a44053fa6c715dbb0731e35d48dba257d134f851ee1b81fd49a5c51a90ebf5459ec6e489fce25da4f184fbdb1", + "0xacaa330c3e8f95d46b1880126572b238dbb6d04484d2cd4f257ab9642d8c9fc7b212188b9c7ac9e0fd135c520d46b1bf", + "0xa9f5219bd4b913c186ef30c02f995a08f0f6f1462614ea5f236964e02bdaa33db9d9b816c4aee5829947840a9a07ba60", + "0x98325d8026b810a8b7a114171ae59a57e8bbc9848e7c3df992efc523621729fd8c9f52114ce01d7730541a1ada6f1df1", + "0xa8c66826b1c04a2dd4c682543242e7a57acae37278bd09888a3d17747c5b5fec43548101e6f46d703638337e2fd3277b", + "0xa7826dafeeba0db5b66c4dfcf2b17fd7b40507a5a53ac2e42942633a2cb30b95ba1739a6e9f3b7a0e0f1ec729bf274e2", + "0xa77e30195ee402b84f3882e2286bf5380c0ed374a112dbd11e16cef6b6b61ab209d4635e6f35cdaaa72c1a1981d5dabe", + "0x974ca9305bd5ea1dc1755dff3b63e8bfe9f744321046c1395659bcea2a987b528e64d5aa96ac7b015650b2253b37888d", + "0x8d206812aac42742dbaf233e0c080b3d1b30943b54b60283515da005de05ea5caa90f91fedcfcba72e922f64d7040189", + "0xa7a56ad1dbdc55f177a7ad1d0af78447dc2673291e34e8ab74b26e2e2e7d8c5fe5dc89e7ef60f04a9508847b5b3a8188", + "0xae1424a68ae2dbfb0f01211f11773732a50510b5585c1fb005cb892b2c6a58f4a55490b5c5b4483c6fce40e9d3236a52", + "0x8b2ffe5a545f9f680b49d0a9797a4a11700a2e2e348c34a7a985fc278f0f12def6e06710f40f9d48e4b7fbb71e072229", + "0xac1b51b6c09fe055c1d7c9176eea9adc33f710818c83a1fbfa073c8dc3a7eb3513cbdd3f5960b7845e31e3e83181e6ba", + "0xa38d5e189bea540a824b36815fc41e3750760a52be0862c4cac68214febdc1a754fb194a7415a8fb7f96f6836196d82a", + "0x825329ffbe2147ddb68f63a0a67f32d7f309657b8e5d9ab5bb34b3730bfa2c77a23eaaadb05def7d9f94a9e08fdc1e96", + "0x9804c284c4c5e77dabb73f655b12181534ca877c3e1e134aa3f47c23b7ec92277db34d2b0a5d38d2b69e5d1c3008a3e3", + "0x884f02d841cb5d8f4c60d1402469216b114ab4e93550b5bc1431756e365c4f870a9853449285384a6fa49e12ce6dc654", + "0x833bf225ab6fc68cdcacf1ec1b50f9d05f5410e6cdcd8d56a3081dc2be8a8d07b81534d1ec93a25c2e270313dfb99e3b", + "0x8d06bd379c6d87c6ed841d8c6e9d2d0de21653a073725ff74be1934301cc3a79b81ef6dd0aad4e7a9dc6eac9b73019bc", + "0x939b5f11acbdeff998f2a080393033c9b9d8d5c70912ea651c53815c572d36ee822a98d6dfffb2e339f29201264f2cf4", + "0x83576d3324bf2d8afbfb6eaecdc5d767c8e22e7d25160414924f0645491df60541948a05e1f4202e612368e78675de8a", + "0x8fb9fd928d38d5d813b671c924edd56601dd7163b686c13f158645c2f869d9250f3859aa5463a39258c90fef0f41190a", + "0xac9c53c885457aaf5cb36c717a6f4077af701e0098eebd7aa600f5e4b14e6c1067255b3a0bc40e4a552025231be7de60", + "0x92e8ce05e94927a9fb02debadb99cf30a26172b2705003a2c0c47b3d8002bf1060edb0f6a5750aad827c98a656b19199", + "0x82f8462bcc25448ef7e0739425378e9bb8a05e283ce54aae9dbebaf7a3469f57833c9171672ad43a79778366c72a5e37", + "0x832e02058b6b994eadd8702921486241f9a19e68ed1406dad545e000a491ae510f525ccf9d10a4bba91c68f2c53a0f58", + "0x879f91ccd56a1b9736fbfd20d8747354da743fb121f0e308a0d298ff0d9344431890e41da66b5009af3f442c636b4f43", + "0xaa55f5bf3815266b4a149f85ed18e451c93de9163575e3ec75dd610381cc0805bb0a4d7c4af5b1f94d10231255436d2c", + "0xa90ab04091fbca9f433b885e6c1d60ab45f6f1daf4b35ec22b09909d493a6aab65ce41a6f30c98239cbca27022f61a8b", + "0xa4d976be0f0568f4e57de1460a1729129252b44c552a69fceec44e5b97c96c711763360d11f9e5bf6d86b4976bf40d69", + "0x92a18fecaded7854b349f441e7102b638ababa75b1b0281dd0bded6541abe7aa37d96693595be0b01fe0a2e2133d50f9", + "0xb4c2f5fe173c4dc8311b60d04a65ce1be87f070ac42e13cd19c6559a2931c6ee104859cc2520edebbc66a13dc7d30693", + "0x932b22b1d3e6d5a6409c34980d176feb85ada1bf94332ef5c9fc4d42b907dabea608ceef9b5595ef3feee195151f18d8", + "0x8eb1f571b6a1878e11e8c1c757e0bc084bab5e82e897ca9be9b7f4b47b91679a8190bf0fc8f799d9b487da5442415857", + "0x8df27eafb5c3996ba4dc5773c1a45ca77e626b52e454dc1c4058aa94c2067c18332280630cc3d364821ee53bf2b8c130", + "0x920cc8b5f1297cf215a43f6fc843e379146b4229411c44c0231f6749793d40f07b9af7699fd5d21fd69400b97febe027", + "0xa18666ef65b8c2904fd598791f5627207165315a85ee01d5fb0e6b2e10bdd9b00babc447da5bd63445e3337de33b9b89", + "0xa045fe2bb011c2a2f71a0181a8f457a3078470fb74c628eab8b59aef69ffd0d649723bf74d6885af3f028bc5a104fb39", + "0x911763ef439c086065cc7b4e57484ed6d693ea44acee4b18c9fd998116da55fbe7dcb8d2a0f0f9b32132fca82d73dff6", + "0x8681b2c00aa62c2b519f664a95dcb8faef601a3b961bb4ce5d85a75030f40965e2983871d41ea394aee934e859581548", + "0xb88ab05e4248b7fb634cf640a4e6a945d13e331237410f7217d3d17e3e384ddd48897e7a91e4516f1b9cbd30f35f238b", + "0x85dc19558572844c2849e729395a0c125096476388bd1b14fa7f54a7c38008fc93e578da3aac6a52ff1504d6ca82db05", + "0xa4a9aecb19a6bab167af96d8b9d9aa5308eab19e6bfb78f5a580f9bf89bdf250a7b52a09b75f715d651cb73febd08e84", + "0xa149c6f1312821ced2969268789a3151bdda213451760b397139a028da609c4134ac083169feb0ee423a0acafd10eceb", + "0xaa058abb1953eceac14ccfa7c0cc482a146e1232905dcecc86dd27f75575285f06bbae16a8c9fe8e35d8713717f5f19f", + "0x8ccf9a7f80800ee770b92add734ed45a73ecc31e2af0e04364eefc6056a8223834c7c0dc9dfc52495bdec6e74ce69994", + "0x8b0ffa5e7c498cb3879dddca34743b41eee8e2dea3d4317a6e961b58adb699ef0c92400c068d5228881a2b08121226bf", + "0xb9913510dfc5056d7ec5309f0b631d1ec53e3a776412ada9aefdaf033c90da9a49fdde6719e7c76340e86599b1f0eec2", + "0x91f477802de507ffd2be3f4319903119225b277ad24f74eb50f28b66c14d32fae53c7edb8c7590704741af7f7f3e3654", + "0x83a217b395d59ab20db6c4adb1e9713fc9267f5f31a6c936042fe051ce8b541f579442f3dcf0fa16b9e6de9fd3518191", + "0xb9ec01c7cab6d00359b5a0b4a1573467d09476e05ca51a9227cd16b589a9943d161eef62dcc73f0de2ec504d81f4d252", + "0xad839ae003b92b37ea431fa35998b46a0afc3f9c0dd54c3b3bf7a262467b13ff3c323ada1c1ae02ac7716528bdf39e3e", + "0x92c97276ff6f72bab6e9423d02ad6dc127962dbce15a0dd1e4a393b4510c555df6aa27be0f697c0d847033a9ca8b8dfd", + "0xa7406a5bf5708d9e10922d3c5c45c03ef891b8d0d74ec9f28328a72be4cdc05b4f2703fa99366426659dfca25d007535", + "0x841874783ae6d9d0e59daea03e96a01cbbe4ecaced91ae4f2c8386e0d87b3128e6d893c98d17c59e4de1098e1ad519dd", + "0xa6b4d09cd01c70a3311fd131d3710ccf97bde3e7b80efd5a8c0eaeffeb48cca0f951ced905290267b115b06d46f2693b", + "0x9903ceced81099d7e146e661bcf01cbaccab5ba54366b85e2177f07e2d8621e19d9c9c3eee14b9266de6b3f9b6ea75ae", + "0x8de9f68a938f441f3b7ab84bb1f473c5f9e5c9e139e42b7ccee1d254bd57d0e99c2ccda0f3198f1fc5737f6023dd204e", + "0x847953c48a4ce6032780e9b39d0ed4384e0be202c2bbe2dfda3910f5d87aa5cd3c2ffbfcfae4dddce16d6ab657599b95", + "0xa31c166d2a2ca1d5a75a5920fef7532681f62191a50d8555fdaa63ba4581c3391cc94a536fc09aac89f64eafceec3f90", + "0xb9f743691448053216f6ece7cd699871fff4217a1409ceb8ab7bdf3312d11696d62c74b0664ba0a631b1e0237a8a0361", + "0x8257bb14583551a65975946980c714ecd6e5b629672bb950b9caacd886fbd22704bc9e3ba7d30778adab65dc74f0203a", + "0xa32df75b3f2c921b8767638fd289bcfc61e08597170186637a7128ffedd52c798c434485ac2c7de07014f9e895c2c3d8", + "0xa03f48cbff3e9e8a3a655578051a5ae37567433093ac500ed0021c6250a51b767afac9bdb194ee1e3eac38a08c0eaf45", + "0x95eebe006bfc316810cb71da919e5d62c2cebb4ac99d8e8ef67be420302320465f8b69873470982de13a7c2e23516be9", + "0xa24ee89f7f515cc33bdbdb822e7d5c1877d337f3b2162303cfc2dae028011c3a267c5cb4194afa63a4856a6e1c213448", + "0xb3365d3dab639bffbe38e35383686a435c8c88b397b717cd4aeced2772ea1053ceb670f811f883f4e02975e5f1c4ac58", + "0x8a15b499e9eca5b6cac3070b5409e8296778222018ad8b53a5d1f6b70ad9bb10c68a015d105c941ed657bf3499299e33", + "0x8c3576eba0583c2a7884976b4ed11fe1fda4f6c32f6385d96c47b0e776afa287503b397fa516a455b4b8c3afeedc76db", + "0x8c656e841f9bb90b9a42d425251f3fdbc022a604d75f5845f479ed4be23e02aaf9e6e56cde351dd7449c50574818a199", + "0xa0031ba7522c79211416c2cca3aa5450f96f8fee711552a30889910970ba13608646538781a2c08b834b140aadd7166f", + "0x87c2cbcecb754e0cc96128e707e5c5005c9de07ffd899efa3437cadc23362f5a1d3fcdd30a1f5bdc72af3fb594398c2a", + "0x86a18aa4783b9ebd9131580c8b17994825f27f4ac427b0929a1e0236907732a1c8139e98112c605488ee95f48bbefbfc", + "0x93dd8d3db576418e22536eba45ab7f56967c6c97c64260d6cddf38fb19c88f2ec5cd0e0156f50e70855eee8a2b879ffd", + "0x8c3195bbdbf9bc0fc95fa7e3d7f739353c947f7767d1e3cb24d8c8602d8ea0a1790ac30b815be2a2ba26caa5227891e2", + "0xb93fc35c05998cffda2978e12e75812122831523041f10d52f810d34ff71944979054b04de0117e81ddf5b0b4b3e13c0", + "0x98cd624cbbd6c53a94469be4643c13130916b91143425bcb7d7028adbbfede38eff7a21092af43b12d4fab703c116359", + "0x88440fb584a99ebd7f9ea04aaf622f6e44e2b43bbb49fb5de548d24a238dc8f26c8da2ccf03dd43102bda9f16623f609", + "0x8d37234d8594ec3fe75670b5c9cc1ec3537564d4739b2682a75b18b08401869a4264c0f264354219d8d896cded715db4", + "0xa7fd3d6d87522dfc56fb47aef9ce781a1597c56a8bbfd796baba907afdc872f753d732bfda1d3402aee6c4e0c189f52d", + "0x80bcb114b2544b80f404a200fc36860ed5e1ad31fe551acd4661d09730c452831751baa9b19d7d311600d267086a70bc", + "0xb8b3123e44128cc8efbe3270f2f94e50ca214a4294c71c3b851f8cbb70cb67fe9536cf07d04bf7fe380e5e3a29dd3c15", + "0xa19e84e3541fb6498e9bb8a099c495cbfcad113330e0262a7e4c6544495bb8a754b2208d0c2d895c93463558013a5a32", + "0xb0a77188673e87cc83348c4cc5db1eecf6b5184e236220c8eeed7585e4b928db849944a76ec60ef7708ef6dac02d5592", + "0x9183a560393dcb22d0d5063e71182020d0fbabb39e32493eeffeb808df084aa243eb397027f150b55a247d1ed0c8513e", + "0x8f87afcc7ad33c51ac719bade3cd92da671a37a82c14446b0a2073f4a0a23085e2c8d31913ed2d0be928f053297de8f6", + "0x836d2a757405e922ec9a2dfdcf489a58bd48b5f9683dd46bf6047688f778c8dee9bc456de806f70464df0b25f3f3d238", + "0x86022ac339c1f84a7fa9e05358c1a5b316b4fc0b83dbe9c8c7225dc514f709d66490b539359b084ce776e301024345fa", + "0x940cbaa0d2b2db94ae96b6b9cf2deefbfd059e3e5745de9aec4a25f0991b9721e5cd37ef71c631575d1a0c280b01cd5b", + "0xa29b41d0d43d26ce76d4358e0db2b77df11f56e389f3b084d8af70a636218bd3ac86b36a9fe46ec9058c26a490f887f7", + "0xa23c24721d18bc48d5dcf70effcbef89a7ae24e67158d70ae1d8169ee75d9a051d34b14e9cf06488bac324fe58549f26", + "0x8efde67d0cca56bb2c464731879c9ac46a52e75bac702a63200a5e192b4f81c641f855ca6747752b84fe469cb7113b6c", + "0x85bdb78d501382bb95f1166b8d032941005661aefd17a5ac32df9a3a18e9df2fc5dc2c1f07075f9641af10353cecc0c9", + "0x8fd09900320000cbabc40e16893e2fcf08815d288ec19345ad7b6bb22f7d78a52b6575a3ca1ca2f8bc252d2eafc928ec", + "0x81bdaaf48aae4f7b480fc13f1e7f4dd3023a41439ba231760409ce9292c11128ab2b0bdbbf28b98af4f97b3551f363af", + "0xa4170b2c6d09ca5beb08318730419b6f19215ce6c631c854116f904be3bc30dd85a80c946a8ab054d3e307afaa3f8fbc", + "0x98306f2be4caa92c2b4392212d0cbf430b409b19ff7d5b899986613bd0e762c909fc01999aa94be3bd529d67f0113d7f", + "0xac43220b762c299c7951222ea19761ab938bf38e4972deef58ed84f4f9c68c230647cf7506d7cbfc08562fcca55f0485", + "0xaa6adf9b0c3334b0d0663f583a4914523b2ac2e7adffdb026ab9109295ff6af003ef8357026dbcf789896d2afded8d73", + "0xa60e2d31bc48e0c0579db15516718a03b73f5138f15037491f4dae336c904e312eda82d50862f4debd1622bb0e56d866", + "0xa5c8dd12af48fb710642ad65ebb97ca489e8206741807f7acfc334f8035d3c80593b1ff2090c9bb7bd138f0c48714ca8", + "0x829ce2c342cf82aa469c65f724f308f7a750bd1494adc264609cd790c8718b8b25b5cab5858cf4ee2f8f651d569eea67", + "0xa364059412bbcc17b8907d43ac8e5df90bc87fd1724b5f99832d0d24559fae6fa76a74cff1d1eac8cbac6ec80b44af20", + "0xb00b6b5392b1930b54352c02b1b3b4f6186d20bf21698689bbfc7d13e86538a4397b90e9d5c93fd2054640c4dbe52a4f", + "0xae87375b40f35519e7bd4b1b2f73cd0b329b0c2cb9d616629342a71c6c304338445eda069b78ea0fbe44087f3de91e09", + "0x89898a5c5ec4313aabc607b0049fd1ebad0e0c074920cf503c9275b564d91916c2c446d3096491c950b7af3ac5e4b0ed", + "0xb7b7f508bb74f7a827ac8189daa855598ff1d96fa3a02394891fd105d8f0816224cd50ac4bf2ed1cf469ace516c48184", + "0xb7a5945b277dab9993cf761e838b0ac6eaa903d7111fca79f9fde3d4285af7a89bf6634a71909d095d7619d913972c9c", + "0x9778f3e8639030f7ef1c344014f124e375acb8045bd13d8e97a92c5265c52de9d1ffebaa5bc3e1ad2719da0083222991", + "0xaa4c7d98a96cab138d2a53d4aee8ebff6ef903e3b629a92519608d88b3bbd94de5522291a1097e6acf830270e64c8ee1", + "0x8fe1b9dd3c6a258116415d36e08374e094b22f0afb104385a5da48be17123e86fb8327baacc4f0d9ebae923d55d99bb5", + "0x84a32c0dc4ea60d33aac3e03e70d6d639cc9c4cc435c539eff915017be3b7bdaba33349562a87746291ebe9bc5671f24", + "0xa3d0893923455eb6e96cc414341cac33d2dbc88fba821ac672708cce131761d85a0e08286663a32828244febfcae6451", + "0x95108866745760baef4a46ef56f82da6de7e81c58b10126ebd2ba2cd13d339f91303bf2fb4dd104a6956aa3b13739503", + "0xb373dcdaea85f85ce9978b1426a7ef4945f65f2d3467a9f1cc551a99766aac95df4a09e2251d3f89ca8c9d1a7cfd7b0e", + "0x909cf39e11b3875bb63b39687ae1b5d1f5a15445e39bf164a0b14691b4ddb39a8e4363f584ef42213616abc4785b5d66", + "0xb48d2f0c4e90fc307d5995464e3f611a9b0ef5fe426a289071f4168ed5cc4f8770c9332960c2ca5c8c427f40e6bb389f", + "0x84f78e2ebf5fc077d78635f981712daf17e2475e14c2a96d187913006ad69e234746184a51a06ef510c9455b38acb0d7", + "0xa500f87ba9744787fdbb8e750702a3fd229de6b8817594348dec9a723b3c4240ddfa066262d002844b9e38240ce55658", + "0x92f9458d674df6e990789690ec9ca73dacb67fc9255b58c417c555a8cc1208ace56e8e538f86ba0f3615573a0fbac00d", + "0x9742884ed7cd52b4a4a068a43d3faa02551a424136c85a9313f7cb58ea54c04aa83b0728fd741d1fe39621e931e88f8f", + "0xb3ec25e3545eb83aed2a1f3558d1a31c7edde4be145ecc13b33802654b77dc049b4f0065069dd9047b051e52ab11dcdd", + "0xac8887bf39366034bc63f6cc5db0c26fd27307cbc3d6cce47894a8a019c22dd51322fb5096edc018227edfafc053a8f6", + "0xafd196ce6f9335069138fd2e3d133134da253978b4ce373152c0f26affe77a336505787594022e610f8feb722f7cc1fb", + "0xb9c050ad9cafd41c6e2e192b70d080076eed59ed38ea19a12bd92fa17b5d8947d58d5546aaf5e8e27e1d3b5481a6ce51", + "0x98c7f12b15ec4426b59f737f73bf5faea4572340f4550b7590dfb7f7ffedb2372e3e555977c63946d579544c53210ad0", + "0x84a0b6c198ff64fd7958dfd1b40eac9638e8e0b2c4cd8cf5d8cdf80419baee76a05184bce6c5b635f6bf2d30055476a7", + "0x84ef3d322ff580c8ad584b1fe4fe346c60866eb6a56e982ba2cf3b021ecb1fdb75ecc6c29747adda86d9264430b3f816", + "0xa48f1677550a5cd40663bb3ba8f84caaf8454f332d0ceb1d94dbea52d0412fe69c94997f7749929712fd3995298572f7", + "0x891ff49258749e2b57c1e9b8e04b12c77d79c3308b1fb615a081f2aacdfb4b39e32d53e069ed136fdbd43c53b87418fa", + "0xb58ea6c02f2360be60595223d692e82ee64874fda41a9f75930f7d28586f89be34b1083e03bbc1575bbfdda2d30db1ea", + "0x8e558a8559df84a1ba8b244ece667f858095c50bb33a5381e60fcc6ba586b69693566d8819b4246a27287f16846c1dfa", + "0xa40d16497004db4104c6794e2f4428d75bdf70352685944f3fbe17526df333e46a4ca6de55a4a48c02ecf0bde8ba03c0", + "0x8349decac1ca16599eee2efc95bcaabf67631107da1d34a2f917884bd70dfec9b4b08ab7bc4379d6c73b19c0b6e54fb8", + "0x824e6865be55d43032f0fec65b3480ea89b0a2bf860872237a19a54bc186a85d2f8f9989cc837fbb325b7c72d9babe2c", + "0xb6659bf7f6f2fef61c39923e8c23b8c70e9c903028d8f62516d16755cd3fba2fe41c285aa9432dc75ab08f8a1d8a81fc", + "0x8bcee65c4cc7a7799353d07b114c718a2aae0cd10a3f22b7eead5185d159dafd64852cb63924bf87627d176228878bce", + "0x92637280c259bc6842884db3d6e32602a62252811ae9b019b3c1df664e8809ffe86db88cfdeb8af9f46435c9ee790267", + "0x842a0af91799c9b533e79ee081efe2a634cac6c584c2f054fb7d1db67dde90ae36de36cbf712ec9cd1a0c7ee79e151ea", + "0xb432bc2a3f93d28b5e506d68527f1efeb2e2570f6be0794576e2a6ef9138926fdad8dd2eabfa979b79ab7266370e86bc", + "0x817efb8a791435e4236f7d7b278181a5fa34587578c629dbc14fbf9a5c26772290611395eecd20222a4c58649fc256d8", + "0x84b50a8a61d3cc609bfb0417348133e698fe09a6d37357ce3358de189efcf35773d78c57635c2d26c3542b13cc371752", + "0xae151310985940471e6803fcf37600d7fa98830613e381e00dab943aec32c14162d51c4598e8847148148000d6e5af5c", + "0x9294150843a2bedcedb3bb74c43eb28e759cf9499582c5430bccefb574a8ddd4f11f9929257ff4c153990f9970a2558f", + "0xb703fa11a4d511ca01c7462979a94acb40b5d933759199af42670eb48f83df202fa0c943f6ab3b4e1cc54673ea3aab1e", + "0x86a7cfa7c8e7ce2c01dd0baec2139e97e8e090ad4e7b5f51518f83d564765003c65968f85481bbb97cb18f005ccc7d9f", + "0xa18177087c996572d76f81178d18ed1ceebc8362a396348ce289f1d8bd708b9e99539be6fccd4acb1112381cfc5749b4", + "0x91da22c378c81497fe363e7f695c0268443abee50f8a6625b8a41e865638a643f07b157ee566de09ba09846934b4e2d7", + "0x9642b7f6f09394ba5e0805734ef6702c3eddf9eea187ba98c676d5bbaec0e360e3e51dc58433aaa1e2da6060c8659cb7", + "0xb14f8d8e1e93a84976289e0cf0dfa6f3a1809e98da16ee5c4932d0e1ed6bf8a07697fdd4dd86a3df84fb0003353cdcc0", + "0xb54c5171704f42a6f0f4e70767cdb3d96ffc4888c842eece343a01557da405961d53ffdc34d2f902ea25d3e1ed867cad", + "0xaebcd3257d295747dd6fc4ff910d839dd80c51c173ae59b8b2ec937747c2072fa85e3017f9060aa509af88dfc7529481", + "0xb88862809487ee430368dccd85a5d72fa4d163ca4aad15c78800e19c1a95be2192719801e315d86cff7795e0544a77e4", + "0xb88302031681b54415fe8fbfa161c032ea345c6af63d2fb8ad97615103fd4d4281c5a9cae5b0794c4657b97571a81d3b", + "0x97173434b336be73c89412a6d70d416e170ea355bf1956c32d464090b107c090ef2d4e1a467a5632fbc332eeb679bf2d", + "0xb03b46a3ca3bc743a173cbc008f92ab1aedd7466b35a6d1ca11e894b9482ea9dc75f8d6db2ddd1add99bfbe7657518b7", + "0x8ed203cf215148296454012bd10fddaf119203db1919a7b3d2cdc9f80e66729464fdfae42f1f2fc5af1ed53a42b40024", + "0x91170da5306128931349bc3ed50d7df0e48a68b8cc8420975170723ac79d8773e4fa13c5f14dc6e3fafcad78379050b1", + "0x822ff3cd12fbef4f508f3ca813c04a2e0b9b799c99848e5ad3563265979e753ee61a48f6adc2984a850f1b46c1a43d35", + "0x87db11014a91cb9b63e8dfaa82cdebca98272d89eb445ee1e3ff9dbaf2b3fad1a03b888cffc128e4fe208ed0dddece0f", + "0xa46d1797c5959dcd3a5cfc857488f4d96f74277c3d13b98b133620192f79944abcb3a361d939a100187f1b0856eae875", + "0x8eb33b5266c8f2ed4725a6ad147a322e44c9264cf261c933cbbe230a43d47fca0f29ec39756b20561dabafadd5796494", + "0x838c01a009a3d8558a3f0bdd5e22de21af71ca1aefc8423c91dc577d50920e9516880e87dce3e6d086e11cd45c9052d9", + "0xa2cb00721e68f1cad8933947456f07144dc69653f96ceed845bd577d599521ba99cdc02421118971d56d7603ed118cbf", + "0xadafa3681ef45d685555601a25a55cf23358319a17f61e2179e704f63df83a73bdd298d12cf6cef86db89bd17119e11d", + "0x838dbe5bcd29c4e465d02350270fa0036cd46f8730b13d91e77afb7f5ed16525d0021d3b2ae173a76c378516a903e0cb", + "0x8ce96d93ae217408acf7eb0f9cbb9563363e5c7002e19bbe1e80760bc9d449daee2118f3878b955163ed664516b97294", + "0xa08265a838e69a2ca2f80fead6ccf16f6366415b920c0b22ee359bcd8d4464ecf156f400a16a7918d52e6d733dd64211", + "0xb02a9567386a4fbbdb772d8a27057b0be210447348efe6feb935ceec81f361ed2c0c211e54787dc617cdffed6b4a6652", + "0x944073d24750a9068cbd020b834afc72d2dde87efac04482b3287b40678ad07588519a4176b10f2172a2c463d063a5cd", + "0x8d3c21bae7f0cfb97c56952bb22084b58e7bb718890935b73103f33adf5e4d99cd262f929c6eeab96209814f0dbae50a", + "0xb6307028444daed8ed785ac9d0de76bc3fe23ff2cc7e48102553613bbfb5afe0ebe45e4212a27021c8eb870721e62a1f", + "0xa9c5f8ff1f8568e252b06d10e1558326db9901840e6b3c26bbd0cd5e850cb5fb3af3f117dbb0f282740276f6fd84126f", + "0xad8d249b0aea9597b08358bce6c77c1fd552ef3fbc197d6a1cfe44e5e6f89b628b12a6fb04d5dcfcbacc51f46e4ae7bb", + "0x897798431cfb17fe39f08f5f854005dc37b1c1ec1edba6c24bc8acb3b88838d0534a75475325a5ea98b326ad47dbad75", + "0x9972c7e7a7fb12e15f78d55abcaf322c11249cd44a08f62c95288f34f66b51f146302bce750ff4d591707075d9123bd2", + "0x94f326a32ed287545b0515be9e08149eb0a565025074796d72387cc3a237e87979776410d78339e23ef3172ca43b2544", + "0x828126bb0559ce748809b622677267ca896fa2ee76360fd2c02990e6477e06a667241379ca7e65d61a5b64b96d7867de", + "0xae6d31cd7bf9599e5ee0828bab00ceb4856d829bba967278a73706b5f388465367aa8a6c7da24b5e5f1fdd3256ef8e63", + "0x8c552885eab04ba40922a8f0c3c38c96089c95ff1405258d3f1efe8d179e39e1295cbf67677894c607ae986e4e6b1fb0", + "0x83924b0e66233edd603c3b813d698daa05751fc34367120e3cf384ea7432e256ccee4d4daf13858950549d75a377107d", + "0x81a423423e9438343879f2bfd7ee9f1c74ebebe7ce3cfffc8a11da6f040cc4145c3b527bd3cf63f9137e714dbcb474ef", + "0x8596f4d239aeeac78311207904d1bd863ef68e769629cc379db60e019aaf05a9d5cd31dc8e630b31e106a3a93e47cbc5", + "0x8a4a26c07218948c1196c45d927ef4d2c42ade5e29fe7a91eaebe34a29900072ce5194cf28d51f746f4c4c649daf4396", + "0x9433add687b5a1e12066721789b1db2edf9b6558c3bdc0f452ba33b1da67426abe326e9a34d207bfb1c491c18811bde1", + "0x97589a88c3850556b359ec5e891f0937f922a751ac7c95949d3bbc7058c172c387611c0f4cb06351ef02e5178b3dd9e4", + "0xb61e3dbd88aaf4ff1401521781e2eea9ef8b66d1fac5387c83b1da9e65c2aa2a56c262dea9eceeb4ad86c90211672db0", + "0x8312ce4bec94366d88f16127a17419ef64285cd5bf9e5eda010319b48085966ed1252ed2f5a9fd3e0259b91bb65f1827", + "0x8c2f49f3666faee6940c75e8c7f6f8edc3f704cca7a858bbb7ee5e96bba3b0cf0993996f781ba6be3b0821ef4cb75039", + "0x81fbacda3905cfaf7780bb4850730c44166ed26a7c8d07197a5d4dcd969c09e94a0461638431476c16397dd7bdc449f9", + "0x88975e1b1af678d1b5179f72300a30900736af580dd748fd9461ef7afccc91ccd9bed33f9da55c8711a7635b800e831f", + "0xac3232fa5ce6f03fca238bef1ce902432a90b8afce1c85457a6bee5571c033d4bceefafc863af04d4e85ac72a4d94d51", + "0x8f7510c732502a93e095aba744535f3928f893f188adc5b16008385fb9e80f695d0435bfc5b91cdad4537e87e9d2551c", + "0xae0e6ff58eb5fa35da5107ebeacf222ab8f52a22bb1e13504247c1dfa65320f40d97b0e6b201cb6613476687cb2f0681", + "0xab899d00ae693649cc1afdf30fb80d728973d2177c006e428bf61c7be01e183866614e05410041bc82cb14a33330e69c", + "0x84977ca6c865ebee021c58106c1a4ad0c745949ecc5332948002fd09bd9b890524878d0c29da96fd11207621136421fe", + "0xb1e9a7b9f3423c220330d45f69e45fa03d7671897cf077f913c252e3e99c7b1b1cf6d30caad65e4228d5d7b80eb86e5e", + "0xa16cd8b729768f51881c213434aa28301fa78fcb554ddd5f9012ee1e4eae7b5cb3dd88d269d53146dea92d10790faf0b", + "0x957288f9866a4bf56a4204218ccc583f717d7ce45c01ea27142a7e245ad04a07f289cc044f8cf1f21d35e67e39299e9c", + "0xa853b0ebd9609656636df2e6acd5d8839c0fda56f7bf9288a943b06f0b67901a32b95e016ca8bc99bd7b5eab31347e72", + "0x83141ebcc94d4681404e8b67a12a46374fded6df92b506aff3490d875919631408b369823a08b271d006d5b93136f317", + "0xa3a3be37ac554c574b393b2f33d0a32a116c1a7cfeaf88c54299a4da2267149a5ecca71f94e6c0ef6e2f472b802f5189", + "0xb00a81f03c2b8703acd4e2e4c21e06973aba696415d0ea1a648ace2b0ea19b242fede10e4f9d7dcd61c546ab878bc8f9", + "0x97e25a87dae23155809476232178538d4bc05d4ff0882916eb29ae515f2a62bfce73083466cc0010ca956aca200aeacc", + "0x8854ca600d842566e3090040cd66bb0b3c46dae6962a13946f0024c4a8aca447e2ccf6f240045f1ceee799a88cb9210c", + "0xb51efb73ba6d44146f047d69b19c0722227a7748b0e8f644d0fc9551324cf034c041a2378c56ce8b58d06038fb8a78de", + "0xa41293ad22fae81dea94467bc1488c3707f3d4765059173980be93995fa4fcc3c9340796e3eed0beeb0ba0d9bb4fa3aa", + "0xa13db3bb60389883fd41d565c54fb5180d9c47ce2fe7a169ae96e01d17495f7f4fa928d7e556e7c74319c4c25d653eb2", + "0x851d89bef45d9761fe5fdb62972209335193610015e16a675149519f9911373bac0919add226ef118d9f3669cfdf4734", + "0x8cd89e03411a18e7f16f968b89fb500c36d47d229f6487b99e62403a980058db5925ce249206743333538adfad168330", + "0xb02adc9aaa20e0368a989c2af14ff48b67233d28ebee44ff3418bb0473592e6b681af1cc45450bd4b175df9051df63d9", + "0x926424223e462ceb75aed7c22ade8a7911a903b7e5dd4bc49746ddce8657f4616325cd12667d4393ac52cdd866396d0e", + "0x98e1addbe2a6b8edc7f12ecb9be81c3250aeeca54a1c6a7225772ca66549827c15f3950d01b8eb44aecb56fe0fff901a", + "0x8b29c513f43a78951cf742231cf5457a6d9d55edf45df5481a0f299a418d94effef561b15d2c1a01d1b8067e7153fda9", + "0xb33d985e847b54510b9b007e31053732c8a495e43be158bd2ffcea25c6765bcbc7ca815f7c60b36ad088b955dd6e9350", + "0x857dc12c0544ff2c0c703761d901aba636415dee45618aba2e3454ff9cbc634a85c8b05565e88520ff9be2d097c8b2b1", + "0xb2c44c66a5ea7fde626548ba4cef8c8710191343d3dadfd3bb653ce715c0e03056a5303a581d47dde66e70ea5a2d2779", + "0x86a48c31dcbbf7b082c92d28e1f613a2378a910677d7db3a349dc089e4a1e24b12eee8e8206777a3a8c64748840b7387", + "0xb1235594dbb15b674a419ff2b2deb644ad2a93791ca05af402823f87114483d6aa1689b7a9bea0f547ad12fe270e4344", + "0xb3ff381efefabc4db38cc4727432e0301949ae4f16f8d1dea9b4f4de611cf5a36d84290a0bef160dac4e1955e516b3b0", + "0xa6cb4cd9481e22870fdd757fae0785edf4635e7aacb18072fe8dc5876d0bab53fb99ce40964a7d3e8bcfff6f0ab1332f", + "0xb0e81b07cdc45b3dca60882676d9badb99f25c461b7efe56e3043b80100bb62d29e1873ae25eb83087273160ece72a55", + "0x8b42c984bbe4996e0c20862059167c6bdc5164b1ffcd928f29512664459212d263e89f0f0e30eed4e672ffa5ed0b01b5", + "0x9522cc66757b386aa6b88619525c8ce47a5c346d590bb3647d12f991e6c65c3ab3c0cfc28f0726b6756c892eae1672be", + "0x95a71b55cd1f35a438cf5e75f8ff11c5ec6a2ebf2e4dba172f50bfad7d6d5dca5de1b1afc541662c81c858f7604c1163", + "0xaa315f8ecba85a5535e9a49e558b15f39520fce5d4bf43131bfbf2e2c9dfccc829074f9083e8d49f405fb221d0bc4c3c", + "0x80b0408a092dae2b287a5e32ea1ad52b78b10e9c12f49282976cd738f5d834e03d1ad59b09c5ccaccc39818b87d06092", + "0x924b265385e1646287d8c09f6c855b094daaee74b9e64a0dddcf9ad88c6979f8280ba30c8597b911ef58ddb6c67e9fe3", + "0xb0d07ddf2595270c39adfa0c8cf2ab1322979b0546aa4d918f641be53cd97f36c879bb75d205e457c011aca3bbd9f731", + "0x95cc2a0c1885a029e094f5d737e3ecf4d26b99036453a8773c77e360101f9f98676ee246f6f732a377a996702d55691f", + "0xb7918bd114f37869bf1a459023386825821bfadce545201929d13ac3256d92a431e34f690a55d944f77d0b652cefeffc", + "0x80408ce3724f4837d4d52376d255e10f69eb8558399ae5ca6c11b78b98fe67d4b93157d2b9b639f1b5b64198bfe87713", + "0x8600177ea1f7e7ef90514b38b219a37dedfc39cb83297e4c7a5b479817ef56479d48cf6314820960c751183f6edf8b0e", + "0x82ac0c7acaa83ddc86c5b4249aae12f28155989c7c6b91e5137a4ce05113c6cbc16f6c44948b0efd8665362d3162f16a", + "0xa407d06affae03660881ce20dab5e2d2d6cddc23cd09b95502a9181c465e57597841144cb34d22889902aff23a76d049", + "0xabf2d95f4aa34b0581eb9257a0cc8462b2213941a5deb8ba014283293e8b36613951b61261cc67bbd09526a54cbbff76", + "0xa847b27995c8a2e2454aaeb983879fb5d3a23105c33175839f7300b7e1e8ec3efd6450e9fa3f10323609dee7b98c6fd5", + "0xa8545a1d91ac17257732033d89e6b7111db8242e9c6ebb0213a88906d5ef407a2c6fdb444e29504b06368b6efb4f4839", + "0x94230517fb57bd8eb26c6f64129b8b2abd0282323bf7b94b8bac7fab27b4ecc2c4290c294275e1a759de19f2216134f3", + "0x8aefea201d4a1f4ff98ffce94e540bb313f2d4dfe7e9db484a41f13fc316ed02b282e1acc9bc6f56cad2dc2e393a44c9", + "0x8bc0d9754d70f2cb9c63f991902165a87c6535a763d5eece43143b5064ae0bcdce7c7a8f398f2c1c29167b2d5a3e6867", + "0xa773bb024ae74dd24761f266d4fb27d6fd366a8634febe8235376b1ae9065c2fe12c769f1d0407867dfbe9f5272c352f", + "0x806b53ac049a42f1dcc1d6335505371da0bf27c614f441b03bbf2e356be7b2fb4eed7117eabcce9e427a542eaa2bf7d8", + "0x8a01dc6ed1b55f26427a014faa347130738b191a06b800e32042a46c13f60b49534520214359d68eb2e170c31e2b8672", + "0x96c030381e97050a45a318d307dcb3c8377b79b4dd5daf6337cded114de26eb725c14171b9b8e1b3c08fe1f5ea6b49e0", + "0xaad4da528fdbb4db504f3041c747455baff5fcd459a2efd78f15bdf3aea0bdb808343e49df88fe7a7c8620009b7964a3", + "0x8d1057071051772f7c8bedce53a862af6fd530dd56ae6321eaf2b9fc6a68beff5ed745e1c429ad09d5a118650bfd420a", + "0xa987ce205f923100df0fbd5a85f22c9b99b9b9cbe6ddfa8dfda1b8fe95b4f71ff01d6c5b64ca02eb24edb2b255a14ef0", + "0xae3b8f06ad97d7ae3a5e5ca839efff3e4824dc238c0c03fc1a8d2fc8aa546cdfd165b784a31bb4dec7c77e9305b99a4b", + "0xa8c7b02d8deff2cd657d8447689a9c5e2cd74ef57c1314ac4d69084ac24a7471954d9ff43fe0907d875dcb65fd0d3ce5", + "0xb25c2863bc28ec5281ce800ddf91a7e1a53f4c6d5da1e6c86ef4616e93bcf55ed49e297216d01379f5c6e7b3c1e46728", + "0xa44d15ef18745b251429703e3cab188420e2d974de07251501799b016617f9630643fcd06f895634d8ecdd579e1bf000", + "0x8a8b591d82358d55e6938f67ea87a89097ab5f5496f7260adb9f649abb289da12b498c5b2539c2f9614fb4e21b1f66b0", + "0xac80e9b545e8bd762951d96c9ce87f629d01ffcde07efc2ef7879ca011f1d0d8a745abf26c9d452541008871304fac00", + "0x9784ba29b2f0057b5af1d3ab2796d439b8753f1f749c73e791037461bdfc3f7097394283105b8ab01788ea5255a96710", + "0xa78b9d3ea4b6a90572eb27956f411f1d105fdb577ee2ffeec9f221da9b45db84bfe866af1f29597220c75e0c37a628d8", + "0x95be0739c4330619fbe7ee2249c133c91d6c07eab846c18c5d6c85fc21ac5528c5d56dcb0145af68ed0c6a79f68f2ccd", + "0x994d075c1527407547590df53e9d72dd31f037c763848d1662eebd4cefec93a24328c986802efa80e038cb760a5300f5", + "0x8d255c235f3812c6ecc646f855fa3832be5cb4dbb9c9e544989fafdf3f69f05bfd370732eaf954012f0044aa013fc9c6", + "0xb5696bd6706de51c502f40385f87f43040a5abf99df705d6aac74d88c913b8ecf7a99a63d7a37d9bdf3a941b9e432ff5", + "0xa4d85a5701d89bcfaf1572db83258d86a1a0717603d6f24ac2963ffcf80f1265e5ab376a4529ca504f4396498791253c", + "0xaacf9eb7036e248e209adbfc3dd7ce386569ea9b312caa4b240726549db3c68c4f1c8cbf8ed5ea9ea60c7e57c9df3b8e", + "0xb96543caaba9d051600a14997765d49e4ab10b07c7a92cccf0c90b309e6da334fdd6d18c96806cbb67a7801024fbd3c7", + "0xa37fdf11d4bcb2aed74b9f460a30aa34afea93386fa4cdb690f0a71bc58f0b8df60bec56e7a24f225978b862626fa00e", + "0x8795fdfb7ff8439c58b9bf58ed53873d2780d3939b902b9ddaaa4c99447224ced9206c3039a23c2c44bcc461e2bb637f", + "0x8e6057975ed40a1932e47dd3ac778f72ee2a868d8540271301b1aa6858de1a5450f596466494a3e0488be4fbeb41c840", + "0xaa6e3c14efa6a5962812e3f94f8ce673a433f4a82d07a67577285ea0eaa07f8be7115853122d12d6d4e1fdf64c504be1", + "0xa52f58cc39f968a9813b1a8ddc4e83f4219e4dd82c7aa1dd083bea7edf967151d635aa9597457f879771759b876774e4", + "0x8ca9f32a27a024c3d595ecfaf96b0461de57befa3b331ab71dc110ec3be5824fed783d9516597537683e77a11d334338", + "0x8c0ee09ec64bd831e544785e3d65418fe83ed9c920d9bb4d0bf6dd162c1264eb9d6652d2def0722e223915615931581c", + "0xb8d312e6c635e7a216a1cda075ae77ba3e1d2fd501dc31e83496e6e81ed5d9c7799f8e578869c2e0e256fb29f5de10a7", + "0x8134f3ad5ef2ad4ba12a8a4e4d8508d91394d2bcdc38b7c8c8c0b0a820357ac9f79d286c65220f471eb1adca1d98fc68", + "0xab0cab6860e55a84c5ad2948a7e0989e2b4b1fd637605634b118361497332df32d9549cb854b2327ca54f2bcb85eed8f", + "0xa832fdc4500683e72a96cce61e62ac9ee812c37fe03527ad4cf893915ca1962cee80e72d4f82b20c8fc0b764376635a1", + "0x95c74cd46206e7f70c9766117c34c0ec45c2b0f927a15ea167901a160e1530d8522943c29b61e03568aa0f9c55926c53", + "0x8b32875977ec372c583b24234c27ed73aef00cdff61eb3c3776e073afbdeade548de9497c32ec6d703ff8ad0a5cb7fe4", + "0x8d74f46361c79e15128ac399e958a91067ef4cec8983408775a87eca1eed5b7dcbf0ddf30e66f51780457413496c7f07", + "0xa59c3c1227fdd7c2e81f5e11ef5c406da44662987bac33caed72314081e2eed66055d38137e01b2268e58ec85dd986c0", + "0xb125a45e86117ee11d2fb42f680ab4a7894edd67ff927ae2c808920c66c3e55f6a9d4588eee906f33a05d592e5ec3c04", + "0x947225acfcce5992eab96276f668c3cbe5f298b90a59f2bb213be9997d8850919e8f496f182689b5cbd54084a7332482", + "0x968825d025ded899ff7c57245250535c732836f7565eab1ae23ee7e513201d413c16e1ba3f5166e7ac6cf74de8ceef4f", + "0x93eace72036fe57d019676a02acf3d224cf376f166658c1bf705db4f24295881d477d6fdd7916efcfceff8c7a063deda", + "0x903a29883846b7c50c15968b20e30c471aeac07b872c40a4d19eb1a42da18b649d5bbfde4b4cf6225d215a461b0deb6d", + "0xb70209090055459296006742d946a513f0cba6d83a05249ee8e7a51052b29c0ca9722dc4af5f9816a1b7938a5dac7f79", + "0x98205ef3a72dff54c5a9c82d293c3e45d908946fa74bb749c3aabe1ab994ea93c269bcce1a266d2fe67a8f02133c5985", + "0xa348b40ba3ba7d81c5d4631f038186ebd5e5f314f1ea737259151b07c3cc8cf0c6ed4201e71bcc1c22fefda81a20cde6", + "0x8fa29be10fb3ab30ce25920fec0187e6e91e458947009dabb869aade7136c8ba23602682b71e390c251f3743164cbdaa", + "0xb834cdbcfb24c8f84bfa4c552e7fadc0028a140952fd69ed13a516e1314a4cd35d4b954a77d51a1b93e1f5d657d0315d", + "0x83ad63e9c910d1fc44bc114accfb0d4d333b7ebe032f73f62d25d3e172c029d5e34a1c9d547273bf6c0fead5c8801007", + "0x8024de98c26b4c994a66628dc304bb737f4b6859c86ded552c5abb81fd4c6c2e19d5a30beed398a694b9b2fdea1dd06a", + "0x91fff19e54c15932260aa990c7fcb3c3c3da94845cc5aa8740ef56cf9f58d19b4c3c55596f8d6c877f9f4d22921d93aa", + "0xa77b5a63452cb1320b61ab6c7c2ef9cfbcade5fd4727583751fb2bf3ea330b5ca67757ec1f517bf4d503ec924fe32fbd", + "0xaff064708103884cb4f1a3c1718b3fc40a238d35cf0a7dc24bdf9823693b407c70da50df585bf5bc4e9c07d1c2d203e8", + "0xb69fe3ded0c4f5d44a09a0e0f398221b6d1bf5dbb8bc4e338b93c64f1a3cac1e4b5f73c2b8117158030ec03787f4b452", + "0xa4949b86c4e5b1d5c82a337e5ce6b2718b1f7c215148c8bfb7e7c44ec86c5c9476048fc5c01f57cb0920876478c41ad6", + "0xb419e9fd4babcaf8180d5479db188bb3da232ae77a1c4ed65687c306e6262f8083070a9ac32220cddb3af2ec73114092", + "0xb10cb3d0317dd570aa73129f4acf63c256816f007607c19b423fb42f65133ce21f2f517e0afb41a5378cccf893ae14d0", + "0xb22bd44f9235a47118a9bbe2ba5a2ba9ec62476061be2e8e57806c1a17a02f9a51403e849e2e589520b759abd0117683", + "0xb1a24caef9df64750c1350789bb8d8a0db0f39474a1c74ea9ba064b1516db6923f00af8d57c632d58844fb8786c3d47a", + "0xb376de22d5f6b0af0b59f7d9764561f4244cf8ffe22890ecd3dcf2ff1832130c9b821e068c9d8773136f4796721e5963", + "0x9329987d42529c261bd15ecedd360be0ea8966e7838f32896522c965adfc4febf187db392bd441fb43bbd10c38fdf68b", + "0x8bfc6421fdc9c2d2aaa68d2a69b1a2728c25b84944cc3e6a57ff0c94bfd210d1cbf4ff3f06702d2a8257024d8be7de63", + "0x9036a6ee2577223be105defe1081c48ea7319e112fff9110eb9f61110c319da25a6cea0464ce65e858635b079691ef1f", + "0x8cc093d52651e65fb390e186db6cc4de559176af4624d1c44cb9b0e836832419dacac7b8db0627b96288977b738d785d", + "0x95d0506e898318f3dc8d28d16dfd9f0038b54798838b3c9be2a2ae3c2bf204eb496166353fc042220b0bd4f6673b9285", + "0x85aaf06a8b2d0dac89dafd00c28533f35dbd074978c2aaa5bef75db44a7b12aeb222e724f395513b9a535809a275e30b", + "0x872451a35c6db61c63e9b8bb9f16b217f985c20be4451c14282c814adb29d7fb13f201367c664435c7f1d4d9375d7a58", + "0xaccb0be851e93c6c8cc64724cdb86887eea284194b10e7a43c90528ed97e9ec71ca69c6fac13899530593756dd49eab2", + "0x944c78c56fb227ae632805d448ca3884cd3d2a89181cead3d2b7835e63297e6d740aa79a112edb1d4727824991636df5", + "0xab96f06c4b9b0b2c0571740b24fca758e6976315053a7ecb20119150a9fa416db2d3a2e0f8168b390bb063f0c1caf785", + "0x85a7c0069047b978422d264d831ab816435f63938015d2e977222b6b5746066c0071b7f89267027f8a975206ed25c1b0", + "0xad4f6b3d27bbbb744126601053c3dc98c07ff0eb0b38a898bd80dce778372846d67e5ab8fb34fb3ad0ef3f235d77ba7f", + "0x910b2f4ebd37b7ae94108922b233d0920b4aba0bd94202c70f1314418b548d11d8e9caa91f2cd95aff51b9432d122b7f", + "0x80a9e73a65da99664988b238096a090d313a0ee8e4235bc102fa79bb337b51bb08c4507814eb5baec22103ec512eaab0", + "0x8b74990946de7b72a92147ceac1bd9d55999a8b576e8df68639e40ed5dc2062cfcd727903133de482b6dca19d0aaed82", + "0xaac02257146246998477921cef2e9892228590d323b839f3e64ea893b991b463bc2f47e1e5092ddb47e70b2f5bce7622", + "0xacb966c554188c5b266624208f31fab250b3aa197adbdd14aee5ab27d7fb886eb4350985c553b20fdf66d5d332bfd3fe", + "0x8caab020c1baddce77a6794113ef1dfeafc5f5000f48e97f4351b588bf02f1f208101745463c480d37f588d5887e6d8c", + "0x8e152cea1e00a451ca47c20a1e8875873419700af15a5f38ee2268d3fbc974d4bd5f4be38008fa6f404dbdedd6e6e710", + "0x93bf99510971ea9af9f1e364f1234c898380677c8e8de9b0dd24432760164e46c787bc9ec42a7ad450500706cf247b2d", + "0x88cc16019741b341060b95498747db4377100d2a5bf0a5f516f7dec71b62bcb6e779de2c269c946d39040e03b3ae12b7", + "0x8ee99e6d231274ff9252c0f4e84549da173041299ad1230929c3e3d32399731c4f20a502b4a307642cac9306ccd49d3c", + "0x8222f70aebfe6ac037f8543a08498f4cadb3edaac00336fc00437eb09f2cba758f6c38e887cc634b4d5b7112b6334836", + "0x861f60f0462e04cd84924c36a28163def63e777318d00884ab8cb64c8df1df0bce5900342163edb60449296484a6c5bf", + "0xa8604b6196f87a04e1350302e8aa745bba8dc162115d22657b37a1d1a98cb14876ddf7f65840b5dbd77e80cd22b4256c", + "0xb22d56d549a53eaef549595924bdb621ff807aa4513feedf3fdcbf7ba8b6b9cfa4481c2f67fc642db397a6b794a8b63a", + "0xb23f0d05b74c08d6a7df1760792be83a761b36e3f8ae360f3c363fb196e2a9dd2de2e492e49d36561366e14daa77155c", + "0xb838f029df455efb6c530d0e370bbbf7d87d61a9aea3d2fe5474c5fe0a39cf235ceecf9693c5c6c5820b1ba8f820bd31", + "0x86c3bbca4c0300606071c0a80dbdec21ce1dd4d8d4309648151c420854032dff1241a1677d1cd5de4e4de4385efda986", + "0xa76ee8ed9052f6a7a8c69774bb2597be182942f08115baba03bf8faaeaee526feba86120039fe8ca7b9354c3b6e0a8e6", + "0x96d392dde067473a81faf2d1fea55b6429126b88b160e39b4210d31d0a82833ffd3a80e07d24d495aea2d96be7251547", + "0xabb91be2a2d860fd662ed4f1c6edeefd4da8dc10e79251cf87f06029906e7f0be9b486462718f0525d5e049472692cb7", + "0xa6446c429ebf1c7793c622250e23594c836b2fbcaf6c5b3d0995e1595a37f50ea643f3e549b0be8bbdadd69044d72ab9", + "0x90d530c6d0cb654999fa771b8d11d723f54b8a8233d1052dc1e839ea6e314fbed3697084601f3e9bbb71d2b4eaa596df", + "0xa7c21a8fcede581bfd9847b6835eda62ba250bea81f1bb17372c800a19c732abe03064e64a2f865d974fb636cab4b859", + "0xa5bd434e75bac105cb3e329665a35bce6a12f71dd90c15165777d64d4c13a82bceedb9b48e762bd24034e0fc9fbe45f4", + "0x8c2036ace1920bd13cf018e82848c49eb511fad65fd0ff51f4e4b50cf3bfc294afb63cba682c16f52fb595a98fa84970", + "0x87abfd5126152fd3bac3c56230579b489436755ea89e0566aa349490b36a5d7b85028e9fb0710907042bcde6a6f5d7e3", + "0x8660281406d22a4950f5ef050bf71dd3090edb16eff27fa29ef600cdea628315e2054211ed2cc6eaf8f2a1771ef689fd", + "0xa106d9be199636d7add43b942290269351578500d8245d4aae4c083954e4f27f64740a3138a66230391f2d0e6043a8de", + "0xa78dc461decbeaeed8ebd0909369b491a5e764d6a5645a7dac61d3140d7dc0062526f777b0eb866bff27608429ebbdde", + "0xb0446d1c590ee5a45f7e22d269c044f3848c97aec1d226b44bfd0e94d9729c28a38bccddc3a1006cc5fe4e3c24f001f2", + "0xb91931d93f806d0b0e6cc62a53c718c099526140f50f45d94b8bbb57d71e78647e06ee7b42aa5714aed9a5c05ac8533f", + "0xb6061e63558d312eb891b97b39aa552fa218568d79ee26fe6dd5b864aea9e3216d8f2e2f3b093503be274766dac41426", + "0x817c6c10ce2677b9fc5223500322e2b880583254d0bb0d247d728f8716f5e05c9ff39f135854342a1afecd9fbdcf7c46", + "0x82cada19fed16b891ef3442bafd49e1f07c00c2f57b2492dd4ee36af2bd6fd877d6cb41188a4d6ce9ec8d48e8133d697", + "0xa0cc209abdb768b589fcb7b376b6e1cac07743288c95a1cf1a0354b47f0cf91fca78a75c1fcafa6f5926d6c379116608", + "0x90833a51eef1b10ed74e8f9bbd6197e29c5292e469c854eed10b0da663e2bceb92539710b1858bbb21887bd538d28d89", + "0x9568269f3f5257200f9ca44afe1174a5d3cf92950a7f553e50e279c239e156a9faaa2a67f288e3d5100b4142efe64856", + "0x884f01afecbcb987cb3e7c489c43155c416ed41340f61ecb651d8cba884fb9274f6d9e7e4a46dd220253ae561614e44c", + "0xa94c19468d14b6f99002fc52ac06bbe59e5c472e4a0cdb225144a62f8870b3f10593749df7a2de0bd3c9476ce682e148", + "0xa439153ac8e6ca037381e3240e7ba08d056c83d7090f16ed538df25901835e09e27de2073646e7d7f3c65056af6e4ce7", + "0x90b36bf56adbd8c4b6cb32febc3a8d5f714370c2ac3305c10fa6d168dffb2a026804517215f9a2d4ec8310cdb6bb459b", + "0x8b955f1d894b3aefd883fb4b65f14cd37fc2b9db77db79273f1700bef9973bf3fd123897ea2b7989f50003733f8f7f21", + "0xa13d6febf5fb993ae76cae08423ca28da8b818d6ef0fde32976a4db57839cd45b085026b28ee5795f10a9a8e3098c683", + "0xa28df1464d3372ce9f37ef1db33cc010f752156afae6f76949d98cd799c0cf225c20228ae86a4da592d65f0cffe3951b", + "0x82efe4ae2c50a2d7645240c173a047f238536598c04a2c0b69c96e96bd18e075a99110f1206bc213f39edca42ba00cc1", + "0x80a9ef993c2b009ae172cc8f7ec036f5734cf4f4dfa06a7db4d54725e7fbfae5e3bc6f22687bdbb6961939d6f0c87537", + "0x8bcd45ab1f9cbab36937a27e724af819838f66dfeb15923f8113654ff877bd8667c54f6307aaf0c35027ca11b6229bfd", + "0xb355a849ad3227caa4476759137e813505ec523cbc2d4105bc7148a4630f9e81918d110479a2d5f5e4cd9ccec9d9d3e3", + "0x81c2ae7d4d1b17f8b6de6a0430acc0d58260993980fe48dc2129c4948269cdc74f9dbfbf9c26b19360823fd913083d48", + "0xa622adf72dc250e54f672e14e128c700166168dbe0474cecb340da175346e89917c400677b1bc1c11fcc4cc26591d9db", + "0x8d57776f519f0dd912ea14f79fbab53a30624e102f9575c0bad08d2dc754e6be54f39b11278c290977d9b9c7c0e1e0ad", + "0x87ae0aa0aa48eac53d1ca5a7b93917de12db9e40ceabf8fdb40884ae771cfdf095411deef7c9f821af0b7070454a2608", + "0xaf99dc7330fe7c37e850283eb47cc3257888e7c197cb0d102edf94439e1e02267b6a56306d246c326c4c79f9dc8c6986", + "0x890aa6248b17f1501b0f869c556be7bf2b1d31a176f9978bb97ab7a6bd4138eed32467951c5ef1871944b7f620542f43", + "0x9725345893b647e9ba4e6a29e12f96751f1ae25fcaec2173e9a259921a1a7edb7a47159b3c8767e44d9e2689f5aa0f72", + "0x893a2968819401bf355e85eee0f0ed0406a6d4a7d7f172d0017420f71e00bb0ba984f6020999a3cdf874d3cd8ebcd371", + "0x97f10d77983f088286bd7ef3e7fdd8fa275a56bec19919adf33cf939a90c8f2967d2b1b6fc51195cb45ad561202a3ed7", + "0xa0479a8da06d7a69c0b0fee60df4e691c19c551f5e7da286dab430bfbcabf31726508e20d26ea48c53365a7f00a3ad34", + "0xa06c9ce5e802df14f6b064a3d1a0735d429b452f0e2e276042800b0a4f16df988fd94cf3945921d5dd3802ab2636f867", + "0x935e7d82bca19f16614aa43b4a3474e4d20d064e4bfdf1cea2909e5c9ab72cfe3e54dc50030e41ee84f3588cebc524e9", + "0x85758d1b084263992070ec8943f33073a2d9b86a8606672550c17545507a5b3c88d87382b41916a87ee96ff55a7aa535", + "0x8becc978129cc96737034c577ae7225372dd855da8811ae4e46328e020c803833b5bdbc4a20a93270e2b8bd1a2feae52", + "0xaa180819531c3ec1feb829d789cb2092964c069974ae4faad60e04a6afcce5c3a59aec9f11291e6d110a788d22532bc6", + "0x914a266065caf64985e8c5b1cb2e3f4e3fe94d7d085a1881b1fefa435afef4e1b39a98551d096a62e4f5cc1a7f0fdc2e", + "0xb463e39732a7d9daec8a456fb58e54b30a6e160aa522a18b9a9e836488cce3342bcbb2e1deab0f5e6ec0a8796d77197d", + "0xb769f4db602251d4b0a1186782799bdcef66de33c110999a5775c50b349666ffd83d4c89714c4e376f2efe021a5cfdb2", + "0xa50cf591f522f19ca337b73089557f75929d9f645f3e57d4f241e14cdd1ea3fb48d84bcf05e4f0377afbb789fbdb5d20", + "0xa6016916146c2685c46e8fdd24186394e2d5496e77e08c0c6a709d4cd7dfa97f1efcef94922b89196819076a91ad37b5", + "0xb56b2b0d601cba7f817fa76102c68c2e518c6f20ff693aad3ff2e07d6c4c76203753f7f91686b1801e8c4659e4d45c48", + "0xa0939d4f57cacaae549b78e87cc234de4ff6a35dc0d9cd5d7410abc30ebcd34c135e008651c756e5a9d2ca79c40ef42b", + "0x8efa7338442a4b6318145a5440fc213b97869647eeae41b9aa3c0a27ee51285b73e3ae3b4a9423df255e6add58864aa9", + "0xae7401048b838c0dcd4b26bb6c56d79d51964a0daba780970b6c97daee4ea45854ea0ac0e4139b3fe60dac189f84df65", + "0xa450b85f5dfffa8b34dfd8bc985f921318efacf8857cf7948f93884ba09fb831482ee90a44224b1a41e859e19b74962f", + "0xb63258c080d13f3b7d5b9f3ca9929f8982a6960bdb1b0f8676f4dca823971601672f15e653917bf5d3746bb220504913", + "0x8972cbf07a738549205b1094c5987818124144bf187bc0a85287c94fdb22ce038c0f11df1aa16ec5992e91b44d1af793", + "0xa25ba667d832b145f9ce18c3f9b1bd00737aa36db020e1b99752c8ef7d27c6c448982bd8d352e1b6df266b8d8358a8d5", + "0x8145d0787f0e3b5325190ae10c1d6bee713e6765fb6a0e9214132c6f78f4582bb2771aaeae40d3dad4bafb56bf7e36d8", + "0x8d7c3ab310184f7dc34b6ce4684e4d29a31e77b09940448ea4daac730b7eb308063125d4dd229046cf11bfd521b771e0", + "0xac3abaea9cd283eb347efda4ed9086ea3acf495043e08d0d19945876329e8675224b685612a6badf8fd72fb6274902b1", + "0xaaa595a84b403ec65729bc1c8055a94f874bf9adddc6c507b3e1f24f79d3ad359595a672b93aab3394db4e2d4a7d8970", + "0xa76d70b78c99fffcbf9bb9886eab40f1ea4f99a309710b660b64cbf86057cbcb644d243f6e341711bb7ef0fedf0435a7", + "0x9049b956b77f8453d2070607610b79db795588c0cec12943a0f5fe76f358dea81e4f57a4692112afda0e2c05c142b26f", + "0x92fde8effc9f61393a2771155812b863cff2a0c5423d7d40aa04d621d396b44af94ddd376c28e7d2f53c930aea947484", + "0x8432fbb799e0435ef428d4fefc309a05dd589bce74d7a87faf659823e8c9ed51d3e42603d878e80f439a38be4321c2fa", + "0x917e191df1bcf3f5715419c1e2191da6b8680543b1ba41fe84ed07ef570376e072c081beb67b375fca3565a2565bcabb", + "0x916c4c54721de03934fee6f43de50bb04c81f6f8dd4f6781e159e71c40c60408aa54251d457369d133d4ba3ed7c12cb4", + "0x810fbbe808375735dd22d5bc7fc3828dc49fdd22cc2d7661604e7ac9c4535c1df578780affb3b895a0831640a945bcad", + "0xb420ed079941842510e31cfad117fa11fb6b4f97dfbc6298cb840f27ebaceba23eeaf3f513bcffbf5e4aae946310182d", + "0xa7e2a4a002b60291924850642e703232994acb4cfb90f07c94d1e0ecd2257bb583443283c20fc6017c37e6bfe85b7366", + "0x86618f17fa4b0d65496b661bbb5ba3bc3a87129d30a4b7d4f515b904f4206ca5253a41f49fd52095861e5e065ec54f21", + "0x99ef7a5d5ac2f1c567160e1f8c95f2f38d41881850f30c461a205f7b1b9fb181277311333839b13fb3ae203447e17727", + "0xa9a7df761e7f18b79494bf429572140c8c6e9d456c4d4e336184f3f51525a65eb9582bea1e601bdb6ef8150b7ca736a5", + "0xb2a897dcb7ffd6257f3f2947ec966f2077d57d5191a88840b1d4f67effebe8c436641be85524d0a21be734c63ab5965d", + "0xa99f2995a2e3ed2fd1228d64166112038de2f516410aa439f4c507044e2017ea388604e2d0f7121256fadf7fbe7023d1", + "0xa0f5fe25af3ce021b706fcff05f3d825384a272284d04735574ce5fb256bf27100fad0b1f1ba0e54ae9dcbb9570ecad3", + "0x940c1f01ed362bd588b950c27f8cc1d52276c71bb153d47f07ec85b038c11d9a8424b7904f424423e714454d5e80d1cd", + "0x86d5736520a83538d4cd058cc4b4e84213ed00ebd6e7af79ae787adc17a92ba5359e28ba6c91936d967b4b28d24c3070", + "0x92ba4eb1f796bc3d8b03515f65c045b66e2734c2da3fc507fdd9d6b5d1e19ab3893726816a32141db7a31099ca817d96", + "0xa9773d92cf23f65f98ef68f6cf95c72b53d0683af2f9bf886bb9036e4a38184b1131b26fd24397910b494fbef856f3aa", + "0x87631537541852da323b4353af45a164f68b304d24c01183bf271782e11687f3fcf528394e1566c2a26cb527b3148e64", + "0x85a6c050f42fce560b5a8d54a11c3bbb8407abbadd859647a7b0c21c4b579ec65671098b74f10a16245dc779dff7838e", + "0x8ead0b56c1ca49723f94a998ba113b9058059321da72d9e395a667e6a63d5a9dac0f5717cec343f021695e8ced1f72af", + "0xb18105cc736787fafaf7c3c11c448bce9466e683159dff52723b7951dff429565e466e4841d982e3aaa9ee2066838666", + "0x8a0b8ad4d466c09d4f1e9167410dbe2edc6e0e6229d4b3036d30f85eb6a333a18b1c968f6ca6d6889bb08fecde017ef4", + "0x8a684106458cb6f4db478170b9ad595d4b54c18bf63b9058f095a2fa1b928c15101472c70c648873d5887880059ed402", + "0xb1767f6074426a00e01095dbb1795beb4e4050c6411792cbad6537bc444c3165d1058bafd1487451f9c5ddd209e0ae7e", + "0x955b68526e6cb3937b26843270f4e60f9c6c8ece2fa9308fe3e23afa433309c068c66a4bc16ee2cf04220f095e9afce4", + "0x873c0366668c8faddb0eb7c86f485718d65f8c4734020f1a18efd5fa123d3ea8a990977fe13592cd01d17e60809cb5ff", + "0x85aac46ecd330608e5272430970e6081ff02a571e8ea444f1e11785ea798769634a22a142d0237f67b75369d3c484a8a", + "0x88f26b4ea1b236cb326cd7ad7e2517ec8c4919598691474fe15d09cabcfc37a8d8b1b818f4d112432ee3a716b0f37871", + "0x815a9084e3e2345f24c5fa559deec21ee1352fb60f4025c0779be65057f2d528a3d91593bd30d3a185f5ec53a9950676", + "0x95c96cec88806469c277ab567863c5209027cecc06c7012358e5f555689c0d9a5ffb219a464f086b45817e8536b86d2f", + "0xaa628006235dc77c14cef4c04a308d66b07ac92d377df3de1a2e6ecfe3144f2219ad6d7795e671e1cb37a3641910b940", + "0x925ab70450af28c21a488bfb5d38ac994f784cf249d7fd9ad251bb7fd897a23e23d2528308c03415074d43330dc37ef4", + "0xa6ecad6fdfb851b40356a8b1060f38235407a0f2706e7b8bb4a13465ca3f81d4f5b99466ac2565c60af15f022d26732e", + "0xa6cc8f25c2d5b2d2f220ec359e6a37a52b95fa6af6e173c65e7cd55299eff4aa9e6d9e6f2769e6459313f1f2aecb0fab", + "0x85a4dccf6d90ee8e094731eec53bd00b3887aec6bd81a0740efddf812fd35e3e4fe4f983afb49a8588691c202dabf942", + "0xa2a469d84ec478da40838f775d11ad38f6596eb41caa139cc190d6a10b5108c09febae34ffdafac92271d2e73c143693", + "0x87d43eff5a006dc4dddcf76cc96c656a1f3a68f19f124181feab86c6cc9a52cb9189cdbb423414defdd9bb0ca8ff1ddc", + "0x87468eb620b79a0a455a259a6b4dfbc297d0d53336537b771254dd956b145dc816b195b7002647ea218552e345818a3f", + "0xa68873ef80986795ea5ed1a597d1cd99ed978ec25e0abb57fdcc96e89ef0f50aeb779ff46e3dce21dc83ada3157a8498", + "0xa61cce8a1a8b13a4a650fdbec0eeea8297c352a8238fb7cac95a0df18ed16ee02a3daa2de108fa122aca733bd8ad7855", + "0xaf472d9befa750dcebc5428fe1a024f18ec1c07bca0f95643ce6b5f4189892a910285afb03fd7ed7068fbe614e80d33c", + "0x8f337cdd29918a2493515ebb5cf702bbe8ecb23b53c6d18920cc22f519e276ca9b991d3313e2d38ae17ae8bdfa4f8b7e", + "0x99ca06a49c5cd0bb097c447793fcdd809869b216a34c66c78c7e41e8c22f05d09168d46b8b1f3390db9452d91bc96dea", + "0xb6e1a2827c3bdda91715b0e1b1f10dd363cef337e7c80cac1f34165fc0dea7c8b69747e310563db5818390146ce3e231", + "0x9620e8f0f0ee9a4719aa9685eeb1049c5c77659ba6149ec4c158f999cfd09514794b23388879931fe26fea03fa471fd3", + "0xa71ec577db46011689d073245e3b1c3222a9b1fe6aa5b83629adec5733dd48617ebea91346f0dd0e6cdaa86e4931b168", + "0xaefde3193d0f700d0f515ab2aaa43e2ef1d7831c4f7859f48e52693d57f97fa9e520090f3ed700e1c966f4b76048e57f", + "0xab8e2d01a71192093ef8fafa7485e795567cc9db95a93fb7cc4cf63a391ef89af5e2bfad4b827fffe02b89271300407f", + "0xb6536c4232bb20e22af1a8bb12de76d5fec2ad9a3b48af1f38fa67e0f8504ef60f305a73d19385095bb6a9603fe29889", + "0x8c8634b0432159f66feaabb165842d1c8ac378f79565b1b90c381aa8450eb4231c3dad11ec9317b9fc2b155c3a771e32", + "0xb563600bd56fad7c8853af21c6a02a16ed9d8a8bbeea2c31731d63b976d83cb05b9779372d898233e8fd597a75424797", + "0x976e9c8b150d08706079945bd0e84ab09a648ecc6f64ded9eb5329e57213149ae409ae93e8fbd8eda5b5c69f5212b883", + "0x8440acea2931118a5b481268ff9f180ee4ede85d14a52c026adc882410825b8275caa44aff0b50c2b88d39f21b1a0696", + "0xb6b68b6501c37804d4833d5a063dd108a46310b1400549074e3cac84acc6d88f73948b7ad48d686de89c1ec043ae8c1a", + "0xb5ab590ef0bb77191f00495b33d11c53c65a819f7d0c1f9dc4a2caa147a69c77a4fff7366a602d743ee1f395ce934c1e", + "0x83d92c69ca540d298fe80d8162a1c7af3fa9b49dfb69e85c1d136a3ec39fe419c9fa78e0bb6d96878771fbd37fe92e40", + "0x993bb71e031e8096442e6205625e1bfddfe6dd6a83a81f3e2f84fafa9e5082ab4cad80a099f21eff2e81c83457c725c3", + "0xad0e8442cb8c77d891df49cdb9efcf2b0d15ac93ec9be1ad5c3b3cca1f4647b675e79c075335c1f681d56f14dc250d76", + "0x8511e373a978a12d81266b9afbd55035d7bc736835cfa921903a92969eeba3624437d1346b55382e61415726ab84a448", + "0xa59970a2493b07339124d763ac9d793c60a03354539ecbcf6035bc43d1ea6e35718202ae6d7060b7d388f483d971573c", + "0xac879a5bb433998e289809a4a966bd02b4bf6a9c1cc276454e39c886efcf4fc68baebed575826bde577ab5aa71d735a9", + "0x86fff174920388bfab841118fb076b2b0cdec3fdb6c3d9a476262f82689fb0ed3f1897f7be9dbf0932bb14d346815c63", + "0x8fcae1d75b53ab470be805f39630d204853ca1629a14158bac2f52632277d77458dec204ff84b7b2d77e641c2045be65", + "0xa00ee882c9685e978041fd74a2c465f06e2a42ffd3db659053519925be5b454d6f401e3c12c746e49d910e4c5c9c5e8c", + "0xb268ad68c7bf432a01039cd889afae815c3e120f57930d463aece10af4fd330b5bd7d8869ef1bcf6b2e78e4229922edc", + "0xaa15f74051171daacdc1f1093d3f8e2d13da2833624b80a934afec86fc02208b8f55d24b7d66076444e7633f46375c6a", + "0x8ac7817e71ea0825b292687928e349da7140285d035e1e1abff0c3704fa8453faaae343a441b7143a74ec56539687cc4", + "0x847020e0a440d9c4109773ecca5d8268b44d523389993b1f5e60e541187f7c597d79ebd6e318871815e26c96b4a4dbb1", + "0xb12c582454148338ea605d22bd00a754109063e22617f1f8ac8ddf5502c22a181c50c216c3617b9852aa5f26af56b323", + "0x9304c64701e3b4ed6d146e48a881f7d83a17f58357cca0c073b2bb593afd2d94f6e2a7a1ec511d0a67ad6ff4c3be5937", + "0xa746d876e8b1ce225fcafca603b099b36504846961526589af977a88c60d31ba2cc56e66a3dec8a77b3f3531bf7524c9", + "0x846d185bdad6e11e604df7f753b7a08a28b643674221f0e750ebdb6b86ec584a29c869e131bca868972a507e61403f6a", + "0xaa4b671c6d20f72f2f18a939a6ff21cc37e0084b44b4a717f1be859a80b39fb1be026b3205adec2a66a608ec2bcd578f", + "0x824fdf433e090f8acbd258ac7429b21f36f9f3b337c6d0b71d1416a5c88a767883e255b2888b7c906dd2e9560c4af24c", + "0xa448846d9dc2ab7a0995fa44b8527e27f6b3b74c6e03e95edb64e6baa4f1b866103f0addb97c84bef1d72487b2e21796", + "0x9721f9cec7a68b7758e3887548790de49fa6a442d0396739efa20c2f50352a7f91d300867556d11a703866def2d5f7b5", + "0xb208e22d04896abfd515a95c429ff318e87ff81a5d534c8ac2c33c052d6ffb73ef1dccd39c0bbe0734b596c384014766", + "0xadd07b7f0dbb34049cd8feeb3c18da5944bf706871cfd9f14ff72f6c59ad217ebb1f0258b13b167851929387e4e34cfe", + "0x921d2a3e7e9790f74068623de327443666b634c8443aba80120a45bba450df920b2374d96df1ce3fb1b06dd06f8cf6e3", + "0xa87989ee231e468a712c66513746fcf03c14f103aadca0eac28e9732487deb56d7532e407953ab87a4bf8961588ef7b0", + "0xac460be540f4c840def2eef19fc754a9af34608d107cbadb53334cf194cc91138d53b9538fcd0ec970b5d4aa455b224a", + "0xb7d24f78886fd3e2d283e18d9ad5a25c1a904e7d9b9104bf47da469d74f34162e27e531380dbbe0a9d051e6ffd51d6e7", + "0x8956d7455ae9009d70c6e4a0bcd7610e55f37494cf9897a8f9e1b904cc8febc3fd2d642ebd09025cfff4609ad7e3bc52", + "0xa4c8c44cbffa804129e123474854645107d1f0f463c45c30fd168848ebea94880f7c0c5a45183e9eb837f346270bdb35", + "0xb2a17abb3f6a05bcb14dc7b98321fa8b46d299626c73d7c6eb12140bf4c3f8e1795250870947af817834f033c88a59d6", + "0x89511f2eab33894fd4b3753d24249f410ff7263052c1fef6166fc63a79816656b0d24c529e45ccce6be28de6e375d916", + "0x97d0f37a13cfb723b848099ca1c14d83e9aaf2f7aeb71829180e664b7968632a08f6a85f557d74b55afe6242f2a36e7c", + "0x8c7662520794e8b4405d0b33b5cac839784bc86a5868766c06cbc1fa306dbe334978177417b31baf90ce7b0052a29c56", + "0x962cc068cfce6faaa27213c4e43e44eeff0dfbb6d25b814e82c7da981fb81d7d91868fa2344f05fb552362f98cfd4a72", + "0x9944adaff14a85eab81c73f38f386701713b52513c4d4b838d58d4ffa1d17260a6d056b02334850ea9a31677c4b078bd", + "0x9346dc3720adc5df500a8df27fd9c75ef38dc5c8f4e8ed66983304750e66d502c3c59b8e955be781b670a0afc70a2167", + "0x9449a71af9672aaf8856896d7e3d788b22991a7103f75b08c0abbcc2bfe60fda4ed8ce502cea4511ff0ea52a93e81222", + "0xb349e6fbf778c4af35fbed33130bd8a7216ed3ba0a79163ebb556e8eb8e1a7dad3456ddd700dad9d08d202491c51b939", + "0x8b8e1263eb48d0fe304032dd5ea1f30e73f0121265f7458ba9054d3626894e8a5fef665340abd2ede9653045c2665938", + "0xa1946ee543d1a6e21f380453be4d446e4130950c5fc3d075794eb8260f6f52d0a795c1ff91d028a648dc1ce7d9ab6b47", + "0xad4c425de9855f6968a17ee9ae5b15e0a5b596411388cf976df62ecc6c847a6e2ddb2cea792a5f6e9113c2445dba3e5c", + "0xa7921a5a80d7cf6ae81ba9ee05e0579b18c20cd2852762c89d6496aa4c8ca9d1ca2434a67b2c16d333ea8e382cdab1e3", + "0x95373fc22c0917c3c2044ac688c4f29a63ed858a45c0d6d2d0fe97afd6f532dcb648670594290c1c89010ecc69259bef", + "0x9610b87ff02e391a43324a7122736876d5b3af2a137d749c52f75d07b17f19900b151b7f439d564f4529e77aa057ad12", + "0x8d2d25180dc2c65a4844d3e66819ccfcf48858f0cc89e1c77553b463ec0f7feb9a4002ce26bc618d1142549b9850f232", + "0x8f9091cebf5e9c809aab415942172258f894e66e625d7388a05289183f01b8d994d52e05a8e69f784fba41db9ea357f0", + "0xa891ad67a790089ffc9f6d53e6a3d63d3556f5f693e0cd8a7d0131db06fd4520e719cfcc3934f0a8f62a95f90840f1d4", + "0xad2e7b516243f915d4d1415326e98b1a7390ae88897d0b03b66c2d9bd8c3fba283d7e8fe44ed3333296a736454cef6d8", + "0x87502f026ed4e10167419130b88c3737635c5b9074c364e1dd247cef5ef0fc064b4ae99b187e33301e438bbd2fe7d032", + "0x8037a6337195c8e26a27ea4ef218c6e7d79a9720aaab43932d343192abc2320fe72955f5e431c109093bda074103330a", + "0xa0db3172e93ca5138fe419e1c49a1925140999f6eff7c593e5681951ee0ec1c7e454c851782cbd2b8c9bc90d466e90e0", + "0x87f1a3968afec354d92d77e2726b702847c6afcabb8438634f9c6f7766de4c1504317dc4fa9a4a735acdbf985e119564", + "0x8e6317d00a504e3b79cd47feb4c60f9df186467fe9ca0f35b55c0364db30528f5ff071109dabb2fc80bb9cd4949f0c24", + "0x999b0a6e040372e61937bf0d68374e230346b654b5a0f591a59d33a4f95bdb2f3581db7c7ccb420cd7699ed709c50713", + "0xa38e191d66c625f975313c7007bbe7431b5a06ed2da1290a7d5d0f2ec73770d476efd07b8e632de64597d47df175cbb0", + "0x9040b59bd739d9cc2e8f6e894683429e4e876a8106238689ff4c22770ae5fdae1f32d962b30301fa0634ee163b524f35", + "0x82f98da1264b6b75b8fbeb6a4d96d6a05b25c24db0d57ba3a38efe3a82d0d4e331b9fc4237d6494ccfe4727206457519", + "0xa1bc287e272cf8b74dbf6405b3a5190883195806aa351f1dc8e525aa342283f0a35ff687e3b434324dedee74946dd185", + "0x81f3ccd6c7f5b39e4e873365f8c37b214e8ab122d04a606fbb7339dc3298c427e922ec7418002561d4106505b5c399ee", + "0x865bb0f33f7636ec501bb634e5b65751c8a230ae1fa807a961a8289bbf9c7fe8c59e01fbc4c04f8d59b7f539cf79ddd5", + "0x812adf409fa63575113662966f5078a903212ffb65c9b0bbe62da0f13a133443a7062cb8fd70f5e5dd5559a32c26d2c8", + "0x984d17f9b11a683132e0b5a9ee5945e3ff7054c2d5c716be73b29078db1d36f54c6e652fd2f52a19da313112e97ade07", + "0xa1b47841a0a2b06efd9ab8c111309cc5fc9e1d5896b3e42ed531f6057e5ade8977c29831ce08dbda40348386b1dcc06d", + "0xb550fdec503195ecb9e079dcdf0cad559d64d3c30818ef369b4907e813e689da316a74ad2422e391b4a8c2a2bef25fc0", + "0x8b4dfd5ef5573db1476d5e43aacfb5941e45d6297794508f29c454fe50ea622e6f068b28b3debe8635cf6036007de2e3", + "0x8818a18e9a2ec90a271b784400c1903089ffb0e0b40bc5abbbe12fbebe0f731f91959d98c5519ef1694543e31e2016d4", + "0x85369d6cc7342e1aa15b59141517d8db8baaaeb7ab9670f3ba3905353948d575923d283b7e5a05b13a30e7baf1208a86", + "0xb99e5d6d82aa9cf7d5970e7f710f4039ac32c2077530e4c2779250c6b9b373bc380adb0a03b892b652f649720672fc8c", + "0xa82fd4f58635129dbb6cc3eb9391cf2d28400018b105fc41500fbbd12bd890b918f97d3d359c29dd3b4c4e34391dfab0", + "0xb14b2b3d0dfe2bb57cee4cd72765b60ac33c1056580950be005790176543826c1d4fbd737f6cfeada6c735543244ab57", + "0xba006368ecab5febb6ab348644d9b63de202293085ed468df8bc24d992ae8ce468470aa37f36a73630c789fb9c819b30", + "0xabd5b1c78e05f9d7c8cc99bdaef8b0b6a57f2daf0f02bf492bec48ea4a27a8f1e38b5854da96efff11973326ff980f92", + "0xb95b547357e6601667b0f5f61f261800a44c2879cf94e879def6a105b1ad2bbf1795c3b98a90d588388e81789bd02681", + "0xafede34e7dab0a9e074bc19a7daddb27df65735581ca24ad70c891c98b1349fcebbcf3ba6b32c2617fe06a5818dabc2d", + "0xb57ace3fa2b9f6b2db60c0d861ace7d7e657c5d35d992588aeed588c6ce3a80b6f0d49f8a26607f0b17167ab21b675e4", + "0xad1154142344f494e3061ef45a34fab1aaacf5fdf7d1b26adbb5fbc3d795655fa743444e39d9a4119b4a4f82a6f30441", + "0x8bb4608beb06bc394e1a70739b872ce5a2a3ffc98c7547bf2698c893ca399d6c13686f6663f483894bccaabc3b9c56ad", + "0x8060b9584aa294fe8adc2b22f67e988bc6da768eae91e429dcc43ddc53cfcc5d6753fdc1b420b268c7eb2fb50736a970", + "0x852f7e453b1af89b754df6d11a40d5d41ea057376e8ecacd705aacd2f917457f4a093d6b9a8801837fa0f62986ad7149", + "0x90bfdd75e2dc9cf013e22a5d55d2d2b8a754c96103a17524488e01206e67f8b6d52b1be8c4e3d5307d4fe06d0e51f54c", + "0xa9abd5afb8659ee52ada8fa5d57e7dd355f0a7350276f6160bec5fbf70d5f99234dd179eb221c913e22a49ec6d267846", + "0xa39be8269449bfdfc61b1f62077033649f18dae9bef7c6163b9314ca8923691fb832f42776f0160b9e8abd4d143aa4e1", + "0xa0cc3bdef671a59d77c6984338b023fa2b431b32e9ed2abe80484d73edc6540979d6f10812ecc06d4d0c5d4eaca7183c", + "0x8d96a0232832e24d45092653e781e7a9c9520766c3989e67bbe86b3a820c4bf621ea911e7cd5270a4bfea78b618411f6", + "0x82b54703a4f295f5471b255ab59dce00f0fe90c9fb6e06b9ee48b15c91d43f4e2ef4a96c3118aeb03b08767be58181bb", + "0x8053e6416c8b120e2b999cc2fc420a6a55094c61ac7f2a6c6f0a2c108a320890e389af96cbe378936132363c0d551277", + "0xb22486c2f5b51d72335ce819bbafb7fa25eb1c28a378a658f13f9fc79cd20083a7e573248d911231b45a5cf23b561ca7", + "0x93ebf2ca6ad85ab6deace6de1a458706285b31877b1b4d7dcb9d126b63047efaf8c06d580115ec9acee30c8a7212fa55", + "0x987212c36b4722fe2e54fa30c52b1e54474439f9f35ca6ad33c5130cd305b8b54b532dd80ffd2c274105f20ce6d79f6e", + "0xb0877d1963fd9200414a38753dffd9f23a10eb3198912790d7eddbc9f6b477019d52ddd4ebdcb9f60818db076938a5a9", + "0x96c195ec4992728a1eb38cdde42d89a7bce150db43adbc9e61e279ea839e538deec71326b618dd39c50d589f78fc0614", + "0xabfcbbcf1d3b9e84c02499003e490a1d5d9a2841a9e50c7babbef0b2dd20d7483371d4dc629ba07faf46db659459d296", + "0xb1fd0f8d7a01378e693da98d03a2d2fda6b099d03454b6f2b1fa6472ff6bb092751ce6290059826b74ac0361eab00e1e", + "0xa44eaeaa6589206069e9c0a45ff9fc51c68da38d4edff1d15529b7932e6f403d12b9387019c44a1488a5d5f27782a51f", + "0xaa49d0518f343005ca72b9e6c7dcaa97225ce6bb8b908ebbe7b1a22884ff8bfb090890364e325a0d414ad180b8f161d1", + "0x917eae95ebc4109a2e99ddd8fec7881d2f7aaa0e25fda44dec7ce37458c2ee832f1829db7d2dcfa4ca0f06381c7fe91d", + "0x83bbdd32c04d17581418cf360749c7a169b55d54f2427390defd9f751f100897b2d800ce6636c5bbc046c47508d60c8c", + "0x83e9e888ab9c3e30761de635d9aabd31248cdd92f7675fc43e4b21fd96a03ec1dc4ad2ec94fec857ffb52683ac98e360", + "0x86442fff37598ce2b12015ff19b01bb8a780b40ad353d143a0f30a06f6d23afd5c2b0a1253716c855dbf445cc5dd6865", + "0xa5e6fd88a2f9174d9bd4c6a55d9c30974be414992f22aa852f552c7648f722ed8077acf5aba030abd47939bb451b2c60", + "0xb26f45d393b8b2fcb29bdbb16323dc7f4b81c09618519ab3a39f8ee5bd148d0d9f3c0b5dfab55b5ce14a1cb9206d777b", + "0x98eac7b04537653bc0f4941aae732e4b1f84bd276c992c64a219b8715eb1fb829b5cbd997d57feb15c7694c468f95f70", + "0xa099914dd7ed934d8e0d363a648e9038eb7c1ec03fa04dbcaa40f7721c618c3ef947afef7a16b4d7ac8c12aa46637f03", + "0xac351b919cd1fbf106feb8af2c67692bfcddc84762d18cea681cfa7470a5644839caace27efee5f38c87d3df306f4211", + "0x82d999b3e7cf563833b8bc028ff63a6b26eb357dfdb3fd5f10e33a1f80a9b2cfa7814d871b32a7ebfbaa09e753e37c02", + "0xa4ab20bafa316030264e13f7ef5891a2c3b29ab62e1668fcb5881f50a9acac6adbe3d706c07e62f2539715db768f6c43", + "0x90eb5e121ae46bc01a30881eaa556f46bd8457a4e80787cf634aab355082de34ac57d7f497446468225f7721e68e2a47", + "0x8bd258b883f3b3793ec5be9472ad1ff3dc4b51bc5a58e9f944acfb927349ead8231a523cc2175c1f98e7e1e2b9f363b8", + "0xb6d58968d8a017c6a34e24c2c09852f736515a2c50f37232ac6b43a38f8faa7572cc31dade543b594b61b5761c4781d0", + "0xa494591b51ea8285daecc194b5e5bd45ae35767d0246ac94fae204d674ee180c8e97ff15f71f28b7aeb175b8aea59710", + "0xab7940384c25e9027c55c40df20bd2a0d479a165ced9b1046958353cd69015eeb1e44ed2fd64e407805ba42df10fc7bf", + "0x8722054e59bab2062e6419a6e45fc803af77fde912ef2cd23055ad0484963de65a816a2debe1693d93c18218d2b8e81a", + "0xb53434adb66f4a807a6ad917c6e856321753e559b1add70824e5c1e88191bf6993fccb9b8b911fc0f473fb11743acacd", + "0x8b8bdc77bd3a6bc7ca5492b6f8c614852c39a70d6c8a74916eaca0aeb4533b11898b8820a4c2620a97bf35e275480029", + "0x8ba3a6faa6a860a8f3ce1e884aa8769ceded86380a86520ab177ab83043d380a4f535fe13884346c5e51bee68da6ab41", + "0xa04cbce0d2b2e87bbf038c798a12ec828423ca6aca08dc8d481cf6466e3c9c73d4d4a7fa47df9a7e2e15aae9e9f67208", + "0xafe6bd3eb72266d333f1807164900dcfa02a7eb5b1744bb3c86b34b3ee91e3f05e38fa52a50dc64eeb4bdb1dd62874b8", + "0xa4b6fa87f09d5a29252efb2b3aaab6b3b6ea9fab343132a651630206254a25378e3e9d6c96c3d14c150d01817d375a8e", + "0xa2da00e05036c884369e04cf55f3de7d659cd5fa3f849092b2519dd263694efe0f051953d9d94b7e121f0aee8b6174d7", + "0x94b95c465e6cb00da400558a3c60cfec4b79b27e602ca67cbc91aead08de4b6872d8ea096b0dc06dca4525c8992b8547", + "0x859ffcf1fe9166388316149b9acc35694c0ea534d43f09dae9b86f4aa00a23b27144dda6a352e74b9516e8c8d6fc809c", + "0xae4411ed5b263673cee894c11fe4abc72a4bf642d94022a5c0f3369380fcdfc1c21e277f2902972252503f91ada3029a", + "0xab55079aea34afa5c0bd1124b9cdfe01f325b402fdfa017301bf87812eaa811ea5798c3aaf818074d420d1c782b10ada", + "0xb1b76ef8120e66e1535c17038b75255a07849935d3128e3e99e56567b842fb1e8d56ef932d508d2fb18b82f7868fe1a9", + "0x8d4d1d55d321d278db7a85522ccceca09510374ca81d4d73e3bb5249ace7674b73900c35a531ec4fa6448fabf7ad00dc", + "0x939e3b5989fefebb9d272a954659a4eb125b98c9da6953f5e628d26266bd0525ec38304b8d56f08d65abc4d6da4a8dbb", + "0xae6083e95f37770ecae0df1e010456f165d96cfe9a7278c85c15cffd61034081ce5723e25e2bede719dc9341ec8ed481", + "0x96e2fa4da378aa782cc2d5e6e465fc9e49b5c805ed01d560e9b98abb5c0de8b74a2e7bec3aa5e2887d25cccb12c66f0c", + "0xa32d0a70bf15d569b4cda5aebe3e41e03c28bf99cdd34ffa6c5d58a097f322772acca904b3a47addb6c7492a7126ebac", + "0x95cd14802180b224d44a73cc1ed599d6c4ca62ddcaa503513ccdc80aaa8be050cc98bd4b4f3b639549beb4587ac6caf9", + "0xaf0a185391bbe2315eb97feac98ad6dd2e5d931d012c621abd6e404a31cc188b286fef14871762190acf086482b2b5e2", + "0x90dc1eb21bf21c0187f359566fc4bf5386abea52799306a0e5a1151c0817c5f5bc60c86e76b1929c092c0f3ff48cedd2", + "0xac8fcfde3a349d1e93fc8cf450814e842005c545c4844c0401bc80e6b96cdb77f29285a14455e167c191d4f312e866cd", + "0x8ce2299e570331d60f6a6eff1b271097cd5f1c0e1113fc69b89c6a0f685dabea3e5bc2ac6bd789aa492ab189f89be494", + "0x94ad1dbe341c44eeaf4dc133eed47d8dbfe752575e836c075745770a6679ff1f0e7883b6aa917462993a7f469d74cab5", + "0xacf0b54f6bf34cf6ed6c2b39cf43194a40d68de6bcf1e4b82c34c15a1343e9ac3737885e1a30b78d01fa3a5125463db8", + "0x88f44ac27094a2aa14e9dc40b099ee6d68f97385950f303969d889ee93d4635e34dff9239103bdf66a4b7cbba3e7eb7a", + "0x9526cf088ab90335add1db4d3a4ac631b58cbfbe88fa0845a877d33247d1cfeb85994522e1eb8f8874651bfb1df03e2a", + "0x845be1fe94223c7f1f97d74c49d682472585d8f772762baad8a9d341d9c3015534cc83d102113c51a9dea2ab10d8d27b", + "0x849716f938f9d37250cccb1bf77f5f9fde53096cdfc6f2a25536a6187029a8f1331cdbed08909184b201f8d9f04b792f", + "0xad2783a76f5b3db008ef5f7e67391fda4e7e36abde6b3b089fc4835b5c339370287935af6bd53998bed4e399eda1136d", + "0xa5377116027c5d061dbe24c240b891c08cdd8cd3f0899e848d682c873aff5b8132c1e7cfe76d2e5ed97ee0eb1d42cb68", + "0xa4b7a1ec9e93c899b9fd9aaf264c50e42c36c0788d68296a471f7a3447af4dbc81e4fa96070139941564083ec5b5b5a1", + "0xa9b596da3bdfe23e6799ece5f7975bf7a1979a75f4f546deeaf8b34dfe3e0d623217cb4cf4ccd504cfa3625b88cd53f1", + "0x8fa859a089bc17d698a7ee381f37ce9beadf4e5b44fce5f6f29762bc04f96faff5d58c48c73631290325f05e9a1ecf49", + "0x9617d74e8f808a4165a8ac2e30878c349e1c3d40972006f0787b31ea62d248c2d9f3fc3da83181c6e57e95feedfd0e8c", + "0x8e5acaac379f4bb0127efbef26180f91ff60e4c525bc9b798fc50dfaf4fe8a5aa84f18f3d3cfb8baead7d1e0499af753", + "0x878d21809ba540f50bd11f4c4d9590fb6f3ab9de5692606e6e2ef4ed9d18520119e385be5e1f4b3f2e2b09c319f0e8fc", + "0xb48cd67fb7f1242696c1f877da4bdf188eac676cd0e561fbac1a537f7b8229aff5a043922441d603a26aae56a15faee4", + "0x8d62d858bbb59ec3c8cc9acda002e08addab4d3ad143b3812098f3d9087a1b4a1bb255dcb1635da2402487d8d0249161", + "0xae4a6a5ce9553b65a05f7935e61e496a4a0f6fd8203367a2c627394c9ce1e280750297b74cdc48fd1d9a31e93f97bef4", + "0x89975b91b94c25c9c3660e4af4047a8bacf964783010820dbc91ff8281509379cb3b24c25080d5a01174dd9a049118d5", + "0x826418c8e17ad902b5fe88736323a47e0ca7a44bce4cbe27846ec8fe81de1e8942455dda6d30e192cdcc73e11df31256", + "0xa3b31ae621bd210a2b767e0e6f22eb28fe3c4943498a7e91753225426168b9a26da0e02f1dc5264da53a5ad240d9f51b", + "0x8e8c3dd3e7196ef0b4996b531ec79e4a1f211db5d5635e48ceb80ff7568b2ff587e845f97ee703bb23a60945ad64314a", + "0xb891d600132a86709e06f3381158db300975f73ea4c1f7c100358e14e98c5fbe792a9af666b85c4e402707c3f2db321e", + "0xa454c7fe870cb8aa6491eafbfb5f7872d6e696033f92e4991d057b59d70671f2acdabef533e229878b60c7fff8f748b1", + "0xa586beb9b6ffd06ad200957490803a7cd8c9bf76e782734e0f55e04a3dc38949de75dc607822ec405736c576cf83bca3", + "0xa86d43c2ce01b366330d3b36b3ca85f000c3548b8297e48478da1ee7d70d8576d4650cba7852ed125c0d7cb6109aa7f3", + "0x823c5a4fd8cf4a75fdc71d5f2dd511b6c0f189b82affeacd2b7cfcad8ad1a5551227dcc9bfdb2e34b2097eaa00efbb51", + "0x85e018c7ddcad34bb8285a737c578bf741ccd547e68c734bdb3808380e12c5d4ef60fc896b497a87d443ff9abd063b38", + "0xaf277259d78c6b0f4f030a10c53577555df5e83319ddbad91afbd7c30bc58e7671c56d00d66ec3ab5ef56470cd910cee", + "0x82b74ba21c9d147fbc338730e8f1f8a6e7fc847c3110944eb17a48bea5e06eecded84595d485506d15a3e675fd0e5e62", + "0xb9de09a919455070fed6220fc179c8b7a4c753062bcd27acf28f5b9947a659c0b364298daf7c85c4ca6fca7f945add1f", + "0x86a6fd042e4f282fadf07a4bfee03fc96a3aea49f7a00f52bf249a20f1ec892326855410e61f37fbb27d9305eb2fc713", + "0x992a065b4152c7ef11515cd54ba9d191fda44032a01aed954acff3443377ee16680c7248d530b746b8c6dee2d634e68c", + "0x8f528cebb866b501f91afa50e995234bef5bf20bff13005de99cb51eaac7b4f0bf38580cfd0470de40f577ead5d9ba0f", + "0x9064c688fec23441a274cdf2075e5a449caf5c7363cc5e8a5dc9747183d2e00a0c69f2e6b3f6a7057079c46014c93b3b", + "0x81381afe6433d62faf62ea488f39675e0091835892ecc238e02acf1662669c6d3962a71a3db652f6fe3bc5f42a0e5dc5", + "0xab59895cdafd33934ceedfc3f0d5d89880482cba6c99a6db93245f9e41987efd76e0640e80aef31782c9a8c7a83fccec", + "0x96b89f39181141a7e32986ac02d7586088c5a9662cec39843f397f3178714d02f929af70630c12cbaba0268f8ba2d4fa", + "0x81efb17de94400fdacc1deec2550cbe3eecb27c7af99d8207e2f9be397e26be24a40446d2a09536bb5172c28959318d9", + "0xb7201589de7bed094911dd62fcd25c459a8e327ac447b69f541cdba30233063e5ddffad0b67e9c3e34adcffedfd0e13d", + "0xb0c538dbba4954b809ab26f9f94a3cf1dcb77ce289eaec1d19f556c0ae4be1fa03af4a9b7057837541c3cc0a80538736", + "0x8526eb9bd31790fe8292360d7a4c3eed23be23dd6b8b8f01d2309dbfdc0cfd33ad1568ddd7f8a610f3f85a9dfafc6a92", + "0xa4f1f50e1e2a73f07095e0dd31cb45154f24968dae967e38962341c1241bcd473102fff1ff668b20c6547e9732d11701", + "0xaaaede243a9a1b6162afbc8f571a52671a5a4519b4062e3f26777664e245ba873ed13b0492c5dbf0258c788c397a0e9e", + "0xae8213378da1287ba1fe4242e1acaec19b877b6fe872400013c6eac1084b8d03156792fa3020201725b08228a1e80f49", + "0xaed3ab927548bc8bec31467ba80689c71a168e34f50dcb6892f19a33a099f5aa6b3f9cb79f5c0699e837b9a8c7f27efe", + "0xb208fabaa742d7db3148515330eb7a3577487845abdb7bd9ed169d0e081db0a5816595c33d375e56aeac5b51e60e49d3", + "0xa7af47cd0041295798f9779020a44653007444e8b4ef0712982b06d0dcdd434ec4e1f7c5f7a049326602cb605c9105b7", + "0x826891efbdff0360446825a61cd1fa04326dd90dae8c33dfb1ed97b045e165766dd070bd7105560994d0b2044bdea418", + "0xa389fd6c59fe2b4031cc244e22d3991e541bd203dd5b5e73a6159e72df1ab41d49994961500dcde7989e945213184778", + "0x821f9d27d6beb416abf9aa5c79afb65a50ed276dbda6060103bc808bcd34426b82da5f23e38e88a55e172f5c294b4d40", + "0x8c856089488803066bff3f8d8e09afb9baf20cecc33c8823c1c0836c3d45498c3de37e87c016b705207f60d2b00f8609", + "0x84681a883de8e4b93d68ac10e91899c2bbb815ce2de74bb48a11a6113b2a3f4df8aceabda1f5f67bc5aacac8c9da7221", + "0xa9554c5c921c07b450ee04e34ec58e054ac1541b26ce2ce5a393367a97348ba0089f53db6660ad76b60278b66fd12e3e", + "0x8cd488dd7a24f548a3cf03c54dec7ff61d0685cb0f6e5c46c2d728e3500d8c7bd6bba0156f4bf600466fda53e5b20444", + "0xa53249f417aac82f2c2a50c244ce21d3e08a5e5a8bd33bec2a5ab0d6cd17793e34a17edfa3690899244ce201e2fb9986", + "0xb3cc15f635080bc038f61b615f62b5b5c6f2870586191f59476e8368a73641d6ac2f7d0c1f54621982defdb318020230", + "0x8a00466abf3f109a1dcd19e643b603d3af23d42794ef8ca2514dd507ecea44a031ac6dbc18bd02f99701168b25c1791e", + "0xad3564332aa56cea84123fc7ca79ea70bb4fef2009fa131cb44e4b15e8613bd11ca1d83b9d9bf456e4b7fee9f2e8b017", + "0xa3f65884506d4a62b8775a0ea0e3d78f5f46bc07910a93cd604022154eabdf1d73591e304d61edc869e91462951975e1", + "0xb4b9e19edb4a33bde8b7289956568a5b6b6557404e0a34584b5721fe6f564821091013fbb158e2858c6d398293bb4b59", + "0xb87f2d4af6d026e4d2836bc3d390a4a18e98a6e386282ce96744603bab74974272e97ac2da281afa21885e2cbb3a8001", + "0xb69a12df293c014a40070e3e760169b6f3c627caf9e50b35a93f11ecf8df98b2bc481b410eecb7ab210bf213bbe944de", + "0xa27a60d219f1f0c971db73a7f563b371b5c9fc3ed1f72883b2eac8a0df6698400c9954f4ca17d7e94e44bd4f95532afb", + "0x8196b03d011e5be5288196ef7d47137d6f9237a635ab913acdf9c595fa521d9e2df722090ec7eb0203544ee88178fc5f", + "0xb5f0203233cf71913951e9c9c4e10d9243e3e4a1f2cb235bf3f42009120ba96e04aa414c9938ea8873b63148478927e8", + "0xa670542629e4333884ad7410f9ea3bd6f988df4a8f8a424ca74b9add2312586900cf9ae8bd50411f9146e82626b4af56", + "0xa3cb22f6b675a29b2d1f827cacd30df14d463c93c3502ef965166f20d046af7f9ab7b2586a9c64f4eae4fad2d808a164", + "0xa1e760f7fa5775a1b2964b719ff961a92083c5c617f637fc46e0c9c20ab233f8686f7f38c3cb27d825c54dd95e93a59b", + "0xb9636b2ffe305e63a1a84bd44fb402442b1799bd5272638287aa87ca548649b23ce8ce7f67be077caed6aa2dbc454b78", + "0x879e8eda589e1a279f7f49f6dd0580788c040d973748ec4942dbe51ea8fbd05983cc919b78f0c6b92ef3292ae29db875", + "0x8f5a97a801b6e9dcd66ccb80d337562c96f7914e7169e8ff0fda71534054c64bf2a9493bb830623d612cfe998789be65", + "0xa6217c311f2f3db02ceaa5b6096849fe92b6f4b6f1491535ef8525f6ccee6130bed2809e625073ecbaddd4a3eb3df186", + "0x87b3b36e725833ea0b0f54753c3728c0dbc87c52d44d705ffc709f2d2394414c652d3283bab28dcce09799504996cee0", + "0xa346aab07564432f802ae44738049a36f7ca4056df2d8f110dbe7fef4a3e047684dea609b2d03dc6bf917c9c2a47608f", + "0x8ee178937294b8c991337e0621ab37e9ffa4ca2bdb3284065c5e9c08aad6785d50cf156270ff9daf9a9127289710f55b", + "0x961b714faebf172ad2dbc11902461e286e4f24a99a939152a53406117767682a571057044decbeb3d3feef81f4488497", + "0xb60979ace17d6937ece72e4f015da4657a443dd01cebc7143ef11c09e42d4aa8855999a65a79e2ea0067f31c9fc2ab0f", + "0xb9c2535d362796dcd673640a9fa2ebdaec274e6f8b850b023153b0a7a30fffc87f96e0b72696f647ebe7ab63099a6963", + "0x80fff0bafcd058118f5e7a4d4f1ae0912efeb281d2cbe4d34ba8945cc3dbe5d8baf47fb077343b90b8d895c90b297aca", + "0x82155fd70f107ab3c8e414eadf226c797e07b65911508c76c554445422325e71af8c9a8e77fd52d94412a6fc29417cd3", + "0x91dcd6d14207aa569194aa224d1e5037b999b69ade52843315ca61ba26abe9a76412c9e88259bc5cf5d7b95b97d9c3bc", + "0x96ee0b91313c68bac4aa9e065ce9e1d77e51ca4cff31d6a438718c58264dee87674bd97fc5c6b8008be709521e4fd008", + "0x825a6f586726c68d45f00ad0f5a4436523317939a47713f78fd4fe81cd74236fdac1b04ecd97c2d0267d6f4981d7beb1" + ] +} diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index 38e46d3d0503..e871cd2e5c9f 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -132,8 +132,14 @@ export const GLOBAL_VARIABLES_LENGTH = 9; export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; export const SPONGE_BLOB_LENGTH = 11; +export const BLS12_FR_LIMBS = 3; +export const BLS12_FQ_LIMBS = 4; +export const BLS12_POINT = 9; +export const BLS12_POINT_COMPRESSED_BYTES = 48; +export const BLOB_ACCUMULATOR_PUBLIC_INPUTS = 18; +export const FINAL_BLOB_ACCUMULATOR_PUBLIC_INPUTS = 7; +export const BLOCK_BLOB_PUBLIC_INPUTS = 40; export const BLOB_PUBLIC_INPUTS = 6; -export const BLOB_PUBLIC_INPUTS_BYTES = 112; export const L1_TO_L2_MESSAGE_LENGTH = 6; export const L2_TO_L1_MESSAGE_LENGTH = 2; export const COUNTED_L2_TO_L1_MESSAGE_LENGTH = 3; @@ -203,10 +209,10 @@ export const AVM_ACCUMULATED_DATA_LENGTH = 400; export const PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1828; export const PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 805; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1020; -export const CONSTANT_ROLLUP_DATA_LENGTH = 13; -export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1015; +export const BLOCK_CONSTANT_DATA_LENGTH = 15; +export const EPOCH_CONSTANT_DATA_LENGTH = 3; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 210; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 158; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP = 4096; diff --git a/yarn-project/constants/src/scripts/constants.in.ts b/yarn-project/constants/src/scripts/constants.in.ts index ff449b067b2b..eb1eeb7334db 100644 --- a/yarn-project/constants/src/scripts/constants.in.ts +++ b/yarn-project/constants/src/scripts/constants.in.ts @@ -191,10 +191,9 @@ const SOLIDITY_CONSTANTS = [ 'NUM_MSGS_PER_BASE_PARITY', 'NUM_BASE_PARITY_PER_ROOT_PARITY', 'PROPOSED_BLOCK_HEADER_LENGTH_BYTES', + 'BLS12_POINT_COMPRESSED_BYTES', 'ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH', 'BLOBS_PER_BLOCK', - 'BLOB_PUBLIC_INPUTS', - 'BLOB_PUBLIC_INPUTS_BYTES', 'INITIAL_L2_BLOCK_NUM', 'GENESIS_ARCHIVE_ROOT', 'FEE_JUICE_ADDRESS', diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index 9b5b7db9f57a..96f05cbb4fc9 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -1,7 +1,7 @@ import type { ArchiveSource } from '@aztec/archiver'; import { getConfigEnvVars } from '@aztec/aztec-node'; import { AztecAddress, Fr, GlobalVariables, type L2Block, createLogger } from '@aztec/aztec.js'; -import { Blob, BlockBlobPublicInputs } from '@aztec/blob-lib'; +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { GENESIS_ARCHIVE_ROOT, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants'; import { EpochCache } from '@aztec/epoch-cache'; import { @@ -17,7 +17,7 @@ import { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs'; import { EthCheatCodesWithState } from '@aztec/ethereum/test'; import { range } from '@aztec/foundation/array'; import { timesParallel } from '@aztec/foundation/collection'; -import { SHA256Trunc, sha256, sha256ToField } from '@aztec/foundation/crypto'; +import { SHA256Trunc, sha256ToField } from '@aztec/foundation/crypto'; import { EthAddress } from '@aztec/foundation/eth-address'; import { TestDateProvider } from '@aztec/foundation/timer'; import { openTmpStore } from '@aztec/kv-store/lmdb'; @@ -265,6 +265,7 @@ describe('L1Publisher integration', () => { block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], + batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`, ): Promise => { @@ -292,7 +293,8 @@ describe('L1Publisher integration', () => { // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below. // This should not be a problem for testing as long as the values are not larger than u32. archive: asHex(block.archive.root), - blobInputs: Blob.getEthBlobEvaluationInputs(blobs), + blobCommitments: Blob.getPrefixedEthBlobCommitments(blobs), + batchedBlobInputs: batchedBlob.getEthBlobEvaluationInputs(), blockNumber: block.number, body: `0x${block.body.toBuffer().toString('hex')}`, header: { @@ -358,6 +360,10 @@ describe('L1Publisher integration', () => { let currentL1ToL2Messages: Fr[] = []; let nextL1ToL2Messages: Fr[] = []; + const allBlobs: Blob[] = []; + // The below batched blob is used for testing different epochs with 1..numberOfConsecutiveBlocks blocks on L1. + // For real usage, always collect ALL epoch blobs first then call .batch(). + let currentBatch: BatchedBlob | undefined; for (let i = 0; i < numberOfConsecutiveBlocks; i++) { const l1ToL2Content = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 128 * i + 1 + 0x400).map(fr); @@ -401,23 +407,31 @@ describe('L1Publisher integration', () => { // Check that we have not yet written a root to this blocknumber expect(BigInt(emptyRoot)).toStrictEqual(0n); - const blobs = await Blob.getBlobs(block.body.toBlobFields()); + const blockBlobs = await Blob.getBlobs(block.body.toBlobFields()); expect(block.header.contentCommitment.blobsHash).toEqual( - sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), + sha256ToField(blockBlobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), ); + let prevBlobAccumulatorHash = hexStringToBuffer(await rollup.getCurrentBlobCommitmentsHash()); + + blocks.push(block); + allBlobs.push(...blockBlobs); + + // Batch the blobs so far, so they can be used in the L1 unit tests: + currentBatch = await BatchedBlob.batch(allBlobs); + await writeJson( `${jsonFileNamePrefix}_${block.number}`, block, l1ToL2Content, - blobs, + blockBlobs, + currentBatch, recipientAddress, deployerAccount.address, ); await publisher.enqueueProposeL2Block(block); await publisher.sendRequests(); - blocks.push(block); const logs = await l1Client.getLogs({ address: rollupAddress, @@ -429,15 +443,24 @@ describe('L1Publisher integration', () => { }); expect(logs).toHaveLength(i + 1); expect(logs[i].args.blockNumber).toEqual(BigInt(i + 1)); + const thisBlockNumber = block.header.globalVariables.blockNumber.toBigInt(); + const isFirstBlockOfEpoch = + thisBlockNumber == 1n || + (await rollup.getEpochNumber(thisBlockNumber)) > (await rollup.getEpochNumber(thisBlockNumber - 1n)); + // If we are at the first blob of the epoch, we must initialise the hash: + prevBlobAccumulatorHash = isFirstBlockOfEpoch ? Buffer.alloc(0) : prevBlobAccumulatorHash; + const currentBlobAccumulatorHash = hexStringToBuffer(await rollup.getCurrentBlobCommitmentsHash()); + let expectedBlobAccumulatorHash = prevBlobAccumulatorHash; + blockBlobs + .map(b => b.commitment) + .forEach(c => { + expectedBlobAccumulatorHash = sha256ToField([expectedBlobAccumulatorHash, c]).toBuffer(); + }); + expect(currentBlobAccumulatorHash).toEqual(expectedBlobAccumulatorHash); const ethTx = await l1Client.getTransaction({ hash: logs[i].transactionHash!, }); - - const blobPublicInputsHash = await rollup.getBlobPublicInputsHash(BigInt(i + 1)); - const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); - expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); - const expectedRollupData = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -452,7 +475,7 @@ describe('L1Publisher integration', () => { txHashes: [], }, [], - Blob.getEthBlobEvaluationInputs(blobs), + Blob.getPrefixedEthBlobCommitments(blockBlobs), ], }); const expectedData = encodeFunctionData({ diff --git a/yarn-project/end-to-end/src/e2e_epochs/epochs_empty_blocks.test.ts b/yarn-project/end-to-end/src/e2e_epochs/epochs_empty_blocks.test.ts index bebc7d4fd5e0..76855f3e527d 100644 --- a/yarn-project/end-to-end/src/e2e_epochs/epochs_empty_blocks.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs/epochs_empty_blocks.test.ts @@ -7,7 +7,7 @@ import { jest } from '@jest/globals'; import type { EndToEndContext } from '../fixtures/utils.js'; import { EpochsTestContext, WORLD_STATE_BLOCK_HISTORY } from './epochs_test.js'; -jest.setTimeout(1000 * 60 * 10); +jest.setTimeout(1000 * 60 * 15); describe('e2e_epochs/epochs_empty_blocks', () => { let context: EndToEndContext; @@ -63,7 +63,7 @@ describe('e2e_epochs/epochs_empty_blocks', () => { `Reached PENDING L2 block ${epochTargetBlockNumber}, proving should now start, waiting for PROVEN block to reach ${provenBlockNumber}`, ); await test.waitUntilProvenL2BlockNumber(provenBlockNumber, 120); - expect(Number(await rollup.getProvenBlockNumber())).toBe(provenBlockNumber); + expect(Number(await rollup.getProvenBlockNumber())).toBeGreaterThanOrEqual(provenBlockNumber); logger.info(`Reached PROVEN block number ${provenBlockNumber}, epoch ${epochNumber} is now proven`); epochNumber++; diff --git a/yarn-project/end-to-end/src/e2e_epochs/epochs_proof_fails.test.ts b/yarn-project/end-to-end/src/e2e_epochs/epochs_proof_fails.test.ts index 547263fd29f5..74e09d360612 100644 --- a/yarn-project/end-to-end/src/e2e_epochs/epochs_proof_fails.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs/epochs_proof_fails.test.ts @@ -1,4 +1,5 @@ import { type Logger, getTimestampRangeForEpoch, sleep } from '@aztec/aztec.js'; +import { BatchedBlob } from '@aztec/blob-lib'; import type { ViemClient } from '@aztec/ethereum'; import { RollupContract } from '@aztec/ethereum/contracts'; import { ChainMonitor, type Delayer, waitUntilL1Timestamp } from '@aztec/ethereum/test'; @@ -94,7 +95,15 @@ describe('e2e_epochs/epochs_proof_fails', () => { await sleep(L2_SLOT_DURATION_IN_S * test.epochDuration * 1000); logger.warn(`Finalise epoch: returning.`); finaliseEpochPromise.resolve(); - return { publicInputs: RootRollupPublicInputs.random(), proof: Proof.empty() }; + const ourPublicInputs = RootRollupPublicInputs.random(); + const ourBatchedBlob = new BatchedBlob( + ourPublicInputs.blobPublicInputs.blobCommitmentsHash, + ourPublicInputs.blobPublicInputs.z, + ourPublicInputs.blobPublicInputs.y, + ourPublicInputs.blobPublicInputs.c, + ourPublicInputs.blobPublicInputs.c.negate(), // Fill with dummy value for Q + ); + return { publicInputs: ourPublicInputs, proof: Proof.empty(), batchedBlobInputs: ourBatchedBlob }; }); return prover; }); diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index c2441e1fb1bf..1bf144198a82 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x0000b88006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a259000000000000000000000000000000000000000000000000000000000000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fe435f331308a4900000000000000000000000000000000000000000000000bdab82be1e5639d800000000000000000000000000000000000000000000000029444cf38547e68fe0000000000000000000000000000000000000000000000000000d75a2f25a232000000000000000000000000000000000000000000000008791586d317551b2300000000000000000000000000000000000000000000000191d2857ec676748100000000000000000000000000000000000000000000000f018d9789909bd0db0000000000000000000000000000000000000000000000000002cfca99fd0c9f0000000000000000000000000000000000000000000000043d66f92822507d05000000000000000000000000000000000000000000000004571d2303e8e9969f000000000000000000000000000000000000000000000008b6a52d7b966f48e00000000000000000000000000000000000000000000000000001362a5949866e0000000000000000000000000000000000000000000000065323a25284713ba2000000000000000000000000000000000000000000000001bf48920d910810fc00000000000000000000000000000000000000000000000a5c6afdb772c0f57500000000000000000000000000000000000000000000000000021fb873f04f540000000000000000000000000000009dd48fdcab23a26aa7a4b052eb69ce9a7b00000000000000000000000000000000001c77fa3a02ad09a7cf24867a113f5b00000000000000000000000000000039a316835842f0c8b2f0638ad30af7832f00000000000000000000000000000000001fb07acdd9b4b8f83910efb2e820f500000000000000000000000000000023b5a7379d329a11b3fac8d349325c8a8e00000000000000000000000000000000000e1a7d35b0c9311a04a803e4a3963d000000000000000000000000000000a3cce610462069eb0ffb868b9b77b051820000000000000000000000000000000000133c53b0fcc090147fc32300bd2cf2000000000000000000000000000000257cff25f706677c5fdf7e7bd129382652000000000000000000000000000000000001bbc313d96cc5e96e0f077da2e92800000000000000000000000000000082bbb536634fbe97cd09156f20c7104f57000000000000000000000000000000000009d76d09dacad032309bf48a1917cb0000000000000000000000000000002ec0134723ef5ef9b52e3ef8874be2c1f900000000000000000000000000000000001372b70f434540fae85f5479bef56d00000000000000000000000000000038c1a3d0abe514107a3fc76779ef3dc484000000000000000000000000000000000002ec7bcb5d5b1ae1f04a3033983645000000000000000000000000000000558ac07c2c5062472e0917f86eb469fc05000000000000000000000000000000000021687c48ef2161031addc8f8687b49000000000000000000000000000000ae49be930b168b7fd9938eea2f06ca7737000000000000000000000000000000000000852f77188f03d9f8d5144ba81df6000000000000000000000000000000389ed81026f4a087ab3b9f075401d8c6dd000000000000000000000000000000000009ca569240c24f285c62e81584c09500000000000000000000000000000084b64204b2b55309c9db00a4cb274d7ba1000000000000000000000000000000000026f54dbd35eced8f542be91183c65c000000000000000000000000000000ab8b304bdf723524cf812540110f330982000000000000000000000000000000000002513eadc5586f9409db0b2117209900000000000000000000000000000001c7cb177f4e426571e40eb596ec769bc600000000000000000000000000000000000f252a92f419518324a7e9431ae893000000000000000000000000000000a8060330bdab766572bc2e8bb8d357341e00000000000000000000000000000000002ed3c4461083df062a5d4f9df107f1000000000000000000000000000000b839b3a315247d1ae36c6c57e4759ac0d900000000000000000000000000000000002f78eb3011f73697e5be34f1c19f921ed703b2463f2a77ef1fe79232096b7313942088901da13d8c2f1e73940d91fb118d4ac09af275b1c9305e244f77ecea149fc7bfe99bcf53b7b2d7205bf26e0628e0bf2e8ca0c83dba16dd3442b7ec5870f55feffb0e3140b6fbf1608790d5d3264de73dbf3cdad21832ac08a327b78f99421e0055b1b6ca95cd3813b5e9d4961d1fa27c17d1ab48000c19237c04d8e41b2de42dfecf37d569cb82522655602a1fc1c6a4587b36b4e9e044a94a6555bf48234a3220621e09f796c121491dba632fe54e40a068f38c6188eba2a4cc4ca93882bd403a72c014c4f46f685582da3423ac9a08284604e636aad040f31c9200d3214cf18be0f3d3eecae2f832a5c6f2141ca5b05cb3a30e566140fa90a73f772fbc0946cae3da3a322cdb26457aaaec2607f370a81d39d6d7588b308b06c8689c531f6f4836d54cf2deb7f789f91a50215e5accdbf15b2f466b88a3158b974232e6df84cd2599fd7f920ba87a91f85e0ff040395f537937fbd7424d13d9dba84e1af5d3cf21d486cf2abe9ac71646b32f7ec72a40b79c6a5a0db4cf72399706546c36c3a32f2721f870b84615a17d0700480fb040f7f95a9b236766df76e269935b4fa7b28690c7ffa7d41cdcdc85250da1013b18dfc3803c8c401e6090e8bf3464bdae7e0cd8e7494c0b541238a06400a040319532aaad2c838d68fd6c5d1a8629b2ca8d945722870d5c44ac00fb3b024c0ae940ba87ad76694d4d5d1148fb5951139880580fca36ba2cca4f657620242d9ca34888e439bb3031875969e452300cc5b79bc06d256d27bd639a1a79980f341005b675ccfd8af30b044946fa54e71dde8361909baa28cf3db107eea077191774e2ebab60b25a485ddcbc65fff8b7127e8df3434ca327ddac6c5a29d2ee05da97b5c3cf1ebbae38eef142258ea8794d01c3f94d17eee961154d451f1c270f2439b2ce67890c8e9960c0533e69599e2c93f4d58dfb0da35efe0d9e1ba4cb1559a9233b5f0fdbf0c13cd079484591e371fa55c73b922fc8e2aa45b624a8bd09098c4b762f3bfdad8480bf51b94f5d0086e30c29fa5c78be9777edd6bb5ad01226beb3b974f1888db1930aa521015696153ec084713b6d40e0cc15dd5a4e4f107755e629b6989a89ad2ea842521d90c3e61b5310e294aa5186836d6d7f552e120b0ce95e8c825f905de5bda99cd0f53a9c1991df0ae2342be5694f7372ed720fa4b997b47c844a9d6e4dc5aafb91d040fecf21370b4490e9ffef9777cdbc6c1758bbee3761ab7a724f0eda2c1a90c7d112802257a6cba65fc43efe7a3b4a1010e020770079a3a01a553b85cd677abd3cac1411e55b697c7cc59148a084b9d00fb78d35e36553b508ee63604ba8bda966a4d2c11751f8d73a7b52cc13c17a761b4ec6b93cfb07d4a992784e969826e9c98c6826737da88fae0430c86e1e87060a217acefce28f78d8f26d2fbeeddfaf097cbc7fbf91388881c22feeed61ff0e1f8d569b6c93d6293073ca09d53683b460f91a1d9815212360a7271d3be47f2f05eb65b94f100ebf53c71e31affe1edeb1da02b8d92e527ba0f1be70d10c8dc0005eb1d728b07c90d03da9019d2559979b11a0e8d6819b8917d162fa646b3f96159117217d2fbc65904f4506698bbfd196cfd76d4c1aec2c08e9a7277dc369821c9ab6e3debeeb16b79a90e82c1ca614a9149c11ca2ef9d9765c38155e455aa01a9e04a8632dbf67b115df66b36d5f4d87ae6fd6741d293fcbd53b38a2a2ff22072b9199dda22f334a402919e29bd92fd5afc3327b787546227b43da103eb45f2dee9d4d85a0dcde2cb953691d3801096a61d8b7ee9cbd5334a79e043ef42b4716fc55fdb7142f9afa9e3c8d78c95bb259f7702dc6cc6bf369232ecf0be1da960dab3e12610f154cc5132498be73920018f2673b8be4bb444f24a9186cab20ab12409bac9b6ee97bfaf74407fb095fde37bbe01ab6eba1fa5e960d3bca5a6b420465306a3d9c4e09679c1104938ab257826471dbfa0b13a74baf87ef0e25d8dc2ed4db879783be9b176091b5f5729c99cdd59f8e0f0caf9572d020e51f441a9d0dd471c6415daadeb642425162282835030b02ac18afc574b2ebeb24ca86df071088e235e911e8116c6ff3d6ab70b8b1dce91b3b3391c0af1cf289618e983c5f1579b84d040ce85bfbba955afabfdb0bbffd99f844050f0b74b4cb273324d28f2a0a042e8c44626541a9c5fc6ff180f6e85b9949051f75f92554cea8e4da20b81961bf243cf0c5be999bc98393669a7a5c2617ec4e2109ea1de582ad575aaa481d37586109d01f06ed630337e69facf07665bdc8d2358444ae44a84d4dd8077a2974a78a0b289b986c7fb6dba76835fbdf088037d544510ab140a2ec0389851b00e5ae1f6c8b3a4811237605401c62751ae918be2723c062ed2fb2f5a0c541df17a9f4815ddbf72f40bb652422a2940aa0b3593c9b1c3b9108d3204adc5585e71af1df896d1ddbde91eba2533fdea3337a70cb15995026310c30c668f36fa6252144ab1cf0046a554e00b315efde48630590b81415193f2c7f6a9f2cdaf392450b9380ea79f64997d4c1ee7f081d52cfa9193426463a9a97adb33bbc5e867d4e223197fb306cddb2947ebe122670aed68f80676d763bcd607a4761dc9a08b545264393e98caeed4f48e30093a297644a469c9a8b8a94877fb4c8eb8715834a5a10f9d2a516180ec5ef831039c5ce21fd5535c24f3619dac94bf2333d79aad40f139691ae19a3fc31e9a430caf50417c68b46768644fd9d35b599d964d167333e2703cb53ad24980d5cf566b4610b0b1962cbf08c92f2f7842b8d819eef8ee7ba2e3e3d60a795d42e1eaab82127e854def40d8f4502f718fcaf67622b23e0ec13004b0c7e629fec1c5d9aa943d88db79ed9116e7736064f196068335c1c559c2a0505cc734585fd97764959afbc153f2844d86df2a3da32c5c7cf31cd69c297510f99c1c98293de15a4cb7acad077d2787b11d7fa52da57796aa3aba62170c68101a8151cc166de28d7e2548d4b2b23397d0a96f982151336583a79cd53394982092106fb50cfca4d8dd9248f7db044659f6f113cbd84d5b033d24da19b1c6a910a272371da4956855ee68a0107cbf38147ea8378845ad320719e6f06a65a65bd0d652fac48173de4017ae38e93e6ea160fc36b248736b86a842fe4d95c00d7a81a62b5367ff9995dd4ca7a8ac5b851b762a847e8af3f3a2a1dd20959e821f00e0ed4fc602d6e618db088efcc7223587d41e538467acd69cb098205995ca6a9db2934dda0ae2778704db595c8d81d2a385a958f89f0d80892c57ccb7f2379b50a2a0b72a7b1c55d5a790543c627ea4a08937dbf75158de8a14229c89a5e170a472bd770323eb32579baab712e442c6fe5b749f0a1cc54dde59761c722f10644ef1d74de9ebe4437dbf18157edaeee8fa0abda238cf48e9b6464adf661dd2992821d3b43dab55c21fa368a37f858b935497548502a2017d9d4677c69af2fb12b8901692b608886d600bd7c170f54a28ed182fe2de53279bf66e659c2adf6268ada1d11e2f80499c6c901ccae299102b2508cbaced7a8a8c0d2d7a37441487b2786188a1aac80b5e8963daf8fdf59e45d7368464b4bdf8ace37ec441c91275480571ae722530593bb6198da80351c794a0680d8acd41f4aaa71ef293a2dc811f837099f10840a5c4964d73790885a59e83e8d454533fa158870651c2122a5b80acf1ced9f2905feb5154982a9ab6d3bb3566522bb1149f4799e717a06242bc9d00e118ffb9a526fc265b4358581d449b72a937e3c6341345759979b55d892a468e8199d25b646f03f0c9082b07d586db595d0d94fd654f82d7af36a0a5d61a10d7a2c8972f62d91afc3e9aa4d92ea2144af46d2a7f69b1f7500164e3b6c8f4c80d02ce3a2d4574339219dd4718f535c0457dd2d0308f654a083d6c7abfbbac103332b83044a1bdbae0c46cfcd8588e245ee180f961a9d5b5e6f24579502298222890eb89a932a06d9f49ff93dc84626f8fd209c924034a70e8e3d7670c52850379d2c2c23a4d587b01f3dd0d0d9ad647137a313167a264912ed5c7a02a199d782d40ea7acfde509ba2a1bfa0f82d51a872269a4bb348c2b6e186e975a95a77e483f167164a393d628e7840231b88addceedd7a75e2edfdefadfd3aba9b685bf4492289e5a69f4eaa1fb811547952d1ce8865130f76a5ef4fe22f662199cb104338b2764a583ba72370aa2fce05c880f1e6454f8f934e705a82c6229255c00ad743c3019dbfd704de117a3a920c29ad2acc8702a1720e7f3d071a647292b2aa94e090254ef9379036632186ff8ce0ee2f54a03f71a28013a3f78c3085d2e75d9143f1b9d7f390e6d1cb51f38e4b762ac4fbd121e06a3733cfd1d7225a540568bb7fa301d829e86b40806b386408882102ad9ea74fc0e087b7673435ed29d80ab49f72d04e945d2ba9eaacda2f8c819b65b8c441efc3793e3fb5ce33b60e992e3b07a13f9e9318097e2ea0feb8afe17e028493ca2ab6b2adfb739ede48bb0d16db40d1535ef65460d2f0d9c21ce0ff5fbe5efd57317ebdb53cc5048f4b854cc84b4ab175b2014bdeae3f06b915c007fca2725a898ed1d424770240c0ca4a85878ff8f2cd578e01e3ed260338e69aec1a9815a6953b0167e2506a0e04e2f54de5326ee00a2c84084c56dc32389412b3d2b1d31ecd43eba8de7120a7236aa9d51d098ef2725e2c172077c9770b92d792b3c8ec369ec50d7adb749bd6274e8c280525a322da0bc9a8f41112ea571f46024b91f9e10de08ae048719560f66900b25df170c2b48e1600be108beb0772730026250d9a781088cd60d7665997311b908f24b83172aa906ebfbaf0343af409c3a648fa02d49c39c3790efa112e383fc58926d421b4bd14202e308951d9ec129adc6c25252b0c7eb35e5e2614cb4b42cc55486ae0da15bc44a42b5603bea536903980976d78ec6a4deece1f883df6e11e5154e4b03e9d5a599df3a87112e2461447182358ca210bf9dff678c23e47959939d743a199e6ee47fb6d39ccfb9bcc47db9dad1ba7b8b487c9cdc0d2320f90a70de7916269a1ab64c5f534b44b827087f4cd1a33f72c1bd9a37133e31b97308eeb7850d1f0c57de4e7a17ac9c82ce9b0bc3ba64cba818f21a2649ded1cb0b53388735f92ae49a875962c08ac1250398008ee8ad9b04132f292ceebb6e16421eda7f9d7b0591ce7a61f708684ef2471ed2bf70b93609810e005a874d2fe05833e7c1538e04bbe9c678d2c9993c1cdb22a67887ec754ce7560b51776129f1c4b03b69b39726b007f5e1b3daeb29decc99172a51c5629a97dddc9488f82ead26fce59fdf6c23131a5afa4c553929e0ac4ab6986d574a864ff00876684a5753ea61eb0352e3180e09544dd2c00395cf95309fac58ff99467c6a38b6bfb075fc3d63150a7f0e2ecee683d2204da4919d4f3bc2e4b880b72040d71ac2ab9f4ff8b13cbdee781209879852ea97818396d72497423032fe98db9f80f4fb2540df5c0e0314906d4520546acfe7ebd9de812724d2fe4c89751f36cca1d3e3eb4dde2db6c5ccfcf4a3030da1a25f6aacfa4c080656f571a38ba719da4b1187f35eeb4afc3d573c77782b362f2dd86ccdfdbeec46bd4669062a4c926d721d547aabb0ae937f5c071ef0143e9b5b45f1bd280d0fe81dc113682711519a2df642309f95fc2c177f440e032ae669f647bf998e80d13bb0381181463fcef90e1b7de9d0e8595b0865a7de3a163c8a81b4a838a66a8f770ffbb735e1c6485bf0096795d0ab7cb95e0ce6decd2238bf198fe67a0edce64f3c500b529dc91b42029830f9ec6976ef6284ba450b062d52b46c42feead236f6481506095086d9970e4e59ddb4d4c11456c50c21cc1e3fb5576dff0b8cac3c1b4083db93cce6f8804493477e8d104f798d621ae6ac0e365ed9430a53c30602fab3450889f3cae5fc98b22db706525ed03b931e2f5a0c1328a2f595c6b30fa5442db9dea2b1c4a75393f6eedf994e1f6dc0a3a99dae05d4a3ab6492cbff3cddc3c66d415deafe211cb8b10295b28d4716fd28b4a74708180356accc67b22c8aca76c2f3ac542ec4d98f523042b0a035b7ef4b88b0e209d9caa3946398e94d45b3c0b448bc8d98f6b95afef3fa92cebd617df24bb4be1dd3a659998e320aba92a990ff6191c1bde41d4eb9fd89acf49d4f916e46723c26ee3dd3de1f09bf242ed3214e6ff8357723a7c5ff4517cffb23d62aabe3054d030d58d1c5ab267f098265df13f33f12f9225eefb7a2edb336e880c3f51c0535003335d0e6ef4ce94ed502a8c1fe29a8888c9cd1cca193df5e370a092cb8a17d080be374efcf59774d1609859eb9a842a118684690e94edd4f2479e5fc0e38810b1beb671e9eb213eb22fe58270fd4baa67c2493bc5ffa80b77f9a19d12de04a00de194d54fbd50a952239f0d4705b1ca0279d8d329a8c50d529618d340f63991801a497e50cf66e6ea1fe78d66b35549e6ced288c67a88acf097dc6d2cf7be72e4b3409772e8d1105cb34eb385438dc821c2171c69ff25411757a951cafdb4a2275936c79d562bf90937df3d9ab659908fcb62ef18c18e64be23ca3bf462f3c15b4f2116b9ec7b2ac8b4ede684ffe8932972468ebd3472e6fc7127eee19942113134a84a97434300201ddda036afb82ed141bac550776ec1143b9d3a82b56dc108c8702b6f7f4225cd0af340f49fea35b114ac11401639e5cdb11ffd1ec644e22e7342db2255d10c9d563de596ca60e49f72b6e0aa42c71cce46fbe34ce365613612a6446da13db08d94af65ff4cb5345f1c9e845ae04f14b946d0ef960f91b18a4d2e3bf94bc22fee1320f72883ba737cab7fcdb6315aaadaf82c74fa969740cb0d9401a1473aa71e211f3cd93d19aaf29fd33086383b2ebc430342d630e7c1a293b7a006389d36a944dfa9f2ad9d51ecf10879ef6d589e86e0ecc58e8cb26185d29bbd6434765ad4da8352061b65d18a442ff6b6ae2f17e375c2277c1cde613599bde789ce12e78c970b8767817477041c308b65433a4754ba4f559c73f720612182f5ca918948bff0217776f23775d0e5784748409826fd2ad03d50bbfbb12f67ef472be2da6f7dc096b6f7aaf11682da09ba998f9a095ae5b81a4b45e85169b94d6764c42c7725ed767f23e637afc03864bac437388913338d309ea114926335fd155bfd7d0add6caa514055a024124efdb12d9fd365230b5f3770a3b931c2f03f2be37539cc1a737c61b9ac4f9a53213659356591b8a52b02796a0b9bd1017214c55f63a0ab0a22e86491f7c87bf54304e5dcfa168a6475e4d1caeea4810011d90154aa8e20f560341e7a3561b9eb1c6efc590d277c1fb164dbade150c1dec78d7c1e5bf81c8aae553b6c509f48d364406c2aa40f763f458dc6b73c5172369563c40fe4e2605f75adc7fdabb099bb1083f34aaf63db5abba165921596a1da76e760d347d5ddbbaa3400605199fe9eac0d061be2edfa8677ae16a3b593a26c7449976d28c06b3c6350433116f66c159feb9988584ad6d91f26d7d9d3e111fa527a2b2869b8a83deeca77e267f4bf229968e69b870cace1c09328041a3be1a79b5d9d0b435a68ebe389cc81dd3d151e9d905c85397b9522235206d9b678b1fa95f081e16a9320b73bc994d409eb8336ad55a397899e178705cf7ea951f4e073685c53d42bdb04933f743eb9a895439a589e5c862aa4f59e0a66824df29481adf68e2ff04c5631c183831a51bef34b1d946f976d08ebf31af3839e0e98f002193eeb6bf19d115e463ff6784ca1e616ff13b2870c6a5784d45c104407ff1c921ce23ad8acbbbf491c631ab20f243555f86f6054b9827244b7c3bf2ec0a103013095cdaee0bc3fd674c97b4bc5e4069f807ea0862adec57bcc04e4c1db301310a654f284b87757d8ffe9d307106f76b5ead326b5870fbd76e100610715f77062be54d6dfef417b9e83d21a93dbb5ce6141024b4d4e356a86387be0c9a6d4e8c018af79a945f97bb82f0ed99996390f7382f33dfccf007b8586f0220d430e3c22bc4cb63d0525feb3fd0ae8801860d2c79f2b55d2d07b23ffdf62a636bcc662d2b0dbba89f9408279353e211d90485fd2d357da27709eb14e731907b027579500440d9f2acc490a0b81751ede90fa18ac00fcfd842c8caad468f84ec98b8e2932c66ad7a30547f91b190fe42bb2d8067fca9b0a9c29e6585072654b0388eed852a032a509ceef1ff239dff80abbdf86d23a555632399304c914e094a85034b760ecf9d5ba24c6503811a171bf2359e22693d56db5d5eded4834618565113394a2dcd216e23da1e1962c185c1173d8cb9b6bc37caf93420f215ad2850353fab921b1d2f806b8298c5bf991cc61afe850988233591620650282e6e5bb604c3f1b81b16d0c5ce269d805ce27db8778fde21b16c572ae196b8d397b11777a28dc65a205d2f9f393d9a3515911fb34d26cdb2d9acf8956de70567d20a104cec89548929e08b8c590844ee61c97712d3e380d5873ad8dbea53ee2c5e56a8e7f94a9e7e2c9dd00a45531c280086f211a9c54adbac045f90883e4b20073660f5007df5e21ea57ca7d2eb02971e420274dd8a2bed48a99ecf62e430a21ce0710952e43ac41eb3e6ee9ea35fedca8318a05442b80ca6362cc55325335a6f1ab62bf4c1e88f121fd9c4d7010238ec273e1c87289879377a259678f0fd1d533257f03aee76c122be9bf5704fa10b6b7f5f79d5c45226963c3d9ba9f1f83dc2a63c61cf8a97d508394109dcbc213fc7ce9c01bf0689047197b8684b0b054b364793cadd42cc180d15aa2d7ccf4564292612a513c0b05aa6ea4ba75775b901edc8623fda808b9a0ee64479ebc17fbbb9990e589ac1353fadb4215ee12c14e37d7e987a98cddbe80f36f57980c04ee751bc376caf090c027f8fb2384644fcf0fee1cf98f056186d0d1194c632f643362e09e6ce3c0b73ad2ef7055f81a4b03e116e92631bcebde9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048ad486300ad4153017a4adb90cb15220ecd946d7e1da9d6069505ffd084d412e7fc5479cb6e7eabea08c5f71eaccf5f8df2b5f39cf684ecef627f957b6302e0decbb29c815a274dea884df5dbd4a0a87cc7f34d12ac2740c1aaf52dd064bfc0798673a1e171ef84cb6eb7236aeaefab5f040b24a911f5bacb6a1df820982c81521064666c44b7246102446926e08da55116ee7846984d2598f612b2cf0f7f521ed1e96722ec6dc27c88d10ea29ae3b1f0f8b7bd7e0c309391f7740205314ef030bab4b818e0df7304b924a7db2d79e3967b2ccc3b691d05f76a3a2d68545e52780eceaafe13229e5a4084bcc8bba36161251610432aa8b2954d7a5f50dc37818f94d8f2befa07786e99886666018d914a9e493ad3c83e178aee43cd07a1d2d2e47b6d577d151d677a3985cf45ad96fc5db2b02fa47c69f2826ca2f9d44f8a4065e0415180f9da0104fe2a0f8e5c4d2429560d14bb85eedacb10eea72bb5bad0ec8212e7e3f6869b2c18441fb9c4b70ab7ade85783a27cdac788d0d2a4bcd402b99eaeb4987ef78e51fb6c3dc86cea25c9c34a7292915afbd19fd6ae39ad951185a5ad36b5dab514c723951497a6a6490878eb536c90262214d416c20ab3d4925d87b8ca98691fe9e8fca6e60dcbb427db55a8c6802e6bc04669bcaa0bb112f04c181e5e8cdf2fdb6f2c2254e71fce380875181b982a683c7760e50196473d104971737c1d54b2e331c6446dc14dfdd03c06e5be624c53913349937070e472a0ae646ad72ca603a786964557a337fec578d0142222a3bc965dd982f746f315b2b5b509ce946f6350f41df3d41b26aeeb9d6dc6c30064ff93b1cee7f40cb50e928a84dd3965515581b01cb9bcfb2b62b2270a84c1354be1544392f2d113e29300d7c91b5e8a464a6e274235fad3dd557cd7a6596c24001f7a04c7d54551291f61470908accd20722e707134e72f1d6e2b912763fa4432a5a9968c9f892192a34072c4f9c7b4387c1c3971ad4a80096b8da21e3129f587f4f912aa16ad04d0d50216d205e86461c02fdaa256994e24005b72eaddbcb0cd2ab22b6a50770f911c521b5fb94d33d297af8f45d40d409d5d8e39477940178f043644c0f1e57e2487d0de09dd5149bb751bd28377b2a07cf388fd07b32e59982ab73f0dd36d352afaf086250a0e35085cbaf7f4a363e23e6a67a3f8ba1a01cb0bfa4f0608abbff55b12a71bc782aa763531fa83afe6c8a7462133629ed5974bc47b76f64f86133256621a3b5b96140b2bfef9aa46945021acff9b3e445544e4ec4d366b9492d7fb8d72e6fd16a8ee11b5ce9f1d363cc0f595c8fedabd852232cd917abbab54a0283da23544939e07cce98ef50629116377e4a47ead57d2519d297380f0179e1a25d5116bdd06b365a7e300e6a40835ab689cfd94f000a2a5fb1e5179620e4ba3055a928373275d8455dbab361910898a1d15871bc184f89b64f83cf9fbbca0f6e48411f6d4bcfe84906bab59b2db01e891883b2b582a6bde3b3a97a3e670530bbd3f323094e41be1be64089ddad6a542c035aeeee5d34301887f68f1d9a331dfc2ba32af5cf866de58d476e5ec6a2edc913778f27e8df917e69e5f8be5c79fa7f178d17e13bbe64bd382544b59528906bd65c513afe32ccb6df786c6f29428674ec8e1b693cc0589419a04b9b48c5e9e199a36c29b939b54a70cf89e00698106cbb370a3e56029708eba0cc2f82524bf5ad904043d1c5d3d8d49cbc371986dfdcc3f619769a0ab4966a51e4af1c3ae1ac880280ea95659283a29c82c051c65993733000000000000000000000000000000014a0eb4f0c9c2dfec265e282e97b0b645f00000000000000000000000000000000002ae05f0c559d20f85ae08f24fe9447000000000000000000000000000000c4fe53508a22b2acceb99c2d2437f499af000000000000000000000000000000000021015fbc703cb5ad1ac784c7ff58fd000000000000000000000000000000b2314d155e88ba9fbf93fa84f79786f61b00000000000000000000000000000000001d80cdf9d43c5a779dbf5b98b1df3e0000000000000000000000000000009549e9cf6b35413637baf9562cf9ee67c100000000000000000000000000000000001d74b73c835b408fe0b2bb50cabcfe000000000000000000000000000000c1d4666fe6f13827b36bb73b4e24fbeb2b000000000000000000000000000000000022b4eeebb4e430fd3a1236ab9b8dcf00000000000000000000000000000009e0e9b4906d9badb13fc4940fc443b37700000000000000000000000000000000000e44da549d33c58f0b0720b7f8cbcb000000000000000000000000000000e2a8e6e685a025bece92a677088dc80cca0000000000000000000000000000000000085d61c54ab2936631287530ae7b8a000000000000000000000000000000e66a862c9ea4e07fa6225d030d407b560000000000000000000000000000000000001e2c28abb5800bb72c05f899639b210000000000000000000000000000009c911199fb3e5b1e016cb83ed974b132c5000000000000000000000000000000000000b455ecc1069422b6c799fd1c8eff00000000000000000000000000000093cdb871c75e5801e21b06a9f93f1d0af5000000000000000000000000000000000017d0dc33d727086996b79f29671f09000000000000000000000000000000775e3b3b694087b89c611d87e2569be1fb00000000000000000000000000000000001477336f6724ea73477b339102e608000000000000000000000000000000d3af5b7d8f4a8abfd92f67731610af142600000000000000000000000000000000000e4131a2f1518f44ab6018d7d5e3800000000000000000000000000000006968d376b68d983480e2cd7fd43750b13500000000000000000000000000000000000916665de5ac81ae2fa6e97f50322a00000000000000000000000000000050dcabc2a55861764a0b826075c5414f6400000000000000000000000000000000000df47e0f6074507d882b4932b54e59000000000000000000000000000000a7b4053b6ec800b218698a2c1ee2a6855800000000000000000000000000000000001ebc23de04afb6a8fe18c63f5aaa3f0000000000000000000000000000001be52a4c067798580e65588ad03bbe5a3a000000000000000000000000000000000024ce2082a30448a4aaf9de568edd7c00000000000000000000000000000054a2fb2783b959ee5f9191442fbd68f92600000000000000000000000000000000000bc84cead7c68cbe8d50195f6834c800000000000000000000000000000043df2b4701d6e5c19f22322347b884fd2600000000000000000000000000000000002e5843327b229354780c89df426e8a00000000000000000000000000000048f65cd88967b9db10ad5033f84417066a0000000000000000000000000000000000297e8ce62ec12aca41e67800c67dac000000000000000000000000000000e94d232dfb911f32a914c01f4a32dc546000000000000000000000000000000000001c0f8c2bd192d94c22def6a33c6c060000000000000000000000000000009f8d2c090b76a65fe988104035b7d52e37000000000000000000000000000000000001bf044a4cce5ddadb84088c330f72000000000000000000000000000000e5b0b0d0e87dd1634067177b3c8f9baf8a000000000000000000000000000000000028ef93a94c18a66df1a5bc83ef2f5800000000000000000000000000000037fa497156abcf0c9cfcf52ccaf999949b0000000000000000000000000000000000221bfa37f832e6eeb53ea42118c113000000000000000000000000000000458237a268e42541300f3906d007c77cf1000000000000000000000000000000000018f13a7ddb1d11ff2b0f2927dbd9f600000000000000000000000000000047cbaa029638b8d19278657de7aeee31d9000000000000000000000000000000000029dea2274611ee0ba44e33faa85c6f00000000000000000000000000000032c2d871984aa2a309c105326ee2810379000000000000000000000000000000000004fc4bf60921835aa3a845e75be99c000000000000000000000000000000accac78415cdfdc61da682918fab52902e00000000000000000000000000000000002e0689141c1428aa8c84d056d0ce020000000000000000000000000000004240f83860ee4ef0169502bdec31b47f7700000000000000000000000000000000002785992eee08720ac47eb64cb62feb00000000000000000000000000000076459882466797e79a2984345915f259fa00000000000000000000000000000000001f10fdb6ee3ff40cffd01cca6ff2f4000000000000000000000000000000fcfba12e167991b0240c03f4df386f527a000000000000000000000000000000000025cfa01093eeea5c1365ccbee7ed200000000000000000000000000000001384e52efac5e447f8a5158af5500fa48300000000000000000000000000000000000b1b1853ce5b9fc9032ba3e1604bbc0000000000000000000000000000003043ceb159cb7104741f68fdb2d4f69cc700000000000000000000000000000000002f1f9f51c16bb2d8ecd4725347e1e60000000000000000000000000000009f898153483c2365b0ed44f4cc17b5a4c30000000000000000000000000000000000295e56d8d10424614b48b99d41f4dd00000000000000000000000000000085e81c86912b5af21719e451ff92882e1600000000000000000000000000000000002e37910633e327d78c778d3332eb150000000000000000000000000000001eec48a91ddec22bfe4c9d6f9564b3abeb000000000000000000000000000000000026853c48d7b620cbae63208ed05651000000000000000000000000000000225deeda05e750d5b08e1a1d616689a34a00000000000000000000000000000000001b018d981ca3bbb7f48d9fb5dcddf200000000000000000000000000000039c8a5e05bb645398af1550ddc62aa9046000000000000000000000000000000000023c1261ccfd1bf4f98e460728b55070000000000000000000000000000003d0b45310b664f5306ede875b8a22184ed0000000000000000000000000000000000141f4f3eb58291b3d8d985b4f86494000000000000000000000000000000acbf514e588b88814829baf4fcb3f47deb00000000000000000000000000000000002139741280b1459da1cfb9603b3aea000000000000000000000000000000bae1122d221f54bfe41460394564a71abf0000000000000000000000000000000000137347cce9b526149b67eb1d6e7a3d00000000000000000000000000000026bc4029472a2ca5a306d3e9934152b5ae0000000000000000000000000000000000066b8d160ef3c67562213a8617c884000000000000000000000000000000c1141fa9cf1fba0cc6d2e9ca5898186b19000000000000000000000000000000000028b6c1c744ebdeadb693f7f6522cc4000000000000000000000000000000026f11a4cd8bdd6cf063c32c35b8dbaef200000000000000000000000000000000002d6337ee5f6d3ee0b411397f6e21060000000000000000000000000000005709a1716984b61b5041e9819ba151d569000000000000000000000000000000000025ba1e198dd3ce4d447e430c31842f000000000000000000000000000000ec38afec7dd3bdbee4c6b52b34a0e865d7000000000000000000000000000000000017736f5f020352f8984167c572513c0000000000000000000000000000002eb4e48d259cd2f4fccd233a79509ad8080000000000000000000000000000000000147e14740fb27564f59fe28fcf8d3d0000000000000000000000000000001e67f67a303223b76713394340d356357e00000000000000000000000000000000000d4a5778404928e55c88345ead0781000000000000000000000000000000aad83bcffbf9e2beba3b555593f4ec77e600000000000000000000000000000000000f5839662710833beff2c88d29abd400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000007c2aa31cdddd8d6cc114c9baf92eddddb8dd0856874b3938aeed4b6d891d904026c20a07e0a892e72b4f4e9eb12ecbe64b2cf489dcf6b4d0bbd5e157a2db0892de968e848f534666fd30a126d9453589e39066203ee33cc21790bc606c0f010082e6a4fa4c893366559e8462d4293c7ecb1d6e92cfd86870e6d88d82e1e22c1081700d1ee8d69be28630b477ce36daf7e0b337d689349e800a08f2a31110c710264879c616f471d3017c10b384809787503151985201eab0f9d042d5bd03c7314aa7e9372fd91c15484ceda9667aa3ba732587f01ffa9886f20cb4e68e4cb2f0413ab00b6d171609294f1bc73579b63a0a5eb5e08f2c1027117708dafe89e8122510bf3b00bed0c56a99a72bf271f76f731d92a8f3a27bbffbd46de04e8593e07034b498ba21a80273efd5dc104fff93a497686b93bd3a89d1c27a0a32b1e74064541310fc218532b75f698ced1ed6dc9a0788122f2a4fdf71de98f055b26430f00fbd3975278398eb1048909fdc30c68704e5ba89e4d09b32781206702f548259abb4cc66a3158700d7b4c807c4eed9e25b0fc4a120d0f573c22b4eaff6c692004192251578bc6aa3d24cd408e85fb5224cd874bcf53c664a4423744f7ff711c9f3990fbe43a5ff35059b949c19a4e7abfa26bd7fd4ade9457406f376ab84f1da880b28ba2201fc8c664294dabbeb6793e48e0508569b02a5a8623b31a45932b2d75cecfd44c70ce52944eb1c73eb22fa64d1e02b674c1a02805db6afbce630447559fe3812b91e387e7367e6b59baafc3ab7dd29774d9fbfafc5c3f8e40782448bbc1995d25a012211c3731c70ba77f4deb0fab5fb09826ae66b06f34728a1fb35c9388da72cc724e3d7f04a39ffc4c21cbc3c20e2753b3215523f57ea1742d19ca57b5dd64cb7f9b62524b28a62521d59c84c5e9a6cbdcab853bdb42ea0912eb9a1b717b8217ae4f20cab94bce5e06a0b6311e0d3d73c4efe7b8714825522f8ab298375cd05dd07477aa30a59b424d44707b148a0ee4e8ad39366119fbdc2ab86e8aa871ef064750e0fbcf7e628f8ca9c373a236079acd60e6cb306bc6fd2e6c162609d85070d4636812373ff4642a45190bab2759d95cf82297c7a40e2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ab34b32c49a0b7bed5d7035c10db14d8000000000000000000000000000000000020bf79a9b7269b6abfc09eeeaec955000000000000000000000000000000ab1fdc13b60391a57dc68983730446b55d000000000000000000000000000000000003b964ae7a6fee82e168800ea0fe0a000000000000000000000000000000474d6d840c81f9023e97a526bdba7014000000000000000000000000000000000000119d436d478086df28d73a28508a82000000000000000000000000000000561ce83c55e74926f29d0c703796563a6500000000000000000000000000000000002105a214b32e3db7c801af0cc96d5e0000040c","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a2590000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x00004d6006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a2590000000000000000000000000000000000000000000000000000000000000001221894f21cae5e98d0c7a1a2658eaf169b0688cf8348dc7be4d5a944d568bd4600000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00087e2b1632207a64d2be3430a622118411f15477dcf399a057660b8e566041001c2aa1e8a9c646939d1d0d3a1b789e2eb024aa538a4c7864db736646faf6cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e586311f1581539435ce58c90ec4a9d291746a8b33999d1654faffb07f382db2efd3fd6b542f09e9f76c84337f46370f67729ce54c815d35866b4cb2a2672030000000000000000000000000000000000000000000000000000000000000000003f1c36600e57c2c3556b97fe6d9919a7c418380b539dcf74182dacf5baea2e16743433c1b3d551429cfbc09ab7899d4e14d2b5786a3243e29bc9c6c0d76bf100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf1e314549c5109330000000000000000000000000000000000000000000000078ab65cae0766dac4000000000000000000000000000000000000000000000006d9729dd2114d251600000000000000000000000000000000000000000000000000025bb48088e2d6000000000000000000000000000000000000000000000004112c333273480d9d00000000000000000000000000000000000000000000000e79ddc992614451e3000000000000000000000000000000000000000000000005d880c4e49e3909410000000000000000000000000000000000000000000000000001adc707a50e7500000000000000000000000000000000000000000000000591960a3c52d5a331000000000000000000000000000000000000000000000005d69c43aaa65acc860000000000000000000000000000000000000000000000011ce4d0df71d9b0da00000000000000000000000000000000000000000000000000007c4b84e96f1200000000000000000000000000000000000000000000000e796d0a9ec64b048d00000000000000000000000000000000000000000000000a9f1811bacc20b1ef0000000000000000000000000000000000000000000000081959aa974bf5661900000000000000000000000000000000000000000000000000014ac071abce30000000000000000000000000000000ca9d55b6e986c398073827360972cbdd6900000000000000000000000000000000001099819f900ee75e8a6ab54c59fa4000000000000000000000000000000081180a8b96072c3f4246e9a036d07f3507000000000000000000000000000000000027d2cbe77a3e0edefc570e90c90b9f000000000000000000000000000000d6ee6d7b1ba024766d6f835521249b7ae4000000000000000000000000000000000016a0da7d14c7230116a9948f6550ca00000000000000000000000000000019227c5f9b9bc32f21583696973ff92ffe00000000000000000000000000000000002e72b67d18384e0ea627c38592ab76000000000000000000000000000000f4ec1a574da16cc52af9cfe52a0a88ac0800000000000000000000000000000000002dd342a68d2d19b030ec0b82734484000000000000000000000000000000f24ff72c85a62ed5b9cdb3ab52878e5d6600000000000000000000000000000000000f7afb370a128f12d63e3649ae47790000000000000000000000000000004b35876712ed72f6999ccf4346aea9dc8800000000000000000000000000000000000b9c4ede9e05409f4df0b886e12a1e000000000000000000000000000000f4338b85257350c3bbafb99d2c1464cb8100000000000000000000000000000000002efbe244cd2cfd9aa0c8f71e50c96200000000000000000000000000000054f2bc452d87e94668fa54fdb54790c9b0000000000000000000000000000000000025980f026372c596860eda2a791d9b00000000000000000000000000000047dd57b3275e8f09905f26b7bc44e48bba0000000000000000000000000000000000010988e60c8f065cf95a1c9a292364000000000000000000000000000000c9119a149e8374416e40f7586311a3861f00000000000000000000000000000000002ad3d93fb74b1be165a915ad72a3380000000000000000000000000000000148b87898085b1b8b915c1878b2a188d000000000000000000000000000000000002a91ee00ef56a5964ff759ca2990ec00000000000000000000000000000091163f22963ea9894fdc40b2516296029f00000000000000000000000000000000001db9fdde7620ad93d46e0fad2cdd1f0000000000000000000000000000005ce65ed82881f4f78356cbe6d94699849c000000000000000000000000000000000014250c7cd0c960952568293d732d20000000000000000000000000000000cde964c7dbc45d7bea0e22c409d3f4bf960000000000000000000000000000000000016cfaf8940e476cdc1852d5a9172d000000000000000000000000000000ca8d4a2f2ec921c4b8f591c2c27dbdd8ae000000000000000000000000000000000027d9c460264941701fcd49bca2b2f61db5f435f1c9b1b0f491d38cf071b8cc67cb453563b2b60c99daaf55a85360d412ae5a3cef67ee78c3be7229910f9f90c068a3131606ba84aa07463e47ac9f2d2fa7f383cb9bda2055d025ba59925a45d09bbc3abf2a607ca649a641fbf19225033120e4db3ca51d56e3ac61527718a0a5f9d106973575780d8803c89bd9e7be0fa40d87661532cbf29108288ae6a1ceae9eb3fea4d2c7a767f4196a8d4117c52bd771c13a22a6986d53dc0734cc775e2b47c6538d0dd5f82ca62ea90010607802774fe2ae0ded6cc0fb00f591b98a8a17e9a1b0592973bcef46339b184bf1660220da8db31103b2f88257f3a6a49c41ed8895a8c759621d5994e7b71b3959c72c4290a83a957c5d7ec3305efc4137c921bc019382bb97aa434a5b206e60258a2c6283d5e2fa72db956e03a261af9807fb352d8394e8a3f8f497604c586cc43808ba9508f19dcd2c88ebdf68f7faf36d5a4ec4b5355c318734e8273a864d923c0d122ead90fb432d9beda2e8ba40fd5132ba52aa3def71f2893378e49b0c65eb0b88e36f6e25b4d27c975fa867555b51cbfd9412744819e753db95c7fa1087dd0965cf48bc50a9e96cbc1b1ce8b2ca27132029dc01101c7e1a13cac34ce8fe0128c1d28e4d69f5057c8eb4de3cd1406dbdb46f45881b41481faf3942ad75aa5612ce5af105c235ef077fae32c577a820333addc7d22ee9917dfe1823b8ff645023a789b1287e074fc0d44e1ddf5c64dd272a6ab61cdab64b9c22e95a0beeaee52b960f0eb444467e546c409a7def039a1ffe2323c7609b807d184b0207cecef406f5e7a413f18d01a6c9cd20fddcee991b2e66c646d2133bb4f296ba1465fb042e3308b159399371602a4600934b56b48c93e145ef89b8ce32e0c4319420852a260fc934bb5b2ddc0e0487fe59a88b074f579df8bc93218b7a750e7656885a450e7e8e3acc01c991025dfa5c3a0c733c02b51b4596ed1b6cca3da27a5aab6f81059fca6c74e504744b8e4f4fcf34be13c1c641e0fa69cec87fe2e61d3828f5ca2c3dd4e23ab8365dff18bf503ff9298b0f7cc5f79640672faa67f6c15a82dd6019b949fb94e03235adfec37cddf6e0c2db7803662f70f700a4134f05db1b7f331aabb24920355a935d257979d043b6f419fb652bb0ac3354a5cad5c22ce0b029083005d775aec13fe5215f2998092ce9d9c6b59e876900ba4a218b02112eabdc30339b7d9b74c357275ee52c2e92e9f840fee659f063205ee913b8771108cd7205061a27fa68b0a5d11ee01390ecf9db47180fd044e5b8e68f20876cb59d884a0634bce681ce910d3839decccbb99548e4b2c48ab58008138387a88edbd3bf541217acce5c99b311743f0a885ab4fc5be60dbd12e3691c9fcded433f2f23cfb02b5baaade2dc7bea9687c53ae5cf93f89ddac6bd8a898b1933a87ad4bb9a16ce069c746023a2d0aa491466b442061961118dcd93432104a203dd855a6a75268d06ef585e2f552d811ca934b2a17e7ce192d56bccdd8262e621a8cc0be364cbd4119113909bcef03f3d310d79c12987f7e2b9a5dd5e76438542e66c6ffb48a32f0baca42f56b4d0387f8ae9548347a56c0b7fed358db3e8a6b2267f0f4186b6a305bab73106ea0559c0c38c8b8f91b56ff8826107e411a14512aa75d9dfea89e51233560d096fb5ede83cb4925de73194869a980b0e3e4f362125d5ff962c13e60b7b5445901eb8aad7c273af9ad2154914b6d87791dee5348803b5f07b63cacc0fe976fd85339a6192505b8b1bf27e0a3947b87e57b803e091afe80a04b88f370722c07c87b4163022c8a45916f0232d73770f3186094533fa2cef9cd818384c0ddd0c4b7802230ae60738f44ac6dfaa3389a3fbbb103c5948ee0262c45f1c4619b30f1fe28037be4f630cc577705107bf585c8183c4b74fe16b9ab6f8c6dba016585ba8ce2bf3e24c49f75fedfc588b10b3d46d4b400c49335b6cee47ca48ed1aeb8bdfd317556091d058b2d82713ddfc91adae10e46be3d90c02bd11c8761e10118eace939f78fb4b27a698ec4e0660bcc540a7c6f921152185a748d5932ea10622bbbc32f885edec3a69cee3773be88a2d58199243b961efb6d4f85468f5d1d3b7315511da9a1138808b18e684baffb1ca91f77901e9928b5e31492e037600e15f1818fcf0970b973bbf36363a463c156abb1d417f1b9e674720beb55647c1bc7e1ef4a8fed5d330baef509cace450e5a5284728d158b39729aa5c09017f21ae28c00e7d7c53ff73e934226723e2f54ff4d20335249473988d3c769e0866720b787e351441001b269c93c71a16a4308f079e8506fbffb3e8fcdbd279dc03003b0e7b77b29093846aeb08ac57b63e9e6ca5da9ff9a92da45ad62a2851dce1617d2a88bb172e575a8fa2ea2b2a73947d8e0bd1e5258fe80b1f23427df5bfd1d0c22f8ca454458f49c05d75a7e015a7adaac6b6a680f2a1f847b8f163a64714b156ee53bd2b5bc153cbac4b9b180b5eda314f86176b9c3f848aff8967e1be2460e45a56ef2c2e5d2a6a432d6b68f99ee6d5bb23934cee0752286dc5e3bebf0b51fd1057ecbe5cdb0777521739a2327d621a2dbb14cf95d64fe5781595e63dead24cf5131c82145bd4d92ed504e9a60893596cdf437fa87481fbe335d33320fe42a330d852b76c0aa33dcb22045d4124e63869a825b672655be11f1539e7fd7ec1d925673b23327ac733382033d7526b09e7816787b77f4025dd8ff9560cd39b607474d881e61d07160c81c07df3d19c9ef9279ed9b9a87fd1b302f2785e6d030135a68128b627337aae616fb0c44ac0904a728e56f32b48a05c43fbca7193b3c0cbaee34a10be73cb5efb067e0a6f639fea08c4cfd9054de1dbcf775f97690502d6c3802b5407c5bb25ef4c51c82dd15622eff5c0dc883975d210126340293c608be656b21422672140c9e218cd85d7a06d0a212266afda817112a23263c790319fdfc82e8ddc9bba8ac8fc18ebb4b74655ce6a87e4fba40888f391e4483a22f17cb0e241ad558f67f921a28be36647e025291b8c3563c0d4195eec985b4b7f31cebd69fd1277c3b71f6a95c2a95745799bac4bfc84d2d8180a3352d6e7c5ec11e9470e104ed350bf8adabf8a5fb98e720f31d8d43b89260c2edb61fd9200a002b069ac3f27375d0a7a99c30137298490a133441e1659a869a6a1738969f55650ae5e20015818c4abd45165534290130c85af0656687023c6771d9b8e96507c02b0afa988c0a3329876aa1cfadbb760660dea99f70828bfe29c5272b7b128f220708fedb4747e814da49a8223d67d398335cd60746db92f3bc2fb4dee71aeb362bc028e3a57b7c3b084aa1a3d7d091fc348d7e6c66ad39307b7bb150b023d76a017cbd7259a19175f3d12a4049dbb68cd9bcc1d90e247fe3e7575b9be5548ecb1303e4899b05ed3fe96c6daa0159a41e5caf66600d0fe9776113d4ec10e32a4a1f17c4577e3e940b49c068b65f30d171a3ed813ec34c3c6a891f76c3aada0b851003e6d72ee3374d19ddd79b82631d45934204c3707e2c53f6249252b1efb95e1b944e13ea3442a2b425c64caa62e80d5a8770526dff7473d4f980773b3087040fb1e72eca5d56620add7fb2772dc91481d845d7e69c2cac5d11bfe8476cddaa119a19be2f7d19a0d6cf00dde3cc7727b829497629abc11ca4c2e173169b12bc284478c0b48994489cb12d0313b8bb5fbc3f397e6433fd13e6f20a9945a128441a52d9e2b37bdb97aefff765a8757deec39f6da1e2c5221d6e3eebfafd98f1471356c5e502404156f8ffca15d9020bc4c34a9f37b35a8759ee0dd42cc5f01eeb00fd87fc66bfc33b91e0f1462a6df820f8d06e5286d8f2b6a8f2f28cdf3b869e2347e75edb5dade6a2341fd6119ce9b236e2f8b103c95112de486515b7ef021625dd028a3009bcb2001879d0656d3f538b2181096e10afaa8741f69ae7149a9620e4005c11c98c438e7d9a9d13eda86a81031e59d5297df58ab48c33a22fc0e00e44373fb8eb35fb90540370844e2368e67f5f51f296af41afb124c5790c307f19a15d5e07a6d8615b623e0e0938b71797048cd0124124983b6ee83f476917c80aa5d7e6ff05d2e6a0871beaddb9e6cedcf9c291fe353896accd666121822ea2184f582f6ac8ec7dd9219b915ec779ee54f5d3cd398680fc81412943f8a9285f09eed8558d9a143946f77d90e49643e4088cd905eafbc32c117491ac81bd7d8703789147fc529acf0d61b7a43545a58a776d881fd9b88b39424b5ffb2c29bd6003bef49bdf90fd9119c2d3b1dbfa1f21464f9429a7977716873c9f4ce112777b1a9dc0f03761819893c52014c0e734b1bb58eb4e8c4817b727fa3766e6b5da8f0e45d6ef3bbed7662348782f6a74fe492711a610751aac932e014c32a3da7c312c73dbe8d0e04868315b24722c96b397eb20f4f071c40c58db960ff6acad6a552673df936d8d40e23a027a917fa2779fc7edb284a155773c725cd73955ea7abc2cc4889333eaa6809996e123959a3a3f8d83c96759ce9e3f7c6c09730bbdd98c1aa07c0680a3d9e6dd843d24e7fe49ec9d21a62d54bff6f64a9ee5e08fb11c3a2f8ad777f36bf832803321bc86f1f4a4f72a2eb1fb41913a6cc6dccdbdc340760ffdaff52d1f1245c0d8334d72f5cf99bdac2be88f755d6c37a8214f12bf49e7153b7e75165d3d6920173724eb228e37c3d3e869772d7e982b350e29c07bfa6311e701c78009064faa24e89582b68e68440c660c810f11d316d670f4aa66e05314c04145895b8d875b1b4dccbe89457ebd946fe0523dbe7ddf5fae64aaea32bb0a84ad33f4b8005c00eb2535d0a9ccb8af87ca7f42a78503ab8a07acd630363f2e1a87cb164e41fcf1be838f39a66288ea938fe72275a6db9cfd23b5a51ffd0a1d8ab5b1ceade4fed78376d97a2ae58b1c68c4a53350511df91ff5710ee2fa4e1649055bb19084952ada33df6ea0c8e0f1e549a2f1e6fbf1988fdf00184c98be1431b48ee04df9088e873dd33ef27eb0256512d25f8c0435cf698d52271f82872ec03f71561862b3435535f6e71f1b075d9d544d45ecc11695b695deb45d750026c294d56366e281ab66f2dd3994a5ac3a14ce157aa5d566db035b00aebc0f801e232803cca81f368079508e3a55a9e8c0914d719f7dcab5c4540d050097c61f2e0137a33b9d4e9c67c0b93a22a3b77bed25dac563925b1077627300712f42751b034ec5b3d57085922c3e7e7359bf4694070e43519adb125ea0fa5b964b20a512d95dd6694bd85101318c90fe2e1267efa53c6496c9e076368292c53c4ee56b19c683ea9f5b1fc87532eccdb8fad939f3687f42694b6af100fa1cbc6c27c8102ae94ca0d7c16c9e8ac6ccb18453be033acbf503e4811e59513b058c4ee7defe1b405e22adf7095fc5c8d4eefbb0f50989d6888e6fc9feeea9cf4e198f320a0b0812e27e24b7d3da6e853fdab5c92f85cfd8dd411c6d6c89fb3edb60e4fc3c670c8fc09cedbf16e9c156ef9bdf4f3af22f9901aa20dda1848c8aac42e59984b4031093542cecf7d2c3a039af76683801b33641e348ed611ac1013d83185c118926cd7af617c3ff1f9fdd3837eed0139bfe0d0432bea5f34a65a36a0a873846b028aa1680748beeffe1a802c1659cc25c9acf2f91fe6bb8dadd4436a80b9370e914d13105c4dbeb1bd584ce3987ae2ff62b245d26b2529874d1f49fd9449e6ad61a8993ef077f2bd170851e3eb51ba4639d81ff2fd9196e8d062227d1c1c344e412d030082a057b6dfd0d5036fd87155a2d759bfdc47245d2e55c553ee876dbc509aeaef065e60c37b09b8989af2f54c604047063bc040e07fad0677c2517f56b1b703eec763782336c9a5863ca6e1f2f52346b4586d2447d552f4f8a68cee8d4257b0fe89f35d6b5cf9d1aecfd13e5295f726f06b75a2ed43a0db405b3f1529f2beb899ac04e4b50cf45a7b68765ef92ab03785519983349f9d884ff92583e0120d9a298acd1dd9ee8234b9c35d6978ff9a282f826c41be47e647e48235ba2ee300fa16102f76dde521ddc19d186b73c27ff9b3b341d1d8ccb71664c02b74a4421d22b2ae4d624350dc2cfadb8202659a381c7d458ed1926d8cde3f3bafdc4022dcba972fbff1cbd43002e205287081e346aa39eb981df15dd01008bffe8375a0f7f302db96bbc960c5f1b44186a28c22f3efd2464fb058313bcd623d68cf3ee1424dbf0dd7f14784dc6874ce573e88dec8bf168a30d724f389436c4a1bbf2141a6307ee84eb712e53b73a93361b7ed19949e68884fb50f7782a172716c134e2030140bf394b092573ecfcc9771fe2320b4b4f1e7462af1a510ec78d9317fd51281ab64c26c0b69ff6dda6ec0528186ad0faea1e1f835a8a03d55265c99647d21dc60b01daa3c3a826a71e7a81d424ed4ef70548004185d1c394a6a4c91c75e520a1665d716cc07e8db3490df6f48695e59fd24df7936adf11fd6c76f3b93fc61af47d4f13c560bcd9f66e0be39f31fe9e01f103bda296ca7a24a1369197a2ad04e2eac8c21f92e029ac27cb43e84940b5c07e9612329c5fd30fbb79dbddd0a226da1b0cddcb5ebe352dfef7e8214a5340477d4b63f597bb991de61ace715c7503c9c99ae748d77219ef2c7afcaf2db0a0ce84f0888f8f92834caf45fa72acf81bd0a24d39f36eddbe02a9ff88b0ab7252df0c39b70805c199bc2d72855b069f13f9e8f0990780814ff0852b103ccd7bea5e80e118bbf517223edf1058498f070ffd27cf08f39ba10af54803457db4066b029146c7399e1ef16e54ff7e494e1b02d84c168f6c2a12450279dbc4544c0dbeb745c86fc87632dfe85ca8fc439d7a3053a9b1c63c64bb32940ae3a3cdba614ddd6ff98b102f6fb680684257b655452b3082fc1456ddb5eb551a5652fc46bb553ca9bfe5fd72c710a0413c4b7e5b200b37ee615524093473b99318f268a2ccef91d09ca66aa77bfa32bbc9149076dd272834a4848f29eb304a652567b5f6ee9a2d42a6c431669f71ba6bf58a2a982c1e28c5cd23179ce6f559c5f5132bd2b698b3161724d96335077f67dd22fee9951b852b6f5169f1194c61a9c526f2fbf8f59e3f9d58ccf91a655ab60edaccfa32042fea7b8a4c37f7afa5dad12747f6de96fc9327c4cf0abb75ac2322aa90d87b13816f3db7113c9114f403bc0fe5573ae876d9930e8ea7af5e48125cd50b371d2565e4cdfb5923b279a6dd8230e58e3b5afa585fee6674d6e5716db5a2464abf23163d7a16ca25c7ebbd95f03498337faf402c703b4c0867a3d39cc707d4dece2281551441763c2b90e0cd7fd734a34bccce474462352281c5830502f5e247050b1d1c46d7897740af413cb9c46018f2eeec615c65ab5a7965ec4b35391daacf0413d252d650f28c2efbbe4aac18145370a218b8a1d79e24ae8906fcabcbc530207e7de442ddd569c4763e77a97d200ae2be108367ac43d3d366bc0c36982e38228b2be51f841a9cfdb98c9f42cab2e34ee55afb8ed45b9430eb848967ae9cb2049aba7b95ae916910b49ccc9787901a2ec6f851f8a0ab7021fa43fbeffc93cc06facafaefd92b11704a252d5ad6e16f17ae8a9b1998a561789934b901b4159e03b0fbb480bdfb6f663959c4b29562d01e8a775b9c44b9e1a62d2ba4a2d85685066b847dcb0f8dcc4496b10041d5bc6234e0ecf76497a0193e7e7aa2609b300616b10c3692f12f4b265f2639d408d25dac1acee6c59600a0f01b98fbd5dc463b040214f30d7b358346351c2825f8104f1546f13387059c8b39f07a9c1863194d2b73c577664b978c19b6bcd65e64afd4927e78ec1d8626ecef2116052ace280816fc1b1cc186d0f276153d9038b7b2b3bc077f9c8a3ce84fba4484b000a8d47d19f9e5328cb52ddab8b88ef9abf4e9f84e7fd97df6740733a16d85a98cd4569624b3f2e5ff7f8d254e5ef53286e60c710b446acac2704137a72f156720f855cc0255a3365ce594033b07eef0c3033ce98118f564819ef65801f53bc1e0a34a0e21abc7411fc71c396e42edae13f5f807f7a2f79b8c85f804be41070f664a2c571c164582c928f7991d0b22e25d1f3319f1b60a61f7515b50b5889d9f4bb860b5145a3e6522506fa7aa34c7f87ee7656ee848185591f8f5f483af0ad1485186d31d613ef216c8789674a42073931c81ccabd884b77ba1479cbfa6aa3f3ed1b9a420f7ce535d19d4da400fe4c32c981e2087aa0c29d1f0142ff5a9c153ddca84062e79406b8426c4f97924950b9ef82f6a097abce445a09f7f869030148c9f7a72195870a9eeea8aa29aa93ec2921103c5bd3432207786381afb0ee572f2ceccf0021d5a2ce58679660f61d0d2619a3449489dcdc282f178223ed4f4636cbdfcc2118d31fba11378eb82c9ff5bc03bd69f198fbf63a5f6befb633be1a9e8e2bbdb133751ac604cce3cec313b48633719e9dd0b8a7916771a4b945c48996d13909c2fb952d39ac4adb75ecc2a4cf5db2178ad83ac95355ed862621304fb3d86fac62c61cca81abb5b628bd37472ba4bf4dbb3b2667eaf3b476ad980d87561512d9a10317c74dd2157b5e6181f1ef7c73438b3a4d394c401ce9215d3d03e4d3fe9e8105e648c5c684be8cc1c57c6e7bc70e29a47dd1bb5663d9b49b0b8ff3e7456be1113c8c8eb409d034d5688d6d148d416a0fa3945dc3860f23ff1ee6f4d8ac219118a28944db7061c51457c09bf97c8871a6ba6fc71849ec5baa7420709bc53b21aedfedc384f01d9c01e0091ff2736074143cb080baafff845ddefff7700808e274a56bf03d38c256536603878e346d0f47ed7002e7da6347b63a996f4fff76b2e000b11d6acde02c82d54c02c6093f099b481dce32022d817f21968a9dfd4a623822000dc618333f1929e149b18176c476ae4962042cb735a78a9b38eb30dc629a45947e5259217eec6266b3245b6589abff779e7b07d875fa903304ee96a1c16f5ccb122445362c13a16d2396e55666509342b9a9007337c0f22ab153a07920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001402f7659df3ce4b0bfa819b34f29c0f800d94162e03d2a4be37a2198f936ed70db4e58202eab407bdba483e989c8111922c71128e041a66da0d33f4835259d402d89783ff57170ab96b3aff910be4d2b64533b63d1c40433ed765c8a94cc6332e5f83b76282da1f46f08356349ad2582f792eb17a2673e895da46e01c2c8f350aab4e3cb5da218e9e596ba882ef9d62d950553b7f4f7ec360802011f5e85ff91bf63aafcdd53c44fe2db368a87455f21216924ef69539245eedfe6c6d32fb261564f88acfb671f82dec451fc8d19fa8a83ceb159999bd06396dba6a273bd093099f70a592e3cd931487dc21b8579419924a55b1eb48acd718d81d2188f854a22d2382f46605ffa664d0bbd3db337760273af98b957ad443d4304a08548aecaa1a4d6ed4e7169cd76a91b9fc30a006c4d32de3b2191fd868422affb2b6425a0e1d408d02105c088eec9cafab13a5c8581e09c0d7b46230ac8ce3eb78a18e0a9e300e2e5755002c308852d2d7a63bb4fcbb44b465bdedbfa618948505cc4b7ba23038d231dc8a11bfd7c078c21684edcb89b585bbe94ff795bbf76ad19642ab2d04c59ae6995141156908b56567f1aa2ff9fde626abda743706f3732c97460da423232162662b2d1ada17aa317cc8eaa705a07664c549b68f68837509f545c4f21f89a1cf2e9bf58f4c3826abd7e36442159374b0b9fbf1f068455ee46d5fab89217b00e1d5b92e9eb8e080ebde50fb3b142f2c7ad82359e56e7cfc08ecd802ab089aa2a8f458d4c5d20d5b4af86d7e93679d733ba41771d2c600b9841c012732215d655092a96f71ea81cf619fdbad73841d58444ee320316dc33a9a6247cc7f00636ddb0f5195c8cf49d66df0d2fa81e71bd0697589d7d16e9d66736e4ab21a1862ca3242544f5944ecfae168e77553b865263a1b5c4015284476549d4341ff0f0a9ff123dc5981de4646f53305305acddbf6879e0cb5e1913a2db655b2c3fb0e471d707375a93f30c500c1e6d84c2482e67f8781e2e7a970a7a5b819c179602dd80ef283ff3b9c6ecc7644d3995492acd0c6b34ce7a042b67ce44de924a5cf2895daf8f1953387d27048afad60b6625707aedfa2280a4dcf7800605534119f0a403b2e983004fdfc563ea25be5a8fbeec9a7977866e39376defe79a02c600816a39dd8f7151193c9acaf5ff453f9fb0f1287a54b886b3a73d22e7a8f350a7423abe64976b74963111ac5d96927dcd77d9c42e226815ef093e7aee71910f2410a4871f6f2f3fbc119cd73de82053a670e2d8271532c74dfc10b6f21e27f6d1623029782b7b3325589642a9b62b5646228f7761dddbfecdbe601dfe68dfdb4b100c68140a2e0c1f8547a8907d10c97228ef4ed84d836ec90895a8041c3b2f18323202006853989462ddd65da3e0fc9f341af8c027f49dfc3b6f450401c3bc61f05651b24f3cbfcb90076d8b52a653d214e5defa2a91106a01dd8b97701e7dad4166e196a20a4d78ee1d4fd6b759ebe21dc4749546367c3c8cc5ede0d04684b6101c3691c0bbaff670529eeccda5bd603065f4badb3b420f7ac3cd6df3cae9ce81427a4594869cc7ef87a05bd16d9fec0755be22d8379ec4455e3673e5e6e296110b58c1fbf16379a111301021f14f72bdb1d6823cfe3c3b0845ef2ecb4e14d1010af6857f22c5a75427ce225894454333b6cc21cbb530b73b62577773d55dd3d110f67b79bff7bf6bc29e6ea7d626e555374bc721c310bb584b06b0489ccc6f50060dcca1e966da7b611ee59a6aab337543b38f5523da01b751fabfcfcfde70a0000000000000000000000000000006e99400a2e669210b323b13e4a559562340000000000000000000000000000000000113587ff735be1bd07037d32afa6c20000000000000000000000000000006d61fb1ba9632b8cbc76132b5b2a4f5dbf0000000000000000000000000000000000264a56b9aaebc291ff766c2368d7b20000000000000000000000000000007fb5b38f675b9dd9adf1119e77bf6d1b2500000000000000000000000000000000001b5f6eecfd877030f4b801591720c400000000000000000000000000000044a28ec206f26f99a7fe98bdfb82bd225d000000000000000000000000000000000002dff7548595122ed0e4f353f5ad32000000000000000000000000000000bbc30b9415db001f70fdd8987beb1c3e9c00000000000000000000000000000000002d8652e9ad4e0a4c2ca8eda205c27c00000000000000000000000000000087b1b7f5e9abe2f8dc781bdac7fff1aa1100000000000000000000000000000000000d95630725a26fe91e15b78056b1500000000000000000000000000000009350c0aecfa2f72e376bf403ec8721f86d00000000000000000000000000000000000c6d69390ac401c6fc8096c173b49f000000000000000000000000000000b9a4dea2978f80a7fd5c8e51be6532ad97000000000000000000000000000000000015ac99e0063363eba179d9bddf370500000000000000000000000000000029692467d705f2920dcf22b32f79fd3be80000000000000000000000000000000000079354a1a7faf934f32b3869c64d6b000000000000000000000000000000f2617d01e89a14e588bd8f6a599b8f9e8f00000000000000000000000000000000002026b9dc6c9c2ea6c9b6d97ad5e7cf00000000000000000000000000000073167a42c43fb98d38ff8f48623b8027d400000000000000000000000000000000000d68131afcb0dd20f4972cf543772b000000000000000000000000000000afaf580c7bf00931cd0c4102f8aaa7fcbb00000000000000000000000000000000000c7217eaf7d8bb18f8748c77bdb31e0000000000000000000000000000000ed9d41f73191606c11301a7b542dcfea400000000000000000000000000000000001fd2713b9e5b9e5117fe3732873c9400000000000000000000000000000091750a4e48f1feefffe3c4cc8dfa11b384000000000000000000000000000000000020c1023a70b1d27bca3d24b06d5579000000000000000000000000000000d74a7d51338e01a28b236c60ff8fbbf394000000000000000000000000000000000004e1232c30bfcce815402234f0713f0000000000000000000000000000006bde145ebdd90ca2a689e65943777fd80600000000000000000000000000000000002df07a18ed3fe8b2c070a57c944bbc000000000000000000000000000000d5b24ca3dc8e1f9d29e2a17ade852f1b7b000000000000000000000000000000000026360c3bda49bc3f5f5093c2a1c5d5000000000000000000000000000000dba886e62edf0787e22c73d9fa6ade05830000000000000000000000000000000000178848e705cb1df7f400459540a5e700000000000000000000000000000025170aa9b693320182c04029c5e7e4121900000000000000000000000000000000000bd42d893c4e1c614c357437d6bc74000000000000000000000000000000c4ecd919483c1a2ab845f12dc62077900b000000000000000000000000000000000022f1c6248535576a0717d01d4bf1ea000000000000000000000000000000965739e421592c66c4afb6565d07df6a5900000000000000000000000000000000000c66b846cea6387827a86b53f06a69000000000000000000000000000000460c41dff84a6bce3104c5f6c492c66f7c0000000000000000000000000000000000064f261a0890bd5ef9598cf92611d7000000000000000000000000000000de718a32a28cfaa98d7295000e72c06fc6000000000000000000000000000000000009015a08cdef623230553bbef5b9ac000000000000000000000000000000b7858366c56a0c3da72210cb7b47ebd3ad000000000000000000000000000000000012c80e071fb1aff3b4afc0d80c0902000000000000000000000000000000b32fcd0ca6d0c4e2a35634876ae6b4bcfc00000000000000000000000000000000002295aec998986d3260001b2652da8500000000000000000000000000000073ea51d2509a870718aa82b7f00e974ad2000000000000000000000000000000000023324c74a3b371c2f5e5b31ccfbce80000000000000000000000000000000e2b8a28a33389a4c09c8af5d4e7422ea700000000000000000000000000000000000041d2e62390a06022c514c42745300000000000000000000000000000002b5f6ed66337998236038a6fff1fc69502000000000000000000000000000000000023d1351f04cd9ef7abe1048ddf6c3e000000000000000000000000000000ce251683e0567843df829e63031f4350df00000000000000000000000000000000002ec340753bd9e99424e8910d75ab02000000000000000000000000000000d35ee5cb042d4aec737803c5dea2630c1b00000000000000000000000000000000000daac357d6549124e57d6eedc0b98c000000000000000000000000000000b0309944ea7e471a09fd971bfb9c36c7e7000000000000000000000000000000000007a368b4c1f6e35c0a480af8414da900000000000000000000000000000021f1225266bea5ab62e97d6c3e2fd7048000000000000000000000000000000000000a9599125c1c84e9f03acd8fcf7a1f0000000000000000000000000000004f93b5557f54eeb37238973013387e6efc00000000000000000000000000000000002a543ca44d941e21b40b2aeaffd067000000000000000000000000000000a3ffd818a85aff4e9590b851012624dcd200000000000000000000000000000000000db87fb229661e5b4f3c1491b7036a00000000000000000000000000000087c95c65ed8c8c03b7ff4c8b83dab94254000000000000000000000000000000000004670b0675c3aa38c1e2fd7d32b6ea000000000000000000000000000000a602a4b43bf305b4c888b9a3ba01964ac3000000000000000000000000000000000012ab08c2a76a1a8f30626d315d20da0000000000000000000000000000005fb41fc6841b45666f000ec89dc579a2e800000000000000000000000000000000002d975efc23a624beb991500f03d4da0000000000000000000000000000004b7702c931ece3321f98d33e85c557ef13000000000000000000000000000000000007bac1ea635e4f038b3a994679d54d0000000000000000000000000000000d079e5da08c9dcb4de83eb932d9c9903c00000000000000000000000000000000000682058115f71bc5f523d1d22e30a600000000000000000000000000000054fd9150dcee9f00d909983a171c0a599500000000000000000000000000000000002d48075b83ac71ac534ae7d2aa536f000000000000000000000000000000ed5a96f25e597e90a24fb0c975b83a94a80000000000000000000000000000000000286dd35274d7ceddfadc89056807f8000000000000000000000000000000c00e574323056ecdbb5d95b5a47edd2aba00000000000000000000000000000000001608e6ba98f975d660532fe37b3a4e000000000000000000000000000000544f7a22b7c1d9abbde125f75aefd6aaa5000000000000000000000000000000000020ea76d9fa9beca8380bb22786eb610000000000000000000000000000007ccab9b2d3cf3fde1b40b5f4b8f805b8a10000000000000000000000000000000000209c01f19dc726d266498735ce39ff0000000000000000000000000000006623a5a32ef26f9cba849c2a3b5d83f4d0000000000000000000000000000000000008b8b0ca5a59ef76e1cf60c225e528000000000000000000000000000000b56ec3076bdb7efb74026f41615800a0d600000000000000000000000000000000001423b8dea35a8c0a50385d1b3fd90a0000000000000000000000000000002d1e81446b8c8b2f0ffc3e938cb93b9abc0000000000000000000000000000000000128e448ffc3b1d09bb6783e8058d6d0000000000000000000000000000007dd79fa7035ce3f454326310495ee858a7000000000000000000000000000000000000efb75639b2a3995e71dd437a87fe0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002f6e89e0c65369b14dcc2c500f1653e2ba0053cde393ff12a24aa7de7199043904f6e693ca4adb84f584bba58973a656fea999d21d2efed64d68ef99bdce42e8224cb7be17d12a3223468b5ad8b342779c65f128f23a4a871ff9ea0dac5f94ac19511f9f9e02b4e6cad2370327ba5cfd9f56a1eb61ecf26002ceaec5956a3e0c07cf7141c8ab2e596ab54faebe21f755ba27fd7827a62aa79077e68dffc9a5db202e77fc3a7b1ee01c71e10b4364e1d2f60b3914f243ce8cd2f618fc654680af1d043d652ea6e0f94a1ff8184d1801b34e194007dbcae2e2cc17bc7a07112d2c24cae6f901fd2ac5aa4b4d5f57a80f4ca19132fdb8394094abb6b644bc1eeaf60623ffd184eb42d69422fe3c8e7e0a5484104237c6d958ceeedf99115ebb23560a4ee4d99bd2cc2d9849764fb6559e84ab8c1d0e7b95035151f352b79276cf9e0b5c1b63ce6c1617492d76d8e142dda684bcb496c4cdde8690daddb45be1dbd127bb04a18858b34bacc49be594a39529f480c2aff0b8b67833e7953543f9a4a0057a24f76635c33bebfbc2781a62109d5210a5b13481ad512ddf9c36489be1c00d8989acb1cf7a2e02d624709d64b4aaecb354be0042c31be8c1a0711005482f27a30debe3a61beec341ea0be8357862e8eef1611d25a3aa5ef24d10e086e55d20781cb4cc82d176856102ed95e23228a3fcc1018c82af19eaff112f49ff2781177c7fab42b6ce9d966bc00cd97599627593135e2303cc474f901e61b9b89027069fc33f61a60b3e3bf3ae214db2fe8b94eccde58ffa6439c880bdd8d36f88d2241abbfe0d66f0d9293cd917e89d821159777eaaf33b161f1a486086ff4731dc16ea174843bc9db2c00b4d44221a51d99201bc6f9bbea6cc0c76750f9ea7adb117f445ef3bdbaeec5f74bdcc560dfb38070d574c5a36868d7e259599d32b44a015d26a96cf4ecf6b87753b90cfde8f7126bf21a2644bd8f4ef3c0496eb9b2fdc200267b60b708a173e0d9cf60d568bb809f330e66d07fcee343a558487037afb041f2f05543014ce39617d817df11c8bc033dca9b7879ff2e94653c5f4b979081c1ad70b66e6e75726d2a35d17bd4f1c63a0da3cf0ce7868061f4a6f0071dda90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006433fe684a939fe75a79663e5496d1680000000000000000000000000000000000000ba38b32961bbbd1dfb4742ae9ed5e000000000000000000000000000000638380b39c287b4e608ce046004a50e60600000000000000000000000000000000002b3900dc5cf28d0d8c086719f213ed0000000000000000000000000000005a49a0137d2c4bb49fb4aa0728b8989e97000000000000000000000000000000000027ebfae78d513cdef72f79f46392d3000000000000000000000000000000ca4f7981894ec601389fbb86e8c0941d7f00000000000000000000000000000000000604b2124e61269498e2e20f005a19000000b3","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a25900000001221894f21cae5e98d0c7a1a2658eaf169b0688cf8348dc7be4d5a944d568bd46000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00087e2b1632207a64d2be3430a622118411f15477dcf399a057660b8e566041001c2aa1e8a9c646939d1d0d3a1b789e2eb024aa538a4c7864db736646faf6cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e586311f1581539435ce58c90ec4a9d291746a8b33999d1654faffb07f382db2efd3fd6b542f09e9f76c84337f46370f67729ce54c815d35866b4cb2a2672030000000000000000000000000000000000000000000000000000000000000000003f1c36600e57c2c3556b97fe6d9919a7c418380b539dcf74182dacf5baea2e16743433c1b3d551429cfbc09ab7899d4e14d2b5786a3243e29bc9c6c0d76bf10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/ethereum/src/contracts/rollup.ts b/yarn-project/ethereum/src/contracts/rollup.ts index 9f45a5008818..dd5247c77216 100644 --- a/yarn-project/ethereum/src/contracts/rollup.ts +++ b/yarn-project/ethereum/src/contracts/rollup.ts @@ -495,8 +495,12 @@ export class RollupContract { return this.rollup.read.getStatus([address]); } - getBlobPublicInputsHash(blockNumber: bigint) { - return this.rollup.read.getBlobPublicInputsHash([blockNumber]); + getBlobCommitmentsHash(blockNumber: bigint) { + return this.rollup.read.getBlobCommitmentsHash([blockNumber]); + } + + getCurrentBlobCommitmentsHash() { + return this.rollup.read.getCurrentBlobCommitmentsHash(); } getStakingAsset() { diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index 6e16b2423847..da90be059905 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -103,7 +103,7 @@ "@aztec/bb.js": "portal:../../barretenberg/ts", "@koa/cors": "^5.0.0", "@noble/curves": "^1.2.0", - "c-kzg": "4.0.0-alpha.1", + "bn.js": "^5.2.1", "colorette": "^2.0.20", "detect-node": "^2.1.0", "hash.js": "^1.1.7", diff --git a/yarn-project/foundation/src/fields/bls12_fields.test.ts b/yarn-project/foundation/src/fields/bls12_fields.test.ts new file mode 100644 index 000000000000..3137c91e6595 --- /dev/null +++ b/yarn-project/foundation/src/fields/bls12_fields.test.ts @@ -0,0 +1,305 @@ +import { randomBigInt } from '../crypto/index.js'; +import { BLS12Fq, BLS12Fr } from './bls12_fields.js'; +import { Fr } from './fields.js'; + +function testFn(Field: any, name: string) { + describe(`${name} Serialization`, () => { + // Test case for Field.fromBuffer + it('fromBuffer should serialize and deserialize correctly', () => { + const original = Field.random(); + const buffer = original.toBuffer(); + const deserialized = Field.fromBuffer(buffer); + + // Check if the deserialized instance is equal to the original + expect(deserialized).toEqual(original); + }); + + // Test case for Field.fromNoirBigNum + it('fromNoirBigNum should serialize and deserialize correctly', () => { + const original = Field.random(); + const bignum = original.toNoirBigNum(); + const deserialized = Field.fromNoirBigNum(bignum); + + // Check if the deserialized instance is equal to the original + expect(deserialized).toEqual(original); + }); + + // Test case for Field.fromString + it('fromString should serialize and deserialize correctly', () => { + const original = Field.random(); + const hexString = original.toString(); + const deserialized = Field.fromString(hexString); + + // Check if the deserialized instance is equal to the original + expect(deserialized).toEqual(original); + + // Note odd number of digits + const arbitraryNumericString = '123'; + const arbitraryNumericStringPrepended = '0x123'; + const expectedBigIntFromHex = 291n; + + const anotherString = '1000a000'; + const anotherStringPrepended = '0x1000a000'; + + const expectedValueOfAnotherHexString = 268476416n; + + expect(Field.fromString(arbitraryNumericString).toBigInt()).toEqual(BigInt(arbitraryNumericString)); + expect(Field.fromString(arbitraryNumericStringPrepended).toBigInt()).toEqual(expectedBigIntFromHex); + + expect(() => Field.fromString(anotherString)).toThrow(`Tried to create a BLS12${name} from an invalid string`); + expect(Field.fromString(anotherStringPrepended).toBigInt()).toEqual(expectedValueOfAnotherHexString); + + const nonHexEncodedString = '0x12xx34xx45'; + expect(() => Field.fromHexString(nonHexEncodedString)).toThrow('Invalid hex-encoded string'); + }); + + // Test case for Field.fromHexString + it('fromHexString should serialize and deserialize correctly', () => { + const original = Field.random(); + const hexString = original.toString(); + const deserialized = Field.fromHexString(hexString); + + // Check if the deserialized instance is equal to the original** + expect(deserialized).toEqual(original); + + // Note odd number of digits + const arbitraryNumericString = '123'; + const arbitraryNumericStringPrepended = '0x123'; + const expectedBigIntFromHex = 291n; + + const anotherString = 'deadbeef'; + const anotherStringPrepended = '0xdeadbeef'; + + const expectedValueOfAnotherHexString = 3735928559n; + + expect(Field.fromHexString(arbitraryNumericString).toBigInt()).toEqual(expectedBigIntFromHex); + expect(Field.fromHexString(arbitraryNumericStringPrepended).toBigInt()).toEqual(expectedBigIntFromHex); + + expect(Field.fromHexString(anotherString).toBigInt()).toEqual(expectedValueOfAnotherHexString); + expect(Field.fromHexString(anotherStringPrepended).toBigInt()).toEqual(expectedValueOfAnotherHexString); + + const nonHexEncodedString = '12xx34xx45'; + + expect(() => Field.fromHexString(nonHexEncodedString).toBigInt()).toThrow(); + }); + + if (name == 'Fr') { + // Test case for Field.fromBN254Fr + it('fromBN254Fr and toBN254Fr should convert correctly', () => { + const original = Fr.random(); + const bls = Field.fromBN254Fr(original); + const bn = bls.toBN254Fr(); + // Check if the deserialized instance is equal to the original + expect(bn).toEqual(original); + }); + + // Test case for Field.fromBN254Fr + it('rejects fields too large for BN254', () => { + const bls = Field.MAX_FIELD_VALUE; + expect(() => bls.toBN254Fr()).toThrow('too large'); + const zero = new Field(Fr.MODULUS); + expect(() => zero.toBN254Fr()).toThrow('too large'); + }); + } + }); + + describe(`Arithmetic on ${name}`, () => { + describe('Addition', () => { + it('Low Boundary', () => { + // 0 + -1 = -1 + const a = Field.ZERO; + const b = Field.MAX_FIELD_VALUE; + const expected = Field.MAX_FIELD_VALUE; + + const actual = a.add(b); + + expect(actual).toEqual(expected); + }); + + it('High Boundary', () => { + // -1 + 1 = 0 + const a = Field.MAX_FIELD_VALUE; + const b = new Field(1); + const expected = Field.ZERO; + + const actual = a.add(b); + + expect(actual).toEqual(expected); + }); + + it('Performs addition correctly', () => { + const a = new Field(2); + const b = new Field(3); + const expected = new Field(5); + + const actual = a.add(b); + expect(actual).toEqual(expected); + }); + }); + + describe('Subtraction', () => { + it('Low Boundary', () => { + // 0 - 1 = -1 + const a = new Field(0); + const b = new Field(1); + const expected = Field.MAX_FIELD_VALUE; + + const actual = a.sub(b); + + expect(actual).toEqual(expected); + }); + + it('High Boundary', () => { + // -1 - (-1) = 0 + const a = Field.MAX_FIELD_VALUE; + const b = Field.MAX_FIELD_VALUE; + + const actual = a.sub(b); + + expect(actual).toEqual(Field.ZERO); + }); + + it('Performs subtraction correctly', () => { + const a = new Field(10); + const b = new Field(5); + const expected = new Field(5); + + const actual = a.sub(b); + expect(actual).toEqual(expected); + }); + }); + + describe('Multiplication', () => { + it('Identity', () => { + const a = Field.MAX_FIELD_VALUE; + const b = new Field(1); + const expected = Field.MAX_FIELD_VALUE; + + const actual = a.mul(b); + + expect(actual).toEqual(expected); + }); + + it('Performs multiplication correctly', () => { + const a = new Field(2); + const b = new Field(3); + const expected = new Field(6); + + const actual = a.mul(b); + expect(actual).toEqual(expected); + }); + + it('High Boundary', () => { + const a = Field.MAX_FIELD_VALUE; + const b = Field.random(); + const expected = b.negate(); + + const actual = a.mul(b); + expect(actual).toEqual(expected); + }); + }); + + describe('Division', () => { + it('Should succeed when mod inverse is -ve', () => { + const a = new Field(2); + const b = new Field(3); + + const actual = a.div(b); + expect(actual.mul(b)).toEqual(a); + }); + + it('Should succeed when mod inverse is +ve', () => { + const a = new Field(10); + const b = new Field(5); + const expected = new Field(2); + + const actual = a.div(b); + expect(actual.mul(b)).toEqual(a); + expect(actual).toEqual(expected); + }); + + it('Should not allow a division by 0', () => { + const a = new Field(10); + const b = Field.ZERO; + + expect(() => a.div(b)).toThrow(); + }); + }); + + describe('Square root', () => { + it.each([ + [new Field(0), 0n], + [new Field(4), 2n], + [new Field(9), 3n], + [new Field(16), 4n], + ])('Should return the correct square root for %p', (input, expected) => { + const actual = input.sqrt()!.toBigInt(); + + // The square root can be either the expected value or the modulus - expected value + const isValid = actual == expected || actual == Field.MODULUS - expected; + + expect(isValid).toBeTruthy(); + }); + + it('Should return the correct square root for random value', () => { + const a = Field.random(); + const squared = a.mul(a); + + const actual = squared.sqrt(); + expect(actual!.mul(actual!)).toEqual(squared); + }); + }); + + describe('Power', () => { + it.each([ + [new Field(0), 0n, 1n], + [new Field(2), 1n, 2n], + [new Field(2), 2n, 4n], + [new Field(10n), 8n, 100_000_000n], + ])('Should return the correct power for %p', (input, pow, expected) => { + const actual = input.pow(pow).toBigInt(); + + // The square root can be either the expected value or the modulus - expected value + const isValid = actual == expected || actual == Field.MODULUS - expected; + + expect(isValid).toBeTruthy(); + }); + + it('Should return the correct power for random value', () => { + const a = Field.random(); + const power = 11n; + let expected = a; + for (let i = 1; i < power; i++) { + expected = expected.mul(a); + } + const actual = a.pow(power); + expect(actual).toEqual(expected); + }); + + it('Performs power correctly', () => { + // (a^b) * (a^c) = a^(b + c) + const a = Field.random(); + const b = randomBigInt(10_000n); + const c = randomBigInt(10_000n); + const expected = a.pow(b + c); + const actual = a.pow(b).mul(a.pow(c)); + + expect(actual).toEqual(expected); + }); + + it('High Boundary', () => { + // (-1) ^ (odd) = -1 + const a = Field.MAX_FIELD_VALUE; + const b = randomBigInt(10_000n); + const expected = b % 2n ? Field.MAX_FIELD_VALUE : Field.ONE; + + const actual = a.pow(b); + + expect(actual).toEqual(expected); + }); + }); + }); +} + +testFn(BLS12Fr, 'Fr'); +testFn(BLS12Fq, 'Fq'); diff --git a/yarn-project/foundation/src/fields/bls12_fields.ts b/yarn-project/foundation/src/fields/bls12_fields.ts new file mode 100644 index 000000000000..7cef0c17113a --- /dev/null +++ b/yarn-project/foundation/src/fields/bls12_fields.ts @@ -0,0 +1,463 @@ +/* eslint-disable camelcase */ +import { bls12_381 } from '@noble/curves/bls12-381'; +import { inspect } from 'util'; + +import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js'; +import { randomBytes } from '../crypto/random/index.js'; +import { hexSchemaFor } from '../schemas/utils.js'; +import { BufferReader } from '../serialize/buffer_reader.js'; +import { TypeRegistry } from '../serialize/type_registry.js'; +import { Fr } from './fields.js'; + +/** + * Represents a field derived from BLS12Field. + */ +type BLS12DerivedField = { + new (value: any): T; + /** + * All derived fields will specify MODULUS and SIZE_IN_BYTES. + */ + MODULUS: bigint; + SIZE_IN_BYTES: number; +}; + +/** + * Base BLS12field class. + */ +export abstract class BLS12Field { + private asBuffer?: Buffer; + private asBigInt?: bigint; + + protected constructor(value: number | bigint | Buffer) { + if (Buffer.isBuffer(value)) { + if (value.length > this.size()) { + throw new Error(`Value length ${value.length} exceeds ${this.size()}`); + } + this.asBuffer = + value.length === this.size() ? value : Buffer.concat([Buffer.alloc(this.size() - value.length), value]); + this.toBigInt(); + } else if (typeof value === 'bigint' || typeof value === 'number') { + this.asBigInt = BigInt(value); + if (this.asBigInt >= this.modulus()) { + throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`); + } + this.toBuffer(); + } else { + throw new Error(`Type '${typeof value}' with value '${value}' passed to BLS12Field constructor.`); + } + } + + protected abstract modulus(): bigint; + protected abstract size(): number; + + /** + * We return a copy of the Buffer to ensure this remains immutable. + */ + toBuffer(): Buffer { + if (!this.asBuffer) { + this.asBuffer = toBufferBE(this.asBigInt!, this.size()); + } + return Buffer.from(this.asBuffer); + } + + toString(): `0x${string}` { + return `0x${this.toBuffer().toString('hex')}`; + } + + toBigInt(): bigint { + if (this.asBigInt === undefined) { + this.asBigInt = toBigIntBE(this.asBuffer!); + if (this.asBigInt >= this.modulus()) { + throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`); + } + } + return this.asBigInt; + } + + toNoirBigNum(): { limbs: string[] } { + const buffer = this.toBuffer(); + const limbs = []; + // Split into 120 bit (=15 byte) limbs + for (let i = 0; i < Math.ceil(this.size() / 15); i++) { + limbs.push(buffer.subarray(-(i + 1) * 15, this.size() - i * 15)); + } + return { + limbs: limbs.map(l => `0x${l.toString('hex')}`), + }; + } + + equals(rhs: BLS12Field): boolean { + return this.toBuffer().equals(rhs.toBuffer()); + } + + lt(rhs: BLS12Field): boolean { + return this.toBigInt() < rhs.toBigInt(); + } + + isZero(): boolean { + return this.toBigInt() === 0n; + } + + isEmpty(): boolean { + return this.isZero(); + } + + isNegative(): boolean { + // Returns whether the field element is above the halfway point of (p-1)/2 + // Generally referred to as 'negative' but also referred to as 'greater' (e.g. in point compression) + return this.toBigInt() > (this.modulus() - 1n) / 2n; + } + + toFriendlyJSON(): string { + return this.toString(); + } + + toField() { + return this; + } +} + +/** + * Constructs a field from a Buffer of BufferReader. + * It maybe not read the full SIZE_IN_BYTES bytes if the Buffer is shorter, but it will padded in BLS12Field constructor. + */ +function fromBuffer(buffer: Buffer | BufferReader, f: BLS12DerivedField) { + const reader = BufferReader.asReader(buffer); + return new f(reader.readBytes(f.SIZE_IN_BYTES)); +} + +/** + * Returns a random field element. + */ +function random(f: BLS12DerivedField): T { + return new f(toBigIntBE(randomBytes(f.SIZE_IN_BYTES * 2)) % f.MODULUS); +} + +/** + * Constructs a field from a 0x prefixed hex string. + */ +function fromHexString(str: string, f: BLS12DerivedField) { + return new f(bufferFromHexString(str)); +} + +/** + * Constructs a field from noir BigNum type. + */ +function fromNoirBigNum(bignum: { limbs: string[] }, f: BLS12DerivedField) { + // We have 120 bit (=15 byte) limbs + let bigint = 0n; + for (let i = 0; i < bignum.limbs.length; i++) { + bigint += BigInt(bignum.limbs[i]) << BigInt(120 * i); + } + return new f(bigint); +} + +/** + * Constructs a buffer from a hex string. + * Differs from bigint-buffer's fromHex() by allowing odd number of characters. + */ +function bufferFromHexString(str: string) { + const withoutPrefix = str.replace(/^0x/i, ''); + const checked = withoutPrefix.match(/^[0-9A-F]+$/i)?.[0]; + if (checked === undefined) { + throw new Error(`Invalid hex-encoded string: "${str}"`); + } + return Buffer.from(checked.length % 2 === 1 ? '0' + checked : checked, 'hex'); +} + +/** + * Fr field class. + * @dev This class is used to represent elements of BLS12-381 scalar field. + */ +export class BLS12Fr extends BLS12Field { + static SIZE_IN_BYTES = bls12_381.fields.Fr.BYTES; + static MODULUS = bls12_381.fields.Fr.ORDER; + static ZERO = new BLS12Fr(0n); + static ONE = new BLS12Fr(1n); + static MAX_FIELD_VALUE = new BLS12Fr(this.MODULUS - 1n); + + constructor(value: number | bigint | Buffer) { + super(value); + } + + [inspect.custom]() { + return `BLS12Fr<${this.toString()}>`; + } + + protected modulus() { + return BLS12Fr.MODULUS; + } + + protected size() { + return BLS12Fr.SIZE_IN_BYTES; + } + + static random() { + return random(BLS12Fr); + } + + static zero() { + return BLS12Fr.ZERO; + } + + static isZero(value: BLS12Fr) { + return value.isZero(); + } + + static fromBuffer(buffer: Buffer | BufferReader) { + return fromBuffer(buffer, BLS12Fr); + } + + /** + * Creates a BLS12Fr instance from a string. + * @param buf - the string to create a BLS12Fr from. + * @returns the BLS12Fr instance + * @remarks if the string only consists of numbers, we assume we are parsing a bigint, + * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding + * as to what is being parsed. + */ + static fromString(buf: string) { + if (buf.match(/^\d+$/) !== null) { + return new BLS12Fr(toBufferBE(BigInt(buf), BLS12Fr.SIZE_IN_BYTES)); + } + if (buf.match(/^0x/i) !== null) { + return fromHexString(buf, BLS12Fr); + } + + throw new Error(`Tried to create a BLS12Fr from an invalid string: ${buf}`); + } + + /** + * Creates a BLS12Fr instance from a hex string. + * @param buf - a hex encoded string. + * @returns the BLS12Fr instance + */ + static fromHexString(buf: string) { + return fromHexString(buf, BLS12Fr); + } + + /** + * Constructs a field from noir BigNum type. + */ + static fromNoirBigNum(bignum: { limbs: string[] }) { + return fromNoirBigNum(bignum, BLS12Fr); + } + + /** + * Creates a BLS12Fr instance from a BN254 Fr instance. + * @dev The BN254 field size < BLS12_381, so we cannot overflow here. + * Useful for blob related calculations. + * @param field - a BN254 Fr instance. + * @returns the BLS12Fr instance + */ + static fromBN254Fr(field: Fr) { + return BLS12Fr.fromBuffer(field.toBuffer()); + } + + /** + * Creates a BN254 Fr instance from a BLS12Fr instance. + * @dev The BN254 field size < BLS12_381, so we must check the size here + * Useful for blob related calculations. + * @param field - a BLS12Fr instance. + * @returns the BN254 Fr instance + */ + toBN254Fr() { + if (this.toBigInt() >= Fr.MODULUS) { + throw new Error(`BLS12-381 Fr field ${this} too large to be converted into a BN254 Fr field`); + } + return Fr.fromBuffer(this.toBuffer()); + } + + /** Arithmetic - wrapper around noble curves */ + + add(rhs: BLS12Fr) { + return new BLS12Fr(bls12_381.fields.Fr.add(this.toBigInt(), rhs.toBigInt())); + } + + square() { + return new BLS12Fr(bls12_381.fields.Fr.sqr(this.toBigInt())); + } + + negate() { + return new BLS12Fr(bls12_381.fields.Fr.neg(this.toBigInt())); + } + + sub(rhs: BLS12Fr) { + return new BLS12Fr(bls12_381.fields.Fr.sub(this.toBigInt(), rhs.toBigInt())); + } + + mul(rhs: BLS12Fr) { + return new BLS12Fr(bls12_381.fields.Fr.mul(this.toBigInt(), rhs.toBigInt())); + } + + div(rhs: BLS12Fr) { + return new BLS12Fr(bls12_381.fields.Fr.div(this.toBigInt(), rhs.toBigInt())); + } + + sqrt() { + // The noble library throws when the field does not have a sqrt. + // We would rather have it return null to avoid throwing when (e.g.) checking candidates. + let res; + try { + res = bls12_381.fields.Fr.sqrt(this.toBigInt()); + } catch (error: any) { + if (error.message.includes('Cannot find square root')) { + return null; + } else { + throw error; + } + } + return new BLS12Fr(res); + } + + pow(rhs: bigint) { + return new BLS12Fr(bls12_381.fields.Fr.pow(this.toBigInt(), rhs)); + } + + toJSON() { + return this.toString(); + } + + static get schema() { + return hexSchemaFor(BLS12Fr); + } +} + +// For deserializing JSON. +TypeRegistry.register('BLS12Fr', BLS12Fr); + +/** + * Fq field class. + * @dev This class is used to represent elements of BLS12-381 base field. + */ +export class BLS12Fq extends BLS12Field { + static SIZE_IN_BYTES = bls12_381.fields.Fp.BYTES; + static MODULUS = bls12_381.fields.Fp.ORDER; + static ZERO = new BLS12Fq(0n); + static ONE = new BLS12Fq(1n); + static MAX_FIELD_VALUE = new BLS12Fq(this.MODULUS - 1n); + + constructor(value: number | bigint | Buffer) { + super(value); + } + + [inspect.custom]() { + return `BLS12Fq<${this.toString()}>`; + } + + protected modulus() { + return BLS12Fq.MODULUS; + } + + protected size() { + return BLS12Fq.SIZE_IN_BYTES; + } + + static random() { + return random(BLS12Fq); + } + + static zero() { + return BLS12Fq.ZERO; + } + + static isZero(value: BLS12Fq) { + return value.isZero(); + } + + static fromBuffer(buffer: Buffer | BufferReader) { + return fromBuffer(buffer, BLS12Fq); + } + + /** + * Creates a BLS12Fq instance from a string. + * @param buf - the string to create a BLS12Fq from. + * @returns the BLS12Fq instance + * @remarks if the string only consists of numbers, we assume we are parsing a bigint, + * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding + * as to what is being parsed. + */ + static fromString(buf: string) { + if (buf.match(/^\d+$/) !== null) { + return new BLS12Fq(toBufferBE(BigInt(buf), BLS12Fq.SIZE_IN_BYTES)); + } + if (buf.match(/^0x/i) !== null) { + return fromHexString(buf, BLS12Fq); + } + + throw new Error(`Tried to create a BLS12Fq from an invalid string: ${buf}`); + } + + /** + * Creates a BLS12Fq instance from a hex string. + * @param buf - a hex encoded string. + * @returns the BLS12Fq instance + */ + static fromHexString(buf: string) { + return fromHexString(buf, BLS12Fq); + } + + /** + * Constructs a field from noir BigNum type. + */ + static fromNoirBigNum(bignum: { limbs: string[] }) { + return fromNoirBigNum(bignum, BLS12Fq); + } + + /** Arithmetic - wrapper around noble curves */ + + add(rhs: BLS12Fq) { + return new BLS12Fq(bls12_381.fields.Fp.add(this.toBigInt(), rhs.toBigInt())); + } + + square() { + return new BLS12Fq(bls12_381.fields.Fp.sqr(this.toBigInt())); + } + + negate() { + return new BLS12Fq(bls12_381.fields.Fp.neg(this.toBigInt())); + } + + sub(rhs: BLS12Fq) { + return new BLS12Fq(bls12_381.fields.Fp.sub(this.toBigInt(), rhs.toBigInt())); + } + + mul(rhs: BLS12Fq) { + return new BLS12Fq(bls12_381.fields.Fp.mul(this.toBigInt(), rhs.toBigInt())); + } + + div(rhs: BLS12Fq) { + return new BLS12Fq(bls12_381.fields.Fp.div(this.toBigInt(), rhs.toBigInt())); + } + + sqrt() { + // The noble library throws when the field does not have a sqrt. + // We would rather have it return null to avoid throwing when (e.g.) checking candidates. + let res; + try { + res = bls12_381.fields.Fp.sqrt(this.toBigInt()); + } catch (error: any) { + if (error.message.includes('Cannot find square root')) { + return null; + } else { + throw error; + } + } + return new BLS12Fq(res); + } + + pow(rhs: bigint) { + return new BLS12Fq(bls12_381.fields.Fp.pow(this.toBigInt(), rhs)); + } + + toJSON() { + return this.toString(); + } + + static get schema() { + return hexSchemaFor(BLS12Fq); + } +} + +// For deserializing JSON. +TypeRegistry.register('BLS12Fq', BLS12Fq); diff --git a/yarn-project/foundation/src/fields/bls12_point.test.ts b/yarn-project/foundation/src/fields/bls12_point.test.ts new file mode 100644 index 000000000000..b8b31c254fa1 --- /dev/null +++ b/yarn-project/foundation/src/fields/bls12_point.test.ts @@ -0,0 +1,364 @@ +import { jsonParseWithSchema, jsonStringify } from '../json-rpc/convert.js'; +import { updateInlineTestData } from '../testing/files/index.js'; +import { BLS12Fq, BLS12Fr } from './bls12_fields.js'; +import { BLS12Point } from './bls12_point.js'; + +describe('BLS12Point', () => { + describe('Random', () => { + it('always returns a valid point', () => { + for (let i = 0; i < 100; ++i) { + const point = BLS12Point.random(); + expect(BLS12Point.isOnCurve(point.x, point.y)).toEqual(true); + } + }); + + it('returns different points on each call', () => { + const set = new Set(); + for (let i = 0; i < 100; ++i) { + set.add(BLS12Point.random()); + } + + expect(set.size).toEqual(100); + }); + }); + + describe('Failures', () => { + it('fails with invalid point', () => { + // Input a point not on the curve: + expect(() => new BLS12Point(BLS12Fq.ONE, BLS12Fq.ZERO, false)).toThrow('point is not on the BLS12-381 curve'); + }); + + it('fails with invalid infinity', () => { + // Input a valid point with incorrect isInfinite flag: + expect(() => new BLS12Point(BLS12Fq.ZERO, new BLS12Fq(2n), true)).toThrow('is not infinite'); + }); + }); + + describe('Compression', () => { + it('converts to and from x and sign of y coordinate', () => { + const p = BLS12Point.random(); + + const [x, sign] = p.toXAndSign(); + const p2 = BLS12Point.fromXAndSign(x, sign); + + expect(p).toEqual(p2); + }); + + it('converts G to and from compressed point', () => { + const p = BLS12Point.ONE; + const compressedFirstByte = p.compress()[0].toString(2); + // BLS12-381 compression contains three flags: + // 1: is_compressed (expect true) + const isCompressed = compressedFirstByte[0]; + expect(isCompressed).toEqual('1'); + // 2: is_infinity (expect false for G) + const isInf = compressedFirstByte[1]; + expect(isInf).toEqual('0'); + // 3: is_greater (whether y > (p - 1)/ 2, expect false for G) + const isGreater = compressedFirstByte[2]; + expect(isGreater).toEqual('0'); + const p2 = BLS12Point.decompress(p.compress()); + + expect(p).toEqual(p2); + }); + + it('converts 0 to and from compressed point', () => { + const p = BLS12Point.ZERO; + const compressedFirstByte = p.compress()[0].toString(2); + // 1: is_compressed (expect true) + const isCompressed = compressedFirstByte[0]; + expect(isCompressed).toEqual('1'); + // 2: is_infinity (expect true for 0) + const isInf = compressedFirstByte[1]; + expect(isInf).toEqual('1'); + // 3: is_greater (whether y > (p - 1)/ 2, expect false for 0) + const isGreater = compressedFirstByte[2]; + expect(isGreater).toEqual('0'); + const p2 = BLS12Point.decompress(p.compress()); + + expect(p).toEqual(p2); + expect(p.compress()).toEqual(BLS12Point.COMPRESSED_ZERO); + }); + + it('converts to and from random compressed point', () => { + const p = BLS12Point.random(); + const compressedFirstByte = p.compress()[0].toString(2); + // 1: is_compressed (expect true) + const isCompressed = compressedFirstByte[0]; + expect(isCompressed).toEqual('1'); + // 2: is_infinity + const isInf = compressedFirstByte[1]; + expect(isInf).toEqual(`${+p.isInfinite}`); + // 3: is_greater (whether y > (p - 1)/ 2)) + // equivalently, whether y > -y in the field + const isGreater = compressedFirstByte[2]; + expect(isGreater).toEqual(`${+(p.y.toBigInt() > p.y.negate().toBigInt())}`); + const p2 = BLS12Point.decompress(p.compress()); + + expect(p).toEqual(p2); + }); + + it('converts to and from static compressed point', () => { + const p = new BLS12Point(new BLS12Fq(0n), new BLS12Fq(2n), false); + const compressedFirstByte = p.compress()[0].toString(2); + // 1: is_compressed (expect true) + const isCompressed = compressedFirstByte[0]; + expect(isCompressed).toEqual('1'); + // 2: is_infinity (expect false) + const isInf = compressedFirstByte[1]; + expect(isInf).toEqual('0'); + // 3: is_greater (whether y > (p - 1)/ 2, expect false) + const isGreater = compressedFirstByte[2]; + expect(isGreater).toEqual('0'); + const p2 = BLS12Point.decompress(p.compress()); + + expect(p).toEqual(p2); + }); + + it('fails with invalid compression encoding', () => { + const p = BLS12Point.random(); + const compressed = p.compress(); + let test = Buffer.from(compressed); + // 1: flip is_compressed + test[0] ^= 0b1000_0000; + expect(() => BLS12Point.decompress(test)).toThrow('Invalid compressed G1 point'); + // reset + test = Buffer.from(compressed); + // 2: flip is_infinity + test[0] ^= 0b0100_0000; + expect(() => BLS12Point.decompress(test)).toThrow('Non-empty compressed G1 point'); + }); + + it('fails with invalid point', () => { + // Choose x such that x^3 + 4 = a quadratic non residue + // (=> x is not a valid x-coord) + let x; + while (!x) { + const candidate = BLS12Fq.random(); + const res = candidate.pow(3n).add(new BLS12Fq(4n)); + if (!res.sqrt() && !candidate.isZero()) { + x = candidate; + } + } + const compressed = x.toBuffer(); + // Add the mask with compressed = 1, infinite = 0, sort = 1 + compressed[0] |= 0b1010_0000; + expect(() => BLS12Point.decompress(compressed)).toThrow('point is not on the BLS12-381 curve'); + expect(() => BLS12Point.fromXAndSign(x, true)).toThrow('point is not on the BLS12-381 curve'); + }); + }); + + it('compressed point with greater sign matches Noir', () => { + const p = new BLS12Point( + new BLS12Fq(0x0f2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93en), + new BLS12Fq(0x0f0f2d3e3f3b48eae5fb8b8b1efb31c70b9e60e8fb551976c560b98e9554ab95ce3a9f24892593bdff45e837976d7857n), + false, + ); + expect(p.toXAndSign()[1]).toBe(false); + + const compressed = p.compress().toString('hex'); + expect(compressed).toMatchInlineSnapshot( + `"af2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93e"`, + ); + + const byteArrayString = `[${compressed.match(/.{1,2}/g)!.map(byte => parseInt(byte, 16))}]`; + + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data + updateInlineTestData( + 'noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr', + 'expected_compressed_point_greater', + byteArrayString, + ); + }); + + it('compressed point with not greater sign matches Noir', () => { + const p = new BLS12Point( + new BLS12Fq(0x0f2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93en), + new BLS12Fq(0x0af1e4abfa449daf65201c2b24507b1058d8ea9bf82ff948a1d01912615c4a8e507160da282e6c41bab917c868923254n), + false, + ); + expect(p.toXAndSign()[1]).toBe(true); + + const compressed = p.compress().toString('hex'); + expect(compressed).toMatchInlineSnapshot( + `"8f2f5f62cc6c3ab4c1ac1abcb9da9677e12796a76064f68c0d4f659f25a046a6d42616100269935afcb1b98c85d5e93e"`, + ); + + const byteArrayString = `[${compressed.match(/.{1,2}/g)!.map(byte => parseInt(byte, 16))}]`; + + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data + updateInlineTestData( + 'noir-projects/noir-protocol-circuits/crates/blob/src/blob_batching_public_inputs.nr', + 'expected_compressed_point_not_greater', + byteArrayString, + ); + }); + + describe('Serialization', () => { + it('serializes to and from buffer', () => { + const p = BLS12Point.random(); + const p2 = BLS12Point.fromBuffer(p.toBuffer()); + + expect(p).toEqual(p2); + }); + + it('serializes to and from string', () => { + const p = BLS12Point.random(); + const p2 = BLS12Point.fromString(p.toString()); + + expect(p).toEqual(p2); + }); + + it('serializes to and from fields', () => { + const p = BLS12Point.random(); + const p2 = BLS12Point.fromBLS12FqFields(p.toBLS12FqFields()); + + expect(p).toEqual(p2); + }); + + it('serializes to and from noble/curves projective point', () => { + const p = BLS12Point.random(); + const p2 = BLS12Point.fromNobleProjectivePoint(p.toNobleProjectivePoint()); + + expect(p).toEqual(p2); + }); + + it('serializes from and to JSON', async () => { + const p = BLS12Point.random(); + const p2 = await jsonParseWithSchema(jsonStringify(p), BLS12Point.schema); + expect(p).toEqual(p2); + expect(p2).toBeInstanceOf(BLS12Point); + }); + }); + + describe('Arithmetic', () => { + describe('Addition', () => { + it('Identity', () => { + const p = BLS12Point.random(); + const p2 = p.add(BLS12Point.ZERO); + + expect(p).toEqual(p2); + }); + + it('Inverse', () => { + const p = BLS12Point.random(); + const p2 = p.add(p.negate()); + + expect(BLS12Point.ZERO).toEqual(p2); + }); + }); + + describe('Subtraction', () => { + it('Identity', () => { + const p = BLS12Point.random(); + const p2 = p.sub(BLS12Point.ZERO); + + expect(p).toEqual(p2); + }); + + it('Inverse', () => { + const p = BLS12Point.random(); + const p2 = p.sub(p); + + expect(BLS12Point.ZERO).toEqual(p2); + }); + + it('Performs subtraction correctly', () => { + const p = BLS12Point.random(); + const q = BLS12Point.random(); + const p2 = p.sub(q); + const p3 = p.add(q.negate()); + + expect(p3).toEqual(p2); + }); + }); + + describe('Multiplication', () => { + it('Identity', () => { + const p = BLS12Point.random(); + const p2 = p.mul(BLS12Fr.ONE); + const p2Unsafe = p.mulUnsafe(BLS12Fr.ONE); + + expect(p).toEqual(p2); + expect(p2Unsafe).toEqual(p2); + }); + + it('Zero', () => { + const p = BLS12Point.random(); + const p2 = p.mul(BLS12Fr.ZERO); + const p2Unsafe = p.mulUnsafe(BLS12Fr.ZERO); + + expect(BLS12Point.ZERO).toEqual(p2); + expect(p2Unsafe).toEqual(p2); + }); + + it('Inverse', () => { + const a = BLS12Fr.random(); + const ag = BLS12Point.ONE.mul(a); + const minusag = BLS12Point.ONE.mul(a.negate()); + const minusagUnsafe = BLS12Point.ONE.mulUnsafe(a.negate()); + expect(ag.negate()).toEqual(minusag); + expect(minusagUnsafe).toEqual(minusag); + + const p2 = ag.add(minusag); + expect(BLS12Point.ZERO).toEqual(p2); + }); + + it('Performs multiplication correctly', () => { + const p = BLS12Point.random(); + const a = new BLS12Fr(3); + const p2 = p.mul(a); + const p2Unsafe = p.mulUnsafe(a); + const expected = p.add(p).add(p); + + expect(expected).toEqual(p2); + expect(p2Unsafe).toEqual(p2); + }); + + it('Low Boundary', () => { + // (p - 1) * G = - G + const p = BLS12Point.ONE.mul(BLS12Fr.MAX_FIELD_VALUE); + const pUnsafe = BLS12Point.ONE.mulUnsafe(BLS12Fr.MAX_FIELD_VALUE); + const p2 = BLS12Point.ZERO.sub(BLS12Point.ONE); + + expect(p).toEqual(p2); + expect(pUnsafe).toEqual(p2); + }); + + it('High Boundary', () => { + // b * ( - G ) = ( - b ) * G + const p = BLS12Point.ONE.mul(BLS12Fr.MAX_FIELD_VALUE); + const b = BLS12Fr.random(); + const p2 = p.mul(b); + const p2Unsafe = p.mulUnsafe(b); + const expected = BLS12Point.ONE.mul(b.negate()); + + expect(expected).toEqual(p2); + expect(p2Unsafe).toEqual(p2); + }); + }); + describe('Multiply and Add', () => { + it('Performs simple multiplication and addition correctly', () => { + const p = BLS12Point.random(); + const a = BLS12Fr.random(); + const q = BLS12Point.random(); + const b = BLS12Fr.random(); + const p2 = p.mulAndAddUnsafe(a, b, q); + const expected = p.mul(a).add(q.mul(b)); + + expect(expected).toEqual(p2); + }); + + it('Performs multiplication and addition correctly', () => { + // aP + -aQ = a(P - Q), for P, Q in group + const p = BLS12Point.ONE.mul(BLS12Fr.random()); + const a = BLS12Fr.random(); + const q = BLS12Point.ONE.mul(BLS12Fr.random()); + const p2 = p.mulAndAddUnsafe(a, a.negate(), q); + const expected = p.sub(q).mul(a); + + expect(expected).toEqual(p2); + }); + }); + }); +}); diff --git a/yarn-project/foundation/src/fields/bls12_point.ts b/yarn-project/foundation/src/fields/bls12_point.ts new file mode 100644 index 000000000000..94027f68e1e5 --- /dev/null +++ b/yarn-project/foundation/src/fields/bls12_point.ts @@ -0,0 +1,422 @@ +import type { ProjPointType } from '@noble/curves/abstract/weierstrass'; +/* eslint-disable camelcase */ +import { bls12_381 } from '@noble/curves/bls12-381'; +import { inspect } from 'util'; + +import { toBufferBE } from '../bigint-buffer/index.js'; +import { randomBoolean } from '../crypto/random/index.js'; +import { hexSchemaFor } from '../schemas/utils.js'; +import { BufferReader, serializeToBuffer } from '../serialize/index.js'; +import { bufferToHex, hexToBuffer } from '../string/index.js'; +import { BLS12Fq, BLS12Fr } from './bls12_fields.js'; + +/** + * Represents a Point on an elliptic curve with x and y coordinates. + * The Point class provides methods for creating instances from different input types, + * converting instances to various output formats, and checking the equality of points. + * TODO(#7386): Clean up this class. + */ +export class BLS12Point { + static ZERO = new BLS12Point(BLS12Fq.ZERO, BLS12Fq.ZERO, true); + static ONE = new BLS12Point(new BLS12Fq(bls12_381.G1.CURVE.Gx), new BLS12Fq(bls12_381.G1.CURVE.Gy), false); + static SIZE_IN_BYTES = BLS12Fq.SIZE_IN_BYTES * 2; + static COMPRESSED_SIZE_IN_BYTES = BLS12Fq.SIZE_IN_BYTES; + static COMPRESSED_ZERO = setMask(Buffer.alloc(BLS12Fq.SIZE_IN_BYTES), { infinity: true, compressed: true }); + + constructor( + /** + * The point's x coordinate + */ + public readonly x: BLS12Fq, + /** + * The point's y coordinate + */ + public readonly y: BLS12Fq, + /** + * Whether the point is at infinity + */ + public readonly isInfinite: boolean, + ) { + if (!BLS12Point.isOnCurve(x, y)) { + throw new BLSPointNotOnCurveError(x, y); + } + if (isInfinite && !(x.equals(BLS12Fq.ZERO) && y.equals(BLS12Fq.ZERO))) { + throw new Error(`BLS12-381 G1 point ( ${x.toString()}, ${y.toString()} ) is not infinite.`); + } + } + + toJSON() { + return this.toString(); + } + + [inspect.custom]() { + return `BLS12Point { + x: ${inspect(this.x)}, + y: ${inspect(this.y)}, + isInfinite: ${inspect(this.isInfinite)}, + }`; + } + + static get schema() { + return hexSchemaFor(BLS12Point); + } + + /** + * Generate a random Point instance. + * + * @returns A randomly generated Point instance. + */ + static random() { + while (true) { + try { + return BLS12Point.fromXAndSign(BLS12Fq.random(), randomBoolean()); + } catch (e: any) { + if (!(e instanceof BLSPointNotOnCurveError)) { + throw e; + } + // The random point is not on the curve - we try again + continue; + } + } + } + + /** + * Create a Point instance from a given buffer or BufferReader. + * The input 'buffer' should have exactly 96 bytes representing the x and y coordinates. + * + * @param buffer - The buffer or BufferReader containing the x and y coordinates of the point. + * @returns A Point instance. + */ + static fromBuffer(buffer: Buffer | BufferReader) { + const reader = BufferReader.asReader(buffer); + const [x, y] = [BLS12Fq.fromBuffer(reader), BLS12Fq.fromBuffer(reader)]; + return new this(x, y, x.isZero() && y.isZero()); + } + + /** + * Create a Point instance from a hex-encoded string. + * The input should be prefixed with '0x' or not, and have exactly 128 hex characters representing the x and y coordinates. + * Throws an error if the input length is invalid or coordinate values are out of range. + * + * @param str - The hex-encoded string representing the Point coordinates. + * @returns A Point instance. + */ + static fromString(str: string) { + return this.fromBuffer(hexToBuffer(str)); + } + + /** + * Create a compressed buffer instance from a point. + * @dev NOTE: The compression standard for BLS12-381 differs from BN curves. Instead of + * one is_positive flag, we have three flags to prepend: + * - is_compressed: indicator that the point is compressed + * - is_infinity: whether the point the point at infinity + * - is_greater: only set if is_compressed && !is_infinity && y > (p - 1)/2 + * See https://github.com/arkworks-rs/algebra/blob/master/curves/bls12_381/src/curves/g1.rs -> serialize_with_mode() -> encoding + * and noble-curves/src/bls12-381.ts -> setMask() + * @dev Most of the logic below is taken from noble-curves/src/bls12-381.ts -> toBytes() + * @param point A BLS12Point instance. + * @returns The buffer containing the x coordinate and the flags of the y coordinate. + */ + compress(): Buffer { + if (this.isZero()) { + return BLS12Point.COMPRESSED_ZERO; + } + const isGreater = this.y.isNegative(); + return setMask(toBufferBE(this.x.toBigInt(), BLS12Fq.SIZE_IN_BYTES), { compressed: true, sort: isGreater }); + } + + /** + * Create a Point instance from a compressed buffer. + * @dev See compress() above for compression encoding for BLS12-381. + * @dev Most of the logic below is taken from noble-curves/src/bls12-381.ts -> fromBytes() + * @param buffer - The buffer containing the x coordinate and the flags of the y coordinate. + * @returns A BLS12Point instance. + */ + static decompress(buffer: Buffer): BLS12Point { + const { compressed, infinity, sort, value: decompressed } = parseMask(buffer); + if (decompressed.length === BLS12Fq.SIZE_IN_BYTES && compressed) { + const x = new BLS12Fq(decompressed); + if (infinity) { + if (!x.isZero()) { + throw new Error('Non-empty compressed G1 point at infinity'); + } + return new BLS12Point(x, BLS12Fq.ZERO, true); + } + let y = this.YFromX(x); + if (!y) { + throw new BLSPointNotOnCurveError(x); + } + if (y.isNegative() !== sort) { + y = y.negate(); + } + return new BLS12Point(x, y, infinity); + } else { + throw new Error('Invalid compressed G1 point of BLS12-381'); + } + } + + /** + * Creates a point from an array of 2 fields. + * @returns The point + */ + static fromBLS12FqFields(fields: BLS12Fq[]) { + return new this(fields[0], fields[1], !fields[2].isEmpty()); + } + + /** + * Creates a point from @noble/curves projective point definition. + * @returns The point + */ + static fromNobleProjectivePoint(point: ProjPointType) { + const affine = point.toAffine(); + return new BLS12Point( + new BLS12Fq(affine.x), + new BLS12Fq(affine.y), + point.equals(bls12_381.G1.ProjectivePoint.ZERO), + ); + } + + /** + * Uses the x coordinate and isPositive flag (+/-) to reconstruct the point. + * @param x - The x coordinate of the point + * @param sign - The "sign" of the y coordinate - note that this is not a sign as is known in integer arithmetic. + * Instead it is a boolean flag that determines whether the y coordinate is <= (Fr.MODULUS - 1) / 2 + * @returns The point as an array of 2 fields + */ + static fromXAndSign(x: BLS12Fq, sign: boolean) { + const y = BLS12Point.YFromX(x); + if (y == null) { + throw new BLSPointNotOnCurveError(x); + } + + const yPositiveBigInt = y.isNegative() ? BLS12Fq.MODULUS - y.toBigInt() : y.toBigInt(); + const yNegativeBigInt = BLS12Fq.MODULUS - yPositiveBigInt; + + // Choose the positive or negative root based on isPositive + const finalY = sign ? new BLS12Fq(yPositiveBigInt) : new BLS12Fq(yNegativeBigInt); + + // Create and return the new Point + return new this(x, finalY, false); + } + + /** + * @param x - The x coordinate of the point + * @returns y^2 such that y^2 = x^3 + 4 + */ + static YSquaredFromX(x: BLS12Fq): BLS12Fq { + return new BLS12Fq(bls12_381.G1.weierstrassEquation(x.toBigInt())); + } + + /** + * @param x - The x coordinate of the point + * @returns The y coordinate of the point, if it exists on BLS12-381 + */ + static YFromX(x: BLS12Fq): BLS12Fq | null { + const ySquared = this.YSquaredFromX(x); + // y is then simply the square root. Note however that not all square roots exist in the field: if sqrt returns null + // then there is no point in the curve with this x coordinate. + return ySquared.sqrt(); + } + + /** + * @param x - The x coordinate of the point + * @param y - The y coordinate of the point + * @returns Whether the point exists on BLS12-381 + */ + static isOnCurve(x: BLS12Fq, y: BLS12Fq) { + if (x.isZero() && y.isZero()) { + // Representation of inf point + return true; + } + + // The BLS12-381 equation is y^2 = x^3 + 4. We could use `YFromX` and then compare to `this.y`, but this would + // involve computing the square root of y, of which there are two possible valid values. This method is also faster. + const lhs = y.square(); + const rhs = this.YSquaredFromX(x); + return lhs.equals(rhs); + } + + /** + * Returns the contents of the point as an array of 2 fields. + * @returns The point as an array of 2 fields + */ + toBLS12FqFields() { + return [this.x, this.y, new BLS12Fq(this.isInfinite ? 1 : 0)]; + } + + /** + * Returns the x coordinate and the sign of the y coordinate. + * @dev The y sign can be determined by checking if the y coordinate is greater than half of the modulus. + * @returns The x coordinate and the sign of the y coordinate. + */ + toXAndSign(): [BLS12Fq, boolean] { + return [this.x, !this.y.isNegative()]; + } + + /** + * Returns the contents of the point as BigInts. + * @returns The point as BigInts + */ + toBigInts() { + return { + x: this.x.toBigInt(), + y: this.y.toBigInt(), + isInfinite: this.isInfinite ? 1n : 0n, + }; + } + + /** + * Converts the Point instance to a Buffer representation of the coordinates. + * @returns A Buffer representation of the Point instance. + * @dev Note that toBuffer does not include the isInfinite flag and other serialization methods do (e.g. toBigInts). + */ + toBuffer() { + const buf = serializeToBuffer([this.x, this.y]); + if (buf.length !== BLS12Point.SIZE_IN_BYTES) { + throw new Error(`Invalid buffer length for Point: ${buf.length}`); + } + return buf; + } + + /** + * Convert the Point instance to a hexadecimal string representation. + * The output string is prefixed with '0x' and consists of exactly 128 hex characters, + * representing the concatenated x and y coordinates of the point. + * + * @returns A hex-encoded string representing the Point instance. + */ + toString() { + return bufferToHex(this.toBuffer()); + } + + /** + * Check if two Point instances are equal by comparing their buffer values. + * Returns true if the buffer values are the same, and false otherwise. + * + * @param rhs - The Point instance to compare with the current instance. + * @returns A boolean indicating whether the two Point instances are equal. + */ + equals(rhs: BLS12Point) { + return this.x.equals(rhs.x) && this.y.equals(rhs.y); + } + + /** + * Check whether the point is zero. + */ + isZero() { + return this.x.isZero() && this.y.isZero(); + } + + /** + * Check if this is point at infinity. + * Check this is consistent with how bb is encoding the point at infinity + */ + public get inf() { + return this.isInfinite; + } + + /** Arithmetic - wrapper around noble curves */ + + toNobleProjectivePoint() { + return bls12_381.G1.ProjectivePoint.fromAffine(this.toBigInts()); + } + + add(rhs: BLS12Point) { + return BLS12Point.fromNobleProjectivePoint(this.toNobleProjectivePoint().add(rhs.toNobleProjectivePoint())); + } + + negate() { + return new BLS12Point(this.x, this.y.negate(), this.isInfinite); + } + + sub(rhs: BLS12Point) { + return BLS12Point.fromNobleProjectivePoint(this.toNobleProjectivePoint().subtract(rhs.toNobleProjectivePoint())); + } + + /** + * @dev From noble curves package: + * Constant time multiplication. Uses wNAF method. Windowed method may be 10% faster, + * but takes 2x longer to generate and consumes 2x memory. + * Uses precomputes when available, uses endomorphism for Koblitz curves. + * @param scalar by which the point would be multiplied + * @returns New point + */ + mul(rhs: BLS12Fr) { + // Note: noble curves throws on 0 + if (rhs.isZero()) { + return BLS12Point.ZERO; + } + return BLS12Point.fromNobleProjectivePoint(this.toNobleProjectivePoint().multiply(rhs.toBigInt())); + } + + /** + * @dev From noble curves package: + * Non-constant-time multiplication. Uses double-and-add algorithm. + * It's faster, but should only be used when you don't care about an exposed private key e.g. sig verification, which works over *public* keys. + * @param scalar by which the point would be multiplied + * @returns New point + */ + mulUnsafe(rhs: BLS12Fr) { + return BLS12Point.fromNobleProjectivePoint(this.toNobleProjectivePoint().multiplyUnsafe(rhs.toBigInt())); + } + + /** + * @dev From noble curves package: + * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly. + * Not using Strauss-Shamir trick: precomputation tables are faster. The trick could be useful if both P and Q are not G (not in our case). + * @returns affine point + */ + mulAndAddUnsafe(a: BLS12Fr, b: BLS12Fr, Q: BLS12Point) { + const res = this.toNobleProjectivePoint().multiplyAndAddUnsafe( + Q.toNobleProjectivePoint(), + a.toBigInt(), + b.toBigInt(), + ); + return res ? BLS12Point.fromNobleProjectivePoint(res) : BLS12Point.ZERO; + } +} + +export class BLSPointNotOnCurveError extends Error { + constructor(x: BLS12Fq, y?: BLS12Fq) { + super('The given G1 point is not on the BLS12-381 curve: (' + x.toString() + ', ' + (y ? y.toString() : '') + ')'); + this.name = 'NotOnCurveError'; + } +} + +/** + * Lifted from noble curves bls12_381 since it's not exposed. Sets the flags + * for BLS12-381 point compression. + * @dev 'sort' refers to 'is_greater' i.e. y > (p - 1)/2 + */ +function setMask(bytes: Buffer, mask: { compressed?: boolean; infinity?: boolean; sort?: boolean }) { + if (bytes[0] & 0b1110_0000) { + throw new Error('setMask: non-empty mask'); + } + if (mask.compressed) { + bytes[0] |= 0b1000_0000; + } + if (mask.infinity) { + bytes[0] |= 0b0100_0000; + } + if (mask.sort) { + bytes[0] |= 0b0010_0000; + } + return bytes; +} + +/** + * Lifted from noble curves bls12_381 since it's not exposed. Reads the flags + * for BLS12-381 point compression. + * @dev 'sort' refers to 'is_greater' i.e. y > (p - 1)/2 + */ +function parseMask(bytes: Buffer) { + // Copy, so we can remove mask data without affecting input bytes. + const value = Buffer.from(bytes); + const mask = value[0] & 0b1110_0000; + const compressed = !!((mask >> 7) & 1); // compression bit (0b1000_0000) + const infinity = !!((mask >> 6) & 1); // point at infinity bit (0b0100_0000) + const sort = !!((mask >> 5) & 1); // sort bit (0b0010_0000) + value[0] &= 0b0001_1111; // clear mask (zero first 3 bits) + return { compressed, infinity, sort, value }; +} diff --git a/yarn-project/foundation/src/fields/index.ts b/yarn-project/foundation/src/fields/index.ts index aa4e441f34fb..c8d41ab65399 100644 --- a/yarn-project/foundation/src/fields/index.ts +++ b/yarn-project/foundation/src/fields/index.ts @@ -1,3 +1,5 @@ export * from './fields.js'; export * from './point.js'; export * from './coordinate.js'; +export * from './bls12_fields.js'; +export * from './bls12_point.js'; diff --git a/yarn-project/foundation/src/fields/point.ts b/yarn-project/foundation/src/fields/point.ts index d09522cad73c..e9a85d6ab24d 100644 --- a/yarn-project/foundation/src/fields/point.ts +++ b/yarn-project/foundation/src/fields/point.ts @@ -188,7 +188,7 @@ export class Point { */ toBuffer() { if (this.isInfinite) { - throw new Error('Cannot serialize infinite point without isInfinite flag'); + throw new Error('Cannot serialize infinite point with isInfinite flag'); } const buf = serializeToBuffer([this.x, this.y]); if (buf.length !== Point.SIZE_IN_BYTES) { diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index a4303c1bceef..77149e65a03b 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -1,9 +1,17 @@ -import { BlobPublicInputs, BlockBlobPublicInputs, Poseidon2Sponge, SpongeBlob } from '@aztec/blob-lib'; +import { + BlobAccumulatorPublicInputs, + BlockBlobPublicInputs, + FinalBlobAccumulatorPublicInputs, + FinalBlobBatchingChallenges, + Poseidon2Sponge, + SpongeBlob, +} from '@aztec/blob-lib'; import { type AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED, AZTEC_MAX_EPOCH_DURATION, - BLOBS_PER_BLOCK, + BLS12_FQ_LIMBS, + BLS12_FR_LIMBS, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, HONK_VERIFICATION_KEY_LENGTH_IN_FIELDS, type NESTED_RECURSIVE_PROOF_LENGTH, @@ -12,9 +20,8 @@ import { ROLLUP_HONK_VERIFICATION_KEY_LENGTH_IN_FIELDS, type TUBE_PROOF_LENGTH, } from '@aztec/constants'; -import { toHex } from '@aztec/foundation/bigint-buffer'; -import { Fr } from '@aztec/foundation/fields'; -import { mapTuple } from '@aztec/foundation/serialize'; +import { BLS12Fq, BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; +import { assertLength, mapTuple } from '@aztec/foundation/serialize'; import type { MembershipWitness } from '@aztec/foundation/trees'; import { type AvmAccumulatedData, @@ -64,11 +71,12 @@ import type { AvmAccumulatedData as AvmAccumulatedDataNoir, AvmCircuitPublicInputs as AvmCircuitPublicInputsNoir, AvmProofData as AvmProofDataNoir, + BLS12_381_Fq as BLS12FqNoir, + BLS12_381_Fr as BLS12FrNoir, BaseOrMergeRollupPublicInputs as BaseOrMergeRollupPublicInputsNoir, BaseParityInputs as BaseParityInputsNoir, - BLS12_381_Fr as BigNum, - BlobCommitment as BlobCommitmentNoir, - BlobPublicInputs as BlobPublicInputsNoir, + BigCurve, + BlobAccumulatorPublicInputs as BlobAccumulatorPublicInputsNoir, BlockBlobPublicInputs as BlockBlobPublicInputsNoir, BlockConstantData as BlockConstantDataNoir, BlockMergeRollupInputs as BlockMergeRollupInputsNoir, @@ -79,6 +87,8 @@ import type { EmptyBlockRootRollupInputs as EmptyBlockRootRollupInputsNoir, EpochConstantData as EpochConstantDataNoir, FeeRecipient as FeeRecipientNoir, + FinalBlobAccumulatorPublicInputs as FinalBlobAccumulatorPublicInputsNoir, + FinalBlobBatchingChallenges as FinalBlobBatchingChallengesNoir, MergeRollupInputs as MergeRollupInputsNoir, Field as NoirField, ParityPublicInputs as ParityPublicInputsNoir, @@ -153,25 +163,46 @@ import { /* eslint-disable camelcase */ /** - * Maps a BigNum coming to/from noir. - * TODO(): Is BigInt the best way to represent this? * @param number - The BigNum representing the number. * @returns The number */ -export function mapBLS12BigNumFromNoir(bignum: BigNum): bigint { - // TODO(Miranda): there's gotta be a better way to convert this - const paddedLimbs = [ - `0x` + bignum.limbs[2].substring(2).padStart(4, '0'), - bignum.limbs[1].substring(2).padStart(30, '0'), - bignum.limbs[0].substring(2).padStart(30, '0'), - ]; - return BigInt(paddedLimbs[0].concat(paddedLimbs[1], paddedLimbs[2])); +export function mapBLS12FrFromNoir(bignum: BLS12FrNoir): BLS12Fr { + return BLS12Fr.fromNoirBigNum(bignum); +} + +export function mapBLS12FrToNoir(number: BLS12Fr): BLS12FrNoir { + return { + limbs: assertLength(number.toNoirBigNum().limbs, BLS12_FR_LIMBS), + }; +} + +/** + * @param number - The BigNum representing the number. + * @returns The number + */ +export function mapBLS12FqFromNoir(bignum: BLS12FqNoir): BLS12Fq { + return BLS12Fq.fromNoirBigNum(bignum); +} + +export function mapBLS12FqToNoir(number: BLS12Fq): BLS12FqNoir { + return { + limbs: assertLength(number.toNoirBigNum().limbs, BLS12_FQ_LIMBS), + }; +} + +/** + * @param number - The BigCurve representing the point. + * @returns The point + */ +export function mapBLS12PointFromNoir(bigcurve: BigCurve): BLS12Point { + return new BLS12Point(mapBLS12FqFromNoir(bigcurve.x), mapBLS12FqFromNoir(bigcurve.y), bigcurve.is_infinity); } -export function mapBLS12BigNumToNoir(number: bigint): BigNum { - const hex = toHex(number, true); +export function mapBLS12PointToNoir(point: BLS12Point): BigCurve { return { - limbs: ['0x' + hex.substring(36), '0x' + hex.substring(6, 36), hex.substring(0, 6)], + x: mapBLS12FqToNoir(point.x), + y: mapBLS12FqToNoir(point.y), + is_infinity: point.isInfinite, }; } @@ -241,40 +272,85 @@ export function mapSpongeBlobFromNoir(spongeBlob: SpongeBlobNoir): SpongeBlob { } /** - * Maps blob commitment to noir. - * @param commitment - The stdlib commitment. - * @returns The noir commitment. + * Maps blob challenges to noir. + * @param challenges - The stdlib challenges. + * @returns The noir challenges. */ -export function mapBlobCommitmentToNoir(commitment: [Fr, Fr]): BlobCommitmentNoir { +export function mapFinalBlobBatchingChallengesToNoir( + challenges: FinalBlobBatchingChallenges, +): FinalBlobBatchingChallengesNoir { return { - inner: mapTuple(commitment, mapFieldToNoir), + z: mapFieldToNoir(challenges.z), + gamma: mapBLS12FrToNoir(challenges.gamma), }; } /** - * Maps blob public inputs to noir. - * @param blobPublicInputs - The stdlib blob public inputs. - * @returns The noir blob public inputs. + * Maps blob challenges from noir. + * @param challenges - The noir challenges. + * @returns The stdlib challenges. */ -export function mapBlobPublicInputsToNoir(blobPublicInputs: BlobPublicInputs): BlobPublicInputsNoir { - return { - z: mapFieldToNoir(blobPublicInputs.z), - y: mapBLS12BigNumToNoir(blobPublicInputs.y), +export function mapFinalBlobBatchingChallengesFromNoir( + challenges: FinalBlobBatchingChallengesNoir, +): FinalBlobBatchingChallenges { + return new FinalBlobBatchingChallenges(mapFieldFromNoir(challenges.z), mapBLS12FrFromNoir(challenges.gamma)); +} - kzg_commitment: mapBlobCommitmentToNoir(blobPublicInputs.kzgCommitment), +/** + * Maps blob accumulator public inputs to noir. + * @param blobPublicInputs - The stdlib blob accumulator inputs. + * @returns The noir blob accumulator public inputs. + */ +export function mapBlobAccumulatorPublicInputsToNoir( + blobPublicInputs: BlobAccumulatorPublicInputs, +): BlobAccumulatorPublicInputsNoir { + return { + blob_commitments_hash_acc: mapFieldToNoir(blobPublicInputs.blobCommitmentsHashAcc), + z_acc: mapFieldToNoir(blobPublicInputs.zAcc), + y_acc: mapBLS12FrToNoir(blobPublicInputs.yAcc), + c_acc: mapBLS12PointToNoir(blobPublicInputs.cAcc), + gamma_acc: mapFieldToNoir(blobPublicInputs.gammaAcc), + gamma_pow_acc: mapBLS12FrToNoir(blobPublicInputs.gammaPowAcc), }; } /** - * Maps blob public inputs from noir. - * @param blobPublicInputs - The noir blob public inputs. - * @returns The stdlib blob public inputs. + * Maps blob accumulator public inputs from noir. + * @param blobPublicInputs - The noir blob accumulator public inputs. + * @returns The stdlib blob accumulator inputs. + */ +export function mapBlobAccumulatorPublicInputsFromNoir( + blobPublicInputs: BlobAccumulatorPublicInputsNoir, +): BlobAccumulatorPublicInputs { + return new BlobAccumulatorPublicInputs( + mapFieldFromNoir(blobPublicInputs.blob_commitments_hash_acc), + mapFieldFromNoir(blobPublicInputs.z_acc), + mapBLS12FrFromNoir(blobPublicInputs.y_acc), + mapBLS12PointFromNoir(blobPublicInputs.c_acc), + mapFieldFromNoir(blobPublicInputs.gamma_acc), + mapBLS12FrFromNoir(blobPublicInputs.gamma_pow_acc), + ); +} + +/** + * Maps final blob accumulator public inputs from noir. + * @param finalBlobPublicInputs - The noir blob accumulator public inputs. + * @returns The stdlib final blob accumulator inputs. */ -export function mapBlobPublicInputsFromNoir(blobPublicInputs: BlobPublicInputsNoir): BlobPublicInputs { - return new BlobPublicInputs( - mapFieldFromNoir(blobPublicInputs.z), - mapBLS12BigNumFromNoir(blobPublicInputs.y), - mapTupleFromNoir(blobPublicInputs.kzg_commitment.inner, 2, mapFieldFromNoir), +export function mapFinalBlobAccumulatorPublicInputsFromNoir( + finalBlobPublicInputs: FinalBlobAccumulatorPublicInputsNoir, +): FinalBlobAccumulatorPublicInputs { + return new FinalBlobAccumulatorPublicInputs( + mapFieldFromNoir(finalBlobPublicInputs.blob_commitments_hash), + mapFieldFromNoir(finalBlobPublicInputs.z), + mapBLS12FrFromNoir(finalBlobPublicInputs.y), + // TODO(MW): add conversion when public inputs final + BLS12Point.decompress( + Buffer.concat([ + mapFieldFromNoir(finalBlobPublicInputs.c[0]).toBuffer().subarray(1), + mapFieldFromNoir(finalBlobPublicInputs.c[1]).toBuffer().subarray(-17), + ]), + ), ); } @@ -287,7 +363,9 @@ export function mapBlockBlobPublicInputsToNoir( blockBlobPublicInputs: BlockBlobPublicInputs, ): BlockBlobPublicInputsNoir { return { - inner: mapTuple(blockBlobPublicInputs.inner, mapBlobPublicInputsToNoir), + start_blob_accumulator: mapBlobAccumulatorPublicInputsToNoir(blockBlobPublicInputs.startBlobAccumulator), + end_blob_accumulator: mapBlobAccumulatorPublicInputsToNoir(blockBlobPublicInputs.endBlobAccumulator), + final_blob_challenges: mapFinalBlobBatchingChallengesToNoir(blockBlobPublicInputs.finalBlobChallenges), }; } @@ -300,7 +378,9 @@ export function mapBlockBlobPublicInputsFromNoir( blockBlobPublicInputs: BlockBlobPublicInputsNoir, ): BlockBlobPublicInputs { return new BlockBlobPublicInputs( - mapTupleFromNoir(blockBlobPublicInputs.inner, BLOBS_PER_BLOCK, mapBlobPublicInputsFromNoir), + mapBlobAccumulatorPublicInputsFromNoir(blockBlobPublicInputs.start_blob_accumulator), + mapBlobAccumulatorPublicInputsFromNoir(blockBlobPublicInputs.end_blob_accumulator), + mapFinalBlobBatchingChallengesFromNoir(blockBlobPublicInputs.final_blob_challenges), ); } @@ -372,7 +452,7 @@ export function mapBlockRootOrBlockMergePublicInputsToNoir( out_hash: mapFieldToNoir(blockRootOrBlockMergePublicInputs.outHash), proposed_block_header_hashes: mapTuple(blockRootOrBlockMergePublicInputs.proposedBlockHeaderHashes, mapFieldToNoir), fees: mapTuple(blockRootOrBlockMergePublicInputs.fees, mapFeeRecipientToNoir), - blob_public_inputs: mapTuple(blockRootOrBlockMergePublicInputs.blobPublicInputs, mapBlockBlobPublicInputsToNoir), + blob_public_inputs: mapBlockBlobPublicInputsToNoir(blockRootOrBlockMergePublicInputs.blobPublicInputs), }; } @@ -422,11 +502,7 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), mapFieldFromNoir(rootRollupPublicInputs.prover_id), - mapTupleFromNoir( - rootRollupPublicInputs.blob_public_inputs, - AZTEC_MAX_EPOCH_DURATION, - mapBlockBlobPublicInputsFromNoir, - ), + mapFinalBlobAccumulatorPublicInputsFromNoir(rootRollupPublicInputs.blob_public_inputs), ); } @@ -619,11 +695,7 @@ export function mapBlockRootOrBlockMergePublicInputsFromNoir( mapFieldFromNoir, ), mapTupleFromNoir(blockRootOrBlockMergePublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), - mapTupleFromNoir( - blockRootOrBlockMergePublicInputs.blob_public_inputs, - AZTEC_MAX_EPOCH_DURATION, - mapBlockBlobPublicInputsFromNoir, - ), + mapBlockBlobPublicInputsFromNoir(blockRootOrBlockMergePublicInputs.blob_public_inputs), ); } @@ -677,6 +749,8 @@ function mapBlockRootRollupDataToNoir(data: BlockRootRollupData): BlockRootRollu previous_archive_sibling_path: mapTuple(data.previousArchiveSiblingPath, mapFieldToNoir), new_archive_sibling_path: mapTuple(data.newArchiveSiblingPath, mapFieldToNoir), previous_block_header: mapHeaderToNoir(data.previousBlockHeader), + start_blob_accumulator: mapBlobAccumulatorPublicInputsToNoir(data.startBlobAccumulator), + final_blob_challenges: mapFinalBlobBatchingChallengesToNoir(data.finalBlobChallenges), prover_id: mapFieldToNoir(data.proverId), }; } @@ -685,7 +759,7 @@ function mapBlockRootRollupBlobDataToNoir(data: BlockRootRollupBlobData): BlockR return { // @ts-expect-error - below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' blobs_fields: mapTuple(data.blobFields, mapFieldToNoir), - blob_commitments: mapTuple(data.blobCommitments, mapBlobCommitmentToNoir), + blob_commitments: mapTuple(data.blobCommitments, mapBLS12PointToNoir), blobs_hash: mapFieldToNoir(data.blobsHash), }; } diff --git a/yarn-project/noir-protocol-circuits-types/src/utils/server/foreign_call_handler.ts b/yarn-project/noir-protocol-circuits-types/src/utils/server/foreign_call_handler.ts index e34122a56045..36ed54f2946a 100644 --- a/yarn-project/noir-protocol-circuits-types/src/utils/server/foreign_call_handler.ts +++ b/yarn-project/noir-protocol-circuits-types/src/utils/server/foreign_call_handler.ts @@ -1,5 +1,14 @@ -import { Blob, BlockBlobPublicInputs, SpongeBlob } from '@aztec/blob-lib'; -import { Fr } from '@aztec/foundation/fields'; +import { Blob, BlobAccumulatorPublicInputs, FinalBlobBatchingChallenges, SpongeBlob } from '@aztec/blob-lib'; +import { + BLOBS_PER_BLOCK, + BLOB_ACCUMULATOR_PUBLIC_INPUTS, + BLS12_FQ_LIMBS, + BLS12_FR_LIMBS, + BLS12_POINT, + FIELDS_PER_BLOB, + SPONGE_BLOB_LENGTH, +} from '@aztec/constants'; +import { BLS12Fq, BLS12Fr, BLS12Point, Fr } from '@aztec/foundation/fields'; import { applyStringFormatting, createLogger } from '@aztec/foundation/log'; import type { ForeignCallInput, ForeignCallOutput } from '@aztec/noir-acvm_js'; @@ -16,31 +25,62 @@ export async function foreignCallHandler(name: string, args: ForeignCallInput[]) const fieldsFr: Fr[] = fields.map((field: string) => Fr.fromString(field)); log.verbose('debug_log ' + applyStringFormatting(msg, fieldsFr)); } else if (name === 'evaluateBlobs') { + // Args are nested arrays with a max depth of one. If structs change using these nested arrays will break => + // we flatten all inputs and use constants. + const flattenedArgs = args.flat(); + let offset = 0; // TODO(#10323): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). // The use of bignum adds a lot of unconstrained code which overloads limits when simulating. // If/when simulation times of unconstrained are improved, remove this. // Create and evaluate our blobs: - const paddedBlobsAsFr: Fr[] = args[0].map((field: string) => Fr.fromString(field)); - const kzgCommitments = args[1].map((field: string) => Fr.fromString(field)); + // - args[0] is an array of raw blob fields: + const paddedBlobsAsFr: Fr[] = flattenedArgs + .slice(offset, (offset += FIELDS_PER_BLOB * BLOBS_PER_BLOCK)) + .map((field: string) => Fr.fromString(field)); + // - args[1] is an array of BLOBS_PER_BLOCK commitments, which are BLS12_381 points: {x: bignum, y: bignum, is_inf: bool} + // TODO(#14646): Omit/compress some fields to reduce number of public inputs & outputs here? + const kzgCommitmentsFields = flattenedArgs.slice(offset, (offset += BLS12_POINT * BLOBS_PER_BLOCK)); + const kzgCommitments: BLS12Point[] = []; + for (let i = 0; i < kzgCommitmentsFields.length; i += BLS12_POINT) { + const x = BLS12Fq.fromNoirBigNum({ limbs: kzgCommitmentsFields.slice(i, i + BLS12_FQ_LIMBS) }); + const y = BLS12Fq.fromNoirBigNum({ + limbs: kzgCommitmentsFields.slice(i + BLS12_FQ_LIMBS, i + BLS12_FQ_LIMBS * 2), + }); + const isInfinite = Fr.fromString(kzgCommitmentsFields[i + BLS12_FQ_LIMBS * 2]).toBool(); + kzgCommitments.push(new BLS12Point(x, y, isInfinite)); + } + + // - args[2] is the spongeblob accumulator const spongeBlob = SpongeBlob.fromFields( - args - .slice(2) + flattenedArgs + .slice(offset, (offset += SPONGE_BLOB_LENGTH)) .flat() .map((field: string) => Fr.fromString(field)), ); + // - args[3] is the challenges struct, containing z (BNFr) and gamma (BLS12Fr) + // TODO(#14646): Omit/compress some fields to reduce number of public inputs & outputs here? + const finalBlobChallenges = new FinalBlobBatchingChallenges( + Fr.fromString(flattenedArgs[offset++]), + BLS12Fr.fromNoirBigNum({ limbs: flattenedArgs.slice(offset, (offset += BLS12_FR_LIMBS)) }), + ); + + // - args[4] is the start blob batching accumulator + // TODO(#14646): Omit/compress some fields to reduce number of public inputs & outputs here? + const startBlobAccumulatorFields = flattenedArgs.slice(offset, (offset += BLOB_ACCUMULATOR_PUBLIC_INPUTS)); + const startBlobAccumulator = BlobAccumulatorPublicInputs.fromFields(startBlobAccumulatorFields.map(Fr.fromString)); + const blobsAsFr = paddedBlobsAsFr.slice(0, spongeBlob.expectedFields); // NB: the above used to be: // const blobsAsFr: Fr[] = args[0].map((field: string) => Fr.fromString(field)).filter(field => !field.isZero()); // ...but we now have private logs which have a fixed number of fields and may have 0 values. // TODO(Miranda): trim 0 fields from private logs const blobs = await Blob.getBlobs(blobsAsFr); - const blobPublicInputs = BlockBlobPublicInputs.fromBlobs(blobs); // Checks on injected values: const hash = await spongeBlob.squeeze(); blobs.forEach((blob, i) => { - const injected = kzgCommitments.slice(2 * i, 2 * i + 2); - const calculated = blob.commitmentToFields(); - if (!calculated[0].equals(injected[0]) || !calculated[1].equals(injected[1])) { + const injected = kzgCommitments[i]; + const calculated = BLS12Point.decompress(blob.commitment); + if (!calculated.equals(injected)) { throw new Error(`Blob commitment mismatch. Real: ${calculated}, Injected: ${injected}`); } if (!hash.equals(blob.fieldsHash)) { @@ -49,7 +89,8 @@ export async function foreignCallHandler(name: string, args: ForeignCallInput[]) ); } }); - return Promise.resolve([blobPublicInputs.toFields().map(field => field.toString())]); + const endBlobAccumulator = await startBlobAccumulator.accumulateBlobs(blobs, finalBlobChallenges); + return Promise.resolve([endBlobAccumulator.toFields().map(field => field.toString())]); } else if (name === 'noOp') { // Workaround for compiler issues where data is deleted because it's "unused" } else { diff --git a/yarn-project/prover-client/src/block-factory/light.test.ts b/yarn-project/prover-client/src/block-factory/light.test.ts index 5e334e8193dd..6ae5dd2ae9e7 100644 --- a/yarn-project/prover-client/src/block-factory/light.test.ts +++ b/yarn-project/prover-client/src/block-factory/light.test.ts @@ -1,5 +1,5 @@ import { TestCircuitProver } from '@aztec/bb-prover'; -import { Blob, SpongeBlob } from '@aztec/blob-lib'; +import { BatchedBlob, Blob, SpongeBlob } from '@aztec/blob-lib'; import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, @@ -12,8 +12,7 @@ import { TUBE_VK_INDEX, } from '@aztec/constants'; import { padArrayEnd, times, timesParallel } from '@aztec/foundation/collection'; -import { sha256ToField } from '@aztec/foundation/crypto'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Point, Fr } from '@aztec/foundation/fields'; import { type Tuple, assertLength } from '@aztec/foundation/serialize'; import { ProtocolCircuitVkIndexes, ProtocolCircuitVks, TubeVk } from '@aztec/noir-protocol-circuits-types/server/vks'; import type { ProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types'; @@ -55,6 +54,7 @@ import { jest } from '@jest/globals'; import { buildHeaderFromCircuitOutputs, + getBlobsHashFromBlobs, getLastSiblingPath, getRootTreeSiblingPath, getSubtreeSiblingPath, @@ -225,6 +225,8 @@ describe('LightBlockBuilder', () => { return block.header; }; + let blobsHash: Buffer; + // Builds the block header using circuit outputs // Requires a callback for manually assembling the merge rollup tree const buildExpectedHeader = async ( @@ -251,7 +253,13 @@ describe('LightBlockBuilder', () => { ); const endState = new StateReference(messageTreeSnapshot, partialState); - const expectedHeader = buildHeaderFromCircuitOutputs(previousRollups, parityOutput, rootOutput, endState); + const expectedHeader = buildHeaderFromCircuitOutputs( + previousRollups, + parityOutput, + rootOutput, + blobsHash, + endState, + ); // Ensure that the expected mana used is the sum of the txs' gas used const expectedManaUsed = txs.reduce((acc, tx) => acc + tx.gasUsed.totalGas.l2Gas, 0); @@ -350,7 +358,8 @@ describe('LightBlockBuilder', () => { const newArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, expectsFork); const blobFields = txs.map(tx => tx.txEffect.toBlobFields()).flat(); const blobs = await Blob.getBlobs(blobFields); - const blobsHash = sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())); + const startBlobAccumulator = await BatchedBlob.newAccumulator(blobs); + blobsHash = getBlobsHashFromBlobs(blobs); const rootParityVk = getVkData('RootParityArtifact'); const rootParityInput = new RootParityInput( @@ -368,6 +377,8 @@ describe('LightBlockBuilder', () => { previousArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, + startBlobAccumulator: startBlobAccumulator.toBlobAccumulatorPublicInputs(), + finalBlobChallenges: startBlobAccumulator.finalBlobChallenges, proverId: Fr.ZERO, }); @@ -389,11 +400,11 @@ describe('LightBlockBuilder', () => { const blobData = BlockRootRollupBlobData.from({ blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), blobCommitments: padArrayEnd( - blobs.map(b => b.commitmentToFields()), - [Fr.ZERO, Fr.ZERO], + blobs.map(b => BLS12Point.decompress(b.commitment)), + BLS12Point.ZERO, BLOBS_PER_BLOCK, ), - blobsHash, + blobsHash: new Fr(blobsHash), }); if (previousRollupData.length === 1) { diff --git a/yarn-project/prover-client/src/mocks/test_context.ts b/yarn-project/prover-client/src/mocks/test_context.ts index c8ce58739495..b1f3f8a1013e 100644 --- a/yarn-project/prover-client/src/mocks/test_context.ts +++ b/yarn-project/prover-client/src/mocks/test_context.ts @@ -138,6 +138,10 @@ export class TestContext { return blockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.headers.get(blockNumber); } + public setBlockHeader(header: BlockHeader, blockNumber: number) { + this.headers.set(blockNumber, header); + } + public getPreviousBlockHeader(currentBlockNumber = this.blockNumber): BlockHeader { return this.getBlockHeader(currentBlockNumber - 1)!; } diff --git a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts index a20fd10a2390..72699bff8feb 100644 --- a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts +++ b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts @@ -1,4 +1,4 @@ -import { Blob, type SpongeBlob } from '@aztec/blob-lib'; +import { BatchedBlobAccumulator, Blob, type SpongeBlob } from '@aztec/blob-lib'; import { ARCHIVE_HEIGHT, MAX_CONTRACT_CLASS_LOGS_PER_TX, @@ -15,7 +15,7 @@ import { import { makeTuple } from '@aztec/foundation/array'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Point, Fr } from '@aztec/foundation/fields'; import { type Tuple, assertLength, serializeToBuffer, toFriendlyJSON } from '@aztec/foundation/serialize'; import { MembershipWitness, MerkleTreeCalculator, computeUnbalancedMerkleRoot } from '@aztec/foundation/trees'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; @@ -254,12 +254,28 @@ export const buildBlobHints = runInSpan( async (_span: Span, txEffects: TxEffect[]) => { const blobFields = txEffects.flatMap(tx => tx.toBlobFields()); const blobs = await Blob.getBlobs(blobFields); - const blobCommitments = blobs.map(b => b.commitmentToFields()); + // TODO(#13430): The blobsHash is confusingly similar to blobCommitmentsHash, calculated from below blobCommitments: + // - blobsHash := sha256([blobhash_0, ..., blobhash_m]) = a hash of all blob hashes in a block with m+1 blobs inserted into the header, exists so a user can cross check blobs. + // - blobCommitmentsHash := sha256( ...sha256(sha256(C_0), C_1) ... C_n) = iteratively calculated hash of all blob commitments in an epoch with n+1 blobs (see calculateBlobCommitmentsHash()), + // exists so we can validate injected commitments to the rollup circuits correspond to the correct real blobs. + // We may be able to combine these values e.g. blobCommitmentsHash := sha256( ...sha256(sha256(blobshash_0), blobshash_1) ... blobshash_l) for an epoch with l+1 blocks. + const blobCommitments = blobs.map(b => BLS12Point.decompress(b.commitment)); const blobsHash = new Fr(getBlobsHashFromBlobs(blobs)); return { blobFields, blobCommitments, blobs, blobsHash }; }, ); +export const accumulateBlobs = runInSpan( + 'BlockBuilderHelpers', + 'accumulateBlobs', + async (_span: Span, txs: ProcessedTx[], startBlobAccumulator: BatchedBlobAccumulator) => { + const blobFields = txs.flatMap(tx => tx.txEffect.toBlobFields()); + const blobs = await Blob.getBlobs(blobFields); + const endBlobAccumulator = startBlobAccumulator.accumulateBlobs(blobs); + return endBlobAccumulator; + }, +); + export const buildHeaderFromCircuitOutputs = runInSpan( 'BlockBuilderHelpers', 'buildHeaderFromCircuitOutputs', @@ -268,13 +284,13 @@ export const buildHeaderFromCircuitOutputs = runInSpan( previousRollupData: BaseOrMergeRollupPublicInputs[], parityPublicInputs: ParityPublicInputs, rootRollupOutputs: BlockRootOrBlockMergePublicInputs, + blobsHash: Buffer, endState: StateReference, ) => { if (previousRollupData.length > 2) { throw new Error(`There can't be more than 2 previous rollups. Received ${previousRollupData.length}.`); } - const blobsHash = rootRollupOutputs.blobPublicInputs[0].getBlobsHash(); const numTxs = previousRollupData.reduce((sum, d) => sum + d.numTxs, 0); const outHash = previousRollupData.length === 0 @@ -370,6 +386,7 @@ export function getBlobsHashFromBlobs(inputs: Blob[]): Buffer { } // Validate that the roots of all local trees match the output of the root circuit simulation +// TODO: does this get called? export async function validateBlockRootOutput( blockRootOutput: BlockRootOrBlockMergePublicInputs, blockHeader: BlockHeader, diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index c66dd2adffc8..0f2699995fce 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -1,4 +1,4 @@ -import { SpongeBlob } from '@aztec/blob-lib'; +import { BatchedBlobAccumulator, SpongeBlob } from '@aztec/blob-lib'; import { type ARCHIVE_HEIGHT, BLOBS_PER_BLOCK, @@ -9,7 +9,7 @@ import { type RECURSIVE_PROOF_LENGTH, } from '@aztec/constants'; import { padArrayEnd } from '@aztec/foundation/collection'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Point, Fr } from '@aztec/foundation/fields'; import type { Tuple } from '@aztec/foundation/serialize'; import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees'; import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; @@ -34,7 +34,7 @@ import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees'; import { type BlockHeader, type GlobalVariables, StateReference } from '@aztec/stdlib/tx'; import { VkData } from '@aztec/stdlib/vks'; -import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js'; +import { accumulateBlobs, buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js'; import type { EpochProvingState } from './epoch-proving-state.js'; import type { TxProvingState } from './tx-proving-state.js'; @@ -56,6 +56,9 @@ export class BlockProvingState { public blockRootRollupStarted: boolean = false; public block: L2Block | undefined; public spongeBlobState: SpongeBlob | undefined; + public startBlobAccumulator: BatchedBlobAccumulator | undefined; + public endBlobAccumulator: BatchedBlobAccumulator | undefined; + public blobsHash: Buffer | undefined; public totalNumTxs: number; private txs: TxProvingState[] = []; public error: string | undefined; @@ -75,6 +78,9 @@ export class BlockProvingState { ) { this.baseParityProvingOutputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(_ => undefined); this.totalNumTxs = 0; + if (this.blockNumber == parentEpoch.firstBlockNumber) { + this.startBlobAccumulator = BatchedBlobAccumulator.newWithChallenges(parentEpoch.finalBlobBatchingChallenges); + } } public get blockNumber() { @@ -98,7 +104,6 @@ export class BlockProvingState { if (!this.spongeBlobState) { throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`); } - const txIndex = this.txs.length; this.txs[txIndex] = tx; return txIndex; @@ -147,6 +152,30 @@ export class BlockProvingState { this.blockRootProvingOutput = provingOutput; } + public setBlock(block: L2Block) { + this.block = block; + } + + public setStartBlobAccumulator(accumulator: BatchedBlobAccumulator) { + this.startBlobAccumulator = accumulator; + } + + public setEndBlobAccumulator(accumulator: BatchedBlobAccumulator) { + this.endBlobAccumulator = accumulator; + } + + public async accumulateBlobs() { + if (!this.block || !this.startBlobAccumulator) { + // We only want to accumulate once we have all txs, so we wait until the block is set. + return; + } + const endBlobAccumulator = await accumulateBlobs( + this.allTxs.map(t => t.processedTx), + this.startBlobAccumulator, + ); + this.setEndBlobAccumulator(endBlobAccumulator); + } + // Returns the complete set of transaction proving state objects public get allTxs() { return this.txs; @@ -204,6 +233,7 @@ export class BlockProvingState { const previousRollupData = await Promise.all(nonEmptyProofs.map(p => this.#getPreviousRollupData(p!))); const blobData = await this.#getBlockRootRollupBlobData(); + this.blobsHash = blobData.blobsHash.toBuffer(); if (previousRollupData.length === 1) { return { @@ -227,6 +257,10 @@ export class BlockProvingState { throw new Error('Root parity is not ready.'); } + if (!this.blockRootProvingOutput || !this.endBlobAccumulator) { + throw new Error('Block root not ready for padding.'); + } + // Use the new block header, archive and l1toL2 of the current block as the previous header, archive and l1toL2 of the next padding block. const previousBlockHeader = await this.buildHeaderFromProvingOutputs(); const lastArchive = this.blockRootProvingOutput!.inputs.newArchive; @@ -238,6 +272,8 @@ export class BlockProvingState { previousArchiveSiblingPath: this.lastArchiveSiblingPath, newArchiveSiblingPath: this.newArchiveSiblingPath, previousBlockHeader, + startBlobAccumulator: this.endBlobAccumulator.toBlobAccumulatorPublicInputs(), + finalBlobChallenges: this.endBlobAccumulator.finalBlobChallenges, proverId, }); @@ -289,10 +325,18 @@ export class BlockProvingState { } const endState = new StateReference(this.l1ToL2MessageTreeSnapshotAfterInsertion, endPartialState); + // TODO(MW): cleanup + if (!this.blobsHash) { + this.blobsHash = ( + await buildBlobHints(this.txs.map(txProvingState => txProvingState.processedTx.txEffect)) + ).blobsHash.toBuffer(); + } + return buildHeaderFromCircuitOutputs( previousRollupData.map(d => d.baseOrMergeRollupPublicInputs), this.rootParityProvingOutput!.inputs, this.blockRootProvingOutput!.inputs, + this.blobsHash, endState, ); } @@ -304,7 +348,12 @@ export class BlockProvingState { // Returns true if we have sufficient inputs to execute the block root rollup public isReadyForBlockRootRollup() { const childProofs = this.#getChildProofsForBlockRoot(); - return this.block !== undefined && this.rootParityProvingOutput !== undefined && childProofs.every(p => !!p); + return ( + this.block !== undefined && + this.rootParityProvingOutput !== undefined && + this.endBlobAccumulator !== undefined && + childProofs.every(p => !!p) + ); } // Returns true if we have sufficient root parity inputs to execute the root parity circuit @@ -333,6 +382,8 @@ export class BlockProvingState { previousArchiveSiblingPath: this.lastArchiveSiblingPath, newArchiveSiblingPath: this.newArchiveSiblingPath, previousBlockHeader: this.previousBlockHeader, + startBlobAccumulator: this.startBlobAccumulator!.toBlobAccumulatorPublicInputs(), + finalBlobChallenges: this.startBlobAccumulator!.finalBlobChallenges, proverId, }); } @@ -342,7 +393,7 @@ export class BlockProvingState { const { blobFields, blobCommitments, blobsHash } = await buildBlobHints(txEffects); return BlockRootRollupBlobData.from({ blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), - blobCommitments: padArrayEnd(blobCommitments, [Fr.ZERO, Fr.ZERO], BLOBS_PER_BLOCK), + blobCommitments: padArrayEnd(blobCommitments, BLS12Point.ZERO, BLOBS_PER_BLOCK), blobsHash, }); } diff --git a/yarn-project/prover-client/src/orchestrator/block_building_helpers.test.ts b/yarn-project/prover-client/src/orchestrator/block_building_helpers.test.ts index a9896c8d6845..d55a1adcc1d8 100644 --- a/yarn-project/prover-client/src/orchestrator/block_building_helpers.test.ts +++ b/yarn-project/prover-client/src/orchestrator/block_building_helpers.test.ts @@ -1,5 +1,4 @@ -import { BlobPublicInputs } from '@aztec/blob-lib'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Point, Fr } from '@aztec/foundation/fields'; import { updateInlineTestData } from '@aztec/foundation/testing/files'; import { TxEffect, TxHash } from '@aztec/stdlib/tx'; @@ -16,24 +15,28 @@ describe('buildBlobHints', () => { expect(blobFields).toEqual([]); expect(blobCommitments.length).toBe(1); - const blobCommitmentStr = fieldArrToStr(blobCommitments[0]); - expect(blobCommitmentStr).toMatchInlineSnapshot( - `"[0x00c0000000000000000000000000000000000000000000000000000000000000, 0]"`, - ); + const blobCommitmentStr = blobCommitments[0].compress().toString('hex'); + expect(blobCommitmentStr).toEqual(BLS12Point.COMPRESSED_ZERO.toString('hex')); const blobsHashStr = blobsHash.toString(); expect(blobsHashStr).toMatchInlineSnapshot(`"0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9"`); - const publicInputs = BlobPublicInputs.fromBlob(blobs[0]); - expect(publicInputs.y).toBe(0n); - const zStr = publicInputs.z.toString(); + expect(blobs.length).toBe(1); + expect(blobs[0].evaluationY).toEqual(Buffer.alloc(32)); + const zStr = blobs[0].challengeZ.toString(); expect(zStr).toMatchInlineSnapshot(`"0x0ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb"`); + // TODO(MW): add conversion when public inputs finalised + const blobCommitmentsFields = [ + new Fr(blobCommitments[0].compress().subarray(0, 31)), + new Fr(blobCommitments[0].compress().subarray(31, 48)), + ]; + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data. updateInlineTestData( 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr', - 'expected_empty_effect_blob_commitment', - blobCommitmentStr, + 'expected_empty_effect_blob_commitment_fields', + fieldArrToStr(blobCommitmentsFields), ); updateInlineTestData( 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr', @@ -62,21 +65,27 @@ describe('buildBlobHints', () => { expect(blobFields.length).toBe(5 + 7); expect(blobCommitments.length).toBe(1); - const blobCommitmentStr = fieldArrToStr(blobCommitments[0]); + const blobCommitmentStr = blobCommitments[0].compress().toString('hex'); expect(blobCommitmentStr).toMatchInlineSnapshot( - `"[0x008c32fe581c8fdba12c0d7597911dead2d937d68525bae655508412bb53bb98, 0x0000000000000000000000000000006aaa0680f21270e7d8de4e19da5164f95c]"`, + `"8c32fe581c8fdba12c0d7597911dead2d937d68525bae655508412bb53bb986aaa0680f21270e7d8de4e19da5164f95c"`, ); const blobsHashStr = blobsHash.toString(); expect(blobsHashStr).toMatchInlineSnapshot(`"0x00a965619c8668b834755678b32d023b9c5e8588ce449f44f7fa9335455b5cc5"`); - const publicInputs = BlobPublicInputs.fromBlob(blobs[0]); - expect(publicInputs.y).toMatchInlineSnapshot( - `17179655213294173540446545222866729565951946174336496855332549059993428157821n`, + expect(blobs.length).toBe(1); + expect(blobs[0].evaluationY.toString('hex')).toMatchInlineSnapshot( + `"25fb571bd6a15d4e3a8f6fe199b714c51e1e03ef40366e2e77e5c5733ab9e57d"`, ); - const zStr = publicInputs.z.toString(); + const zStr = blobs[0].challengeZ.toString(); expect(zStr).toMatchInlineSnapshot(`"0x1f92b871671f27a378d23f1cef10fbd8f0d90dd7172da9e3c3fc1aa745a072c3"`); + // TODO(MW): add conversion when public inputs finalised + const blobCommitmentsFields = [ + new Fr(blobCommitments[0].compress().subarray(0, 31)), + new Fr(blobCommitments[0].compress().subarray(31, 48)), + ]; + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data. updateInlineTestData( 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr', @@ -90,17 +99,12 @@ describe('buildBlobHints', () => { ); updateInlineTestData( 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr', - 'expected_blobs_hash', - blobsHashStr, - ); - updateInlineTestData( - 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr', - 'expected_blob_commitment', - blobCommitmentStr, + 'expected_blob_commitment_fields_fixture', + fieldArrToStr(blobCommitmentsFields), ); updateInlineTestData( 'noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr', - 'expected_challenge_z', + 'expected_challenge_z_fixture', zStr, ); }); diff --git a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts index 5b72de4ccca1..767bbfe86ba5 100644 --- a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, type FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, @@ -48,6 +49,7 @@ export class EpochProvingState { | PublicInputsAndRecursiveProof | undefined; private rootRollupProvingOutput: PublicInputsAndRecursiveProof | undefined; + private finalBatchedBlob: BatchedBlob | undefined; private provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED; // Map from tx hash to tube proof promise. Used when kickstarting tube proofs before tx processing. @@ -59,6 +61,7 @@ export class EpochProvingState { public readonly epochNumber: number, public readonly firstBlockNumber: number, public readonly totalNumBlocks: number, + public readonly finalBlobBatchingChallenges: FinalBlobBatchingChallenges, private completionCallback: (result: ProvingResult) => void, private rejectionCallback: (reason: string) => void, ) { @@ -145,6 +148,31 @@ export class EpochProvingState { this.paddingBlockRootProvingOutput = proof; } + public setFinalBatchedBlob(batchedBlob: BatchedBlob) { + this.finalBatchedBlob = batchedBlob; + } + + public async setBlobAccumulators(toBlock?: number) { + let previousAccumulator; + const end = toBlock ? toBlock - this.firstBlockNumber : this.blocks.length; + // Accumulate blobs as far as we can for this epoch. + for (let i = 0; i <= end; i++) { + const block = this.blocks[i]; + if (!block || !block.block) { + // If the block proving state does not have a .block property, it may be awaiting more txs. + break; + } + if (!block.startBlobAccumulator) { + // startBlobAccumulator always exists for firstBlockNumber, so the below should never assign an undefined: + block.setStartBlobAccumulator(previousAccumulator!); + } + if (block.startBlobAccumulator && !block.endBlobAccumulator) { + await block.accumulateBlobs(); + } + previousAccumulator = block.endBlobAccumulator; + } + } + public getParentLocation(location: TreeNodeLocation) { return this.blockRootOrMergeProvingOutputs.getParentLocation(location); } @@ -182,14 +210,15 @@ export class EpochProvingState { return this.blocks.find(block => block?.blockNumber === blockNumber); } - public getEpochProofResult(): { proof: Proof; publicInputs: RootRollupPublicInputs } { - if (!this.rootRollupProvingOutput) { + public getEpochProofResult(): { proof: Proof; publicInputs: RootRollupPublicInputs; batchedBlobInputs: BatchedBlob } { + if (!this.rootRollupProvingOutput || !this.finalBatchedBlob) { throw new Error('Unable to get epoch proof result. Root rollup is not ready.'); } return { proof: this.rootRollupProvingOutput.proof.binaryProof, publicInputs: this.rootRollupProvingOutput.inputs, + batchedBlobInputs: this.finalBatchedBlob, }; } diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 05d12df3e2ea..02fa1e330ee0 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -1,3 +1,4 @@ +import { FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, @@ -107,14 +108,26 @@ export class ProvingOrchestrator implements EpochProver { return Promise.resolve(); } - public startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number) { + public startNewEpoch( + epochNumber: number, + firstBlockNumber: number, + totalNumBlocks: number, + finalBlobBatchingChallenges: FinalBlobBatchingChallenges, + ) { const { promise: _promise, resolve, reject } = promiseWithResolvers(); const promise = _promise.catch((reason): ProvingResult => ({ status: 'failure', reason })); if (totalNumBlocks <= 0 || !Number.isInteger(totalNumBlocks)) { throw new Error(`Invalid number of blocks for epoch (got ${totalNumBlocks})`); } logger.info(`Starting epoch ${epochNumber} with ${totalNumBlocks} blocks`); - this.provingState = new EpochProvingState(epochNumber, firstBlockNumber, totalNumBlocks, resolve, reject); + this.provingState = new EpochProvingState( + epochNumber, + firstBlockNumber, + totalNumBlocks, + finalBlobBatchingChallenges, + resolve, + reject, + ); this.provingPromise = promise; } @@ -277,6 +290,9 @@ export class ProvingOrchestrator implements EpochProver { logger.verbose(`Block ${blockNumber} completed. Assembling header.`); await this.buildBlock(provingState, expectedHeader); + logger.debug(`Accumulating blobs for ${blockNumber}`); + await this.provingState?.setBlobAccumulators(blockNumber); + // If the proofs were faster than the block building, then we need to try the block root rollup again here await this.checkAndEnqueueBlockRootRollup(provingState); return provingState.block!; @@ -324,7 +340,7 @@ export class ProvingOrchestrator implements EpochProver { await this.verifyBuiltBlockAgainstSyncedState(l2Block, newArchive); logger.verbose(`Orchestrator finalised block ${l2Block.number}`); - provingState.block = l2Block; + provingState.setBlock(l2Block); } // Flagged as protected to disable in certain unit tests @@ -363,6 +379,15 @@ export class ProvingOrchestrator implements EpochProver { throw new Error(`Epoch proving failed: ${result.reason}`); } + // TODO(MW): Move this? Requires async and don't want to force root methods to be async + // TODO(MW): EpochProvingState uses this.blocks.filter(b => !!b).length as total blocks, use this below: + const finalBlock = this.provingState.blocks[this.provingState.totalNumBlocks - 1]; + if (!finalBlock || !finalBlock.endBlobAccumulator) { + throw new Error(`Epoch's final block not ready for finalise`); + } + const finalBatchedBlob = await finalBlock.endBlobAccumulator.finalize(); + this.provingState.setFinalBatchedBlob(finalBatchedBlob); + const epochProofResult = this.provingState.getEpochProofResult(); pushTestData('epochProofResult', { @@ -701,6 +726,17 @@ export class ProvingOrchestrator implements EpochProver { provingState.reject(`New archive root mismatch.`); } + const endBlobAccumulator = provingState.endBlobAccumulator!; + const circuitEndBlobAccumulatorState = result.inputs.blobPublicInputs.endBlobAccumulator; + if (!circuitEndBlobAccumulatorState.equals(endBlobAccumulator.toBlobAccumulatorPublicInputs())) { + logger.error( + `Blob accumulator state mismatch.\nCircuit: ${inspect(circuitEndBlobAccumulatorState)}\nComputed: ${inspect( + endBlobAccumulator.toBlobAccumulatorPublicInputs(), + )}`, + ); + provingState.reject(`Blob accumulator state mismatch.`); + } + logger.debug(`Completed ${rollupType} proof for block ${provingState.block!.number}`); // validatePartialState(result.inputs.end, tx.treeSnapshots); // TODO(palla/prover) @@ -784,7 +820,6 @@ export class ProvingOrchestrator implements EpochProver { } const inputs = provingState.getBlockMergeRollupInputs(location); - this.deferredProving( provingState, wrapCallbackInSpan( @@ -873,15 +908,17 @@ export class ProvingOrchestrator implements EpochProver { } private async checkAndEnqueueBlockRootRollup(provingState: BlockProvingState) { + const blockNumber = provingState.blockNumber; + // Accumulate as far as we can, in case blocks came in out of order and we are behind: + await this.provingState?.setBlobAccumulators(blockNumber); if (!provingState.isReadyForBlockRootRollup()) { - logger.debug('Not ready for root rollup'); + logger.debug('Not ready for block root rollup'); return; } if (provingState.blockRootRollupStarted) { logger.debug('Block root rollup already started'); return; } - const blockNumber = provingState.blockNumber; // TODO(palla/prover): This closes the fork only on the happy path. If this epoch orchestrator // is aborted and never reaches this point, it will leak the fork. We need to add a global cleanup, diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts index a672aad9be56..1eac774526fa 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob, FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import { timesParallel } from '@aztec/foundation/collection'; import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; @@ -10,10 +11,12 @@ const logger = createLogger('prover-client:test:orchestrator-errors'); describe('prover/orchestrator/errors', () => { let context: TestContext; let orchestrator: ProvingOrchestrator; + let emptyChallenges: FinalBlobBatchingChallenges; beforeEach(async () => { context = await TestContext.new(logger); orchestrator = context.orchestrator; + emptyChallenges = await BatchedBlob.precomputeEmptyBatchedBlobChallenges(); }); afterEach(async () => { @@ -26,8 +29,10 @@ describe('prover/orchestrator/errors', () => { it('throws if adding too many transactions', async () => { const txs = await timesParallel(4, i => context.makeProcessedTx(i + 1)); await context.setTreeRoots(txs); + const blobs = await Blob.getBlobs(txs.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await orchestrator.addTxs(txs); @@ -41,7 +46,7 @@ describe('prover/orchestrator/errors', () => { }); it('throws if adding too many blocks', async () => { - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await orchestrator.setBlockCompleted(context.blockNumber); @@ -57,21 +62,21 @@ describe('prover/orchestrator/errors', () => { }); it('throws if adding a transaction before starting block', async () => { - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await expect(async () => await orchestrator.addTxs([await context.makeProcessedTx()])).rejects.toThrow( /Block proving state for 1 not found/, ); }); it('throws if completing a block before start', async () => { - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await expect(async () => await orchestrator.setBlockCompleted(context.blockNumber)).rejects.toThrow( /Block proving state for 1 not found/, ); }); it('throws if adding to a cancelled block', async () => { - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); orchestrator.cancel(); @@ -81,15 +86,15 @@ describe('prover/orchestrator/errors', () => { }); it.each([[-4], [0], [8.1]] as const)('fails to start an epoch with %i blocks', (epochSize: number) => { - orchestrator.startNewEpoch(1, 1, 1); - expect(() => orchestrator.startNewEpoch(1, 1, epochSize)).toThrow( + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); + expect(() => orchestrator.startNewEpoch(1, 1, epochSize, emptyChallenges)).toThrow( `Invalid number of blocks for epoch (got ${epochSize})`, ); }); it('rejects if too many l1 to l2 messages are provided', async () => { const l1ToL2Messages = new Array(100).fill(new Fr(0n)); - orchestrator.startNewEpoch(1, 1, 1); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await expect( async () => await orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages, context.getPreviousBlockHeader()), diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts index d235e2efaffd..ad4058082758 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { timesAsync } from '@aztec/foundation/collection'; import { createLogger } from '@aztec/foundation/log'; import type { ServerCircuitProver } from '@aztec/stdlib/interfaces/server'; @@ -33,7 +34,10 @@ describe('prover/orchestrator/failures', () => { // We generate them and add them as part of the pending chain const blocks = await timesAsync(3, i => context.makePendingBlock(3, 1, i + 1, j => ({ privateOnly: j === 1 }))); - orchestrator.startNewEpoch(1, 1, 3); + const blobs = (await Promise.all(blocks.map(block => Blob.getBlobs(block.block.body.toBlobFields())))).flat(); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + + orchestrator.startNewEpoch(1, 1, 3, finalBlobChallenges); for (const { block, txs, msgs } of blocks) { // these operations could fail if the target circuit fails before adding all blocks or txs diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts index 3af8997caaad..d4c98cc22c01 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob } from '@aztec/blob-lib'; import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants'; import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; @@ -38,8 +39,8 @@ describe('prover/orchestrator/lifecycle', () => { deferredPromises.push(deferred); return deferred.promise; }); - - orchestrator.startNewEpoch(1, 1, 1); + const emptyChallenges = await BatchedBlob.precomputeEmptyBatchedBlobChallenges(); + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await sleep(1); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts index d0ca585ce8f3..6fddb512af8e 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants'; import { range } from '@aztec/foundation/array'; import { timesParallel } from '@aztec/foundation/collection'; @@ -17,7 +18,10 @@ describe('prover/orchestrator/mixed-blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); - context.orchestrator.startNewEpoch(1, 1, 1); + const blobs = await Blob.getBlobs(txs.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages, context.getPreviousBlockHeader()); await context.orchestrator.addTxs(txs); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts index 36e85a8aea5c..b4d8dc5c8426 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { DEPLOYER_CONTRACT_ADDRESS } from '@aztec/constants'; import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; @@ -86,13 +87,15 @@ describe('prover/orchestrator/public-functions', () => { tx.data.constants.protocolContractTreeRoot = protocolContractTreeRoot; } - context.orchestrator.startNewEpoch(1, 1, 1); - await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); - const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); + const blobs = await Blob.getBlobs(processed.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); + await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); + await context.orchestrator.addTxs(processed); const block = await context.orchestrator.setBlockCompleted(context.blockNumber); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts index 3e2e1335888a..ae22bb774185 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { timesAsync } from '@aztec/foundation/collection'; import type { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; @@ -29,9 +30,11 @@ describe('prover/orchestrator/multi-block', () => { logger.info(`Seeding world state with ${numBlocks} blocks`); const txCount = 2; const blocks = await timesAsync(numBlocks, i => context.makePendingBlock(txCount, 0, i + 1)); + const blobs = (await Promise.all(blocks.map(block => Blob.getBlobs(block.block.body.toBlobFields())))).flat(); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); logger.info(`Starting new epoch with ${numBlocks}`); - context.orchestrator.startNewEpoch(1, 1, numBlocks); + context.orchestrator.startNewEpoch(1, 1, numBlocks, finalBlobChallenges); for (const { block, txs } of blocks) { await context.orchestrator.startNewBlock( block.header.globalVariables, @@ -54,9 +57,11 @@ describe('prover/orchestrator/multi-block', () => { logger.info(`Seeding world state with ${numBlocks} blocks`); const txCount = 2; const blocks = await timesAsync(numBlocks, i => context.makePendingBlock(txCount, 0, i + 1)); + const blobs = (await Promise.all(blocks.map(block => Blob.getBlobs(block.block.body.toBlobFields())))).flat(); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); logger.info(`Starting new epoch with ${numBlocks}`); - context.orchestrator.startNewEpoch(1, 1, numBlocks); + context.orchestrator.startNewEpoch(1, 1, numBlocks, finalBlobChallenges); await Promise.all( blocks.map(async ({ block, txs }) => { await context.orchestrator.startNewBlock( @@ -83,9 +88,11 @@ describe('prover/orchestrator/multi-block', () => { logger.info(`Seeding world state with ${numBlocks} blocks`); const txCount = 2; const blocks = await timesAsync(numBlocks, i => context.makePendingBlock(txCount, 0, i + 1)); + const blobs = (await Promise.all(blocks.map(block => Blob.getBlobs(block.block.body.toBlobFields())))).flat(); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); logger.info(`Starting new epoch with ${numBlocks}`); - context.orchestrator.startNewEpoch(1, 1, numBlocks); + context.orchestrator.startNewEpoch(1, 1, numBlocks, finalBlobChallenges); await Promise.all( blocks.map(async ({ block, txs }) => { await context.orchestrator.startNewBlock( @@ -117,10 +124,19 @@ describe('prover/orchestrator/multi-block', () => { for (let epochIndex = 0; epochIndex < numEpochs; epochIndex++) { logger.info(`Starting epoch ${epochIndex + 1} with ${numBlocks} blocks`); - context.orchestrator.startNewEpoch(epochIndex + 1, epochIndex * numBlocks + 1, numBlocks); - const blockInEpoch = blocks.slice(epochIndex * numBlocks, (epochIndex + 1) * numBlocks); + const blocksInEpoch = blocks.slice(epochIndex * numBlocks, (epochIndex + 1) * numBlocks); + const blobs = ( + await Promise.all(blocksInEpoch.map(block => Blob.getBlobs(block.block.body.toBlobFields()))) + ).flat(); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + context.orchestrator.startNewEpoch( + epochIndex + 1, + epochIndex * numBlocks + 1, + numBlocks, + finalBlobChallenges, + ); await Promise.all( - blockInEpoch.map(async ({ block, txs }) => { + blocksInEpoch.map(async ({ block, txs }) => { await context.orchestrator.startNewBlock( block.header.globalVariables, [], @@ -136,7 +152,7 @@ describe('prover/orchestrator/multi-block', () => { const numProposedBlocks = countProposedBlocks(epoch.publicInputs.proposedBlockHeaderHashes); expect(numProposedBlocks).toEqual(numBlocks); expect(epoch.publicInputs.proposedBlockHeaderHashes.slice(0, numProposedBlocks)).toEqual( - blockInEpoch.map(b => b.block.header.toPropose().hash()), + blocksInEpoch.map(b => b.block.header.toPropose().hash()), ); expect(epoch.proof).toBeDefined(); } diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts index d42ff5cb59e1..b1397f01eef7 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { createLogger } from '@aztec/foundation/log'; import { getTestData, isGenerateTestDataEnabled } from '@aztec/foundation/testing'; import { updateProtocolCircuitSampleInputs } from '@aztec/foundation/testing/files'; @@ -38,9 +39,11 @@ describe('prover/orchestrator/public-functions', () => { // Since this TX is mocked/garbage, it will revert because it calls a non-existent contract, // but it reverts in app logic so it can still be included. const [processed, _] = await context.processPublicFunctions([tx], 1); + const blobs = await Blob.getBlobs(processed.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); // This will need to be a 2 tx block - context.orchestrator.startNewEpoch(1, 1, 1); + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await context.orchestrator.addTxs(processed); @@ -63,7 +66,9 @@ describe('prover/orchestrator/public-functions', () => { tx.data.constants.protocolContractTreeRoot = protocolContractTreeRoot; const [processed, _] = await context.processPublicFunctions([tx], 1); - context.orchestrator.startNewEpoch(1, 1, 1); + const blobs = await Blob.getBlobs(processed.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await context.orchestrator.addTxs(processed); await context.orchestrator.setBlockCompleted(context.blockNumber); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts index 489f39810488..c3e6c7422612 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants'; import { range } from '@aztec/foundation/array'; import { timesParallel } from '@aztec/foundation/collection'; @@ -21,7 +22,7 @@ describe('prover/orchestrator/blocks', () => { describe('blocks', () => { it('builds an empty L2 block', async () => { - context.orchestrator.startNewEpoch(1, 1, 1); + context.orchestrator.startNewEpoch(1, 1, 1, await BatchedBlob.precomputeEmptyBatchedBlobChallenges()); await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); const block = await context.orchestrator.setBlockCompleted(context.blockNumber); @@ -33,8 +34,12 @@ describe('prover/orchestrator/blocks', () => { const txs = [await context.makeProcessedTx(1)]; await context.setTreeRoots(txs); + const blobFields = txs.map(tx => tx.txEffect.toBlobFields()).flat(); + const blobs = await Blob.getBlobs(blobFields); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + // This will need to be a 2 tx block - context.orchestrator.startNewEpoch(1, 1, 1); + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await context.orchestrator.startNewBlock(context.globalVariables, [], context.getPreviousBlockHeader()); await context.orchestrator.addTxs(txs); @@ -49,7 +54,11 @@ describe('prover/orchestrator/blocks', () => { await context.setTreeRoots(txs); const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); - context.orchestrator.startNewEpoch(1, 1, 1); + const blobFields = txs.map(tx => tx.txEffect.toBlobFields()).flat(); + const blobs = await Blob.getBlobs(blobFields); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); await context.orchestrator.startNewBlock( context.globalVariables, l1ToL2Messages, diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts index de1dd2a1b284..21dae423b4f6 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { NESTED_RECURSIVE_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants'; import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; @@ -74,7 +75,9 @@ describe('prover/orchestrator', () => { } }); - orchestrator.startNewEpoch(1, 1, 1); + const emptyChallenges = await BatchedBlob.precomputeEmptyBatchedBlobChallenges(); + + orchestrator.startNewEpoch(1, 1, 1, emptyChallenges); await orchestrator.startNewBlock(globalVariables, [message], previousBlockHeader); // the prover broker deduplicates jobs, so the base parity proof @@ -105,9 +108,11 @@ describe('prover/orchestrator', () => { }); it('waits for block to be completed before enqueueing block root proof', async () => { - orchestrator.startNewEpoch(1, 1, 1); - await orchestrator.startNewBlock(globalVariables, [], previousBlockHeader); const txs = await Promise.all([context.makeProcessedTx(1), context.makeProcessedTx(2)]); + const blobs = await Blob.getBlobs(txs.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); + await orchestrator.startNewBlock(globalVariables, [], previousBlockHeader); await context.setTreeRoots(txs); await orchestrator.addTxs(txs); @@ -123,8 +128,11 @@ describe('prover/orchestrator', () => { it('can start tube proofs before adding processed txs', async () => { const getTubeSpy = jest.spyOn(prover, 'getTubeProof'); - orchestrator.startNewEpoch(1, 1, 1); const processedTxs = await Promise.all([context.makeProcessedTx(1), context.makeProcessedTx(2)]); + const blobs = await Blob.getBlobs(processedTxs.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); + processedTxs.forEach((tx, i) => (tx.clientIvcProof = ClientIvcProof.fake(i + 1))); // TODO(AD): we shouldn't be mocking complex objects like tx this way - easy to hit issues (I had to update to add data field) const txs = processedTxs.map( diff --git a/yarn-project/prover-client/src/prover-client/server-epoch-prover.ts b/yarn-project/prover-client/src/prover-client/server-epoch-prover.ts index cae999ff5e79..46de69240cde 100644 --- a/yarn-project/prover-client/src/prover-client/server-epoch-prover.ts +++ b/yarn-project/prover-client/src/prover-client/server-epoch-prover.ts @@ -1,3 +1,4 @@ +import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import type { Fr } from '@aztec/foundation/fields'; import type { L2Block } from '@aztec/stdlib/block'; import type { EpochProver } from '@aztec/stdlib/interfaces/server'; @@ -15,8 +16,13 @@ export class ServerEpochProver implements EpochProver { private orchestrator: ProvingOrchestrator, ) {} - startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number): void { - this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks); + startNewEpoch( + epochNumber: number, + firstBlockNumber: number, + totalNumBlocks: number, + finalBlobBatchingChallenges: FinalBlobBatchingChallenges, + ): void { + this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges); this.facade.start(); } startTubeCircuits(txs: Tx[]): Promise { @@ -25,7 +31,7 @@ export class ServerEpochProver implements EpochProver { setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise { return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader); } - finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof }> { + finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof; batchedBlobInputs: BatchedBlob }> { return this.orchestrator.finaliseEpoch(); } cancel(): void { diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index 4f6faa90d510..c17fccce3135 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -1,4 +1,5 @@ import { BBNativeRollupProver, type BBProverConfig } from '@aztec/bb-prover'; +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PAIRING_POINTS_SIZE } from '@aztec/constants'; import { makeTuple } from '@aztec/foundation/array'; import { timesParallel } from '@aztec/foundation/collection'; @@ -40,7 +41,7 @@ describe('prover/bb_prover/full-rollup', () => { it.each([ [1, 1, 0, 2], // Epoch with a single block, requires one padding block proof - // [2, 2, 0, 2], // Full epoch with two blocks // TODO(#10678) disabled for time x resource usage on main runner + // [2, 2, 0, 2], // Full epoch with two blocks // TODO(#10678) disabled for time x resource usage on main runner // NOTE: we need this test to create the fixture for integration_proof_verification.test.ts, which doesn't seem to be run, though does pass // [2, 3, 0, 2], // Epoch with two blocks but the block merge tree was assembled as with 3 leaves, requires one padding block proof; commented out to reduce running time ])( 'proves a private-only epoch with %i/%i blocks with %i/%i non-empty txs each', @@ -48,11 +49,9 @@ describe('prover/bb_prover/full-rollup', () => { log.info(`Proving epoch with ${blockCount}/${totalBlocks} blocks with ${nonEmptyTxs}/${totalTxs} non-empty txs`); const initialHeader = context.getBlockHeader(0); - context.orchestrator.startNewEpoch(1, 1, totalBlocks); - + const processedTxs = []; + const blobs = []; for (let blockNum = 1; blockNum <= blockCount; blockNum++) { - const globals = makeGlobals(blockNum); - const l1ToL2Messages = makeTuple(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, Fr.random); const txs = await timesParallel(nonEmptyTxs, async (i: number) => { const txOpts = { numberOfNonRevertiblePublicCallRequests: 0, numberOfRevertiblePublicCallRequests: 0 }; const tx = await mockTx(blockNum * 100_000 + 1000 * (i + 1), txOpts); @@ -61,13 +60,25 @@ describe('prover/bb_prover/full-rollup', () => { return tx; }); - log.info(`Starting new block #${blockNum}`); - - await context.orchestrator.startNewBlock(globals, l1ToL2Messages, previousBlockHeader); log.info(`Processing public functions`); const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs); expect(processed.length).toBe(nonEmptyTxs); expect(failed.length).toBe(0); + processedTxs[blockNum] = processed; + blobs.push(await Blob.getBlobs(processed.flatMap(tx => tx.txEffect.toBlobFields()))); + } + + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs.flat()); + context.orchestrator.startNewEpoch(1, 1, totalBlocks, finalBlobChallenges); + + for (let blockNum = 1; blockNum <= blockCount; blockNum++) { + const globals = makeGlobals(blockNum); + const l1ToL2Messages = makeTuple(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, Fr.random); + const processed = processedTxs[blockNum]; + + log.info(`Starting new block #${blockNum}`); + + await context.orchestrator.startNewBlock(globals, l1ToL2Messages, previousBlockHeader); await context.orchestrator.addTxs(processed); log.info(`Setting block as completed`); @@ -118,15 +129,18 @@ describe('prover/bb_prover/full-rollup', () => { Fr.random, ); - context.orchestrator.startNewEpoch(1, 1, 1); - - await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages, context.getPreviousBlockHeader()); - const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); + const blobs = await Blob.getBlobs(processed.map(tx => tx.txEffect.toBlobFields()).flat()); + const finalBlobChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(blobs); + + context.orchestrator.startNewEpoch(1, 1, 1, finalBlobChallenges); + + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages, context.getPreviousBlockHeader()); + await context.orchestrator.addTxs(processed); await context.orchestrator.setBlockCompleted(context.blockNumber); diff --git a/yarn-project/prover-node/package.json b/yarn-project/prover-node/package.json index a49996b791e6..e061ef1e6350 100644 --- a/yarn-project/prover-node/package.json +++ b/yarn-project/prover-node/package.json @@ -54,6 +54,7 @@ "dependencies": { "@aztec/archiver": "workspace:^", "@aztec/bb-prover": "workspace:^", + "@aztec/blob-lib": "workspace:^", "@aztec/blob-sink": "workspace:^", "@aztec/constants": "workspace:^", "@aztec/epoch-cache": "workspace:^", diff --git a/yarn-project/prover-node/src/job/epoch-proving-job.test.ts b/yarn-project/prover-node/src/job/epoch-proving-job.test.ts index 1f6a1a625501..41ca4fd9d605 100644 --- a/yarn-project/prover-node/src/job/epoch-proving-job.test.ts +++ b/yarn-project/prover-node/src/job/epoch-proving-job.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob } from '@aztec/blob-lib'; import { fromEntries, times, timesParallel } from '@aztec/foundation/collection'; import { toArray } from '@aztec/foundation/iterable'; import { sleep } from '@aztec/foundation/sleep'; @@ -34,6 +35,7 @@ describe('epoch-proving-job', () => { // Objects let publicInputs: RootRollupPublicInputs; let proof: Proof; + let batchedBlobInputs: BatchedBlob; let blocks: L2Block[]; let txs: Tx[]; let initialHeader: BlockHeader; @@ -81,6 +83,13 @@ describe('epoch-proving-job', () => { publicInputs = RootRollupPublicInputs.random(); proof = Proof.empty(); + batchedBlobInputs = new BatchedBlob( + publicInputs.blobPublicInputs.blobCommitmentsHash, + publicInputs.blobPublicInputs.z, + publicInputs.blobPublicInputs.y, + publicInputs.blobPublicInputs.c, + publicInputs.blobPublicInputs.c.negate(), + ); epochNumber = 1; initialHeader = BlockHeader.empty(); blocks = await timesParallel(NUM_BLOCKS, i => L2Block.random(i + 1, TXS_PER_BLOCK)); @@ -97,7 +106,7 @@ describe('epoch-proving-job', () => { db.getInitialHeader.mockReturnValue(initialHeader); worldState.fork.mockResolvedValue(db); prover.startNewBlock.mockImplementation(() => sleep(200)); - prover.finaliseEpoch.mockResolvedValue({ publicInputs, proof }); + prover.finaliseEpoch.mockResolvedValue({ publicInputs, proof, batchedBlobInputs }); publisher.submitEpochProof.mockResolvedValue(true); publicProcessor.process.mockImplementation(async txs => { const txsArray = await toArray(txs); diff --git a/yarn-project/prover-node/src/job/epoch-proving-job.ts b/yarn-project/prover-node/src/job/epoch-proving-job.ts index e60a489a099a..6a239084136b 100644 --- a/yarn-project/prover-node/src/job/epoch-proving-job.ts +++ b/yarn-project/prover-node/src/job/epoch-proving-job.ts @@ -1,3 +1,4 @@ +import { BatchedBlob, Blob } from '@aztec/blob-lib'; import { asyncPool } from '@aztec/foundation/async-pool'; import { createLogger } from '@aztec/foundation/log'; import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise'; @@ -113,7 +114,12 @@ export class EpochProvingJob implements Traceable { this.runPromise = promise; try { - this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks); + const allBlobs = ( + await Promise.all(this.blocks.map(async block => await Blob.getBlobs(block.body.toBlobFields()))) + ).flat(); + + const finalBlobBatchingChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(allBlobs); + this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks, finalBlobBatchingChallenges); await this.prover.startTubeCircuits(this.txs); await asyncPool(this.config.parallelBlockLimit ?? 32, this.blocks, async block => { @@ -158,11 +164,18 @@ export class EpochProvingJob implements Traceable { const executionTime = timer.ms(); this.progressState('awaiting-prover'); - const { publicInputs, proof } = await this.prover.finaliseEpoch(); + const { publicInputs, proof, batchedBlobInputs } = await this.prover.finaliseEpoch(); this.log.info(`Finalised proof for epoch ${epochNumber}`, { epochNumber, uuid: this.uuid, duration: timer.ms() }); this.progressState('publishing-proof'); - const success = await this.publisher.submitEpochProof({ fromBlock, toBlock, epochNumber, publicInputs, proof }); + const success = await this.publisher.submitEpochProof({ + fromBlock, + toBlock, + epochNumber, + publicInputs, + proof, + batchedBlobInputs, + }); if (!success) { throw new Error('Failed to submit epoch proof to L1'); } diff --git a/yarn-project/prover-node/src/prover-node-publisher.test.ts b/yarn-project/prover-node/src/prover-node-publisher.test.ts index f19f8844d61a..d7b629295ab6 100644 --- a/yarn-project/prover-node/src/prover-node-publisher.test.ts +++ b/yarn-project/prover-node/src/prover-node-publisher.test.ts @@ -1,3 +1,4 @@ +import { BatchedBlob } from '@aztec/blob-lib'; import type { L1TxUtils, RollupContract } from '@aztec/ethereum'; import { EthAddress } from '@aztec/foundation/eth-address'; import { Fr } from '@aztec/foundation/fields'; @@ -137,6 +138,7 @@ describe('prover-node-publisher', () => { Promise.resolve({ archive: blocks[Number(blockNumber) - 1].endArchiveRoot.toString(), headerHash: '0x', // unused, + blobCommitmentsHash: '0x', // unused, slotNumber: 0n, // unused, }), ); @@ -147,6 +149,14 @@ describe('prover-node-publisher', () => { ourPublicInputs.previousArchiveRoot = blocks[fromBlock - 2]?.endArchiveRoot ?? Fr.ZERO; ourPublicInputs.endArchiveRoot = blocks[toBlock - 1]?.endArchiveRoot ?? Fr.ZERO; + const ourBatchedBlob = new BatchedBlob( + ourPublicInputs.blobPublicInputs.blobCommitmentsHash, + ourPublicInputs.blobPublicInputs.z, + ourPublicInputs.blobPublicInputs.y, + ourPublicInputs.blobPublicInputs.c, + ourPublicInputs.blobPublicInputs.c.negate(), // Fill with dummy value + ); + // Return our public inputs const totalFields = ourPublicInputs.toFields(); rollup.getEpochProofPublicInputs.mockResolvedValue(totalFields.map(x => x.toString())); @@ -158,6 +168,7 @@ describe('prover-node-publisher', () => { toBlock, publicInputs: ourPublicInputs, proof: Proof.empty(), + batchedBlobInputs: ourBatchedBlob, }) .then(() => 'Success') .catch(error => error.message); diff --git a/yarn-project/prover-node/src/prover-node-publisher.ts b/yarn-project/prover-node/src/prover-node-publisher.ts index bfcf727dc1f4..6192a74d3b49 100644 --- a/yarn-project/prover-node/src/prover-node-publisher.ts +++ b/yarn-project/prover-node/src/prover-node-publisher.ts @@ -1,3 +1,4 @@ +import { type BatchedBlob, FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib'; import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants'; import type { L1TxUtils, RollupContract } from '@aztec/ethereum'; import { makeTuple } from '@aztec/foundation/array'; @@ -15,6 +16,7 @@ import type { FeeRecipient, RootRollupPublicInputs } from '@aztec/stdlib/rollup' import type { L1PublishProofStats } from '@aztec/stdlib/stats'; import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client'; +import { inspect } from 'util'; import { type Hex, type TransactionReceipt, encodeFunctionData } from 'viem'; import { ProverNodePublisherMetrics } from './metrics.js'; @@ -94,6 +96,7 @@ export class ProverNodePublisher { toBlock: number; publicInputs: RootRollupPublicInputs; proof: Proof; + batchedBlobInputs: BatchedBlob; }): Promise { const { epochNumber, fromBlock, toBlock } = args; const ctx = { epochNumber, fromBlock, toBlock }; @@ -146,8 +149,9 @@ export class ProverNodePublisher { toBlock: number; publicInputs: RootRollupPublicInputs; proof: Proof; + batchedBlobInputs: BatchedBlob; }) { - const { fromBlock, toBlock, publicInputs } = args; + const { fromBlock, toBlock, publicInputs, batchedBlobInputs } = args; // Check that the block numbers match the expected epoch to be proven const { pendingBlockNumber: pending, provenBlockNumber: proven } = await this.rollupContract.getTips(); @@ -176,8 +180,17 @@ export class ProverNodePublisher { ); } + // Check the batched blob inputs from the root rollup against the batched blob computed in ts + if (!publicInputs.blobPublicInputs.equals(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))) { + throw new Error( + `Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))}`, + ); + } + // Compare the public inputs computed by the contract with the ones injected - const rollupPublicInputs = await this.rollupContract.getEpochProofPublicInputs(this.getSubmitEpochProofArgs(args)); + const rollupPublicInputs = await this.rollupContract.getEpochProofPublicInputs( + this.getEpochProofPublicInputsArgs(args), + ); const argsPublicInputs = [...publicInputs.toFields()]; if (!areArraysEqual(rollupPublicInputs.map(Fr.fromHexString), argsPublicInputs, (a, b) => a.equals(b))) { @@ -193,20 +206,9 @@ export class ProverNodePublisher { toBlock: number; publicInputs: RootRollupPublicInputs; proof: Proof; + batchedBlobInputs: BatchedBlob; }): Promise { - const proofHex: Hex = `0x${args.proof.withoutPublicInputs().toString('hex')}`; - const argsArray = this.getSubmitEpochProofArgs(args); - - const txArgs = [ - { - start: argsArray[0], - end: argsArray[1], - args: argsArray[2], - fees: argsArray[3], - blobPublicInputs: argsArray[4], - proof: proofHex, - }, - ] as const; + const txArgs = [this.getSubmitEpochProofArgs(args)] as const; this.log.info(`SubmitEpochProof proofSize=${args.proof.withoutPublicInputs().length} bytes`); const data = encodeFunctionData({ @@ -239,32 +241,50 @@ export class ProverNodePublisher { } } - private getSubmitEpochProofArgs(args: { + private getEpochProofPublicInputsArgs(args: { fromBlock: number; toBlock: number; publicInputs: RootRollupPublicInputs; - proof: Proof; + batchedBlobInputs: BatchedBlob; }) { + // Returns arguments for EpochProofLib.sol -> getEpochProofPublicInputs() return [ - BigInt(args.fromBlock), - BigInt(args.toBlock), + BigInt(args.fromBlock) /*_start*/, + BigInt(args.toBlock) /*_end*/, { previousArchive: args.publicInputs.previousArchiveRoot.toString(), endArchive: args.publicInputs.endArchiveRoot.toString(), proverId: EthAddress.fromField(args.publicInputs.proverId).toString(), - }, + } /*_args*/, makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => i % 2 === 0 ? args.publicInputs.fees[i / 2].recipient.toField().toString() : args.publicInputs.fees[(i - 1) / 2].value.toString(), - ), - `0x${args.publicInputs.blobPublicInputs - .filter((_, i) => i < args.toBlock - args.fromBlock + 1) - .map(b => b.toString()) - .join(``)}`, + ) /*_fees*/, + args.batchedBlobInputs.getEthBlobEvaluationInputs() /*_blobPublicInputs*/, ] as const; } + private getSubmitEpochProofArgs(args: { + fromBlock: number; + toBlock: number; + publicInputs: RootRollupPublicInputs; + proof: Proof; + batchedBlobInputs: BatchedBlob; + }) { + // Returns arguments for EpochProofLib.sol -> submitEpochRootProof() + const proofHex: Hex = `0x${args.proof.withoutPublicInputs().toString('hex')}`; + const argsArray = this.getEpochProofPublicInputsArgs(args); + return { + start: argsArray[0], + end: argsArray[1], + args: argsArray[2], + fees: argsArray[3], + blobInputs: argsArray[4], + proof: proofHex, + }; + } + protected async sleepOrInterrupted() { await this.interruptibleSleep.sleep(this.sleepTimeMs); } diff --git a/yarn-project/prover-node/tsconfig.json b/yarn-project/prover-node/tsconfig.json index 1e82cfa793c0..b8ae430a409a 100644 --- a/yarn-project/prover-node/tsconfig.json +++ b/yarn-project/prover-node/tsconfig.json @@ -12,6 +12,9 @@ { "path": "../bb-prover" }, + { + "path": "../blob-lib" + }, { "path": "../blob-sink" }, diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts index 6eb501781a8c..1e32952b3a30 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts @@ -223,7 +223,7 @@ describe('SequencerPublisher', () => { await publisher.sendRequests(); expect(forwarder.forward).toHaveBeenCalledTimes(1); - const blobInput = Blob.getEthBlobEvaluationInputs(expectedBlobs); + const blobInput = Blob.getPrefixedEthBlobCommitments(expectedBlobs); const args = [ { diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts index 7ac08d664e65..85e8a465ed86 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts @@ -476,7 +476,7 @@ export class SequencerPublisher { throw new Error('L1 TX utils needs to be initialized with an account wallet.'); } const kzg = Blob.getViemKzgInstance(); - const blobInput = Blob.getEthBlobEvaluationInputs(encodedData.blobs); + const blobInput = Blob.getPrefixedEthBlobCommitments(encodedData.blobs); this.log.debug('Validating blob input', { blobInput }); const blobEvaluationGas = await this.l1TxUtils .estimateGas( diff --git a/yarn-project/stdlib/src/interfaces/epoch-prover.ts b/yarn-project/stdlib/src/interfaces/epoch-prover.ts index 6dfe395c0eb3..96398552feb6 100644 --- a/yarn-project/stdlib/src/interfaces/epoch-prover.ts +++ b/yarn-project/stdlib/src/interfaces/epoch-prover.ts @@ -1,3 +1,4 @@ +import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import type { Fr } from '@aztec/foundation/fields'; import type { L2Block } from '../block/l2_block.js'; @@ -15,7 +16,12 @@ export interface EpochProver extends Omit { * @param firstBlockNumber - The block number of the first block in the epoch. * @param totalNumBlocks - The total number of blocks expected in the epoch (must be at least one). **/ - startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number): void; + startNewEpoch( + epochNumber: number, + firstBlockNumber: number, + totalNumBlocks: number, + finalBlobBatchingChallenges: FinalBlobBatchingChallenges, + ): void; /** * Kickstarts tube circuits for the specified txs. These will be used during epoch proving. @@ -27,7 +33,7 @@ export interface EpochProver extends Omit { setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise; /** Pads the epoch with empty block roots if needed and blocks until proven. Throws if proving has failed. */ - finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof }>; + finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof; batchedBlobInputs: BatchedBlob }>; /** Cancels all proving jobs. */ cancel(): void; diff --git a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts index b25f6fa32515..1688bfda3857 100644 --- a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts +++ b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts @@ -50,9 +50,9 @@ export class BlockRootOrBlockMergePublicInputs { */ public fees: Tuple, /** - * Public inputs required to verify a blob (challenge point z, evaluation y = p(z), and the commitment to p() for each blob) + * Public inputs required to verify a batch of blobs. */ - public blobPublicInputs: Tuple, + public blobPublicInputs: BlockBlobPublicInputs, ) {} /** @@ -71,7 +71,7 @@ export class BlockRootOrBlockMergePublicInputs { Fr.fromBuffer(reader), reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr), reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient), - reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), + reader.readObject(BlockBlobPublicInputs), ); } diff --git a/yarn-project/stdlib/src/rollup/block_root_rollup.ts b/yarn-project/stdlib/src/rollup/block_root_rollup.ts index 874a5aa15d2a..9b7ca6d930d4 100644 --- a/yarn-project/stdlib/src/rollup/block_root_rollup.ts +++ b/yarn-project/stdlib/src/rollup/block_root_rollup.ts @@ -1,3 +1,4 @@ +import { BlobAccumulatorPublicInputs, FinalBlobBatchingChallenges } from '@aztec/blob-lib'; import { ARCHIVE_HEIGHT, BLOBS_PER_BLOCK, @@ -5,7 +6,7 @@ import { L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_PROOF_LENGTH, } from '@aztec/constants'; -import { Fr } from '@aztec/foundation/fields'; +import { BLS12Point, Fr } from '@aztec/foundation/fields'; import { bufferSchemaFor } from '@aztec/foundation/schemas'; import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; @@ -37,6 +38,14 @@ export class BlockRootRollupData { * The header of the previous block. */ public previousBlockHeader: BlockHeader, + /** + * The current blob accumulation state across the epoch. + */ + public startBlobAccumulator: BlobAccumulatorPublicInputs, + /** + * Finalized challenges z and gamma for performing blob batching. Shared value across the epoch. + */ + public finalBlobChallenges: FinalBlobBatchingChallenges, /** * Identifier of the prover. */ @@ -80,6 +89,8 @@ export class BlockRootRollupData { fields.previousArchiveSiblingPath, fields.newArchiveSiblingPath, fields.previousBlockHeader, + fields.startBlobAccumulator, + fields.finalBlobChallenges, fields.proverId, ] as const; } @@ -97,6 +108,8 @@ export class BlockRootRollupData { reader.readArray(ARCHIVE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), BlockHeader.fromBuffer(reader), + reader.readObject(BlobAccumulatorPublicInputs), + reader.readObject(FinalBlobBatchingChallenges), Fr.fromBuffer(reader), ); } @@ -131,9 +144,8 @@ export class BlockRootRollupBlobData { public blobFields: Fr[], /** * KZG commitments representing the blob (precomputed in ts, injected to use inside circuit). - * TODO(Miranda): Rename to kzg_commitment to match BlobPublicInputs? */ - public blobCommitments: Tuple, typeof BLOBS_PER_BLOCK>, + public blobCommitments: Tuple, /** * The hash of eth blob hashes for this block * See yarn-project/foundation/src/blob/index.ts or body.ts for calculation @@ -186,7 +198,7 @@ export class BlockRootRollupBlobData { // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' // reader.readArray(FIELDS_PER_BLOB, Fr), Array.from({ length: FIELDS_PER_BLOB * BLOBS_PER_BLOCK }, () => Fr.fromBuffer(reader)), - reader.readArray(BLOBS_PER_BLOCK, { fromBuffer: () => reader.readArray(2, Fr) }), + reader.readArray(BLOBS_PER_BLOCK, BLS12Point), Fr.fromBuffer(reader), ); } diff --git a/yarn-project/stdlib/src/rollup/root_rollup.ts b/yarn-project/stdlib/src/rollup/root_rollup.ts index 82d0e42a7ab5..2f3d1ba660c7 100644 --- a/yarn-project/stdlib/src/rollup/root_rollup.ts +++ b/yarn-project/stdlib/src/rollup/root_rollup.ts @@ -1,4 +1,4 @@ -import { BlockBlobPublicInputs } from '@aztec/blob-lib'; +import { FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib'; import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants'; import { makeTuple } from '@aztec/foundation/array'; import { Fr } from '@aztec/foundation/fields'; @@ -108,7 +108,7 @@ export class RootRollupPublicInputs { public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, public proverId: Fr, - public blobPublicInputs: Tuple, + public blobPublicInputs: FinalBlobAccumulatorPublicInputs, ) {} static getFields(fields: FieldsOf) { @@ -155,7 +155,7 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), - reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), + reader.readObject(FinalBlobAccumulatorPublicInputs), ); } @@ -177,7 +177,7 @@ export class RootRollupPublicInputs { return bufferSchemaFor(RootRollupPublicInputs); } - /** Creates a random instance. */ + /** Creates a random instance. Used for testing only - will not prove/verify. */ static random() { return new RootRollupPublicInputs( Fr.random(), @@ -189,7 +189,7 @@ export class RootRollupPublicInputs { Fr.random(), Fr.random(), Fr.random(), - makeTuple(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs.empty), + FinalBlobAccumulatorPublicInputs.random(), ); } } diff --git a/yarn-project/stdlib/src/tests/factories.ts b/yarn-project/stdlib/src/tests/factories.ts index 659aa5e7a6ee..85d572700254 100644 --- a/yarn-project/stdlib/src/tests/factories.ts +++ b/yarn-project/stdlib/src/tests/factories.ts @@ -1,4 +1,4 @@ -import { makeBlockBlobPublicInputs, makeSpongeBlob } from '@aztec/blob-lib/testing'; +import { makeBatchedBlobAccumulator, makeBlockBlobPublicInputs, makeSpongeBlob } from '@aztec/blob-lib/testing'; import { ARCHIVE_HEIGHT, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, @@ -46,7 +46,7 @@ import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { compact } from '@aztec/foundation/collection'; import { SchnorrSignature, poseidon2HashWithSeparator, sha256 } from '@aztec/foundation/crypto'; import { EthAddress } from '@aztec/foundation/eth-address'; -import { Fr, GrumpkinScalar, Point } from '@aztec/foundation/fields'; +import { BLS12Point, Fr, GrumpkinScalar, Point } from '@aztec/foundation/fields'; import type { Bufferable } from '@aztec/foundation/serialize'; import { MembershipWitness } from '@aztec/foundation/trees'; @@ -719,7 +719,7 @@ export function makeBlockRootOrBlockMergeRollupPublicInputs( fr(seed + 0x600), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x700), - makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x100), + makeBlockBlobPublicInputs(seed), ); } @@ -783,14 +783,16 @@ function makeBlockRootRollupData(seed = 0) { makeTuple(ARCHIVE_HEIGHT, fr, 0x2200), makeTuple(ARCHIVE_HEIGHT, fr, 0x2300), makeHeader(seed + 0x2400), - fr(seed + 0x2500), + makeBatchedBlobAccumulator(seed + 0x2500).toBlobAccumulatorPublicInputs(), + makeBatchedBlobAccumulator(seed + 0x2600).finalBlobChallenges, + fr(seed + 0x2700), ); } function makeBlockRootRollupBlobData(seed = 0) { return new BlockRootRollupBlobData( makeTuple(FIELDS_PER_BLOB * BLOBS_PER_BLOCK, fr, 0x2500), - makeTuple(BLOBS_PER_BLOCK, () => makeTuple(2, fr, 0x2600)), + makeTuple(BLOBS_PER_BLOCK, () => BLS12Point.random()), fr(seed + 0x2700), ); } @@ -885,7 +887,7 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x702), fr(seed + 0x703), fr(seed + 0x704), - makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x800), + makeBatchedBlobAccumulator(seed).toFinalBlobAccumulatorPublicInputs(), ); } diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 668bf6896fa3..29b0e748a2c1 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -734,7 +734,7 @@ __metadata: "@types/node": "npm:^22.15.17" "@types/pako": "npm:^2.0.0" "@types/supertest": "npm:^2.0.12" - c-kzg: "npm:4.0.0-alpha.1" + bn.js: "npm:^5.2.1" colorette: "npm:^2.0.20" comlink: "npm:^4.4.1" detect-node: "npm:^2.1.0" @@ -1193,6 +1193,7 @@ __metadata: dependencies: "@aztec/archiver": "workspace:^" "@aztec/bb-prover": "workspace:^" + "@aztec/blob-lib": "workspace:^" "@aztec/blob-sink": "workspace:^" "@aztec/constants": "workspace:^" "@aztec/epoch-cache": "workspace:^"