More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 11,548 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 21280816 | 3 hrs ago | IN | 0.0003 ETH | 0.00211034 | ||||
Deposit | 21278571 | 11 hrs ago | IN | 0.0003 ETH | 0.00142168 | ||||
Deposit | 21278541 | 11 hrs ago | IN | 0.0003 ETH | 0.00134428 | ||||
Deposit | 21273178 | 29 hrs ago | IN | 0.0003 ETH | 0.00177546 | ||||
Deposit | 21266810 | 2 days ago | IN | 0.0003 ETH | 0.00163484 | ||||
Deposit | 21266340 | 2 days ago | IN | 0.0003 ETH | 0.00174517 | ||||
Deposit | 21265084 | 2 days ago | IN | 0.0003 ETH | 0.00220491 | ||||
Deposit | 21260395 | 2 days ago | IN | 0.0003 ETH | 0.00092926 | ||||
Deposit | 21256305 | 3 days ago | IN | 0.0003 ETH | 0.00095527 | ||||
Deposit | 21246384 | 4 days ago | IN | 0.0003 ETH | 0.0017383 | ||||
Deposit | 21246193 | 4 days ago | IN | 0.0003 ETH | 0.00203294 | ||||
Deposit | 21246065 | 4 days ago | IN | 0.0003 ETH | 0.00223278 | ||||
Deposit | 21242557 | 5 days ago | IN | 0.0003 ETH | 0.00121906 | ||||
Deposit | 21241929 | 5 days ago | IN | 0.0003 ETH | 0.00089394 | ||||
Deposit | 21241677 | 5 days ago | IN | 0.0003 ETH | 0.00097342 | ||||
Deposit | 21238573 | 6 days ago | IN | 0.0003 ETH | 0.00201853 | ||||
Deposit | 21226953 | 7 days ago | IN | 0.0003 ETH | 0.00100096 | ||||
Deposit | 21225698 | 7 days ago | IN | 0.0003 ETH | 0.0010771 | ||||
Deposit | 21225459 | 7 days ago | IN | 0.0003 ETH | 0.00139801 | ||||
Deposit | 21225183 | 7 days ago | IN | 0.0003 ETH | 0.0013603 | ||||
Deposit | 21213683 | 9 days ago | IN | 0.0003 ETH | 0.00123356 | ||||
Deposit | 21212320 | 9 days ago | IN | 0.0003 ETH | 0.00114349 | ||||
Deposit | 21210568 | 9 days ago | IN | 0.0003 ETH | 0.00127302 | ||||
Deposit | 21209255 | 10 days ago | IN | 0.0003 ETH | 0.001379 | ||||
Deposit | 21204791 | 10 days ago | IN | 0.0003 ETH | 0.00129895 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
21280816 | 3 hrs ago | 0.0003 ETH | ||||
21278571 | 11 hrs ago | 0.0003 ETH | ||||
21278541 | 11 hrs ago | 0.0003 ETH | ||||
21273178 | 29 hrs ago | 0.0003 ETH | ||||
21266810 | 2 days ago | 0.0003 ETH | ||||
21266340 | 2 days ago | 0.0003 ETH | ||||
21265084 | 2 days ago | 0.0003 ETH | ||||
21260395 | 2 days ago | 0.0003 ETH | ||||
21256305 | 3 days ago | 0.0003 ETH | ||||
21246384 | 4 days ago | 0.0003 ETH | ||||
21246193 | 4 days ago | 0.0003 ETH | ||||
21246065 | 4 days ago | 0.0003 ETH | ||||
21242557 | 5 days ago | 0.0003 ETH | ||||
21241929 | 5 days ago | 0.0003 ETH | ||||
21241677 | 5 days ago | 0.0003 ETH | ||||
21238573 | 6 days ago | 0.0003 ETH | ||||
21226953 | 7 days ago | 0.0003 ETH | ||||
21225698 | 7 days ago | 0.0003 ETH | ||||
21225459 | 7 days ago | 0.0003 ETH | ||||
21225183 | 7 days ago | 0.0003 ETH | ||||
21213683 | 9 days ago | 0.0003 ETH | ||||
21212320 | 9 days ago | 0.0003 ETH | ||||
21210568 | 9 days ago | 0.0003 ETH | ||||
21209255 | 10 days ago | 0.0003 ETH | ||||
21204791 | 10 days ago | 0.0003 ETH |
Loading...
Loading
Contract Name:
ERC721Peg
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; import "@openzeppelin/contracts/utils/introspection/ERC165.sol"; import "./IBridge.sol"; /// @title ERC721 Peg contract on ethereum /// @author Root Network /// @notice Provides an Eth/Root network ERC721/RN721 peg /// - depositing: lock ERC721 tokens to redeem Root network RN721 tokens 1:1 /// - withdrawing: burn or lock RN721 to redeem ERC721 tokens 1:1 contract ERC721Peg is Ownable, ERC721Holder, IBridgeReceiver, ERC165 { uint8 constant MAX_BRIDGABLE_CONTRACT_ADDRESSES = 10; uint8 constant MAX_BRIDGABLE_CONTRACT_TOKENS = 50; // whether the peg is accepting deposits bool public depositsActive; // whether the peg is accepting withdrawals bool public withdrawalsActive; // whether the peg can forward data sent from erc721 calls bool public erc721CallForwardingActive; // Bridge contract address IBridge public bridge; // the (pseudo) pallet address this contract is paried with on root address public palletAddress = address(0x6D6F646c726e2F6E667470670000000000000000); event DepositActiveStatus(bool indexed active); event WithdrawalActiveStatus(bool indexed active); event ERC721Called(address indexed token, bytes input, bytes data); event ERC721CallForwardingActiveStatus(bool indexed active); event BridgeAddressUpdated(address indexed bridge); event PalletAddressUpdated(address indexed palletAddress); event Deposit(address indexed _address, address[] indexed tokenAddresses, uint256[][] indexed tokenIds, address destination); event Withdraw(address indexed _address, address[] indexed tokenAddresses, uint256[][] indexed tokenIds); event AdminWithdraw(address indexed _address, address[] indexed tokenAddresses, uint256[][] indexed tokenIds); constructor(IBridge _bridge) { bridge = _bridge; } /// @notice Deposit token ids of erc721 NFTs. /// @notice The pegged version of the erc721 NFTs will be claim-able on Root network. /// @param _tokenAddresses The addresses of the erc721 NFTs to deposit /// @param _tokenIds The ids of the erc721 NFTs to deposit /// @param _destination The address to send the pegged ERC721 tokens to on Root network function deposit(address[] calldata _tokenAddresses, uint256[][] calldata _tokenIds, address _destination) payable external { require(depositsActive, "ERC721Peg: deposits paused"); require(_tokenAddresses.length == _tokenIds.length, "ERC721Peg: tokenAddresses and tokenIds must be same length"); require(_tokenAddresses.length <= MAX_BRIDGABLE_CONTRACT_ADDRESSES, "ERC721Peg: too many token addresses"); require(msg.value >= bridge.sendMessageFee(), "ERC721Peg: insufficient bridge fee"); // send NFTs to this contract for (uint256 i = 0; i < _tokenAddresses.length; ++i) { address tokenAddress = _tokenAddresses[i]; uint256[] memory tokenIds = _tokenIds[i]; require(tokenIds.length <= MAX_BRIDGABLE_CONTRACT_TOKENS, "ERC721Peg: too many token ids"); for (uint256 j = 0; j < tokenIds.length; j++) { uint256 tokenId = tokenIds[j]; require(tokenId < type(uint32).max, "ERC721Peg: tokenId too large"); IERC721(tokenAddress).safeTransferFrom(msg.sender, address(this), tokenId); } } emit Deposit(msg.sender, _tokenAddresses, _tokenIds, _destination); // send message to bridge bytes memory message = abi.encode(1, _tokenAddresses, _tokenIds, _destination); // msg type 1 is deposit bridge.sendMessage{ value: msg.value }(palletAddress, message); } function onMessageReceived(address _source, bytes calldata _message) external override { // only accept calls from the bridge contract require(msg.sender == address(bridge), "ERC721Peg: only bridge can call"); // only accept messages from the peg pallet require(_source == palletAddress, "ERC721Peg: source must be peg pallet address"); (address[] memory tokenAddresses, uint256[][] memory tokenIds, address recipient) = abi.decode(_message, (address[], uint256[][], address)); _withdraw(tokenAddresses, tokenIds, recipient); } /// @notice Withdraw tokens from this contract /// @notice Requires signatures from a threshold of current Root network validators. function _withdraw(address[] memory _tokenAddresses, uint256[][] memory _tokenIds, address _recipient) internal { require(withdrawalsActive, "ERC721Peg: withdrawals paused"); require(_tokenAddresses.length == _tokenIds.length, "ERC721Peg: tokenAddresses and tokenIds must be same length"); // send NFTs to user for (uint256 i = 0; i < _tokenAddresses.length; ++i) { address tokenAddress = _tokenAddresses[i]; uint256[] memory tokenIds = _tokenIds[i]; for (uint256 j = 0; j < tokenIds.length; j++) { IERC721(tokenAddress).safeTransferFrom(address(this), _recipient, tokenIds[j]); } } emit Withdraw(_recipient, _tokenAddresses, _tokenIds); } /// @notice Calls a function on the ERC721 contract and forwards the result to the bridge as a message function callERC721(address _tokenAddress, bytes calldata _input) external payable { require(erc721CallForwardingActive, "ERC721Peg: erc721 call forwarding paused"); require(msg.value >= bridge.sendMessageFee(), "ERC721Peg: insufficient bridge fee"); (bool success, bytes memory data) = _tokenAddress.staticcall(_input); require(success, "ERC721Peg: ERC721 call failed"); emit ERC721Called(_tokenAddress, _input, data); // send message to bridge bytes memory message = abi.encode(2, _tokenAddress, _input, data); // msg type 2 is call erc721 bridge.sendMessage{ value: msg.value }(palletAddress, message); } /// @dev See {IERC165-supportsInterface}. Docs: https://docs.openzeppelin.com/contracts/4.x/api/utils#IERC165 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC721Receiver).interfaceId || interfaceId == type(IBridgeReceiver).interfaceId || super.supportsInterface(interfaceId); } // ============================================================================================================= // // ============================================== Admin functions ============================================== // // ============================================================================================================= // function setDepositsActive(bool _active) external onlyOwner { depositsActive = _active; emit DepositActiveStatus(_active); } function setWithdrawalsActive(bool _active) external onlyOwner { withdrawalsActive = _active; emit WithdrawalActiveStatus(_active); } function setERC721CallForwardingActive(bool _active) external onlyOwner { erc721CallForwardingActive = _active; emit ERC721CallForwardingActiveStatus(_active); } function setBridgeAddress(IBridge _bridge) external onlyOwner { bridge = _bridge; emit BridgeAddressUpdated(address(_bridge)); } function setPalletAddress(address _palletAddress) external onlyOwner { palletAddress = _palletAddress; emit PalletAddressUpdated(_palletAddress); } function adminEmergencyWithdraw(address[] memory _tokenAddresses, uint256[][] memory _tokenIds, address _recipient) external onlyOwner { _withdraw(_tokenAddresses, _tokenIds, _recipient); emit AdminWithdraw(_recipient, _tokenAddresses, _tokenIds); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.17; // Proof of a witnessed event by validators struct EventProof { // The Id (nonce) of the event uint256 eventId; // The validator set Id which witnessed the event uint32 validatorSetId; // v,r,s are sparse arrays expected to align w public key in 'validators' // i.e. v[i], r[i], s[i] matches the i-th validator[i] // v part of validator signatures uint8[] v; // r part of validator signatures bytes32[] r; // s part of validator signatures bytes32[] s; // The validator addresses address[] validators; } interface IBridge { // A sent message event event SendMessage(uint messageId, address source, address destination, bytes message, uint256 fee); // Receive a bridge message from the remote chain function receiveMessage(address source, address destination, bytes calldata message, EventProof calldata proof) external payable; // Send a bridge message to the remote chain function sendMessage(address destination, bytes calldata message) external payable; // Send message fee - used by sendMessage caller to obtain required fee for sendMessage function sendMessageFee() external view returns (uint256); } interface IBridgeReceiver { // Handle a bridge message received from the remote chain // It is guaranteed to be valid function onMessageReceived(address source, bytes calldata message) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.0; import "../IERC721Receiver.sol"; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * 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.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// 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); }
// 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 // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IBridge","name":"_bridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"indexed":true,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"AdminWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bridge","type":"address"}],"name":"BridgeAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"indexed":true,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"active","type":"bool"}],"name":"DepositActiveStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"active","type":"bool"}],"name":"ERC721CallForwardingActiveStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"bytes","name":"input","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ERC721Called","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"palletAddress","type":"address"}],"name":"PalletAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"indexed":true,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"active","type":"bool"}],"name":"WithdrawalActiveStatus","type":"event"},{"inputs":[{"internalType":"address[]","name":"_tokenAddresses","type":"address[]"},{"internalType":"uint256[][]","name":"_tokenIds","type":"uint256[][]"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"adminEmergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"contract IBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"bytes","name":"_input","type":"bytes"}],"name":"callERC721","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokenAddresses","type":"address[]"},{"internalType":"uint256[][]","name":"_tokenIds","type":"uint256[][]"},{"internalType":"address","name":"_destination","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"depositsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc721CallForwardingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_source","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"onMessageReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"palletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBridge","name":"_bridge","type":"address"}],"name":"setBridgeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_active","type":"bool"}],"name":"setDepositsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_active","type":"bool"}],"name":"setERC721CallForwardingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_palletAddress","type":"address"}],"name":"setPalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_active","type":"bool"}],"name":"setWithdrawalsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052736d6f646c726e2f6e667470670000000000000000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620034343803806200343483398181016040528101906200008c91906200023e565b620000ac620000a0620000f460201b60201c565b620000fc60201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000270565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001f282620001c5565b9050919050565b60006200020682620001e5565b9050919050565b6200021881620001f9565b81146200022457600080fd5b50565b60008151905062000238816200020d565b92915050565b600060208284031215620002575762000256620001c0565b5b6000620002678482850162000227565b91505092915050565b6131b480620002806000396000f3fe6080604052600436106101145760003560e01c80637f5a22f9116100a0578063cf40071f11610064578063cf40071f14610375578063d2d007f214610391578063e78cea92146103ad578063f275c0ce146103d8578063f2fde38b1461040357610114565b80637f5a22f9146102a45780638da5cb5b146102cd578063b813a10e146102f8578063c6c0f59e14610321578063c9a973581461034c57610114565b80634419aa7a116100e75780634419aa7a146101e55780634500ca4d14610210578063565764a61461023b578063650bd36414610264578063715018a61461028d57610114565b806301ffc9a714610119578063150b7a02146101565780632ee111ed146101935780633395c16b146101bc575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b919061169e565b61042c565b60405161014d91906116e6565b60405180910390f35b34801561016257600080fd5b5061017d600480360381019061017891906118db565b61050e565b60405161018a919061196d565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b59190611988565b610522565b005b3480156101c857600080fd5b506101e360048036038101906101de91906119e1565b6105b1565b005b3480156101f157600080fd5b506101fa610605565b60405161020791906116e6565b60405180910390f35b34801561021c57600080fd5b50610225610618565b60405161023291906116e6565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d91906119e1565b61062b565b005b34801561027057600080fd5b5061028b60048036038101906102869190611a6e565b61067f565b005b34801561029957600080fd5b506102a26107cc565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190611b0c565b6107e0565b005b3480156102d957600080fd5b506102e261086f565b6040516102ef9190611b48565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190611dca565b610898565b005b34801561032d57600080fd5b5061033661091f565b6040516103439190611b48565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e91906119e1565b610945565b005b61038f600480360381019061038a9190611f01565b610999565b005b6103ab60048036038101906103a69190611a6e565b610eaa565b005b3480156103b957600080fd5b506103c26111b4565b6040516103cf9190611ff5565b60405180910390f35b3480156103e457600080fd5b506103ed6111da565b6040516103fa91906116e6565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190611988565b6111ed565b005b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104f757507f650bd364000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610507575061050682611270565b5b9050919050565b600063150b7a0260e01b9050949350505050565b61052a6112da565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f679cb5acfebd038830b61daadd5f2f74e2114862b1c289a5d2db82bc6eda32a660405160405180910390a250565b6105b96112da565b80600060166101000a81548160ff0219169083151502179055508015157fc53da2d2bdd34aab8c774a3745f685f66055b18c0c495c64f93ae9a14c9c1b1e60405160405180910390a250565b600060169054906101000a900460ff1681565b600060159054906101000a900460ff1681565b6106336112da565b80600060156101000a81548160ff0219169083151502179055508015157f2dd4e84c86f1d0ec949d1582751c7d8242fe120578eeece179a92603c8390ec660405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107069061206d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906120ff565b60405180910390fd5b600080600084848101906107b3919061215d565b9250925092506107c4838383611358565b505050505050565b6107d46112da565b6107de6000611566565b565b6107e86112da565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe5be83d44a251cb79ef6eb972655ca2528f5bb94376d7c2cb221c44d7bef6a8860405160405180910390a250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108a06112da565b6108ab838383611358565b816040516108b99190612345565b6040518091039020836040516108cf9190612414565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167f9a7fec89c8ef98b20d5325d9e10d6f5c01ddd040d76646090f5ed3a97a05a3f060405160405180910390a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61094d6112da565b80600060146101000a81548160ff0219169083151502179055508015157f2c009dd90a018abf2687d6137dd2e32b025c58eb76dfc41a63f233f39a0b937e60405160405180910390a250565b600060149054906101000a900460ff166109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90612477565b60405180910390fd5b828290508585905014610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612509565b60405180910390fd5b600a60ff16858590501115610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a719061259b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350dcb0276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b91906125d0565b341015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b449061266f565b60405180910390fd5b60005b85859050811015610d42576000868683818110610b7057610b6f61268f565b5b9050602002016020810190610b859190611988565b90506000858584818110610b9c57610b9b61268f565b5b9050602002810190610bae91906126cd565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509050603260ff1681511115610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061277c565b60405180910390fd5b60005b8151811015610d2e576000828281518110610c5957610c5861268f565b5b6020026020010151905063ffffffff80168110610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906127e8565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610ce893929190612817565b600060405180830381600087803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b50505050508080610d269061287d565b915050610c3b565b50505080610d3b9061287d565b9050610b50565b508282604051610d53929190612a2d565b60405180910390208585604051610d6b929190612ad1565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167f16bf9be534a5a2e3c279f758584db02ed9147dbd9ee1b80d5581ca063c67d44d84604051610db99190611b48565b60405180910390a4600060018686868686604051602001610ddf96959493929190612cd1565b6040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb5ddb0f34600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610e70929190612da7565b6000604051808303818588803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b5050505050505050505050565b600060169054906101000a900460ff16610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612e49565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350dcb0276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a91906125d0565b341015610fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc39061266f565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610ff6929190612e99565b600060405180830381855afa9150503d8060008114611031576040519150601f19603f3d011682016040523d82523d6000602084013e611036565b606091505b50915091508161107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290612efe565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f6bbbdfd5423ef458bd7631157551222cc671b660754e6a6fa9f04f24c0c564b38585846040516110c593929190612f4b565b60405180910390a260006002868686856040516020016110e9959493929190612fbf565b6040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb5ddb0f34600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161117a929190612da7565b6000604051808303818588803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b5050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b6111f56112da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613086565b60405180910390fd5b61126d81611566565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6112e261162a565b73ffffffffffffffffffffffffffffffffffffffff1661130061086f565b73ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d906130f2565b60405180910390fd5b565b600060159054906101000a900460ff166113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061315e565b60405180910390fd5b81518351146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612509565b60405180910390fd5b60005b83518110156114f157600084828151811061140c5761140b61268f565b5b60200260200101519050600084838151811061142b5761142a61268f565b5b6020026020010151905060005b81518110156114dd578273ffffffffffffffffffffffffffffffffffffffff166342842e0e30878585815181106114725761147161268f565b5b60200260200101516040518463ffffffff1660e01b815260040161149893929190612817565b600060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b5050505080806114d59061287d565b915050611438565b505050806114ea9061287d565b90506113ee565b50816040516115009190612345565b6040518091039020836040516115169190612414565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167f174008f326dc8a82603b2f80a5179da5007b8ff71350fce7b05933705d7a816960405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61167b81611646565b811461168657600080fd5b50565b60008135905061169881611672565b92915050565b6000602082840312156116b4576116b361163c565b5b60006116c284828501611689565b91505092915050565b60008115159050919050565b6116e0816116cb565b82525050565b60006020820190506116fb60008301846116d7565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061172c82611701565b9050919050565b61173c81611721565b811461174757600080fd5b50565b60008135905061175981611733565b92915050565b6000819050919050565b6117728161175f565b811461177d57600080fd5b50565b60008135905061178f81611769565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117e88261179f565b810181811067ffffffffffffffff82111715611807576118066117b0565b5b80604052505050565b600061181a611632565b905061182682826117df565b919050565b600067ffffffffffffffff821115611846576118456117b0565b5b61184f8261179f565b9050602081019050919050565b82818337600083830152505050565b600061187e6118798461182b565b611810565b90508281526020810184848401111561189a5761189961179a565b5b6118a584828561185c565b509392505050565b600082601f8301126118c2576118c1611795565b5b81356118d284826020860161186b565b91505092915050565b600080600080608085870312156118f5576118f461163c565b5b60006119038782880161174a565b94505060206119148782880161174a565b935050604061192587828801611780565b925050606085013567ffffffffffffffff81111561194657611945611641565b5b611952878288016118ad565b91505092959194509250565b61196781611646565b82525050565b6000602082019050611982600083018461195e565b92915050565b60006020828403121561199e5761199d61163c565b5b60006119ac8482850161174a565b91505092915050565b6119be816116cb565b81146119c957600080fd5b50565b6000813590506119db816119b5565b92915050565b6000602082840312156119f7576119f661163c565b5b6000611a05848285016119cc565b91505092915050565b600080fd5b600080fd5b60008083601f840112611a2e57611a2d611795565b5b8235905067ffffffffffffffff811115611a4b57611a4a611a0e565b5b602083019150836001820283011115611a6757611a66611a13565b5b9250929050565b600080600060408486031215611a8757611a8661163c565b5b6000611a958682870161174a565b935050602084013567ffffffffffffffff811115611ab657611ab5611641565b5b611ac286828701611a18565b92509250509250925092565b6000611ad982611721565b9050919050565b611ae981611ace565b8114611af457600080fd5b50565b600081359050611b0681611ae0565b92915050565b600060208284031215611b2257611b2161163c565b5b6000611b3084828501611af7565b91505092915050565b611b4281611721565b82525050565b6000602082019050611b5d6000830184611b39565b92915050565b600067ffffffffffffffff821115611b7e57611b7d6117b0565b5b602082029050602081019050919050565b6000611ba2611b9d84611b63565b611810565b90508083825260208201905060208402830185811115611bc557611bc4611a13565b5b835b81811015611bee5780611bda888261174a565b845260208401935050602081019050611bc7565b5050509392505050565b600082601f830112611c0d57611c0c611795565b5b8135611c1d848260208601611b8f565b91505092915050565b600067ffffffffffffffff821115611c4157611c406117b0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611c6d57611c6c6117b0565b5b602082029050602081019050919050565b6000611c91611c8c84611c52565b611810565b90508083825260208201905060208402830185811115611cb457611cb3611a13565b5b835b81811015611cdd5780611cc98882611780565b845260208401935050602081019050611cb6565b5050509392505050565b600082601f830112611cfc57611cfb611795565b5b8135611d0c848260208601611c7e565b91505092915050565b6000611d28611d2384611c26565b611810565b90508083825260208201905060208402830185811115611d4b57611d4a611a13565b5b835b81811015611d9257803567ffffffffffffffff811115611d7057611d6f611795565b5b808601611d7d8982611ce7565b85526020850194505050602081019050611d4d565b5050509392505050565b600082601f830112611db157611db0611795565b5b8135611dc1848260208601611d15565b91505092915050565b600080600060608486031215611de357611de261163c565b5b600084013567ffffffffffffffff811115611e0157611e00611641565b5b611e0d86828701611bf8565b935050602084013567ffffffffffffffff811115611e2e57611e2d611641565b5b611e3a86828701611d9c565b9250506040611e4b8682870161174a565b9150509250925092565b60008083601f840112611e6b57611e6a611795565b5b8235905067ffffffffffffffff811115611e8857611e87611a0e565b5b602083019150836020820283011115611ea457611ea3611a13565b5b9250929050565b60008083601f840112611ec157611ec0611795565b5b8235905067ffffffffffffffff811115611ede57611edd611a0e565b5b602083019150836020820283011115611efa57611ef9611a13565b5b9250929050565b600080600080600060608688031215611f1d57611f1c61163c565b5b600086013567ffffffffffffffff811115611f3b57611f3a611641565b5b611f4788828901611e55565b9550955050602086013567ffffffffffffffff811115611f6a57611f69611641565b5b611f7688828901611eab565b93509350506040611f898882890161174a565b9150509295509295909350565b6000819050919050565b6000611fbb611fb6611fb184611701565b611f96565b611701565b9050919050565b6000611fcd82611fa0565b9050919050565b6000611fdf82611fc2565b9050919050565b611fef81611fd4565b82525050565b600060208201905061200a6000830184611fe6565b92915050565b600082825260208201905092915050565b7f4552433732315065673a206f6e6c79206272696467652063616e2063616c6c00600082015250565b6000612057601f83612010565b915061206282612021565b602082019050919050565b600060208201905081810360008301526120868161204a565b9050919050565b7f4552433732315065673a20736f75726365206d7573742062652070656720706160008201527f6c6c657420616464726573730000000000000000000000000000000000000000602082015250565b60006120e9602c83612010565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b600061212a82611701565b9050919050565b61213a8161211f565b811461214557600080fd5b50565b60008135905061215781612131565b92915050565b6000806000606084860312156121765761217561163c565b5b600084013567ffffffffffffffff81111561219457612193611641565b5b6121a086828701611bf8565b935050602084013567ffffffffffffffff8111156121c1576121c0611641565b5b6121cd86828701611d9c565b92505060406121de86828701612148565b9150509250925092565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61223d8161175f565b82525050565b600061224f8383612234565b60208301905092915050565b6000602082019050919050565b60006122738261220e565b61227d8185612219565b935061228883612224565b8060005b838110156122b95781516122a08882612243565b97506122ab8361225b565b92505060018101905061228c565b5085935050505092915050565b60006122d28383612268565b905092915050565b6000602082019050919050565b60006122f2826121e8565b6122fc81856121f3565b9350612307836121fe565b8060005b8381101561233857815161231f88826122c6565b975061232a836122da565b92505060018101905061230b565b5085935050505092915050565b600061235182846122e7565b915081905092915050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61238b81611721565b82525050565b600061239d8383612382565b60208301905092915050565b6000602082019050919050565b60006123c18261235c565b6123cb8185612367565b93506123d683612372565b8060005b838110156124075781516123ee8882612391565b97506123f9836123a9565b9250506001810190506123da565b5085935050505092915050565b600061242082846123b6565b915081905092915050565b7f4552433732315065673a206465706f7369747320706175736564000000000000600082015250565b6000612461601a83612010565b915061246c8261242b565b602082019050919050565b6000602082019050818103600083015261249081612454565b9050919050565b7f4552433732315065673a20746f6b656e41646472657373657320616e6420746f60008201527f6b656e496473206d7573742062652073616d65206c656e677468000000000000602082015250565b60006124f3603a83612010565b91506124fe82612497565b604082019050919050565b60006020820190508181036000830152612522816124e6565b9050919050565b7f4552433732315065673a20746f6f206d616e7920746f6b656e2061646472657360008201527f7365730000000000000000000000000000000000000000000000000000000000602082015250565b6000612585602383612010565b915061259082612529565b604082019050919050565b600060208201905081810360008301526125b481612578565b9050919050565b6000815190506125ca81611769565b92915050565b6000602082840312156125e6576125e561163c565b5b60006125f4848285016125bb565b91505092915050565b7f4552433732315065673a20696e73756666696369656e7420627269646765206660008201527f6565000000000000000000000000000000000000000000000000000000000000602082015250565b6000612659602283612010565b9150612664826125fd565b604082019050919050565b600060208201905081810360008301526126888161264c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126126ea576126e96126be565b5b80840192508235915067ffffffffffffffff82111561270c5761270b6126c3565b5b602083019250602082023603831315612728576127276126c8565b5b509250929050565b7f4552433732315065673a20746f6f206d616e7920746f6b656e20696473000000600082015250565b6000612766601d83612010565b915061277182612730565b602082019050919050565b6000602082019050818103600083015261279581612759565b9050919050565b7f4552433732315065673a20746f6b656e496420746f6f206c6172676500000000600082015250565b60006127d2601c83612010565b91506127dd8261279c565b602082019050919050565b60006020820190508181036000830152612801816127c5565b9050919050565b6128118161175f565b82525050565b600060608201905061282c6000830186611b39565b6128396020830185611b39565b6128466040830184612808565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128888261175f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128ba576128b961284e565b5b600182019050919050565b6000819050919050565b600080fd5b82818337505050565b60006128e98385612219565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561291c5761291b6128cf565b5b60208302925061292d8385846128d4565b82840190509392505050565b60006129468484846128dd565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261297b5761297a612959565b5b83810192508235915060208301925067ffffffffffffffff8211156129a3576129a261294f565b5b6020820236038313156129b9576129b8612954565b5b509250929050565b6000602082019050919050565b60006129da83856121f3565b93506129e5826128c5565b8060005b85811015612a20576129fb828461295e565b612a06898284612939565b9850612a11846129c1565b935050506001810190506129e9565b5085925050509392505050565b6000612a3a8284866129ce565b91508190509392505050565b6000819050919050565b6000612a5f602084018461174a565b905092915050565b6000602082019050919050565b6000612a808385612367565b9350612a8b82612a46565b8060005b85811015612ac457612aa18284612a50565b612aab8882612391565b9750612ab683612a67565b925050600181019050612a8f565b5085925050509392505050565b6000612ade828486612a74565b91508190509392505050565b6000819050919050565b600060ff82169050919050565b6000612b1c612b17612b1284612aea565b611f96565b612af4565b9050919050565b612b2c81612b01565b82525050565b600082825260208201905092915050565b612b4c81611721565b82525050565b6000612b5e8383612b43565b60208301905092915050565b6000612b768385612b32565b9350612b8182612a46565b8060005b85811015612bba57612b978284612a50565b612ba18882612b52565b9750612bac83612a67565b925050600181019050612b85565b5085925050509392505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612bf58385612bd8565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612c2857612c276128cf565b5b602083029250612c398385846128d4565b82840190509392505050565b6000612c52848484612be9565b90509392505050565b6000612c678385612bc7565b935083602084028501612c79846128c5565b8060005b87811015612cbf578484038952612c94828461295e565b612c9f868284612c45565b9550612caa846129c1565b935060208b019a505050600181019050612c7d565b50829750879450505050509392505050565b6000608082019050612ce66000830189612b23565b8181036020830152612cf9818789612b6a565b90508181036040830152612d0e818587612c5b565b9050612d1d6060830184611b39565b979650505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d62578082015181840152602081019050612d47565b60008484015250505050565b6000612d7982612d28565b612d838185612d33565b9350612d93818560208601612d44565b612d9c8161179f565b840191505092915050565b6000604082019050612dbc6000830185611b39565b8181036020830152612dce8184612d6e565b90509392505050565b7f4552433732315065673a206572633732312063616c6c20666f7277617264696e60008201527f6720706175736564000000000000000000000000000000000000000000000000602082015250565b6000612e33602883612010565b9150612e3e82612dd7565b604082019050919050565b60006020820190508181036000830152612e6281612e26565b9050919050565b600081905092915050565b6000612e808385612e69565b9350612e8d83858461185c565b82840190509392505050565b6000612ea6828486612e74565b91508190509392505050565b7f4552433732315065673a204552433732312063616c6c206661696c6564000000600082015250565b6000612ee8601d83612010565b9150612ef382612eb2565b602082019050919050565b60006020820190508181036000830152612f1781612edb565b9050919050565b6000612f2a8385612d33565b9350612f3783858461185c565b612f408361179f565b840190509392505050565b60006040820190508181036000830152612f66818587612f1e565b90508181036020830152612f7a8184612d6e565b9050949350505050565b6000819050919050565b6000612fa9612fa4612f9f84612f84565b611f96565b612af4565b9050919050565b612fb981612f8e565b82525050565b6000608082019050612fd46000830188612fb0565b612fe16020830187611b39565b8181036040830152612ff4818587612f1e565b905081810360608301526130088184612d6e565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613070602683612010565b915061307b82613014565b604082019050919050565b6000602082019050818103600083015261309f81613063565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130dc602083612010565b91506130e7826130a6565b602082019050919050565b6000602082019050818103600083015261310b816130cf565b9050919050565b7f4552433732315065673a207769746864726177616c7320706175736564000000600082015250565b6000613148601d83612010565b915061315382613112565b602082019050919050565b600060208201905081810360008301526131778161313b565b905091905056fea264697066735822122046422cd5c05d04e603df40e4fd1c6ce1a2d628191113a99fe49344acda7282be64736f6c63430008110033000000000000000000000000110fd9a44a056cb418d07f7d9957d0303f0020e4
Deployed Bytecode
0x6080604052600436106101145760003560e01c80637f5a22f9116100a0578063cf40071f11610064578063cf40071f14610375578063d2d007f214610391578063e78cea92146103ad578063f275c0ce146103d8578063f2fde38b1461040357610114565b80637f5a22f9146102a45780638da5cb5b146102cd578063b813a10e146102f8578063c6c0f59e14610321578063c9a973581461034c57610114565b80634419aa7a116100e75780634419aa7a146101e55780634500ca4d14610210578063565764a61461023b578063650bd36414610264578063715018a61461028d57610114565b806301ffc9a714610119578063150b7a02146101565780632ee111ed146101935780633395c16b146101bc575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b919061169e565b61042c565b60405161014d91906116e6565b60405180910390f35b34801561016257600080fd5b5061017d600480360381019061017891906118db565b61050e565b60405161018a919061196d565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b59190611988565b610522565b005b3480156101c857600080fd5b506101e360048036038101906101de91906119e1565b6105b1565b005b3480156101f157600080fd5b506101fa610605565b60405161020791906116e6565b60405180910390f35b34801561021c57600080fd5b50610225610618565b60405161023291906116e6565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d91906119e1565b61062b565b005b34801561027057600080fd5b5061028b60048036038101906102869190611a6e565b61067f565b005b34801561029957600080fd5b506102a26107cc565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190611b0c565b6107e0565b005b3480156102d957600080fd5b506102e261086f565b6040516102ef9190611b48565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190611dca565b610898565b005b34801561032d57600080fd5b5061033661091f565b6040516103439190611b48565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e91906119e1565b610945565b005b61038f600480360381019061038a9190611f01565b610999565b005b6103ab60048036038101906103a69190611a6e565b610eaa565b005b3480156103b957600080fd5b506103c26111b4565b6040516103cf9190611ff5565b60405180910390f35b3480156103e457600080fd5b506103ed6111da565b6040516103fa91906116e6565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190611988565b6111ed565b005b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104f757507f650bd364000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610507575061050682611270565b5b9050919050565b600063150b7a0260e01b9050949350505050565b61052a6112da565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f679cb5acfebd038830b61daadd5f2f74e2114862b1c289a5d2db82bc6eda32a660405160405180910390a250565b6105b96112da565b80600060166101000a81548160ff0219169083151502179055508015157fc53da2d2bdd34aab8c774a3745f685f66055b18c0c495c64f93ae9a14c9c1b1e60405160405180910390a250565b600060169054906101000a900460ff1681565b600060159054906101000a900460ff1681565b6106336112da565b80600060156101000a81548160ff0219169083151502179055508015157f2dd4e84c86f1d0ec949d1582751c7d8242fe120578eeece179a92603c8390ec660405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107069061206d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906120ff565b60405180910390fd5b600080600084848101906107b3919061215d565b9250925092506107c4838383611358565b505050505050565b6107d46112da565b6107de6000611566565b565b6107e86112da565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe5be83d44a251cb79ef6eb972655ca2528f5bb94376d7c2cb221c44d7bef6a8860405160405180910390a250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108a06112da565b6108ab838383611358565b816040516108b99190612345565b6040518091039020836040516108cf9190612414565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167f9a7fec89c8ef98b20d5325d9e10d6f5c01ddd040d76646090f5ed3a97a05a3f060405160405180910390a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61094d6112da565b80600060146101000a81548160ff0219169083151502179055508015157f2c009dd90a018abf2687d6137dd2e32b025c58eb76dfc41a63f233f39a0b937e60405160405180910390a250565b600060149054906101000a900460ff166109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90612477565b60405180910390fd5b828290508585905014610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612509565b60405180910390fd5b600a60ff16858590501115610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a719061259b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350dcb0276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b91906125d0565b341015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b449061266f565b60405180910390fd5b60005b85859050811015610d42576000868683818110610b7057610b6f61268f565b5b9050602002016020810190610b859190611988565b90506000858584818110610b9c57610b9b61268f565b5b9050602002810190610bae91906126cd565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509050603260ff1681511115610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061277c565b60405180910390fd5b60005b8151811015610d2e576000828281518110610c5957610c5861268f565b5b6020026020010151905063ffffffff80168110610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906127e8565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610ce893929190612817565b600060405180830381600087803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b50505050508080610d269061287d565b915050610c3b565b50505080610d3b9061287d565b9050610b50565b508282604051610d53929190612a2d565b60405180910390208585604051610d6b929190612ad1565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167f16bf9be534a5a2e3c279f758584db02ed9147dbd9ee1b80d5581ca063c67d44d84604051610db99190611b48565b60405180910390a4600060018686868686604051602001610ddf96959493929190612cd1565b6040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb5ddb0f34600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610e70929190612da7565b6000604051808303818588803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b5050505050505050505050565b600060169054906101000a900460ff16610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612e49565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350dcb0276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a91906125d0565b341015610fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc39061266f565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051610ff6929190612e99565b600060405180830381855afa9150503d8060008114611031576040519150601f19603f3d011682016040523d82523d6000602084013e611036565b606091505b50915091508161107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290612efe565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f6bbbdfd5423ef458bd7631157551222cc671b660754e6a6fa9f04f24c0c564b38585846040516110c593929190612f4b565b60405180910390a260006002868686856040516020016110e9959493929190612fbf565b6040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb5ddb0f34600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161117a929190612da7565b6000604051808303818588803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b5050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b6111f56112da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613086565b60405180910390fd5b61126d81611566565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6112e261162a565b73ffffffffffffffffffffffffffffffffffffffff1661130061086f565b73ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d906130f2565b60405180910390fd5b565b600060159054906101000a900460ff166113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061315e565b60405180910390fd5b81518351146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612509565b60405180910390fd5b60005b83518110156114f157600084828151811061140c5761140b61268f565b5b60200260200101519050600084838151811061142b5761142a61268f565b5b6020026020010151905060005b81518110156114dd578273ffffffffffffffffffffffffffffffffffffffff166342842e0e30878585815181106114725761147161268f565b5b60200260200101516040518463ffffffff1660e01b815260040161149893929190612817565b600060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b5050505080806114d59061287d565b915050611438565b505050806114ea9061287d565b90506113ee565b50816040516115009190612345565b6040518091039020836040516115169190612414565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167f174008f326dc8a82603b2f80a5179da5007b8ff71350fce7b05933705d7a816960405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61167b81611646565b811461168657600080fd5b50565b60008135905061169881611672565b92915050565b6000602082840312156116b4576116b361163c565b5b60006116c284828501611689565b91505092915050565b60008115159050919050565b6116e0816116cb565b82525050565b60006020820190506116fb60008301846116d7565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061172c82611701565b9050919050565b61173c81611721565b811461174757600080fd5b50565b60008135905061175981611733565b92915050565b6000819050919050565b6117728161175f565b811461177d57600080fd5b50565b60008135905061178f81611769565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117e88261179f565b810181811067ffffffffffffffff82111715611807576118066117b0565b5b80604052505050565b600061181a611632565b905061182682826117df565b919050565b600067ffffffffffffffff821115611846576118456117b0565b5b61184f8261179f565b9050602081019050919050565b82818337600083830152505050565b600061187e6118798461182b565b611810565b90508281526020810184848401111561189a5761189961179a565b5b6118a584828561185c565b509392505050565b600082601f8301126118c2576118c1611795565b5b81356118d284826020860161186b565b91505092915050565b600080600080608085870312156118f5576118f461163c565b5b60006119038782880161174a565b94505060206119148782880161174a565b935050604061192587828801611780565b925050606085013567ffffffffffffffff81111561194657611945611641565b5b611952878288016118ad565b91505092959194509250565b61196781611646565b82525050565b6000602082019050611982600083018461195e565b92915050565b60006020828403121561199e5761199d61163c565b5b60006119ac8482850161174a565b91505092915050565b6119be816116cb565b81146119c957600080fd5b50565b6000813590506119db816119b5565b92915050565b6000602082840312156119f7576119f661163c565b5b6000611a05848285016119cc565b91505092915050565b600080fd5b600080fd5b60008083601f840112611a2e57611a2d611795565b5b8235905067ffffffffffffffff811115611a4b57611a4a611a0e565b5b602083019150836001820283011115611a6757611a66611a13565b5b9250929050565b600080600060408486031215611a8757611a8661163c565b5b6000611a958682870161174a565b935050602084013567ffffffffffffffff811115611ab657611ab5611641565b5b611ac286828701611a18565b92509250509250925092565b6000611ad982611721565b9050919050565b611ae981611ace565b8114611af457600080fd5b50565b600081359050611b0681611ae0565b92915050565b600060208284031215611b2257611b2161163c565b5b6000611b3084828501611af7565b91505092915050565b611b4281611721565b82525050565b6000602082019050611b5d6000830184611b39565b92915050565b600067ffffffffffffffff821115611b7e57611b7d6117b0565b5b602082029050602081019050919050565b6000611ba2611b9d84611b63565b611810565b90508083825260208201905060208402830185811115611bc557611bc4611a13565b5b835b81811015611bee5780611bda888261174a565b845260208401935050602081019050611bc7565b5050509392505050565b600082601f830112611c0d57611c0c611795565b5b8135611c1d848260208601611b8f565b91505092915050565b600067ffffffffffffffff821115611c4157611c406117b0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611c6d57611c6c6117b0565b5b602082029050602081019050919050565b6000611c91611c8c84611c52565b611810565b90508083825260208201905060208402830185811115611cb457611cb3611a13565b5b835b81811015611cdd5780611cc98882611780565b845260208401935050602081019050611cb6565b5050509392505050565b600082601f830112611cfc57611cfb611795565b5b8135611d0c848260208601611c7e565b91505092915050565b6000611d28611d2384611c26565b611810565b90508083825260208201905060208402830185811115611d4b57611d4a611a13565b5b835b81811015611d9257803567ffffffffffffffff811115611d7057611d6f611795565b5b808601611d7d8982611ce7565b85526020850194505050602081019050611d4d565b5050509392505050565b600082601f830112611db157611db0611795565b5b8135611dc1848260208601611d15565b91505092915050565b600080600060608486031215611de357611de261163c565b5b600084013567ffffffffffffffff811115611e0157611e00611641565b5b611e0d86828701611bf8565b935050602084013567ffffffffffffffff811115611e2e57611e2d611641565b5b611e3a86828701611d9c565b9250506040611e4b8682870161174a565b9150509250925092565b60008083601f840112611e6b57611e6a611795565b5b8235905067ffffffffffffffff811115611e8857611e87611a0e565b5b602083019150836020820283011115611ea457611ea3611a13565b5b9250929050565b60008083601f840112611ec157611ec0611795565b5b8235905067ffffffffffffffff811115611ede57611edd611a0e565b5b602083019150836020820283011115611efa57611ef9611a13565b5b9250929050565b600080600080600060608688031215611f1d57611f1c61163c565b5b600086013567ffffffffffffffff811115611f3b57611f3a611641565b5b611f4788828901611e55565b9550955050602086013567ffffffffffffffff811115611f6a57611f69611641565b5b611f7688828901611eab565b93509350506040611f898882890161174a565b9150509295509295909350565b6000819050919050565b6000611fbb611fb6611fb184611701565b611f96565b611701565b9050919050565b6000611fcd82611fa0565b9050919050565b6000611fdf82611fc2565b9050919050565b611fef81611fd4565b82525050565b600060208201905061200a6000830184611fe6565b92915050565b600082825260208201905092915050565b7f4552433732315065673a206f6e6c79206272696467652063616e2063616c6c00600082015250565b6000612057601f83612010565b915061206282612021565b602082019050919050565b600060208201905081810360008301526120868161204a565b9050919050565b7f4552433732315065673a20736f75726365206d7573742062652070656720706160008201527f6c6c657420616464726573730000000000000000000000000000000000000000602082015250565b60006120e9602c83612010565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b600061212a82611701565b9050919050565b61213a8161211f565b811461214557600080fd5b50565b60008135905061215781612131565b92915050565b6000806000606084860312156121765761217561163c565b5b600084013567ffffffffffffffff81111561219457612193611641565b5b6121a086828701611bf8565b935050602084013567ffffffffffffffff8111156121c1576121c0611641565b5b6121cd86828701611d9c565b92505060406121de86828701612148565b9150509250925092565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61223d8161175f565b82525050565b600061224f8383612234565b60208301905092915050565b6000602082019050919050565b60006122738261220e565b61227d8185612219565b935061228883612224565b8060005b838110156122b95781516122a08882612243565b97506122ab8361225b565b92505060018101905061228c565b5085935050505092915050565b60006122d28383612268565b905092915050565b6000602082019050919050565b60006122f2826121e8565b6122fc81856121f3565b9350612307836121fe565b8060005b8381101561233857815161231f88826122c6565b975061232a836122da565b92505060018101905061230b565b5085935050505092915050565b600061235182846122e7565b915081905092915050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61238b81611721565b82525050565b600061239d8383612382565b60208301905092915050565b6000602082019050919050565b60006123c18261235c565b6123cb8185612367565b93506123d683612372565b8060005b838110156124075781516123ee8882612391565b97506123f9836123a9565b9250506001810190506123da565b5085935050505092915050565b600061242082846123b6565b915081905092915050565b7f4552433732315065673a206465706f7369747320706175736564000000000000600082015250565b6000612461601a83612010565b915061246c8261242b565b602082019050919050565b6000602082019050818103600083015261249081612454565b9050919050565b7f4552433732315065673a20746f6b656e41646472657373657320616e6420746f60008201527f6b656e496473206d7573742062652073616d65206c656e677468000000000000602082015250565b60006124f3603a83612010565b91506124fe82612497565b604082019050919050565b60006020820190508181036000830152612522816124e6565b9050919050565b7f4552433732315065673a20746f6f206d616e7920746f6b656e2061646472657360008201527f7365730000000000000000000000000000000000000000000000000000000000602082015250565b6000612585602383612010565b915061259082612529565b604082019050919050565b600060208201905081810360008301526125b481612578565b9050919050565b6000815190506125ca81611769565b92915050565b6000602082840312156125e6576125e561163c565b5b60006125f4848285016125bb565b91505092915050565b7f4552433732315065673a20696e73756666696369656e7420627269646765206660008201527f6565000000000000000000000000000000000000000000000000000000000000602082015250565b6000612659602283612010565b9150612664826125fd565b604082019050919050565b600060208201905081810360008301526126888161264c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126126ea576126e96126be565b5b80840192508235915067ffffffffffffffff82111561270c5761270b6126c3565b5b602083019250602082023603831315612728576127276126c8565b5b509250929050565b7f4552433732315065673a20746f6f206d616e7920746f6b656e20696473000000600082015250565b6000612766601d83612010565b915061277182612730565b602082019050919050565b6000602082019050818103600083015261279581612759565b9050919050565b7f4552433732315065673a20746f6b656e496420746f6f206c6172676500000000600082015250565b60006127d2601c83612010565b91506127dd8261279c565b602082019050919050565b60006020820190508181036000830152612801816127c5565b9050919050565b6128118161175f565b82525050565b600060608201905061282c6000830186611b39565b6128396020830185611b39565b6128466040830184612808565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128888261175f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128ba576128b961284e565b5b600182019050919050565b6000819050919050565b600080fd5b82818337505050565b60006128e98385612219565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561291c5761291b6128cf565b5b60208302925061292d8385846128d4565b82840190509392505050565b60006129468484846128dd565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261297b5761297a612959565b5b83810192508235915060208301925067ffffffffffffffff8211156129a3576129a261294f565b5b6020820236038313156129b9576129b8612954565b5b509250929050565b6000602082019050919050565b60006129da83856121f3565b93506129e5826128c5565b8060005b85811015612a20576129fb828461295e565b612a06898284612939565b9850612a11846129c1565b935050506001810190506129e9565b5085925050509392505050565b6000612a3a8284866129ce565b91508190509392505050565b6000819050919050565b6000612a5f602084018461174a565b905092915050565b6000602082019050919050565b6000612a808385612367565b9350612a8b82612a46565b8060005b85811015612ac457612aa18284612a50565b612aab8882612391565b9750612ab683612a67565b925050600181019050612a8f565b5085925050509392505050565b6000612ade828486612a74565b91508190509392505050565b6000819050919050565b600060ff82169050919050565b6000612b1c612b17612b1284612aea565b611f96565b612af4565b9050919050565b612b2c81612b01565b82525050565b600082825260208201905092915050565b612b4c81611721565b82525050565b6000612b5e8383612b43565b60208301905092915050565b6000612b768385612b32565b9350612b8182612a46565b8060005b85811015612bba57612b978284612a50565b612ba18882612b52565b9750612bac83612a67565b925050600181019050612b85565b5085925050509392505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612bf58385612bd8565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612c2857612c276128cf565b5b602083029250612c398385846128d4565b82840190509392505050565b6000612c52848484612be9565b90509392505050565b6000612c678385612bc7565b935083602084028501612c79846128c5565b8060005b87811015612cbf578484038952612c94828461295e565b612c9f868284612c45565b9550612caa846129c1565b935060208b019a505050600181019050612c7d565b50829750879450505050509392505050565b6000608082019050612ce66000830189612b23565b8181036020830152612cf9818789612b6a565b90508181036040830152612d0e818587612c5b565b9050612d1d6060830184611b39565b979650505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d62578082015181840152602081019050612d47565b60008484015250505050565b6000612d7982612d28565b612d838185612d33565b9350612d93818560208601612d44565b612d9c8161179f565b840191505092915050565b6000604082019050612dbc6000830185611b39565b8181036020830152612dce8184612d6e565b90509392505050565b7f4552433732315065673a206572633732312063616c6c20666f7277617264696e60008201527f6720706175736564000000000000000000000000000000000000000000000000602082015250565b6000612e33602883612010565b9150612e3e82612dd7565b604082019050919050565b60006020820190508181036000830152612e6281612e26565b9050919050565b600081905092915050565b6000612e808385612e69565b9350612e8d83858461185c565b82840190509392505050565b6000612ea6828486612e74565b91508190509392505050565b7f4552433732315065673a204552433732312063616c6c206661696c6564000000600082015250565b6000612ee8601d83612010565b9150612ef382612eb2565b602082019050919050565b60006020820190508181036000830152612f1781612edb565b9050919050565b6000612f2a8385612d33565b9350612f3783858461185c565b612f408361179f565b840190509392505050565b60006040820190508181036000830152612f66818587612f1e565b90508181036020830152612f7a8184612d6e565b9050949350505050565b6000819050919050565b6000612fa9612fa4612f9f84612f84565b611f96565b612af4565b9050919050565b612fb981612f8e565b82525050565b6000608082019050612fd46000830188612fb0565b612fe16020830187611b39565b8181036040830152612ff4818587612f1e565b905081810360608301526130088184612d6e565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613070602683612010565b915061307b82613014565b604082019050919050565b6000602082019050818103600083015261309f81613063565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130dc602083612010565b91506130e7826130a6565b602082019050919050565b6000602082019050818103600083015261310b816130cf565b9050919050565b7f4552433732315065673a207769746864726177616c7320706175736564000000600082015250565b6000613148601d83612010565b915061315382613112565b602082019050919050565b600060208201905081810360008301526131778161313b565b905091905056fea264697066735822122046422cd5c05d04e603df40e4fd1c6ce1a2d628191113a99fe49344acda7282be64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000110fd9a44a056cb418d07f7d9957d0303f0020e4
-----Decoded View---------------
Arg [0] : _bridge (address): 0x110fd9a44a056cb418D07F7d9957D0303F0020e4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000110fd9a44a056cb418d07f7d9957d0303f0020e4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.