Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 362 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint Batch Witho... | 6631804 | 23 hrs ago | IN | 0.0006 ETH | 0.00002189 | ||||
Mint Batch Witho... | 6560172 | 43 hrs ago | IN | 0.0003 ETH | 0.00003287 | ||||
Mint Batch Witho... | 6555874 | 45 hrs ago | IN | 0.0006 ETH | 0.0000303 | ||||
Mint Batch Witho... | 6555013 | 45 hrs ago | IN | 0.0006 ETH | 0.00002359 | ||||
Mint Batch Witho... | 6549762 | 46 hrs ago | IN | 0.0003 ETH | 0.00001301 | ||||
Mint Batch Witho... | 6543492 | 2 days ago | IN | 0.0006 ETH | 0.00002108 | ||||
Mint Batch Witho... | 6504769 | 2 days ago | IN | 0.0003 ETH | 0.00001659 | ||||
Mint Batch Witho... | 6494546 | 2 days ago | IN | 0.0006 ETH | 0.00002153 | ||||
Mint Batch Witho... | 6493013 | 2 days ago | IN | 0.0003 ETH | 0.00001677 | ||||
Mint Batch Witho... | 6490180 | 2 days ago | IN | 0.0006 ETH | 0.00001623 | ||||
Mint Batch Witho... | 6490126 | 2 days ago | IN | 0.0009 ETH | 0.00002643 | ||||
Mint Batch Witho... | 6488642 | 2 days ago | IN | 0.0003 ETH | 0.00001806 | ||||
Mint Batch Witho... | 6487355 | 2 days ago | IN | 0.0003 ETH | 0.00001829 | ||||
Mint Batch Witho... | 6478650 | 2 days ago | IN | 0.0006 ETH | 0.00002457 | ||||
Mint Batch Witho... | 6472836 | 2 days ago | IN | 0.0009 ETH | 0.00005549 | ||||
Mint Batch Witho... | 6472435 | 2 days ago | IN | 0.0009 ETH | 0.00004834 | ||||
Mint Batch Witho... | 6472200 | 2 days ago | IN | 0.0003 ETH | 0.00003898 | ||||
Mint Batch Witho... | 6472119 | 2 days ago | IN | 0.0003 ETH | 0.00001257 | ||||
Mint Batch Witho... | 6471957 | 2 days ago | IN | 0.0003 ETH | 0.00003144 | ||||
Mint Batch Witho... | 6230256 | 5 days ago | IN | 0.0036 ETH | 0.00006603 | ||||
Mint Batch Witho... | 6206568 | 6 days ago | IN | 0.0009 ETH | 0.00002558 | ||||
Mint Batch Witho... | 6171671 | 6 days ago | IN | 0.0015 ETH | 0.00003501 | ||||
Mint Batch Witho... | 6166058 | 6 days ago | IN | 0.0009 ETH | 0.00002384 | ||||
Mint Batch Witho... | 6157639 | 6 days ago | IN | 0.0006 ETH | 0.00001998 | ||||
Mint Batch Witho... | 6147883 | 6 days ago | IN | 0.0006 ETH | 0.00002476 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6631804 | 23 hrs ago | 0.0006 ETH | ||||
6631804 | 23 hrs ago | Contract Creation | 0 ETH | |||
6631804 | 23 hrs ago | 0.0006 ETH | ||||
6560172 | 43 hrs ago | 0.0003 ETH | ||||
6560172 | 43 hrs ago | Contract Creation | 0 ETH | |||
6560172 | 43 hrs ago | 0.0003 ETH | ||||
6555874 | 45 hrs ago | 0.0006 ETH | ||||
6555874 | 45 hrs ago | Contract Creation | 0 ETH | |||
6555874 | 45 hrs ago | 0.0006 ETH | ||||
6555013 | 45 hrs ago | 0.0006 ETH | ||||
6555013 | 45 hrs ago | Contract Creation | 0 ETH | |||
6555013 | 45 hrs ago | 0.0006 ETH | ||||
6549762 | 46 hrs ago | 0.0003 ETH | ||||
6549762 | 46 hrs ago | Contract Creation | 0 ETH | |||
6549762 | 46 hrs ago | 0.0003 ETH | ||||
6543492 | 2 days ago | 0.0006 ETH | ||||
6543492 | 2 days ago | Contract Creation | 0 ETH | |||
6543492 | 2 days ago | 0.0006 ETH | ||||
6504769 | 2 days ago | 0.0003 ETH | ||||
6504769 | 2 days ago | Contract Creation | 0 ETH | |||
6504769 | 2 days ago | 0.0003 ETH | ||||
6494546 | 2 days ago | 0.0006 ETH | ||||
6494546 | 2 days ago | Contract Creation | 0 ETH | |||
6494546 | 2 days ago | 0.0006 ETH | ||||
6493013 | 2 days ago | 0.0003 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
UniversalMinter
Compiler Version
v0.8.25+commit.b61c2a91
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import {IUniversalMinter} from "../interfaces/IUniversalMinter.sol"; import {IMinterAgent} from "../interfaces/IMinterAgent.sol"; import {Clones} from "./Clone.sol"; import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import {IERC1155Receiver} from "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol"; import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; /// @title Universal Minter. /// @notice Mints ERC721 or ERC1155 tokens on behalf of an account on any standard ER721 or ERC1155 contract. Optionally collects fees and rewards for a finder. contract UniversalMinter is IUniversalMinter { /// @dev Default fee collects per token minted uint256 constant FEE_PER_TOKEN = 0.000222 ether; /// @dev Default reward finder collects per token minted uint256 constant FINDER_REWARD_PER_TOKEN = 0.000555 ether; /// @dev default fee collects per token minted when no finder is specified uint256 constant FEE_PER_TOKEN_WHEN_NO_FINDER = FEE_PER_TOKEN + FINDER_REWARD_PER_TOKEN; /// @dev Rewards allocated to addresses that can be withdran from later mapping(address => uint256) rewardAllocations; /// @dev How much has been withdrawn so far by each address mapping(address => uint256) withdrawn; /// @dev The address of the Protocol's fee recipient address public immutable feeRecipient; /// @dev The address of the minter agent implementation, which is cloned for each EOA address public immutable agentImpl; mapping(address => address) private _deployedAgents; constructor(address _minterAgentImpl, address _feeRecipient) { feeRecipient = _feeRecipient; agentImpl = _minterAgentImpl; } /// Executes mint calls on a series of target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Adds a mint fee to the msg.value sent to the contract. /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must include all the values to send to the minting contracts and the fees + reward amount. /// This can be determined by calling `fee`, and getting the requiredToSend parameter. /// @param _targets Addresses of contracts to call /// @param _calldatas Data to pass to the mint functions for each target /// @param _values Value to send to each target - must match the value required by the target's mint function. /// @param _tokensMinted Total number of tokens minted across all targets, used to calculate fees /// @param _finder Optional - address of finder that will receive a portion of the fees function mintBatch( address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values, uint256 _tokensMinted, address _finder ) external payable { uint256 totalValue = _uncheckedSum(_values); // calculate fees (uint256 feeAmount, uint256 finderReward, uint256 totalWithFees) = fee(totalValue, _tokensMinted, _finder); emit MintedBatch(_targets, _values, _tokensMinted, _finder, msg.sender, totalWithFees, feeAmount, finderReward); // allocate the fees to the mint fee receiver and finder, which can be withdrawn against later. Validates // that proper value has been sent. _allocateFeesAndRewards(feeAmount, finderReward, totalWithFees, _finder); _mintAll(msg.sender, totalValue, _targets, _calldatas, _values); } /// @notice Executes mint calls on a series of target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Does not add a mint feee /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must equal the total values to send to the minting contracts. /// @param _targets Addresses of contracts to call /// @param _calldatas Data to pass to the mint functions for each target /// @param _values Value to send to each target - must match the value required by the target's mint function. function mintBatchWithoutFees(address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values) external payable { uint256 totalValue = _uncheckedSum(_values); // make sure that enough value was sent to cover the fees + values needed to be sent to the contracts // Cannot realistically overflow if (totalValue != msg.value) { revert INSUFFICIENT_VALUE(totalValue, msg.value); } emit MintedBatch(_targets, _values, 0, address(0), msg.sender, 0, 0, 0); _mintAll(msg.sender, totalValue, _targets, _calldatas, _values); } /// Execute a mint call on a series a target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Adds a mint fee to the msg.value sent to the contract. /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must include the value to send to the minting contract and the universal minter fee + finder reward amount. /// This can be determined by calling `fee`, and getting the requiredToSend parameter. /// @param _target Addresses of contract to call /// @param _calldata Data to pass to the mint function for the target /// @param _value Value to send to the target - must match the value required by the target's mint function. /// @param _tokensMinted Total number of tokens minted across all targets, used to calculate fees /// @param _finder Optional - address of finder that will receive a portion of the fees function mint(address _target, bytes calldata _calldata, uint256 _value, uint256 _tokensMinted, address _finder) external payable { IMinterAgent agent = _getOrCloneAgent(msg.sender); (uint256 feeAmount, uint256 finderReward, uint256 totalWithFees) = fee(_value, _tokensMinted, _finder); emit Minted(_target, _value, _tokensMinted, _finder, msg.sender, totalWithFees, feeAmount, finderReward); // allocate the fees to the mint fee receiver and rewards to the finder, which can be withdrawn against later _allocateFeesAndRewards(feeAmount, finderReward, totalWithFees, _finder); // mint the fokens for each target contract. These will be transferred to the msg.caller. _mint(agent, _target, _calldata, _value); } /// Withdraws any fees that have been allocated to the caller's address to a specified address. /// @param to The address to withdraw to function withdraw(address to) external { uint256 feeAllocation = rewardAllocations[msg.sender]; uint256 withdrawnSoFar = withdrawn[msg.sender]; if (feeAllocation <= withdrawnSoFar) { revert NOTHING_TO_WITHDRAW(); } uint256 toWithdraw = feeAllocation - withdrawnSoFar; withdrawn[msg.sender] = withdrawnSoFar + toWithdraw; _safeSend(toWithdraw, to); } /// Calculates the fees that will be collected for a given mint, based on the value and tokens minted. /// @param _mintValue Total value of the mint /// @param _tokensMinted Quantity of tokens minted /// @param _finderAddress Address of the finder, if any. If the finder is the fee recipient, then the finder fee is 0. /// @return feeAmount The fee that will be allocated to the fee recipient /// @return finderReward The reward that will be allcoated to the finder /// @return requiredToSend The total value that must be sent to the contract, including fees function fee( uint256 _mintValue, uint256 _tokensMinted, address _finderAddress ) public view returns (uint256 feeAmount, uint256 finderReward, uint256 requiredToSend) { if (_finderAddress == address(0) || _finderAddress == feeRecipient) { unchecked { feeAmount = FEE_PER_TOKEN_WHEN_NO_FINDER * _tokensMinted; requiredToSend = feeAmount + _mintValue; } } else { unchecked { feeAmount = FEE_PER_TOKEN * _tokensMinted; finderReward = FINDER_REWARD_PER_TOKEN * _tokensMinted; requiredToSend = feeAmount + finderReward + _mintValue; } } } /// Has a minter agent execute a transaction on behalf of the calling acccount. The minter /// agent's address will be the same for the calling account as the address that was /// used to mint the tokens. Can be used to recover tokens that may get accidentally locked in /// the minter agent's contract address. /// @param _target Address of contract to call /// @param _calldata Calldata for arguments to call. function forwardCallFromAgent(address _target, bytes calldata _calldata, uint256 _additionalValue) external payable { IMinterAgent agent = _getOrCloneAgent(msg.sender); (bool success, bytes memory result) = agent.forwardCall{value: msg.value}(_target, _calldata, msg.value + _additionalValue); if (!success) { _handleForwardCallFail(result); } } /// @dev Unwraps a forward call failure to return the original error. Useful /// for debugging failed minting calls. function _handleForwardCallFail(bytes memory result) private pure { // source: https://yos.io/2022/07/16/bubbling-up-errors-in-solidity/#:~:text=An%20inline%20assembly%20block%20is,object%20is%20returned%20in%20result%20. // if no error message, revert with generic error if (result.length == 0) { revert FORWARD_CALL_FAILED(); } assembly { // We use Yul's revert() to bubble up errors from the target contract. revert(add(32, result), mload(result)) } } /// Gets the deterministic address of the MinterAgent clone that gets created for a given recipient. /// @param recipient The account that the agent is cloned on behalf of. function agentAddress(address recipient) public view returns (address) { return Clones.predictDeterministicAddress(agentImpl, _agentSalt(recipient)); } /// Creates a clone of an agent contract, which mints tokens on behalf of the msg.sender. If a clone has already been created /// for that account, returns it. Clone address is deterministic based on the recipient's address. /// Sends all tokens received as a result of minting to the recipient. /// @param callingAccount the account to receive tokens minted by this cloned agent. /// @return agent the created agent function _getOrCloneAgent(address callingAccount) private returns (IMinterAgent agent) { address targetAddress = agentAddress(callingAccount); if (_deployedAgents[targetAddress] != address(0)) { return IMinterAgent(_deployedAgents[targetAddress]); } address cloneAddress = Clones.cloneDeterministic(agentImpl, _agentSalt(callingAccount)); require(cloneAddress != address(0), "Clone deployment failed"); agent = IMinterAgent(cloneAddress); agent.initialize(address(this), callingAccount); _deployedAgents[targetAddress] = cloneAddress; return agent; } /// @dev Unique salt generated from an address for a callingAccount that a MinterAgent is create for. function _agentSalt(address callingAccount) private pure returns (bytes32) { return bytes32(uint256(uint160(callingAccount)) << 96); } function _mint(IMinterAgent _agent, address _target, bytes calldata _calldata, uint256 _value) private { (bool success, bytes memory result) = _agent.forwardCall{value: _value}(_target, _calldata, _value); if (!success) { _handleForwardCallFail(result); } } /// @dev Iterates through minting calls and calls them each via a IMinterAgent. function _mintAll( address callingAccount, uint256 totalValueToSend, address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values ) private { IMinterAgent _agent = _getOrCloneAgent(callingAccount); (bool success, bytes memory result) = _agent.forwardCallBatch{value: totalValueToSend}(_targets, _calldatas, _values); if (!success) { _handleForwardCallFail(result); } } /// Allocates fees and rewards which can be withdrawn against later. /// Validates that the proper value has been sent by the calling account. function _allocateFeesAndRewards(uint256 feeAmount, uint256 finderReward, uint256 requiredToBeSent, address finder) private { // make sure that the correct amount was sent if (requiredToBeSent != msg.value) { revert INSUFFICIENT_VALUE(requiredToBeSent, msg.value); } rewardAllocations[feeRecipient] += feeAmount; if (finderReward > 0) { rewardAllocations[finder] += finderReward; } } function _safeSend(uint256 amount, address to) private { (bool success, ) = to.call{value: amount}(""); if (!success) revert FAILED_TO_SEND(); } function _uncheckedSum(uint256[] calldata _values) private pure returns (uint256 totalValue) { unchecked { for (uint256 i = 0; i < _values.length; i++) { totalValue += _values[i]; } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; /// @title Universal Minter /// @notice Mints ERC721 or ERC1155 tokens on behalf of an account on any standard ER721 or ERC1155 contract. Optionally collects fees and rewards for a finder. interface IUniversalMinter { error MINT_EXECUTION_FAILED(); error NOTHING_TO_WITHDRAW(); error FORWARD_CALL_FAILED(); error FAILED_TO_SEND(); error INSUFFICIENT_VALUE(uint256 expectedValue, uint256 actualValue); event MintedBatch( address[] indexed targets, uint256[] values, uint256 tokensMinted, address finder, address indexed minter, uint256 indexed totalWithFees, uint256 fee, uint256 finderFee ); event Minted( address indexed target, uint256 value, uint256 tokensMinted, address finder, address indexed minter, uint256 indexed totalWithFees, uint256 fee, uint256 finderFee ); enum MintableTypes { NONE, ERC721, ERC1155, ERC1155_BATCH } /// Executes mint calls on a series of target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Adds a mint fee to the msg.value sent to the contract. /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must include all the values to send to the minting contracts and the fees + reward amount. /// This can be determined by calling `fee`, and getting the requiredToSend parameter. /// @param _targets Addresses of contracts to call /// @param _calldatas Data to pass to the mint functions for each target /// @param _values Value to send to each target - must match the value required by the target's mint function. /// @param _tokensMinted Total number of tokens minted across all targets, used to calculate fees /// @param _finder Optional - address of finder that will receive a portion of the fees function mintBatch( address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values, uint256 _tokensMinted, address _finder ) external payable; /// @notice Executes mint calls on a series of target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Does not add a mint feee /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must equal the total values to send to the minting contracts. /// @param _targets Addresses of contracts to call /// @param _calldatas Data to pass to the mint functions for each target /// @param _values Value to send to each target - must match the value required by the target's mint function. function mintBatchWithoutFees(address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values) external payable; /// Execute a mint call on a series a target ERC721 or ERC1155 contracts, then transfers the minted tokens to the calling account. /// Adds a mint fee to the msg.value sent to the contract. /// Assumes that the mint function for each target follows the ERC721 or ERC1155 standard for minting - which is that /// the a safe transfer is used to transfer tokens - and the corresponding safeTransfer callbacks on the receiving account are called AFTER minting the tokens. /// The value sent must include the value to send to the minting contract and the universal minter fee + finder reward amount. /// This can be determined by calling `fee`, and getting the requiredToSend parameter. /// @param _target Addresses of contract to call /// @param _calldata Data to pass to the mint function for the target /// @param _value Value to send to the target - must match the value required by the target's mint function. /// @param _tokensMinted Total number of tokens minted across all targets, used to calculate fees /// @param _finder Optional - address of finder that will receive a portion of the fees function mint(address _target, bytes calldata _calldata, uint256 _value, uint256 _tokensMinted, address _finder) external payable; /// Has a minter agent execute a transaction on behalf of the calling acccount. The minter /// agent's address will be the same for the calling account as the address that was /// used to mint the tokens. Can be used to recover tokens that may get accidentally locked in /// the minter agent's contract address. /// @param _target Address of contract to call /// @param _calldata Calldata for arguments to call. function forwardCallFromAgent(address _target, bytes calldata _calldata, uint256 _additionalValue) external payable; /// Withdraws any fees or rewards that have been allocated to the caller's address. Fees can be withdrawn to any other specified address. /// @param to The address to withdraw to function withdraw(address to) external; /// Calculates the fees that will be collected for a given mint, based on the value and tokens minted. /// @param _mintValue Total value of the mint that is to be sent to external minting contracts /// @param _tokensMinted Quantity of tokens minted /// @param _finderAddress Address of the finder, if any. If the finder is the fee recipient, then the finder fee is 0. /// @return fee The fee that will be sent to the fee recipient /// @return finderReward The fee that will be sent to the finder /// @return requiredToSend The total value that must be sent to the contract, including fees function fee( uint256 _mintValue, uint256 _tokensMinted, address _finderAddress ) external view returns (uint256 fee, uint256 finderReward, uint256 requiredToSend); /// Gets the deterministic address of the MinterAgent clone that gets created for a given recipient. /// @param recipient The account that the agent is cloned on behalf of. function agentAddress(address recipient) external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; interface IMinterAgent { error ALREADY_INITIALIZED(address); error ONLY_OWNER(); error ARRAY_LENGTH_MISMATCH(); function initialize(address _owner, address _receiver) external; function isInitialized() external view returns (bool); function forwardCall(address _target, bytes calldata _cd, uint256 _value) external payable returns (bool success, bytes memory data); function forwardCallBatch( address[] calldata _targets, bytes[] calldata _calldatas, uint256[] calldata _values ) external payable returns (bool success, bytes memory data); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol) pragma solidity ^0.8.0; import {Proxy} from "./Proxy.sol"; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. * * Modified for ZKSync Era compatibility. */ library Clones { /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, optimized for ZKSync. * The deployment is done using explicit bytecode generation to ensure compatibility. */ function clone(address implementation) internal returns (address instance) { // Append constructor parameters to creation code bytes memory bytecode = abi.encodePacked( type(Proxy).creationCode, abi.encode(implementation) // Constructor parameters ); /// @solidity memory-safe-assembly assembly { instance := create(0, add(bytecode, 0x20), mload(bytecode)) } require(instance != address(0), "ERC1167: create failed"); } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. * * Modified to use ZKSync's deployment mechanism. */ /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { // Use the implementation address as constructor parameter bytes memory bytecode = abi.encodePacked( type(Proxy).creationCode, abi.encode(implementation) // Constructor parameters ); /// @solidity memory-safe-assembly assembly { instance := create2(0, add(bytecode, 0x20), mload(bytecode), salt) } require(instance != address(0), "ERC1167: create2 failed"); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. * Modified to use ZKSync's address derivation scheme. * * The address is computed using ZKSync's specific CREATE2 formula which includes: * - A special prefix ("zksyncCreate2") * - The deployer address * - The salt * - The bytecode hash * - The constructor input hash */ function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { // Generate the creation code including constructor parameters bytes memory bytecode = abi.encodePacked( type(Proxy).creationCode, abi.encode(implementation) // Constructor parameters ); bytes32 bytecodeHash = keccak256(bytecode); bytes32 constructorInputHash = keccak256(""); // Empty constructor input since it's included in bytecode bytes32 prefix = keccak256(bytes("zksyncCreate2")); bytes32 senderBytes = bytes32(uint256(uint160(deployer))); bytes32 data = keccak256( abi.encodePacked(prefix, senderBytes, salt, bytecodeHash, constructorInputHash) ); predicted = address(uint160(uint256(data))); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. * Uses the current contract as the deployer. */ function predictDeterministicAddress( address implementation, bytes32 salt ) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch( address[] calldata accounts, uint256[] calldata ids ) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title Minimal Proxy Contract * @dev Enhanced proxy implementation compatible with EIP-1967 */ contract Proxy { // EIP-1967 storage slots bytes32 private constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; constructor(address _impl) { require(_impl != address(0), "Invalid implementation"); assembly { sstore(IMPLEMENTATION_SLOT, _impl) } } /** * @dev Receive function to accept ETH */ receive() external payable { _fallback(); } /** * @dev Fallback function for all other calls */ fallback() external payable { _fallback(); } /** * @dev Returns the current implementation address */ function _implementation() internal view returns (address impl) { assembly { impl := sload(IMPLEMENTATION_SLOT) } } /** * @dev Core delegation function */ function _fallback() internal { address _impl = _implementation(); require(_impl != address(0), "Implementation not set"); assembly { // The pointer to the free memory slot let ptr := mload(0x40) // Copy function signature and arguments from calldata calldatacopy(ptr, 0, calldatasize()) // Delegate call to the implementation contract let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0) // Get the size of the last return data let size := returndatasize() // Copy the return data returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "viaIR": true, "codegen": "yul", "remappings": [ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc721a-upgradeable/=lib/ERC721A-Upgradeable/contracts/", "forge-std/=lib/forge-std/src/", "ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "detectMissingLibraries": false, "enableEraVMExtensions": false, "forceEVMLA": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_minterAgentImpl","type":"address"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"FAILED_TO_SEND","type":"error"},{"inputs":[],"name":"FORWARD_CALL_FAILED","type":"error"},{"inputs":[{"internalType":"uint256","name":"expectedValue","type":"uint256"},{"internalType":"uint256","name":"actualValue","type":"uint256"}],"name":"INSUFFICIENT_VALUE","type":"error"},{"inputs":[],"name":"MINT_EXECUTION_FAILED","type":"error"},{"inputs":[],"name":"NOTHING_TO_WITHDRAW","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":false,"internalType":"address","name":"finder","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"uint256","name":"totalWithFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"finderFee","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":false,"internalType":"address","name":"finder","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"uint256","name":"totalWithFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"finderFee","type":"uint256"}],"name":"MintedBatch","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"agentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"agentImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintValue","type":"uint256"},{"internalType":"uint256","name":"_tokensMinted","type":"uint256"},{"internalType":"address","name":"_finderAddress","type":"address"}],"name":"fee","outputs":[{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"uint256","name":"finderReward","type":"uint256"},{"internalType":"uint256","name":"requiredToSend","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"},{"internalType":"uint256","name":"_additionalValue","type":"uint256"}],"name":"forwardCallFromAgent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_tokensMinted","type":"uint256"},{"internalType":"address","name":"_finder","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"},{"internalType":"bytes[]","name":"_calldatas","type":"bytes[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"uint256","name":"_tokensMinted","type":"uint256"},{"internalType":"address","name":"_finder","type":"address"}],"name":"mintBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"},{"internalType":"bytes[]","name":"_calldatas","type":"bytes[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"mintBatchWithoutFees","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010003f36aa82bdf5c0572ef36a0c0154f3c58ac59f9130fbd165e4a9273645800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b76713f80c040395e7cf3b9cc484757e7f88dde800000000000000000000000095f07f2269f61da823f55c84bafc06113157653a
Deployed Bytecode
0x000400000000000200130000000000020000006004100270000003ac0340019700030000003103550002000000010355000003ac0040019d0000000100200190000000330000c13d0000008002000039000000400020043f000000040030008c0000070f0000413d000000000401043b000000e004400270000003b10040009c000000650000a13d000003b20040009c000000c10000a13d000003b30040009c000001940000613d000003b40040009c000003150000613d000003b50040009c0000070f0000c13d000000640030008c0000070f0000413d0000000002000416000000000002004b0000070f0000c13d0000004402100370000000000302043b000003af0030009c0000070f0000213d0000000402100370000000000402043b0000002401100370000000000201043b00000000010400190eaa083e0000040f000000400400043d00000020054000390000000000250435000000400240003900000000003204350000000000140435000003ac0040009c000003ac040080410000004001400210000003bd011001c700000eab0001042e0000000002000416000000000002004b0000070f0000c13d0000001f02300039000003ad02200197000000c002200039000000400020043f0000001f0430018f000003ae05300198000000c002500039000000440000613d000000c006000039000000000701034f000000007807043c0000000006860436000000000026004b000000400000c13d000000000004004b000000510000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000400030008c0000070f0000413d000000c00100043d000003af0010009c0000070f0000213d000000e00200043d000003af0020009c0000070f0000213d000000800020043f000000a00010043f0000014000000443000001600020044300000020020000390000018000200443000001a000100443000001000020044300000002010000390000012000100443000003b00100004100000eab0001042e000003b80040009c0000007c0000213d000003bb0040009c000001340000613d000003bc0040009c0000070f0000c13d000000240030008c0000070f0000413d0000000002000416000000000002004b0000070f0000c13d0000000401100370000000000101043b000003af0010009c0000070f0000213d0eaa074b0000040f000000400200043d0000000000120435000003ac0020009c000003ac020080410000004001200210000003e9011001c700000eab0001042e000003b90040009c000001890000613d000003ba0040009c0000070f0000c13d000000240030008c0000070f0000413d0000000002000416000000000002004b0000070f0000c13d0000000401100370000000000101043b000f00000001001d000003af0010009c0000070f0000213d0000000001000411000000000010043f000000200000043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000101041a000e00000001001d0000000101000039000d00000001001d000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000101041a0000000e0110006b000003260000a13d000c00000001001d0000000001000411000003af01100197000000000010043f0000000101000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b0000000e02000029000000000021041b00000000010004140000000f04000029000000040040008c000003420000c13d00000001010000310000034f0000013d000003b60040009c0000026a0000613d000003b70040009c0000070f0000c13d000000a40030008c0000070f0000413d0000000402100370000000000202043b000f00000002001d000003af0020009c0000070f0000213d0000002402100370000000000202043b000003c00020009c0000070f0000213d0000002304200039000000000034004b0000070f0000813d0000000404200039000000000441034f000000000404043b000e00000004001d000003c00040009c0000070f0000213d0000002404200039000d00000004001d0000000e02400029000000000032004b0000070f0000213d0000006402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000008401100370000000000101043b000c00000001001d000003af0010009c0000070f0000213d0000014001000039000000400010043f0000008401000039000000800010043f000003ca01000041000000c40010043f000003be01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000068a0000613d000000000101043b000003af01100197000001600010043f0000002001000039000001400010043f0000018001000039000000400010043f000000800100043d000003ed031001980000001f0210018f000001110000613d00000180042001bf00000080052001bf0000000006340019000000000735001900000000070704330000000000760435000000200330008c0000010b0000c13d000000000002004b0000011d0000613d0000000302200210000001a00300043d00000000032301cf000000000323022f0000010002200089000000a00400043d000000000424022f00000000022401cf000000000232019f000001a00020043f000001a0031000390000000000030435000001400200043d000003ed052001970000001f0420018f000001610030008c0000040f0000413d000000000005004b0000012f0000613d000000000743001900000140064001bf000000200770008a0000000008570019000000000956001900000000090904330000000000980435000000200550008c000001290000c13d000000000004004b000004250000613d000001600500003900000000060300190000041b0000013d000000640030008c0000070f0000413d0000000402100370000000000202043b000f00000002001d000003af0020009c0000070f0000213d0000002402100370000000000202043b000003c00020009c0000070f0000213d0000002304200039000000000034004b0000070f0000813d000d00040020003d0000000d01100360000000000101043b000e00000001001d000003c00010009c0000070f0000213d0000000e012000290000002401100039000000000031004b0000070f0000213d00000000010004110eaa08640000040f00000002040003670000004402400370000000000202043b0000000003000416000000000023001a000007450000413d000000400d00043d0000002405d0003900000060060000390000000000650435000003dc0500004100000000055d0436000c00000005001d0000000405d000390000000f0600002900000000006504350000006405d000390000000e0e0000290000000000e504350000000d050000290000002005500039000000000754034f000000200c00008a0000000008ce01700000001f09e0018f0000008405d000390000000006850019000001700000613d000000000407034f000000000a050019000000004b04043c000000000aba043600000000006a004b0000016c0000c13d000003af041001970000000001230019000000000009004b0000017f0000613d000000000287034f0000000307900210000000000806043300000000087801cf000000000878022f000000000202043b0000010007700089000000000272022f00000000027201cf000000000282019f00000000002604350000000002e5001900000000000204350000004402d0003900000000001204350000000001000414000000040040008c0000032e0000c13d000000030100036700000001030000310000038b0000013d0000000001000416000000000001004b0000070f0000c13d0000000001000412001300000001001d001200000000003d000080050100003900000044030000390000000004000415000000130440008a0000031f0000013d000000a40030008c0000070f0000413d0000000402100370000000000202043b000003c00020009c0000070f0000213d0000002304200039000000000034004b0000070f0000813d0000000404200039000000000441034f000000000504043b000003c00050009c0000070f0000213d000f00240020003d00000005025002100000000f02200029000000000032004b0000070f0000213d0000002402100370000000000202043b000003c00020009c0000070f0000213d0000002304200039000000000034004b0000070f0000813d0000000404200039000000000441034f000000000404043b000e00000004001d000003c00040009c0000070f0000213d000d00240020003d0000000e0200002900000005022002100000000d02200029000000000032004b0000070f0000213d0000004402100370000000000202043b000003c00020009c0000070f0000213d0000002304200039000000000034004b0000070f0000813d000b00040020003d0000000b04100360000000000404043b000c00000004001d000003c00040009c0000070f0000213d00000024042000390000000c020000290000000502200210000a00000004001d000900000002001d0000000002420019000000000032004b0000070f0000213d0000006402100370000000000202043b000700000002001d0000008402100370000000000202043b000800000002001d000003af0020009c0000070f0000213d000600000005001d0000000c04000029000000000004004b00000000060000190000000a05000029000001e70000613d0000000002000019000000000600001900000005032002100000000003530019000000000331034f000000000303043b00000000066300190000000102200039000000000042004b000001df0000413d000400000006001d0000000801000029000503af0010019c000001fd0000613d000003be0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000068a0000613d000000000101043b000003af01100197000000050010006b000004d70000c13d0000000701000029000003c2011000d1000200000000001d000300000001001d000100000001001d000000400100043d0000000607000029000000000007004b0000000002010019000002140000613d000000020300036700000000040000190000000f050000290000000002010019000000000653034f000000000606043b000003af0060009c0000070f0000213d000000000262043600000020055000390000000104400039000000000074004b0000020b0000413d0000000002120049000003ac0020009c000003ac020080410000006002200210000003ac0010009c000003ac010080410000004001100210000000000112019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003c5011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000501043b000000400100043d000000a0021000390000000c030000290000000000320435000000a0020000390000000002210436000003c60030009c0000070f0000213d00000009040000290000001f0340018f000000000004004b0000023c0000613d000000c00410003900000009064000290000000b0700002900000020077000390000000207700367000000007807043c0000000004840436000000000064004b000002380000c13d0000000106000029000b00040060002d000000000003004b00000080031000390000000204000029000000000043043500000060031000390000000304000029000000000043043500000040031000390000000504000029000000000043043500000007030000290000000000320435000003ac0010009c000003ac0100804100000040011002100000000902000029000003c70020009c000003c7020080410000006002200210000000000112019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003c80110009a0000800d0200003900000004030000390000000006000411000003c9040000410000000b070000290eaa0ea00000040f00000001002001900000070f0000613d000000030100002900000002020000290000000b0300002900000008040000290eaa0e300000040f000000000100041100000004020000290000000f0300002900000006040000290000030e0000013d000000640030008c0000070f0000413d0000000404100370000000000404043b000003c00040009c0000070f0000213d0000002305400039000000000035004b0000070f0000813d0000000405400039000000000551034f000000000605043b000003c00060009c0000070f0000213d000f00240040003d00000005046002100000000f04400029000000000034004b0000070f0000213d0000002404100370000000000404043b000003c00040009c0000070f0000213d0000002305400039000000000035004b0000070f0000813d0000000405400039000000000551034f000000000505043b000e00000005001d000003c00050009c0000070f0000213d000d00240040003d0000000e0400002900000005044002100000000d04400029000000000034004b0000070f0000213d0000004404100370000000000404043b000003c00040009c0000070f0000213d0000002305400039000000000035004b0000070f0000813d000b00040040003d0000000b05100360000000000505043b000c00000005001d000003c00050009c0000070f0000213d00000024054000390000000c040000290000000504400210000a00000005001d000900000004001d0000000004540019000000000034004b0000070f0000213d000800000006001d0000000c06000029000000000006004b00000000030000190000000a07000029000002b50000613d0000000004000019000000000300001900000005054002100000000005750019000000000551034f000000000505043b00000000033500190000000104400039000000000064004b000002ad0000413d0000000004000416000000000043004b000004700000c13d000000080000006b0000000003000019000002c90000613d00000000030000190000000f0400002900000008060000290000000005020019000000000241034f000000000202043b000003af0020009c0000070f0000213d000000000225043600000020044000390000000103300039000000000063004b000002be0000413d000000600350008a000003ac0030009c000003ac0300804100000060013002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003e5011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000501043b000000400100043d000000a0021000390000000c030000290000000000320435000000a0020000390000000002210436000003c60030009c0000070f0000213d00000009040000290000001f0340018f000000000004004b000002ec0000613d000000c00410003900000009064000290000000b0700002900000020077000390000000207700367000000007807043c0000000004840436000000000064004b000002e80000c13d000000000003004b0000008003100039000000000003043500000060031000390000000000030435000000400310003900000000000304350000000000020435000003ac0010009c000003ac0100804100000040011002100000000902000029000003c70020009c000003c7020080410000006002200210000000000112019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003c80110009a0000800d0200003900000004030000390000000006000411000003c90400004100000000070000190eaa0ea00000040f000000010020019000000008040000290000070f0000613d000000000100041100000000020004160000000f030000290000000d050000290000000e060000290000000a070000290000000c080000290eaa0a9f0000040f000000000100001900000eab0001042e0000000001000416000000000001004b0000070f0000c13d0000000001000412001100000001001d001000200000003d000080050100003900000044030000390000000004000415000000110440008a0000000504400210000003be020000410eaa0e870000040f000003af01100197000000800010043f000003bf0100004100000eab0001042e000000400100043d000003e6020000410000000000210435000003ac0010009c000003ac010080410000004001100210000003e7011001c700000eac000104300000001f02e000390000000002c2016f000003dd0020009c000003dd020080410000006002200210000003ac00d0009c000f0000000d001d000003ac0500004100000000050d40190000004005500210000000000252019f000003ac0010009c000003ac01008041000000c001100210000000000112019f000003de0110009a000000000003004b0000037f0000c13d0000000002040019000003820000013d000003ac0010009c000003ac01008041000000c001100210000003c5011001c700008009020000390000000c0300002900000000050000190eaa0ea00000040f000d00000002001d00030000000103550000006001100270000103ac0010019d000003ac01100197000000000001004b000003560000c13d0000000d0100002900000001001001900000040c0000613d000000000100001900000eab0001042e000003c00010009c0000046a0000213d0000001f03100039000003ed033001970000003f03300039000003ed04300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000003c00040009c0000046a0000213d00000001005001900000046a0000c13d000000400040043f0000000005130436000003ed021001980000001f0310018f00000000012500190000000304000367000003710000613d000000000604034f000000006706043c0000000005750436000000000015004b0000036d0000c13d000000000003004b000003510000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f0000000000210435000003510000013d000003c5011001c7000080090200003900000000050000190eaa0ea00000040f00030000000103550000006003100270000103ac0030019d000003ac033001970000000100200190000003ee0000613d000000200c00008a0000000f0d0000290000000004c301700000001f0530018f00000000024d0019000003950000613d000000000601034f00000000070d0019000000006806043c0000000007870436000000000027004b000003910000c13d000000000005004b000003a20000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f013000390000000002c1016f0000000001d20019000000000021004b00000000020000390000000102004039000003c00010009c0000046a0000213d00000001002001900000046a0000c13d000000400010043f000003df0030009c0000070f0000213d000000400030008c0000070f0000413d00000000020d0433000000000002004b0000000004000039000000010400c039000000000042004b0000070f0000c13d0000000c040000290000000004040433000003c00040009c0000070f0000213d0000000006d300190000000003d400190000001f04300039000000000064004b0000000005000019000003e005008041000003e004400197000003e007600197000000000874013f000000000074004b0000000004000019000003e004004041000003e00080009c000000000405c019000000000004004b0000070f0000c13d0000000053030434000003c00030009c0000046a0000213d0000001f043000390000000004c4016f0000003f044000390000000004c4016f0000000004140019000003c00040009c0000046a0000213d000000400040043f00000000043104360000000007530019000000000067004b0000070f0000213d0000000007c3016f0000001f0630018f000000000045004b000004dc0000813d000000000007004b000003ea0000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000003e40000c13d000000000006004b000004f20000613d0000000008040019000004e80000013d0000001f0530018f000003ae06300198000000400200043d0000000004620019000003f90000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000003f50000c13d000000000005004b000004060000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003ac0020009c000003ac020080410000004002200210000000000112019f00000eac00010430000000400100043d000003e802000041000003280000013d0000000006530019000000000005004b000004180000613d0000016007000039000000000803001900000000790704340000000008980436000000000068004b000004140000c13d000000000004004b000004250000613d00000160055000390000000304400210000000000706043300000000074701cf000000000747022f00000000050504330000010004400089000000000545022f00000000044501cf000000000474019f000000000046043500000000033200190000000000030435000001610330008a000003ed033001970000000001120019000001800010043f000003cb0030009c0000046a0000213d0000018002300039000000400020043f000003ac0010009c000003ac0100804100000060011002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003cc011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000900000001001d000000400100043d000003cd0010009c0000046a0000213d0000004002100039000000400020043f0000000d020000390000000001210436000003ce020000410000000000210435000003ac0010009c000003ac0100804100000040011002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003cf011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d0000000005000411000000000301043b000000400100043d000000a002100039000003d004000041000000000042043500000080021000390000000904000029000000000042043500000060045002100000006002100039000900000004001d000000000042043500000040021000390000000004000410000000000042043500000020021000390000000000320435000000a0030000390000000000310435000003d10010009c000004770000a13d000003eb01000041000000000010043f0000004101000039000000040010043f000003ec0100004100000eac00010430000003db01000041000000800010043f000000840030043f0000000001000416000000a40010043f000003e40100004100000eac00010430000000c003100039000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000003af01100197000800000001001d000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000101041a000003af00100198000004fc0000c13d000003be01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000068a0000613d000000400200043d000003d10020009c0000046a0000213d000000000301043b000000c001200039000000400010043f0000004401200039000003ca04000041000000000041043500000084010000390000000005120436000000400100043d00000020040000390000000004410436000003af033001970000000000340435000003cd0010009c0000046a0000213d0000004003100039000000400030043f0000000006020433000003ed086001970000001f0760018f0000006002100039000000000025004b000005cd0000813d000000000008004b000004d30000613d000000000a7500190000000009720019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c000004cd0000c13d000000000007004b000005e30000613d0000000009020019000005d90000013d0000000701000029000103c2001000d5000203c3001000d5000303c4001000d5000002020000013d0000000008740019000000000007004b000004e50000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b000004e10000c13d000000000006004b000004f20000613d00000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f000000000058043500000000034300190000000000030435000000000002004b000003540000c13d0000000001010433000000000001004b000005b30000c13d000000400100043d000003ea02000041000003280000013d0000000801000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000101041a000703af0010019b0000000c0000006b000005200000613d000003be0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000068a0000613d000000000101043b000003af011001970000000c0010006b000005c80000c13d0000000b01000029000003c2011000d1000800000000001d000900000001001d000000400200043d00000080032000390000000804000029000000000043043500000060032000390000000904000029000000000043043500000040032000390000000c04000029000000000043043500000020032000390000000b0400002900000000004304350000000a0300002900000000003204350000000007310019000003ac0020009c000003ac0200804100000040012002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003d9011001c70000800d020000390000000403000039000003da040000410000000f050000290000000006000411000b00000007001d0eaa0ea00000040f00000001002001900000070f0000613d00000000010004160000000b0010006c000005bb0000c13d000003be0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000068a0000613d000000000101043b000003af01100197000000000010043f000000200000043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000201041a000000090020002a000007450000413d0000000902200029000000000021041b000000080000006b0000057e0000613d0000000c01000029000000000010043f000000200000043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000201041a000000080020002a000007450000413d0000000802200029000000000021041b000000400500043d000000240150003900000060020000390000000000210435000003dc010000410000000001150436000c00000001001d00000004015000390000000f02000029000000000021043500000064015000390000000e020000290000000000210435000003ed032001980000001f0420018f000f00000005001d000000840150003900000000023100190000000d050000290000000205500367000005990000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b000005950000c13d000000000004004b000005a60000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000e0110002900000000000104350000000f0100002900000044011000390000000a02000029000000000021043500000000010004140000000702000029000000040020008c0000069f0000c13d00000003010003670000000103000031000006bf0000013d000003ac0040009c000003ac040080410000004002400210000003ac0010009c000003ac010080410000006001100210000000000121019f00000eac00010430000000400200043d00000024032000390000000000130435000003db01000041000000000012043500000004012000390000000b030000290000000000310435000003ac0020009c000003ac020080410000004001200210000003d7011001c700000eac000104300000000b02000029000003c2012000d1000803c3002000d5000903c4002000d5000005240000013d0000000009820019000000000008004b000005d60000613d000000000a050019000000000b02001900000000ac0a0434000000000bcb043600000000009b004b000005d20000c13d000000000007004b000005e30000613d00000000058500190000000307700210000000000809043300000000087801cf000000000878022f00000000050504330000010007700089000000000575022f00000000057501cf000000000585019f0000000000590435000000000526001900000000000504350000000006010433000003ed086001970000001f0760018f000000000054004b000005fa0000813d000000000008004b000005f60000613d000000000a7400190000000009750019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c000005f00000c13d000000000007004b000006100000613d0000000009050019000006060000013d0000000009850019000000000008004b000006030000613d000000000a040019000000000b05001900000000ac0a0434000000000bcb043600000000009b004b000005ff0000c13d000000000007004b000006100000613d00000000048400190000000307700210000000000809043300000000087801cf000000000878022f00000000040404330000010007700089000000000474022f00000000047401cf000000000484019f0000000000490435000000000456001900000000000404350000000004340049000000200540008a00000000005304350000001f04400039000003ed054001970000000004350019000000000054004b00000000050000390000000105004039000003c00040009c0000046a0000213d00000001005001900000046a0000c13d000000400040043f00000000030304330000000004000414000003d3050000410000000000520435000000c405100039000000840630008a0000000000650435000000a40510003900000060060000390000000000650435000000640110003900000009050000290000000000510435000003ac0020009c000003ac020080410000004001200210000003ac0030009c000003ac030080410000006002300210000000000112019f000003ac0040009c000003ac04008041000000c002400210000000000112019f000003c5011001c700008006020000390eaa0ea00000040f00000001002001900000068b0000613d000000000101043b000703af0010019c0000068e0000613d000003d4010000410000000000100443000000070100002900000004001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003d5011001c700008002020000390eaa0ea50000040f00000001002001900000068a0000613d000000000101043b000000000001004b0000070f0000613d0000000001000411000003af01100197000000400300043d00000024023000390000000000120435000003d60100004100000000001304350000000001000410000003af01100197000900000003001d0000000402300039000000000012043500000000010004140000000702000029000000040020008c000006700000613d0000000902000029000003ac0020009c000003ac020080410000004002200210000003ac0010009c000003ac01008041000000c001100210000000000121019f000003d7011001c700000007020000290eaa0ea00000040f0000006003100270000103ac0030019d000300000001035500000001002001900000071d0000613d0000000901000029000003c00010009c0000046a0000213d0000000901000029000000400010043f0000000801000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000070f0000613d000000000101043b000000000201041a000003d80220019700000007022001af000000000021041b0000000c0000006b0000050e0000c13d000005200000013d000000000001042f00030000000103550000006001100270000103ac0010019d000000400100043d0000004402100039000003e1030000410000000000320435000000240210003900000017030000390000000000320435000003e2020000410000000000210435000000040210003900000020030000390000000000320435000003ac0010009c000003ac010080410000004001100210000003e3011001c700000eac000104300000000e020000290000001f02200039000003ed02200197000003dd0020009c000003dd0200804100000060022002100000000f03000029000003ac0030009c000003ac030080410000004003300210000000000232019f000003ac0010009c000003ac01008041000000c001100210000000000112019f000003de0110009a0000000a0000006b000006b30000c13d0000000702000029000006b80000013d000003c5011001c700008009020000390000000a03000029000000070400002900000000050000190eaa0ea00000040f00030000000103550000006003100270000103ac0030019d000003ac033001970000000100200190000007110000613d000003ed043001980000001f0530018f0000000f02400029000006c90000613d000000000601034f0000000f07000029000000006806043c0000000007870436000000000027004b000006c50000c13d000000000005004b000006d60000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000003ed021001970000000f01200029000000000021004b00000000020000390000000102004039000003c00010009c0000046a0000213d00000001002001900000046a0000c13d000000400010043f000003df0030009c0000070f0000213d000000400030008c0000070f0000413d0000000f020000290000000002020433000000000002004b0000000004000039000000010400c039000000000042004b0000070f0000c13d0000000c040000290000000004040433000003c00040009c0000070f0000213d0000000f063000290000000f034000290000001f04300039000000000064004b0000000005000019000003e005008041000003e004400197000003e007600197000000000874013f000000000074004b0000000004000019000003e004004041000003e00080009c000000000405c019000000000004004b0000070f0000c13d0000000053030434000003c00030009c0000046a0000213d0000001f04300039000003ed044001970000003f04400039000003ed044001970000000004140019000003c00040009c0000046a0000213d000000400040043f00000000043104360000000007530019000000000067004b0000072a0000a13d000000000100001900000eac000104300000001f0530018f000003ae06300198000000400200043d0000000004620019000003f90000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007180000c13d000003f90000013d000003ac033001970000001f0530018f000003ae06300198000000400200043d0000000004620019000003f90000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007250000c13d000003f90000013d000003ed073001970000001f0630018f000000000045004b0000073b0000813d000000000007004b000003ea0000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000007340000c13d000003ea0000013d0000000008740019000000000007004b000004e50000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b000007400000c13d000004e50000013d000003eb01000041000000000010043f0000001101000039000000040010043f000003ec0100004100000eac000104300004000000000002000100000001001d000000400300043d000003ee0030009c000008350000813d000000c001300039000000400010043f0000004401300039000003ca0200004100000000002104350000008401000039000400000003001d0000000001130436000200000001001d000000400100043d000300000001001d000003be01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f00000001002001900000083d0000613d000000000101043b000000030c000029000000200200003900000000042c0436000003af011001970000000000140435000003cd00c0009c0000000402000029000008350000213d0000004001c00039000000400010043f0000000005020433000003ed075001970000001f0650018f0000006002c00039000000020d00002900000000002d004b0000078c0000813d000000000007004b000007880000613d00000000096d00190000000008620019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000007820000c13d000000000006004b000007a20000613d0000000008020019000007980000013d0000000008720019000000000007004b000007950000613d00000000090d0019000000000a020019000000009b090434000000000aba043600000000008a004b000007910000c13d000000000006004b000007a20000613d000000000d7d00190000000306600210000000000708043300000000076701cf000000000767022f00000000090d04330000010006600089000000000969022f00000000066901cf000000000676019f00000000006804350000000005250019000000000005043500000000060c0433000003ed086001970000001f0760018f000000000054004b000007b90000813d000000000008004b000007b50000613d000000000a7400190000000009750019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c000007af0000c13d000000000007004b000007cf0000613d0000000009050019000007c50000013d0000000009850019000000000008004b000007c20000613d000000000a040019000000000b05001900000000ac0a0434000000000bcb043600000000009b004b000007be0000c13d000000000007004b000007cf0000613d00000000048400190000000307700210000000000809043300000000087801cf000000000878022f00000000040404330000010007700089000000000474022f00000000047401cf000000000484019f0000000000490435000000000456001900000000000404350000000004140049000000200540008a00000000005104350000001f04400039000003ed044001970000000003140019000000000043004b00000000040000390000000104004039000003c00030009c000008350000213d0000000100400190000008350000c13d000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f00000001002001900000083b0000613d000000000101043b000400000001001d000000400100043d000003cd0010009c000008350000213d0000004002100039000000400020043f0000000d020000390000000001210436000003ce020000410000000000210435000003ac0010009c000003ac0100804100000040011002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003cf011001c700008010020000390eaa0ea50000040f00000001002001900000083b0000613d000000000301043b000000400100043d000000a002100039000003d0040000410000000000420435000000800210003900000004040000290000000000420435000000010200002900000060022002100000006004100039000000000024043500000040021000390000000004000410000000000042043500000020021000390000000000320435000000a0030000390000000000310435000003d10010009c000008350000213d000000c003100039000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f00000001002001900000083b0000613d000000000101043b000003af01100197000000000001042d000003eb01000041000000000010043f0000004101000039000000040010043f000003ec0100004100000eac00010430000000000100001900000eac00010430000000000001042f000300000000000200000000050200190000000004010019000003af013001980000085a0000613d000100000001001d000200000005001d000300000004001d000003be0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f0000000100200190000008630000613d000000000101043b000003af01100197000000010010006b000000030400002900000002050000290000085e0000c13d000003c2015000d100000000020000190000000003410019000000000001042d000003c2035000d1000003c3025000d1000003c4015000d10000000003430019000000000001042d000000000001042f0004000000000002000400000001001d000000400300043d000003ee0030009c00000a630000813d000000c001300039000000400010043f0000004401300039000003ca0200004100000000002104350000008401000039000300000003001d0000000001130436000100000001001d000000400100043d000200000001001d000003be01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f000000010020019000000a6b0000613d000000000101043b000000020b000029000000200200003900000000032b0436000003af011001970000000000130435000003cd00b0009c000000030200002900000a630000213d0000004001b00039000000400010043f0000000004020433000003ed064001970000001f0540018f0000006002b00039000000010d00002900000000002d004b000008a50000813d000000000006004b000008a10000613d00000000085d00190000000007520019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000089b0000c13d000000000005004b000008bb0000613d0000000007020019000008b10000013d0000000007620019000000000006004b000008ae0000613d00000000080d00190000000009020019000000008a0804340000000009a90436000000000079004b000008aa0000c13d000000000005004b000008bb0000613d000000000d6d00190000000305500210000000000607043300000000065601cf000000000656022f00000000080d04330000010005500089000000000858022f00000000055801cf000000000565019f00000000005704350000000004240019000000000004043500000000050b0433000003ed075001970000001f0650018f000000000043004b000008d20000813d000000000007004b000008ce0000613d00000000096300190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000008c80000c13d000000000006004b000008e80000613d0000000008040019000008de0000013d0000000008740019000000000007004b000008db0000613d0000000009030019000000000a040019000000009b090434000000000aba043600000000008a004b000008d70000c13d000000000006004b000008e80000613d00000000037300190000000306600210000000000708043300000000076701cf000000000767022f00000000030304330000010006600089000000000363022f00000000036301cf000000000373019f0000000000380435000000000345001900000000000304350000000003130049000000200430008a00000000004104350000001f03300039000003ed043001970000000003140019000000000043004b00000000040000390000000104004039000003c00030009c00000a630000213d000000010040019000000a630000c13d000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000101043b000300000001001d000000400100043d000003cd0010009c00000a630000213d0000004002100039000000400020043f0000000d020000390000000001210436000003ce020000410000000000210435000003ac0010009c000003ac0100804100000040011002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003cf011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000301043b000000400100043d000000a002100039000003d0040000410000000000420435000000800210003900000003040000290000000000420435000000040200002900000060042002100000006002100039000200000004001d000000000042043500000040021000390000000004000410000000000042043500000020021000390000000000320435000000a0030000390000000000310435000003d10010009c00000a630000213d000000c003100039000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000101043b000003af01100197000300000001001d000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000101043b000000000101041a000003af001001980000002002000039000009710000613d0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000101043b000000000101041a000003af01100197000000000001042d000003be0100004100000000001004430000000001000412000000040010044300000024002004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f000000010020019000000a6b0000613d000000400200043d000003d10020009c00000a630000213d000000000301043b000000c001200039000000400010043f0000004401200039000003ca04000041000000000041043500000084010000390000000005120436000000400100043d00000020040000390000000004410436000003af033001970000000000340435000003cd0010009c00000a630000213d0000004003100039000000400030043f0000000006020433000003ed086001970000001f0760018f0000006002100039000000000025004b000009a90000813d000000000008004b000009a50000613d000000000a7500190000000009720019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c0000099f0000c13d000000000007004b000009bf0000613d0000000009020019000009b50000013d0000000009820019000000000008004b000009b20000613d000000000a050019000000000b02001900000000ac0a0434000000000bcb043600000000009b004b000009ae0000c13d000000000007004b000009bf0000613d00000000058500190000000307700210000000000809043300000000087801cf000000000878022f00000000050504330000010007700089000000000575022f00000000057501cf000000000585019f0000000000590435000000000526001900000000000504350000000006010433000003ed086001970000001f0760018f000000000054004b000009d60000813d000000000008004b000009d20000613d000000000a7400190000000009750019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c000009cc0000c13d000000000007004b000009ec0000613d0000000009050019000009e20000013d0000000009850019000000000008004b000009df0000613d000000000a040019000000000b05001900000000ac0a0434000000000bcb043600000000009b004b000009db0000c13d000000000007004b000009ec0000613d00000000048400190000000307700210000000000809043300000000087801cf000000000878022f00000000040404330000010007700089000000000474022f00000000047401cf000000000484019f0000000000490435000000000456001900000000000404350000000004340049000000200540008a00000000005304350000001f04400039000003ed054001970000000004350019000000000054004b00000000050000390000000105004039000003c00040009c00000a630000213d000000010050019000000a630000c13d000000400040043f00000000030304330000000004000414000003d3050000410000000000520435000000c405100039000000840630008a0000000000650435000000a40510003900000060060000390000000000650435000000640110003900000002050000290000000000510435000003ac0020009c000003ac020080410000004001200210000003ac0030009c000003ac030080410000006002300210000000000112019f000003ac0040009c000003ac04008041000000c002400210000000000112019f000003c5011001c700008006020000390eaa0ea00000040f000000010020019000000a6c0000613d000000000101043b000003af0210019800000a6f0000613d000003d4010000410000000000100443000200000002001d00000004002004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003d5011001c700008002020000390eaa0ea50000040f000000010020019000000a6b0000613d000000000101043b000000000001004b00000a690000613d0000000401000029000003af01100197000000400400043d00000024024000390000000000120435000003d60100004100000000001404350000000001000410000003af011001970000000402400039000000000012043500000000010004140000000202000029000000040020008c00000a4c0000613d000003ac0040009c000003ac0300004100000000030440190000004003300210000003ac0010009c000003ac01008041000000c001100210000000000131019f000003d7011001c7000400000004001d0eaa0ea00000040f00000004040000290000006003100270000103ac0030019d0003000000010355000000010020019000000a800000613d000003c00040009c00000a630000213d000000400040043f0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000a690000613d000000000301043b000000000203041a000003d8022001970000000201000029000000000212019f000000000023041b000000000001042d000003eb01000041000000000010043f0000004101000039000000040010043f000003ec0100004100000eac00010430000000000100001900000eac00010430000000000001042f00030000000103550000006001100270000103ac0010019d000000400100043d0000004402100039000003e1030000410000000000320435000000240210003900000017030000390000000000320435000003e2020000410000000000210435000000040210003900000020030000390000000000320435000003ac0010009c000003ac010080410000004001100210000003e3011001c700000eac00010430000003ac033001970000001f0530018f000003ae06300198000000400200043d000000000462001900000a8c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a880000c13d000000000005004b00000a990000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003ac0020009c000003ac020080410000004002200210000000000112019f00000eac00010430000b000000000002000700000008001d000200000007001d000b00000006001d000a00000005001d000400000004001d000300000003001d000100000002001d000900000001001d000000400300043d000003ee0030009c00000dd70000813d000000c001300039000000400010043f0000004401300039000003ca0200004100000000002104350000008401000039000800000003001d0000000001130436000500000001001d000000400100043d000600000001001d000003be01000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f000000010020019000000ddd0000613d000000000101043b000000060b000029000000200200003900000000032b0436000003af011001970000000000130435000003cd00b0009c000000080200002900000dd70000213d0000004001b00039000000400010043f0000000004020433000003ed064001970000001f0540018f0000006002b00039000000050c00002900000000002c004b00000ae70000813d000000000006004b00000ae30000613d00000000085c00190000000007520019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000add0000c13d000000000005004b00000afd0000613d000000000702001900000af30000013d0000000007620019000000000006004b00000af00000613d00000000080c00190000000009020019000000008a0804340000000009a90436000000000079004b00000aec0000c13d000000000005004b00000afd0000613d000000000c6c00190000000305500210000000000607043300000000065601cf000000000656022f00000000080c04330000010005500089000000000858022f00000000055801cf000000000565019f00000000005704350000000004240019000000000004043500000000050b0433000003ed075001970000001f0650018f000000000043004b00000b140000813d000000000007004b00000b100000613d00000000096300190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c00000b0a0000c13d000000000006004b00000b2a0000613d000000000804001900000b200000013d0000000008740019000000000007004b00000b1d0000613d0000000009030019000000000a040019000000009b090434000000000aba043600000000008a004b00000b190000c13d000000000006004b00000b2a0000613d00000000037300190000000306600210000000000708043300000000076701cf000000000767022f00000000030304330000010006600089000000000363022f00000000036301cf000000000373019f0000000000380435000000000345001900000000000304350000000003130049000000200430008a00000000004104350000001f03300039000003ed043001970000000003140019000000000043004b00000000040000390000000104004039000003c00030009c00000dd70000213d000000010040019000000dd70000c13d000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f000000010020019000000dd50000613d000000000101043b000800000001001d000000400100043d000003cd0010009c00000dd70000213d0000004002100039000000400020043f0000000d020000390000000001210436000003ce020000410000000000210435000003ac0010009c000003ac0100804100000040011002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000121019f000003cf011001c700008010020000390eaa0ea50000040f000000010020019000000dd50000613d000000000301043b000000400100043d000000a002100039000003d0040000410000000000420435000000800210003900000008040000290000000000420435000000090200002900000060042002100000006002100039000600000004001d000000000042043500000040021000390000000004000410000000000042043500000020021000390000000000320435000000a0030000390000000000310435000003d10010009c00000dd70000213d000000c003100039000000400030043f000003ac0020009c000003ac0200804100000040022002100000000001010433000003ac0010009c000003ac010080410000006001100210000000000121019f0000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003c5011001c700008010020000390eaa0ea50000040f000000010020019000000dd50000613d000000000101043b000003af01100197000800000001001d000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000dd50000613d000000000101043b000000000101041a000003af00100198000000200200003900000bb50000613d0000000801000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000000405000029000000030600002900000dd50000613d000000000101043b000000000101041a000603af0010019b00000ca70000013d000003be0100004100000000001004430000000001000412000000040010044300000024002004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f000000010020019000000ddd0000613d000000400200043d000003d10020009c00000dd70000213d000000000301043b000000c001200039000000400010043f0000004401200039000003ca04000041000000000041043500000084010000390000000005120436000000400100043d00000020040000390000000004410436000003af033001970000000000340435000003cd0010009c00000dd70000213d0000004003100039000000400030043f0000000006020433000003ed086001970000001f0760018f0000006002100039000000000025004b00000bed0000813d000000000008004b00000be90000613d000000000a7500190000000009720019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c00000be30000c13d000000000007004b00000c030000613d000000000902001900000bf90000013d0000000009820019000000000008004b00000bf60000613d000000000a050019000000000b02001900000000ac0a0434000000000bcb043600000000009b004b00000bf20000c13d000000000007004b00000c030000613d00000000058500190000000307700210000000000809043300000000087801cf000000000878022f00000000050504330000010007700089000000000575022f00000000057501cf000000000585019f0000000000590435000000000526001900000000000504350000000006010433000003ed086001970000001f0760018f000000000054004b00000c1a0000813d000000000008004b00000c160000613d000000000a7400190000000009750019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c00000c100000c13d000000000007004b00000c300000613d000000000905001900000c260000013d0000000009850019000000000008004b00000c230000613d000000000a040019000000000b05001900000000ac0a0434000000000bcb043600000000009b004b00000c1f0000c13d000000000007004b00000c300000613d00000000048400190000000307700210000000000809043300000000087801cf000000000878022f00000000040404330000010007700089000000000474022f00000000047401cf000000000484019f0000000000490435000000000456001900000000000404350000000004340049000000200540008a00000000005304350000001f04400039000003ed054001970000000004350019000000000054004b00000000050000390000000105004039000003c00040009c00000dd70000213d000000010050019000000dd70000c13d000000400040043f00000000030304330000000004000414000003d3050000410000000000520435000000c405100039000000840630008a0000000000650435000000a40510003900000060060000390000000000650435000000640110003900000006050000290000000000510435000003ac0020009c000003ac020080410000004001200210000003ac0030009c000003ac030080410000006002300210000000000112019f000003ac0040009c000003ac04008041000000c002400210000000000112019f000003c5011001c700008006020000390eaa0ea00000040f000000010020019000000dfd0000613d000000000101043b000003af0210019800000e000000613d000003d4010000410000000000100443000600000002001d00000004002004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003d5011001c700008002020000390eaa0ea50000040f000000010020019000000ddd0000613d000000000101043b000000000001004b00000dd50000613d0000000901000029000003af01100197000000400400043d00000024024000390000000000120435000003d60100004100000000001404350000000001000410000003af011001970000000402400039000000000012043500000000010004140000000602000029000000040020008c00000c900000613d000003ac0040009c000003ac0300004100000000030440190000004003300210000003ac0010009c000003ac01008041000000c001100210000000000131019f000003d7011001c7000900000004001d0eaa0ea00000040f00000009040000290000006003100270000103ac0030019d0003000000010355000000010020019000000e110000613d000003c00040009c00000dd70000213d000000400040043f0000000801000029000000000010043f0000000201000039000000200010043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f00000001002001900000000405000029000000030600002900000dd50000613d000000000101043b000000000201041a000003d80220019700000006022001af000000000021041b000000400300043d000003ef010000410000000001130436000500000001001d00000004013000390000006002000039000000000021043500000064013000390000000000510435000800000003001d0000008401300039000000000005004b00000cbf0000613d00000002020003670000000003000019000000000462034f000000000404043b000003af0040009c00000dd50000213d000000000141043600000020066000390000000103300039000000000053004b00000cb60000413d00000008030000290000000002310049000000040220008a000000240330003900000000002304350000000b030000290000000000310435000000050230021000000000021200190000002009200039000000000003004b00000d1c0000613d0000000a080000290009000000000035000000000480007900000002030003670000001f0440008a000003e0054001970000000006000019000000000701001900000cdd0000013d0000001f02a00039000003ed02200197000000000a9a001900000000000a04350000000009920019000000200880003900000001066000390000000b0060006c00000d1c0000813d000000000a190049000000200aa0008a00000020077000390000000000a70435000000000a83034f000000000a0a043b000003e00ba00197000000000c5b013f00000000005b004b000000000b000019000003e00b00204100000000004a004b000000000d000019000003e00d004041000003e000c0009c000000000b0dc01900000000000b004b00000dd50000613d0000000a0ba00029000000000ab3034f000000000a0a043b000003c000a0009c00000dd50000213d000000200bb00039000000090ca000690000000000cb004b000000000d000019000003e00d002041000003e00cc00197000003e00eb00197000000000fce013f0000000000ce004b000000000c000019000003e00c004041000003e000f0009c000000000c0dc01900000000000c004b00000dd50000c13d000000000cb3034f0000000009a90436000003ed0da00198000000000bd9001900000d0e0000613d000000000e0c034f000000000f09001900000000e20e043c000000000f2f04360000000000bf004b00000d0a0000c13d0000001f0ea0019000000cd40000613d0000000002dc034f000000030ce00210000000000d0b0433000000000dcd01cf000000000dcd022f000000000202043b000001000cc000890000000002c2022f0000000002c201cf0000000002d2019f00000000002b043500000cd40000013d00000008020000290000000001290049000000040110008a0000004402200039000000000012043500000007020000290000000001290436000003c60020009c00000dd50000213d0000000702000029000000050220021200000d300000613d0000000203000029000000020330036700000000042100190000000005010019000000003603043c0000000005650436000000000045004b00000d2c0000c13d000000010000008b00000000030004140000000604000029000000040040008c00000d380000c13d0000000301000367000000010300003100000d560000013d000000080500002900000000025200490000000001120019000003ac0010009c000003ac010080410000006001100210000003ac0050009c000003ac0200004100000000020540190000004002200210000000000121019f000003ac0030009c000003ac03008041000000c002300210000000000112019f0000000103000029000000000003004b00000d4e0000613d000003c5011001c70000800902000039000000000500001900000d4f0000013d00000000020400190eaa0ea00000040f00030000000103550000006003100270000103ac0030019d000003ac03300197000000010020019000000de90000613d000003ed043001980000001f0530018f000000080240002900000d600000613d000000000601034f0000000807000029000000006806043c0000000007870436000000000027004b00000d5c0000c13d000000000005004b00000d6d0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000003ed021001970000000801200029000000000021004b00000000020000390000000102004039000003c00010009c00000dd70000213d000000010020019000000dd70000c13d000000400010043f000003df0030009c00000dd50000213d000000400030008c00000dd50000413d00000008020000290000000002020433000000000002004b0000000004000039000000010400c039000000000042004b00000dd50000c13d00000005040000290000000004040433000003c00040009c00000dd50000213d000000080630002900000008034000290000001f04300039000000000064004b0000000005000019000003e005008041000003e004400197000003e007600197000000000874013f000000000074004b0000000004000019000003e004004041000003e00080009c000000000405c019000000000004004b00000dd50000c13d0000000053030434000003c00030009c00000dd70000213d0000001f04300039000003ed044001970000003f04400039000003ed044001970000000004140019000003c00040009c00000dd70000213d000000400040043f00000000043104360000000007530019000000000067004b00000dd50000213d000003ed073001970000001f0630018f000000000045004b00000dba0000813d000000000007004b00000db60000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c00000db00000c13d000000000006004b00000dd00000613d000000000804001900000dc60000013d0000000008740019000000000007004b00000dc30000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b00000dbf0000c13d000000000006004b00000dd00000613d00000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f000000000058043500000000033400190000000000030435000000000002004b00000dde0000613d000000000001042d000000000100001900000eac00010430000003eb01000041000000000010043f0000004101000039000000040010043f000003ec0100004100000eac00010430000000000001042f0000000001010433000000000001004b00000df50000c13d000000400100043d000003ea020000410000000000210435000003ac0010009c000003ac010080410000004001100210000003e7011001c700000eac000104300000001f0530018f000003ae06300198000000400200043d000000000462001900000e1d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000df00000c13d00000e1d0000013d000003ac0040009c000003ac040080410000004002400210000003ac0010009c000003ac010080410000006001100210000000000121019f00000eac0001043000030000000103550000006001100270000103ac0010019d000000400100043d0000004402100039000003e1030000410000000000320435000000240210003900000017030000390000000000320435000003e2020000410000000000210435000000040210003900000020030000390000000000320435000003ac0010009c000003ac010080410000004001100210000003e3011001c700000eac00010430000003ac033001970000001f0530018f000003ae06300198000000400200043d000000000462001900000e1d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e190000c13d000000000005004b00000e2a0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000003ac0020009c000003ac020080410000004002200210000000000112019f00000eac000104300003000000000002000100000004001d000300000002001d000200000001001d0000000001000416000000000031004b00000e730000c13d000003be0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000003ac0010009c000003ac01008041000000c001100210000003c1011001c700008005020000390eaa0ea50000040f000000010020019000000e7f0000613d000000000101043b000003af01100197000000000010043f000000200000043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000e710000613d000000000101043b000000000201041a0000000204000029000000000042001a000000030300002900000e800000413d0000000002420019000000000021041b000000000003004b00000e700000613d0000000101000029000003af01100197000000000010043f000000200000043f0000000001000414000003ac0010009c000003ac01008041000000c001100210000003d2011001c700008010020000390eaa0ea50000040f000000010020019000000e710000613d000000000101043b000000000201041a0000000303000029000000000032001a00000e800000413d0000000002320019000000000021041b000000000001042d000000000100001900000eac00010430000000400200043d00000024042000390000000000140435000003db01000041000000000012043500000004012000390000000000310435000003ac0020009c000003ac020080410000004001200210000003d7011001c700000eac00010430000000000001042f000003eb01000041000000000010043f0000001101000039000000040010043f000003ec0100004100000eac00010430000000000001042f00000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00000e8a0000413d000003ac0030009c000003ac0300804100000060013002100000000002000414000003ac0020009c000003ac02008041000000c002200210000000000112019f000003f0011001c700000000020500190eaa0ea50000040f000000010020019000000e9f0000613d000000000101043b000000000001042d000000000001042f00000ea3002104210000000102000039000000000001042d0000000002000019000000000001042d00000ea8002104230000000102000039000000000001042d0000000002000019000000000001042d00000eaa0000043200000eab0001042e00000eac0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000c0000001000000000000000000000000000000000000000000000000000000000000000000000000007c1e206700000000000000000000000000000000000000000000000000000000d58b576800000000000000000000000000000000000000000000000000000000d58b576900000000000000000000000000000000000000000000000000000000e84d442000000000000000000000000000000000000000000000000000000000fdca7099000000000000000000000000000000000000000000000000000000007c1e206800000000000000000000000000000000000000000000000000000000842210eb000000000000000000000000000000000000000000000000000000004690483f00000000000000000000000000000000000000000000000000000000469048400000000000000000000000000000000000000000000000000000000051cff8d9000000000000000000000000000000000000000000000000000000002013446e00000000000000000000000000000000000000000000000000000000302deb140000000000000000000000000000000000000060000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000002000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000002c2ad68fd90000000000000000000000000000000000000000000000000000001f8c501d9b0000000000000000000000000000000000000000000000000000000c9e86723e000020000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000ffffff3ffdffffffffffffffffffffffffffffffffffff40000000000000000000000000e36a6f34ea83c6d542aa5154762f4212ebd322e41ecc55b97420d93904a24dcc01000047279f3135d1d02e07c85d3acfc66ac14d76dc55c31f51ce3f8bb0ea2c000000000000000000000000000000000000000000000000fffffffffffffe7f0200000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf7a6b73796e634372656174653200000000000000000000000000000000000000020000000000000000000000000000000000000d000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470000000000000000000000000000000000000000000000000ffffffffffffff3f02000000000000000000000000000000000000400000000000000000000000003cda33511d41a8a5431b1770c5bc0ddd62e1cd30555d16659b89c0d60f4f9f571806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000485cc955000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000a0000000000000000000000000878da9a7ef8f595dd108643e1793e86cb8b04e90410fb000bb83a070309ff75a028ebaf000000000000000000000000000000000000000000000000000000000c0951d6b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7bffffffffffffffffffffffffffffffffffffff7c0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000455243313136373a2063726561746532206661696c656400000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000004400000080000000000000000002000000000000000000000000000000000000000000008000000000000000006c01d14c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000381f9583000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ded9a23b000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffff408363da7200000000000000000000000000000000000000000000000000000000020000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d7f9a1eb6c9aa819cfc868db168d2ddb24b7f55d18e9609403ee101ff25b67a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b76713f80c040395e7cf3b9cc484757e7f88dde800000000000000000000000095f07f2269f61da823f55c84bafc06113157653a
-----Decoded View---------------
Arg [0] : _minterAgentImpl (address): 0xb76713F80c040395E7cf3b9Cc484757e7f88dDe8
Arg [1] : _feeRecipient (address): 0x95f07f2269F61Da823f55c84BAFC06113157653A
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b76713f80c040395e7cf3b9cc484757e7f88dde8
Arg [1] : 00000000000000000000000095f07f2269f61da823f55c84bafc06113157653a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.