Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 24 from a total of 24 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 21498397 | 20 days ago | IN | 0 ETH | 0.00017376 | ||||
Safe Transfer Fr... | 16840573 | 672 days ago | IN | 0 ETH | 0.00140498 | ||||
Set Approval For... | 15848407 | 811 days ago | IN | 0 ETH | 0.0010171 | ||||
Transfer From | 15060388 | 930 days ago | IN | 0 ETH | 0.00069028 | ||||
Transfer From | 15060383 | 930 days ago | IN | 0 ETH | 0.00076262 | ||||
Transfer From | 14995437 | 941 days ago | IN | 0 ETH | 0.00108519 | ||||
Transfer From | 14601938 | 1005 days ago | IN | 0 ETH | 0.00121084 | ||||
Set Approval For... | 14357978 | 1043 days ago | IN | 0 ETH | 0.00091676 | ||||
Transfer From | 14349928 | 1045 days ago | IN | 0 ETH | 0.00239172 | ||||
Set Approval For... | 13986364 | 1101 days ago | IN | 0 ETH | 0.00932389 | ||||
Transfer From | 13852019 | 1122 days ago | IN | 0 ETH | 0.00608222 | ||||
Set Approval For... | 13432840 | 1188 days ago | IN | 0 ETH | 0.00222715 | ||||
Transfer From | 12967879 | 1260 days ago | IN | 0 ETH | 0.0024411 | ||||
Set Approval For... | 12943438 | 1264 days ago | IN | 0 ETH | 0.00071982 | ||||
Set Approval For... | 12943433 | 1264 days ago | IN | 0 ETH | 0.00130368 | ||||
Transfer From | 12884533 | 1273 days ago | IN | 0 ETH | 0.00045357 | ||||
Set Approval For... | 12826374 | 1282 days ago | IN | 0 ETH | 0.00276979 | ||||
Set Approval For... | 12752483 | 1294 days ago | IN | 0 ETH | 0.0004656 | ||||
Transfer From | 12739676 | 1296 days ago | IN | 0 ETH | 0.00118419 | ||||
Transfer From | 12641309 | 1311 days ago | IN | 0 ETH | 0.00126564 | ||||
Transfer From | 12640626 | 1311 days ago | IN | 0 ETH | 0.00199481 | ||||
Set Approval For... | 12639855 | 1311 days ago | IN | 0 ETH | 0.001164 | ||||
Transfer From | 12639821 | 1311 days ago | IN | 0 ETH | 0.00132546 | ||||
Transfer From | 12639789 | 1311 days ago | IN | 0 ETH | 0.00089942 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CryptofunksLP
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-15 */ pragma solidity 0.8.0; /** * @dev A standard for detecting smart contract interfaces. * See: https://eips.ethereum.org/EIPS/eip-165. */ interface ERC165 { /** * @dev Checks if the smart contract includes a specific interface. * This function uses less than 30,000 gas. * @param _interfaceID The interface identifier, as specified in ERC-165. * @return True if _interfaceID is supported, false otherwise. */ function supportsInterface( bytes4 _interfaceID ) external view returns (bool); } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Utility library of inline functions on addresses. * @notice Based on: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol * Requires EIP-1052. */ library AddressUtils { /** * @dev Returns whether the target address is a contract. * @param _addr Address to check. * @return addressCheck True if _addr is a contract, false if not. */ function isContract( address _addr ) internal view returns (bool addressCheck) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(_addr) } // solhint-disable-line addressCheck = (codehash != 0x0 && codehash != accountHash); } } /** * @dev Implementation of standard for detect smart contract interfaces. */ contract SupportsInterface is ERC165 { /** * @dev Mapping of supported intefraces. You must not set element 0xffffffff to true. */ mapping(bytes4 => bool) internal supportedInterfaces; /** * @dev Contract constructor. */ constructor() { supportedInterfaces[0x01ffc9a7] = true; // ERC165 } /** * @dev Function to check which interfaces are suported by this contract. * @param _interfaceID Id of the interface. * @return True if _interfaceID is supported, false otherwise. */ function supportsInterface( bytes4 _interfaceID ) external override view returns (bool) { return supportedInterfaces[_interfaceID]; } } /** * @dev ERC-721 interface for accepting safe transfers. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721TokenReceiver { /** * @dev Handle the receipt of a NFT. The ERC721 smart contract calls this function on the * recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return * of other than the magic value MUST result in the transaction being reverted. * Returns `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` unless throwing. * @notice The contract address is always the message sender. A wallet/broker/auction application * MUST implement the wallet interface if it will accept safe transfers. * @param _operator The address which called `safeTransferFrom` function. * @param _from The address which previously owned the token. * @param _tokenId The NFT identifier which is being transferred. * @param _data Additional data with no specified format. * @return Returns `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. */ function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data ) external returns(bytes4); } /** * @dev ERC-721 non-fungible token standard. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721 { /** * @dev Emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are * created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any * number of NFTs may be created and assigned without emitting Transfer. At the time of any * transfer, the approved address for that NFT (if any) is reset to none. */ event Transfer( address indexed _from, address indexed _to, uint256 indexed _tokenId ); /** * @dev This emits when the approved address for an NFT is changed or reaffirmed. The zero * address indicates there is no approved address. When a Transfer event emits, this also * indicates that the approved address for that NFT (if any) is reset to none. */ event Approval( address indexed _owner, address indexed _approved, uint256 indexed _tokenId ); /** * @dev This emits when an operator is enabled or disabled for an owner. The operator can manage * all NFTs of the owner. */ event ApprovalForAll( address indexed _owner, address indexed _operator, bool _approved ); /** * @dev Transfers the ownership of an NFT from one address to another address. * @notice Throws unless `msg.sender` is the current owner, an authorized operator, or the * approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is * the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this * function checks if `_to` is a smart contract (code size > 0). If so, it calls * `onERC721Received` on `_to` and throws if the return value is not * `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes calldata _data ) external; /** * @dev Transfers the ownership of an NFT from one address to another address. * @notice This works identically to the other function with an extra data parameter, except this * function just sets data to "" * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId ) external; /** * @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved * address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero * address. Throws if `_tokenId` is not a valid NFT. * @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else * they may be permanently lost. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function transferFrom( address _from, address _to, uint256 _tokenId ) external; /** * @dev Set or reaffirm the approved address for an NFT. * @notice The zero address indicates there is no approved address. Throws unless `msg.sender` is * the current NFT owner, or an authorized operator of the current owner. * @param _approved The new approved NFT controller. * @param _tokenId The NFT to approve. */ function approve( address _approved, uint256 _tokenId ) external; /** * @dev Enables or disables approval for a third party ("operator") to manage all of * `msg.sender`'s assets. It also emits the ApprovalForAll event. * @notice The contract MUST allow multiple operators per owner. * @param _operator Address to add to the set of authorized operators. * @param _approved True if the operators is approved, false to revoke approval. */ function setApprovalForAll( address _operator, bool _approved ) external; /** * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are * considered invalid, and this function throws for queries about the zero address. * @param _owner Address for whom to query the balance. * @return Balance of _owner. */ function balanceOf( address _owner ) external view returns (uint256); /** * @dev Returns the address of the owner of the NFT. NFTs assigned to the zero address are * considered invalid, and queries about them do throw. * @param _tokenId The identifier for an NFT. * @return Address of _tokenId owner. */ function ownerOf( uint256 _tokenId ) external view returns (address); /** * @dev Get the approved address for a single NFT. * @notice Throws if `_tokenId` is not a valid NFT. * @param _tokenId The NFT to find the approved address for. * @return Address that _tokenId is approved for. */ function getApproved( uint256 _tokenId ) external view returns (address); /** * @dev Returns true if `_operator` is an approved operator for `_owner`, false otherwise. * @param _owner The address that owns the NFTs. * @param _operator The address that acts on behalf of the owner. * @return True if approved for all, false otherwise. */ function isApprovedForAll( address _owner, address _operator ) external view returns (bool); } /** * @dev Implementation of ERC-721 non-fungible token standard. */ contract NFToken is ERC721, SupportsInterface { using AddressUtils for address; /** * @dev List of revert message codes. Implementing dApp should handle showing the correct message. * Based on 0xcert framework error codes. */ string constant ZERO_ADDRESS = "003001"; string constant NOT_VALID_NFT = "003002"; string constant NOT_OWNER_OR_OPERATOR = "003003"; string constant NOT_OWNER_APPROVED_OR_OPERATOR = "003004"; string constant NOT_ABLE_TO_RECEIVE_NFT = "003005"; string constant NFT_ALREADY_EXISTS = "003006"; string constant NOT_OWNER = "003007"; string constant IS_OWNER = "003008"; /** * @dev Magic value of a smart contract that can receive NFT. * Equal to: bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")). */ bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02; /** * @dev A mapping from NFT ID to the address that owns it. */ mapping (uint256 => address) internal idToOwner; /** * @dev Mapping from NFT ID to approved address. */ mapping (uint256 => address) internal idToApproval; /** * @dev Mapping from owner address to count of their tokens. */ mapping (address => uint256) private ownerToNFTokenCount; /** * @dev Mapping from owner address to mapping of operator addresses. */ mapping (address => mapping (address => bool)) internal ownerToOperators; /** * @dev Guarantees that the msg.sender is an owner or operator of the given NFT. * @param _tokenId ID of the NFT to validate. */ modifier canOperate( uint256 _tokenId ) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender], NOT_OWNER_OR_OPERATOR ); _; } /** * @dev Guarantees that the msg.sender is allowed to transfer NFT. * @param _tokenId ID of the NFT to transfer. */ modifier canTransfer( uint256 _tokenId ) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || idToApproval[_tokenId] == msg.sender || ownerToOperators[tokenOwner][msg.sender], NOT_OWNER_APPROVED_OR_OPERATOR ); _; } /** * @dev Guarantees that _tokenId is a valid Token. * @param _tokenId ID of the NFT to validate. */ modifier validNFToken( uint256 _tokenId ) { require(idToOwner[_tokenId] != address(0), NOT_VALID_NFT); _; } /** * @dev Contract constructor. */ constructor() { supportedInterfaces[0x80ac58cd] = true; // ERC721 } /** * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @notice Throws unless `msg.sender` is the current owner, an authorized operator, or the * approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is * the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this * function checks if `_to` is a smart contract (code size > 0). If so, it calls * `onERC721Received` on `_to` and throws if the return value is not * `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes calldata _data ) external override { _safeTransferFrom(_from, _to, _tokenId, _data); } /** * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @notice This works identically to the other function with an extra data parameter, except this * function just sets data to "" * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId ) external override { _safeTransferFrom(_from, _to, _tokenId, ""); } /** * @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved * address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero * address. Throws if `_tokenId` is not a valid NFT. This function can be changed to payable. * @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else * they may be permanently lost. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function transferFrom( address _from, address _to, uint256 _tokenId ) external override canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, NOT_OWNER); require(_to != address(0), ZERO_ADDRESS); _transfer(_to, _tokenId); } /** * @dev Set or reaffirm the approved address for an NFT. This function can be changed to payable. * @notice The zero address indicates there is no approved address. Throws unless `msg.sender` is * the current NFT owner, or an authorized operator of the current owner. * @param _approved Address to be approved for the given NFT ID. * @param _tokenId ID of the token to be approved. */ function approve( address _approved, uint256 _tokenId ) external override canOperate(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(_approved != tokenOwner, IS_OWNER); idToApproval[_tokenId] = _approved; emit Approval(tokenOwner, _approved, _tokenId); } /** * @dev Enables or disables approval for a third party ("operator") to manage all of * `msg.sender`'s assets. It also emits the ApprovalForAll event. * @notice This works even if sender doesn't own any tokens at the time. * @param _operator Address to add to the set of authorized operators. * @param _approved True if the operators is approved, false to revoke approval. */ function setApprovalForAll( address _operator, bool _approved ) external override { ownerToOperators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } /** * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are * considered invalid, and this function throws for queries about the zero address. * @param _owner Address for whom to query the balance. * @return Balance of _owner. */ function balanceOf( address _owner ) external override view returns (uint256) { require(_owner != address(0), ZERO_ADDRESS); return _getOwnerNFTCount(_owner); } /** * @dev Returns the address of the owner of the NFT. NFTs assigned to the zero address are * considered invalid, and queries about them do throw. * @param _tokenId The identifier for an NFT. * @return _owner Address of _tokenId owner. */ function ownerOf( uint256 _tokenId ) external override view returns (address _owner) { _owner = idToOwner[_tokenId]; require(_owner != address(0), NOT_VALID_NFT); } /** * @dev Get the approved address for a single NFT. * @notice Throws if `_tokenId` is not a valid NFT. * @param _tokenId ID of the NFT to query the approval of. * @return Address that _tokenId is approved for. */ function getApproved( uint256 _tokenId ) external override view validNFToken(_tokenId) returns (address) { return idToApproval[_tokenId]; } /** * @dev Checks if `_operator` is an approved operator for `_owner`. * @param _owner The address that owns the NFTs. * @param _operator The address that acts on behalf of the owner. * @return True if approved for all, false otherwise. */ function isApprovedForAll( address _owner, address _operator ) external override view returns (bool) { return ownerToOperators[_owner][_operator]; } /** * @dev Actually performs the transfer. * @notice Does NO checks. * @param _to Address of a new owner. * @param _tokenId The NFT that is being transferred. */ function _transfer( address _to, uint256 _tokenId ) internal { address from = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(from, _tokenId); _addNFToken(_to, _tokenId); emit Transfer(from, _to, _tokenId); } /** * @dev Mints a new NFT. * @notice This is an internal function which should be called from user-implemented external * mint function. Its purpose is to show and properly initialize data structures when using this * implementation. * @param _to The address that will own the minted NFT. * @param _tokenId of the NFT to be minted by the msg.sender. */ function _mint( address _to, uint256 _tokenId ) internal virtual { require(_to != address(0), ZERO_ADDRESS); require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS); _addNFToken(_to, _tokenId); emit Transfer(address(0), _to, _tokenId); } /** * @dev Burns a NFT. * @notice This is an internal function which should be called from user-implemented external burn * function. Its purpose is to show and properly initialize data structures when using this * implementation. Also, note that this burn implementation allows the minter to re-mint a burned * NFT. * @param _tokenId ID of the NFT to be burned. */ function _burn( uint256 _tokenId ) internal virtual validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(tokenOwner, _tokenId); emit Transfer(tokenOwner, address(0), _tokenId); } /** * @dev Removes a NFT from owner. * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @param _from Address from which we want to remove the NFT. * @param _tokenId Which NFT we want to remove. */ function _removeNFToken( address _from, uint256 _tokenId ) internal virtual { require(idToOwner[_tokenId] == _from, NOT_OWNER); ownerToNFTokenCount[_from] -= 1; delete idToOwner[_tokenId]; } /** * @dev Assigns a new NFT to owner. * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @param _to Address to which we want to add the NFT. * @param _tokenId Which NFT we want to add. */ function _addNFToken( address _to, uint256 _tokenId ) internal virtual { require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS); idToOwner[_tokenId] = _to; ownerToNFTokenCount[_to] += 1; } /** * @dev Helper function that gets NFT count of owner. This is needed for overriding in enumerable * extension to remove double storage (gas optimization) of owner NFT count. * @param _owner Address for whom to query the count. * @return Number of _owner NFTs. */ function _getOwnerNFTCount( address _owner ) internal virtual view returns (uint256) { return ownerToNFTokenCount[_owner]; } /** * @dev Actually perform the safeTransferFrom. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function _safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes memory _data ) private canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, NOT_OWNER); require(_to != address(0), ZERO_ADDRESS); _transfer(_to, _tokenId); if (_to.isContract()) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == MAGIC_ON_ERC721_RECEIVED, NOT_ABLE_TO_RECEIVE_NFT); } } /** * @dev Clears the current approval of a given NFT ID. * @param _tokenId ID of the NFT to be transferred. */ function _clearApproval( uint256 _tokenId ) private { delete idToApproval[_tokenId]; } } /** * @dev Optional metadata extension for ERC-721 non-fungible token standard. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721Metadata { /** * @dev Returns a descriptive name for a collection of NFTs in this contract. * @return _name Representing name. */ function name() external view returns (string memory _name); /** * @dev Returns a abbreviated name for a collection of NFTs in this contract. * @return _symbol Representing symbol. */ function symbol() external view returns (string memory _symbol); /** * @dev Returns a distinct Uniform Resource Identifier (URI) for a given asset. It Throws if * `_tokenId` is not a valid NFT. URIs are defined in RFC3986. The URI may point to a JSON file * that conforms to the "ERC721 Metadata JSON Schema". * @return URI of _tokenId. */ function tokenURI(uint256 _tokenId) external view returns (string memory); } abstract contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) virtual public; } /** * @dev Optional metadata implementation for ERC-721 non-fungible token standard. */ contract CryptofunksLP is NFToken, ERC721Metadata, ApproveAndCallFallBack { /** * @dev A descriptive name for a collection of NFTs. */ string internal nftName = "Cryptofunks LP"; /** * @dev An abbreviated name for NFTokens. */ string internal nftSymbol = "CF_LP"; uint256 public totalSupply = 0; address public paymentDelegate; address public currencyToken; /** * @dev Contract constructor. * @notice When implementing this contract don't forget to set nftName and nftSymbol. */ constructor(address _pDelegate, address _cToken) { paymentDelegate = _pDelegate; currencyToken = _cToken; supportedInterfaces[0x5b5e139f] = true; // ERC721Metadata } /** * @dev Returns a descriptive name for a collection of NFTokens. * @return _name Representing name. */ function name() external override view returns (string memory _name) { _name = nftName; } /** * @dev Returns an abbreviated name for NFTokens. * @return _symbol Representing symbol. */ function symbol() external override view returns (string memory _symbol) { _symbol = nftSymbol; } /** * @dev A distinct URI (RFC 3986) for a given NFT. * @param _tokenId Id for which we want uri. * @return URI of _tokenId. */ function tokenURI( uint256 _tokenId ) external override view validNFToken(_tokenId) returns (string memory) { return "https://cloudflare-ipfs.com/ipfs/QmbdJguvLGcHYVg3kHs3kAbTTUbQr9kBGittH3sqB88jqd"; } /** * @dev Mints an NFT. * Requires payment of the currencyToken to the paymentDelegate */ function mint( address from ) internal returns (bool) { IERC20(currencyToken).transferFrom(from, paymentDelegate, 100000000); _mint(from, totalSupply++); require(totalSupply < 420); return true; } function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public override { require( token == currencyToken ); require( mint( from ) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_pDelegate","type":"address"},{"internalType":"address","name":"_cToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentDelegate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"receiveApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600e81526020017f43727970746f66756e6b73204c50000000000000000000000000000000000000815250600590805190602001906200005192919062000255565b506040518060400160405280600581526020017f43465f4c50000000000000000000000000000000000000000000000000000000815250600690805190602001906200009f92919062000255565b506000600755348015620000b257600080fd5b5060405162002e9d38038062002e9d8339818101604052810190620000d891906200031c565b60016000806301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000806380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600080635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000410565b828054620002639062000391565b90600052602060002090601f016020900481019282620002875760008555620002d3565b82601f10620002a257805160ff1916838001178555620002d3565b82800160010185558215620002d3579182015b82811115620002d2578251825591602001919060010190620002b5565b5b509050620002e29190620002e6565b5090565b5b8082111562000301576000816000905550600101620002e7565b5090565b6000815190506200031681620003f6565b92915050565b600080604083850312156200033057600080fd5b6000620003408582860162000305565b9250506020620003538582860162000305565b9150509250929050565b60006200036a8262000371565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620003aa57607f821691505b60208210811415620003c157620003c0620003c7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000401816200035d565b81146200040d57600080fd5b50565b612a7d80620004206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a257806395d89b411161007157806395d89b41146102b8578063a22cb465146102d6578063b88d4fde146102f2578063c87b56dd1461030e578063e985e9c51461033e5761010b565b80636352211e1461021e5780636b2fa3741461024e57806370a082311461026c5780638f4ffcb11461029c5761010b565b806318160ddd116100de57806318160ddd146101aa57806323b872dd146101c857806341afaf5d146101e457806342842e0e146102025761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190612479565b61036e565b6040516101379190612640565b60405180910390f35b6101486103d5565b604051610155919061265b565b60405180910390f35b610178600480360381019061017391906124cb565b610467565b60405161018591906125a2565b60405180910390f35b6101a860048036038101906101a39190612399565b610582565b005b6101b2610965565b6040516101bf919061267d565b60405180910390f35b6101e260048036038101906101dd919061228e565b61096b565b005b6101ec610dbd565b6040516101f991906125a2565b60405180910390f35b61021c6004803603810190610217919061228e565b610de3565b005b610238600480360381019061023391906124cb565b610e03565b60405161024591906125a2565b60405180910390f35b610256610ee9565b60405161026391906125a2565b60405180910390f35b61028660048036038101906102819190612229565b610f0f565b604051610293919061267d565b60405180910390f35b6102b660048036038101906102b191906123d5565b610fc9565b005b6102c061103b565b6040516102cd919061265b565b60405180910390f35b6102f060048036038101906102eb919061235d565b6110cd565b005b61030c600480360381019061030791906122dd565b6111ca565b005b610328600480360381019061032391906124cb565b611221565b604051610335919061265b565b60405180910390f35b61035860048036038101906103539190612252565b611321565b6040516103659190612640565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6060600580546103e490612883565b80601f016020809104026020016040519081016040528092919081815260200182805461041090612883565b801561045d5780601f106104325761010080835404028352916020019161045d565b820191906000526020600020905b81548152906001019060200180831161044057829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c919061265b565b60405180910390fd5b506002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061067b5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f3030333030330000000000000000000000000000000000000000000000000000815250906106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e9919061265b565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030320000000000000000000000000000000000000000000000000000815250906107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c6919061265b565b60405180910390fd5b5060006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030380000000000000000000000000000000000000000000000000000815250906108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a6919061265b565b60405180910390fd5b50856002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b60075481565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a3c57503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610acd5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f303033303034000000000000000000000000000000000000000000000000000081525090610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b919061265b565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18919061265b565b60405180910390fd5b5060006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303037000000000000000000000000000000000000000000000000000081525090610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf7919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da0919061265b565b60405180910390fd5b50610db486866113b5565b50505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dfe8383836040518060200160405280600081525061146a565b505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda919061265b565b60405180910390fd5b50919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf919061265b565b60405180910390fd5b50610fc282611a38565b9050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461102357600080fd5b61102c84611a81565b61103557600080fd5b50505050565b60606006805461104a90612883565b80601f016020809104026020016040519081016040528092919081815260200182805461107690612883565b80156110c35780601f10611098576101008083540402835291602001916110c3565b820191906000526020600020905b8154815290600101906020018083116110a657829003601f168201915b5050505050905090565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111be9190612640565b60405180910390a35050565b61121a85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061146a565b5050505050565b606081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030320000000000000000000000000000000000000000000000000000815250906112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6919061265b565b60405180910390fd5b506040518060800160405280604f81526020016129f9604f9139915050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506113f682611b94565b6114008183611bcd565b61140a8383611d38565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061153b57503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806115cc5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f303033303034000000000000000000000000000000000000000000000000000081525090611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a919061265b565b60405180910390fd5b5083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090611720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611717919061265b565b60405180910390fd5b5060006001600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f3030333030370000000000000000000000000000000000000000000000000000815250906117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030310000000000000000000000000000000000000000000000000000815250906118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f919061265b565b60405180910390fd5b506118b387876113b5565b6118d28773ffffffffffffffffffffffffffffffffffffffff16611ec0565b15611a2e5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b815260040161191894939291906125f4565b602060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a91906124a2565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146040518060400160405280600681526020017f303033303035000000000000000000000000000000000000000000000000000081525090611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22919061265b565b60405180910390fd5b50505b5050505050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd83600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166305f5e1006040518463ffffffff1660e01b8152600401611b08939291906125bd565b602060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190612450565b50611b7b8260076000815480929190611b72906128b5565b91905055611f0b565b6101a460075410611b8b57600080fd5b60019050919050565b6002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550565b8173ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303037000000000000000000000000000000000000000000000000000081525090611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d919061265b565b60405180910390fd5b506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf79190612787565b925050819055506001600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303036000000000000000000000000000000000000000000000000000081525090611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e09919061265b565b60405180910390fd5b50816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb59190612731565b925050819055505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015611f025750808214155b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f30303330303600000000000000000000000000000000000000000000000000008152509061208e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612085919061265b565b60405180910390fd5b506120998282611d38565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600061210c612107846126c9565b612698565b90508281526020810184848401111561212457600080fd5b61212f848285612841565b509392505050565b6000813590506121468161299c565b92915050565b60008135905061215b816129b3565b92915050565b600081519050612170816129b3565b92915050565b600081359050612185816129ca565b92915050565b60008151905061219a816129ca565b92915050565b60008083601f8401126121b257600080fd5b8235905067ffffffffffffffff8111156121cb57600080fd5b6020830191508360018202830111156121e357600080fd5b9250929050565b600082601f8301126121fb57600080fd5b813561220b8482602086016120f9565b91505092915050565b600081359050612223816129e1565b92915050565b60006020828403121561223b57600080fd5b600061224984828501612137565b91505092915050565b6000806040838503121561226557600080fd5b600061227385828601612137565b925050602061228485828601612137565b9150509250929050565b6000806000606084860312156122a357600080fd5b60006122b186828701612137565b93505060206122c286828701612137565b92505060406122d386828701612214565b9150509250925092565b6000806000806000608086880312156122f557600080fd5b600061230388828901612137565b955050602061231488828901612137565b945050604061232588828901612214565b935050606086013567ffffffffffffffff81111561234257600080fd5b61234e888289016121a0565b92509250509295509295909350565b6000806040838503121561237057600080fd5b600061237e85828601612137565b925050602061238f8582860161214c565b9150509250929050565b600080604083850312156123ac57600080fd5b60006123ba85828601612137565b92505060206123cb85828601612214565b9150509250929050565b600080600080608085870312156123eb57600080fd5b60006123f987828801612137565b945050602061240a87828801612214565b935050604061241b87828801612137565b925050606085013567ffffffffffffffff81111561243857600080fd5b612444878288016121ea565b91505092959194509250565b60006020828403121561246257600080fd5b600061247084828501612161565b91505092915050565b60006020828403121561248b57600080fd5b600061249984828501612176565b91505092915050565b6000602082840312156124b457600080fd5b60006124c28482850161218b565b91505092915050565b6000602082840312156124dd57600080fd5b60006124eb84828501612214565b91505092915050565b6124fd816127bb565b82525050565b61250c816127cd565b82525050565b600061251d826126f9565b612527818561270f565b9350612537818560208601612850565b6125408161298b565b840191505092915050565b6125548161282f565b82525050565b600061256582612704565b61256f8185612720565b935061257f818560208601612850565b6125888161298b565b840191505092915050565b61259c81612825565b82525050565b60006020820190506125b760008301846124f4565b92915050565b60006060820190506125d260008301866124f4565b6125df60208301856124f4565b6125ec604083018461254b565b949350505050565b600060808201905061260960008301876124f4565b61261660208301866124f4565b6126236040830185612593565b81810360608301526126358184612512565b905095945050505050565b60006020820190506126556000830184612503565b92915050565b60006020820190508181036000830152612675818461255a565b905092915050565b60006020820190506126926000830184612593565b92915050565b6000604051905081810181811067ffffffffffffffff821117156126bf576126be61295c565b5b8060405250919050565b600067ffffffffffffffff8211156126e4576126e361295c565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061273c82612825565b915061274783612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561277c5761277b6128fe565b5b828201905092915050565b600061279282612825565b915061279d83612825565b9250828210156127b0576127af6128fe565b5b828203905092915050565b60006127c682612805565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061283a82612825565b9050919050565b82818337600083830152505050565b60005b8381101561286e578082015181840152602081019050612853565b8381111561287d576000848401525b50505050565b6000600282049050600182168061289b57607f821691505b602082108114156128af576128ae61292d565b5b50919050565b60006128c082612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128f3576128f26128fe565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6129a5816127bb565b81146129b057600080fd5b50565b6129bc816127cd565b81146129c757600080fd5b50565b6129d3816127d9565b81146129de57600080fd5b50565b6129ea81612825565b81146129f557600080fd5b5056fe68747470733a2f2f636c6f7564666c6172652d697066732e636f6d2f697066732f516d62644a6775764c476348595667336b4873336b4162545455625172396b4247697474483373714238386a7164a2646970667358221220330f6b6fb3dd4d7512a915073f75e09fa0db0791d3a8a7160ed81cbbbbf8ed7b64736f6c63430008000033000000000000000000000000810e096dda9ae3ae2b55a9c45068f9fe8eeea6db000000000000000000000000b6ed7644c69416d67b522e20bc294a9a9b405b31
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a257806395d89b411161007157806395d89b41146102b8578063a22cb465146102d6578063b88d4fde146102f2578063c87b56dd1461030e578063e985e9c51461033e5761010b565b80636352211e1461021e5780636b2fa3741461024e57806370a082311461026c5780638f4ffcb11461029c5761010b565b806318160ddd116100de57806318160ddd146101aa57806323b872dd146101c857806341afaf5d146101e457806342842e0e146102025761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190612479565b61036e565b6040516101379190612640565b60405180910390f35b6101486103d5565b604051610155919061265b565b60405180910390f35b610178600480360381019061017391906124cb565b610467565b60405161018591906125a2565b60405180910390f35b6101a860048036038101906101a39190612399565b610582565b005b6101b2610965565b6040516101bf919061267d565b60405180910390f35b6101e260048036038101906101dd919061228e565b61096b565b005b6101ec610dbd565b6040516101f991906125a2565b60405180910390f35b61021c6004803603810190610217919061228e565b610de3565b005b610238600480360381019061023391906124cb565b610e03565b60405161024591906125a2565b60405180910390f35b610256610ee9565b60405161026391906125a2565b60405180910390f35b61028660048036038101906102819190612229565b610f0f565b604051610293919061267d565b60405180910390f35b6102b660048036038101906102b191906123d5565b610fc9565b005b6102c061103b565b6040516102cd919061265b565b60405180910390f35b6102f060048036038101906102eb919061235d565b6110cd565b005b61030c600480360381019061030791906122dd565b6111ca565b005b610328600480360381019061032391906124cb565b611221565b604051610335919061265b565b60405180910390f35b61035860048036038101906103539190612252565b611321565b6040516103659190612640565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6060600580546103e490612883565b80601f016020809104026020016040519081016040528092919081815260200182805461041090612883565b801561045d5780601f106104325761010080835404028352916020019161045d565b820191906000526020600020905b81548152906001019060200180831161044057829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c919061265b565b60405180910390fd5b506002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061067b5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f3030333030330000000000000000000000000000000000000000000000000000815250906106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e9919061265b565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030320000000000000000000000000000000000000000000000000000815250906107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c6919061265b565b60405180910390fd5b5060006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030380000000000000000000000000000000000000000000000000000815250906108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a6919061265b565b60405180910390fd5b50856002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b60075481565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a3c57503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610acd5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f303033303034000000000000000000000000000000000000000000000000000081525090610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b919061265b565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18919061265b565b60405180910390fd5b5060006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303037000000000000000000000000000000000000000000000000000081525090610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf7919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da0919061265b565b60405180910390fd5b50610db486866113b5565b50505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dfe8383836040518060200160405280600081525061146a565b505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda919061265b565b60405180910390fd5b50919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf919061265b565b60405180910390fd5b50610fc282611a38565b9050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461102357600080fd5b61102c84611a81565b61103557600080fd5b50505050565b60606006805461104a90612883565b80601f016020809104026020016040519081016040528092919081815260200182805461107690612883565b80156110c35780601f10611098576101008083540402835291602001916110c3565b820191906000526020600020905b8154815290600101906020018083116110a657829003601f168201915b5050505050905090565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111be9190612640565b60405180910390a35050565b61121a85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061146a565b5050505050565b606081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030320000000000000000000000000000000000000000000000000000815250906112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6919061265b565b60405180910390fd5b506040518060800160405280604f81526020016129f9604f9139915050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506113f682611b94565b6114008183611bcd565b61140a8383611d38565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061153b57503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806115cc5750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6040518060400160405280600681526020017f303033303034000000000000000000000000000000000000000000000000000081525090611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a919061265b565b60405180910390fd5b5083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303032000000000000000000000000000000000000000000000000000081525090611720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611717919061265b565b60405180910390fd5b5060006001600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f3030333030370000000000000000000000000000000000000000000000000000815250906117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f3030333030310000000000000000000000000000000000000000000000000000815250906118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f919061265b565b60405180910390fd5b506118b387876113b5565b6118d28773ffffffffffffffffffffffffffffffffffffffff16611ec0565b15611a2e5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b815260040161191894939291906125f4565b602060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a91906124a2565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146040518060400160405280600681526020017f303033303035000000000000000000000000000000000000000000000000000081525090611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22919061265b565b60405180910390fd5b50505b5050505050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd83600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166305f5e1006040518463ffffffff1660e01b8152600401611b08939291906125bd565b602060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190612450565b50611b7b8260076000815480929190611b72906128b5565b91905055611f0b565b6101a460075410611b8b57600080fd5b60019050919050565b6002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550565b8173ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303037000000000000000000000000000000000000000000000000000081525090611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d919061265b565b60405180910390fd5b506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf79190612787565b925050819055506001600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303033303036000000000000000000000000000000000000000000000000000081525090611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e09919061265b565b60405180910390fd5b50816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb59190612731565b925050819055505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015611f025750808214155b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f303033303031000000000000000000000000000000000000000000000000000081525090611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa919061265b565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f30303330303600000000000000000000000000000000000000000000000000008152509061208e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612085919061265b565b60405180910390fd5b506120998282611d38565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600061210c612107846126c9565b612698565b90508281526020810184848401111561212457600080fd5b61212f848285612841565b509392505050565b6000813590506121468161299c565b92915050565b60008135905061215b816129b3565b92915050565b600081519050612170816129b3565b92915050565b600081359050612185816129ca565b92915050565b60008151905061219a816129ca565b92915050565b60008083601f8401126121b257600080fd5b8235905067ffffffffffffffff8111156121cb57600080fd5b6020830191508360018202830111156121e357600080fd5b9250929050565b600082601f8301126121fb57600080fd5b813561220b8482602086016120f9565b91505092915050565b600081359050612223816129e1565b92915050565b60006020828403121561223b57600080fd5b600061224984828501612137565b91505092915050565b6000806040838503121561226557600080fd5b600061227385828601612137565b925050602061228485828601612137565b9150509250929050565b6000806000606084860312156122a357600080fd5b60006122b186828701612137565b93505060206122c286828701612137565b92505060406122d386828701612214565b9150509250925092565b6000806000806000608086880312156122f557600080fd5b600061230388828901612137565b955050602061231488828901612137565b945050604061232588828901612214565b935050606086013567ffffffffffffffff81111561234257600080fd5b61234e888289016121a0565b92509250509295509295909350565b6000806040838503121561237057600080fd5b600061237e85828601612137565b925050602061238f8582860161214c565b9150509250929050565b600080604083850312156123ac57600080fd5b60006123ba85828601612137565b92505060206123cb85828601612214565b9150509250929050565b600080600080608085870312156123eb57600080fd5b60006123f987828801612137565b945050602061240a87828801612214565b935050604061241b87828801612137565b925050606085013567ffffffffffffffff81111561243857600080fd5b612444878288016121ea565b91505092959194509250565b60006020828403121561246257600080fd5b600061247084828501612161565b91505092915050565b60006020828403121561248b57600080fd5b600061249984828501612176565b91505092915050565b6000602082840312156124b457600080fd5b60006124c28482850161218b565b91505092915050565b6000602082840312156124dd57600080fd5b60006124eb84828501612214565b91505092915050565b6124fd816127bb565b82525050565b61250c816127cd565b82525050565b600061251d826126f9565b612527818561270f565b9350612537818560208601612850565b6125408161298b565b840191505092915050565b6125548161282f565b82525050565b600061256582612704565b61256f8185612720565b935061257f818560208601612850565b6125888161298b565b840191505092915050565b61259c81612825565b82525050565b60006020820190506125b760008301846124f4565b92915050565b60006060820190506125d260008301866124f4565b6125df60208301856124f4565b6125ec604083018461254b565b949350505050565b600060808201905061260960008301876124f4565b61261660208301866124f4565b6126236040830185612593565b81810360608301526126358184612512565b905095945050505050565b60006020820190506126556000830184612503565b92915050565b60006020820190508181036000830152612675818461255a565b905092915050565b60006020820190506126926000830184612593565b92915050565b6000604051905081810181811067ffffffffffffffff821117156126bf576126be61295c565b5b8060405250919050565b600067ffffffffffffffff8211156126e4576126e361295c565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061273c82612825565b915061274783612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561277c5761277b6128fe565b5b828201905092915050565b600061279282612825565b915061279d83612825565b9250828210156127b0576127af6128fe565b5b828203905092915050565b60006127c682612805565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061283a82612825565b9050919050565b82818337600083830152505050565b60005b8381101561286e578082015181840152602081019050612853565b8381111561287d576000848401525b50505050565b6000600282049050600182168061289b57607f821691505b602082108114156128af576128ae61292d565b5b50919050565b60006128c082612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128f3576128f26128fe565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6129a5816127bb565b81146129b057600080fd5b50565b6129bc816127cd565b81146129c757600080fd5b50565b6129d3816127d9565b81146129de57600080fd5b50565b6129ea81612825565b81146129f557600080fd5b5056fe68747470733a2f2f636c6f7564666c6172652d697066732e636f6d2f697066732f516d62644a6775764c476348595667336b4873336b4162545455625172396b4247697474483373714238386a7164a2646970667358221220330f6b6fb3dd4d7512a915073f75e09fa0db0791d3a8a7160ed81cbbbbf8ed7b64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000810e096dda9ae3ae2b55a9c45068f9fe8eeea6db000000000000000000000000b6ed7644c69416d67b522e20bc294a9a9b405b31
-----Decoded View---------------
Arg [0] : _pDelegate (address): 0x810E096DDa9ae3Ae2b55a9c45068F9FE8eeea6db
Arg [1] : _cToken (address): 0xB6eD7644C69416d67B522e20bC294A9a9B405B31
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000810e096dda9ae3ae2b55a9c45068f9fe8eeea6db
Arg [1] : 000000000000000000000000b6ed7644c69416d67b522e20bc294a9a9b405b31
Deployed Bytecode Sourcemap
26757:2221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5156:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27626:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20385:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18170:352;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27068:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17396:353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27107:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16641:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19933:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27142:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19459:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28768:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27862:128;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18933:232;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16022:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28143:245;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20837:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5156:172;5266:4;5289:19;:33;5309:12;5289:33;;;;;;;;;;;;;;;;;;;;;;;;;;;5282:40;;5156:172;;;:::o;27626:120::-;27694:19;27733:7;27725:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27626:120;:::o;20385:183::-;20514:7;20490:8;14985:1;14954:33;;:9;:19;14964:8;14954:19;;;;;;;;;;;;;;;;;;;;;:33;;;;14989:13;;;;;;;;;;;;;;;;;14946:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20540:12:::1;:22;20553:8;20540:22;;;;;;;;;;;;;;;;;;;;;20533:29;;20385:183:::0;;;;:::o;18170:352::-;18283:8;14138:18;14159:9;:19;14169:8;14159:19;;;;;;;;;;;;;;;;;;;;;14138:40;;14215:10;14201:24;;:10;:24;;;:68;;;;14229:16;:28;14246:10;14229:28;;;;;;;;;;;;;;;:40;14258:10;14229:40;;;;;;;;;;;;;;;;;;;;;;;;;14201:68;14278:21;;;;;;;;;;;;;;;;;14185:121;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18311:8:::1;14985:1;14954:33;;:9;:19;14964:8;14954:19;;;;;;;;;;;;;;;;;;;;;:33;;;;14989:13;;;;;;;;;;;;;;;;::::0;14946:57:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18331:18:::2;18352:9;:19;18362:8;18352:19;;;;;;;;;;;;;;;;;;;;;18331:40;;18399:10;18386:23;;:9;:23;;;;18411:8;;;;;;;;;;;;;;;;::::0;18378:42:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18454:9;18429:12;:22;18442:8;18429:22;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18507:8;18496:9;18475:41;;18484:10;18475:41;;;;;;;;;;;;15010:1;14313::::1;18170:352:::0;;;;:::o;27068:30::-;;;;:::o;17396:353::-;17529:8;14518:18;14539:9;:19;14549:8;14539:19;;;;;;;;;;;;;;;;;;;;;14518:40;;14595:10;14581:24;;:10;:24;;;:71;;;;14642:10;14616:36;;:12;:22;14629:8;14616:22;;;;;;;;;;;;;;;;;;;;;:36;;;14581:71;:122;;;;14663:16;:28;14680:10;14663:28;;;;;;;;;;;;;;;:40;14692:10;14663:40;;;;;;;;;;;;;;;;;;;;;;;;;14581:122;14712:30;;;;;;;;;;;;;;;;;14565:184;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17557:8:::1;14985:1;14954:33;;:9;:19;14964:8;14954:19;;;;;;;;;;;;;;;;;;;;;:33;;;;14989:13;;;;;;;;;;;;;;;;::::0;14946:57:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17577:18:::2;17598:9;:19;17608:8;17598:19;;;;;;;;;;;;;;;;;;;;;17577:40;;17646:5;17632:19;;:10;:19;;;17653:9;;;;;;;;;;;;;;;;::::0;17624:39:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17693:1;17678:17;;:3;:17;;;;17697:12;;;;;;;;;;;;;;;;::::0;17670:40:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17719:24;17729:3;17734:8;17719:9;:24::i;:::-;15010:1;14756::::1;17396:353:::0;;;;;:::o;27107:30::-;;;;;;;;;;;;;:::o;16641:179::-;16771:43;16789:5;16796:3;16801:8;16771:43;;;;;;;;;;;;:17;:43::i;:::-;16641:179;;;:::o;19933:208::-;20030:14;20065:9;:19;20075:8;20065:19;;;;;;;;;;;;;;;;;;;;;20056:28;;20117:1;20099:20;;:6;:20;;;;20121:13;;;;;;;;;;;;;;;;;20091:44;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19933:208;;;:::o;27142:28::-;;;;;;;;;;;;;:::o;19459:204::-;19556:7;19601:1;19583:20;;:6;:20;;;;19605:12;;;;;;;;;;;;;;;;;19575:43;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19632:25;19650:6;19632:17;:25::i;:::-;19625:32;;19459:204;;;:::o;28768:197::-;28906:13;;;;;;;;;;;28897:22;;:5;:22;;;28888:33;;;;;;28943:12;28949:4;28943;:12::i;:::-;28934:23;;;;;;28768:197;;;;:::o;27862:128::-;27932:21;27975:9;27965:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27862:128;:::o;18933:232::-;19090:9;19048:16;:28;19065:10;19048:28;;;;;;;;;;;;;;;:39;19077:9;19048:39;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;19138:9;19111:48;;19126:10;19111:48;;;19149:9;19111:48;;;;;;:::i;:::-;;;;;;;;18933:232;;:::o;16022:209::-;16179:46;16197:5;16204:3;16209:8;16219:5;;16179:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:46::i;:::-;16022:209;;;;;:::o;28143:245::-;28269:13;28245:8;14985:1;14954:33;;:9;:19;14964:8;14954:19;;;;;;;;;;;;;;;;;;;;;:33;;;;14989:13;;;;;;;;;;;;;;;;;14946:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;28294:88:::1;;;;;;;;;;;;;;;;;;;28143:245:::0;;;;:::o;20837:192::-;20965:4;20988:16;:24;21005:6;20988:24;;;;;;;;;;;;;;;:35;21013:9;20988:35;;;;;;;;;;;;;;;;;;;;;;;;;20981:42;;20837:192;;;;:::o;21220:275::-;21309:12;21324:9;:19;21334:8;21324:19;;;;;;;;;;;;;;;;;;;;;21309:34;;21350:24;21365:8;21350:14;:24::i;:::-;21383:30;21398:4;21404:8;21383:14;:30::i;:::-;21420:26;21432:3;21437:8;21420:11;:26::i;:::-;21480:8;21475:3;21460:29;;21469:4;21460:29;;;;;;;;;;;;21220:275;;;:::o;24622:590::-;24770:8;14518:18;14539:9;:19;14549:8;14539:19;;;;;;;;;;;;;;;;;;;;;14518:40;;14595:10;14581:24;;:10;:24;;;:71;;;;14642:10;14616:36;;:12;:22;14629:8;14616:22;;;;;;;;;;;;;;;;;;;;;:36;;;14581:71;:122;;;;14663:16;:28;14680:10;14663:28;;;;;;;;;;;;;;;:40;14692:10;14663:40;;;;;;;;;;;;;;;;;;;;;;;;;14581:122;14712:30;;;;;;;;;;;;;;;;;14565:184;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24798:8:::1;14985:1;14954:33;;:9;:19;14964:8;14954:19;;;;;;;;;;;;;;;;;;;;;:33;;;;14989:13;;;;;;;;;;;;;;;;::::0;14946:57:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24818:18:::2;24839:9;:19;24849:8;24839:19;;;;;;;;;;;;;;;;;;;;;24818:40;;24887:5;24873:19;;:10;:19;;;24894:9;;;;;;;;;;;;;;;;::::0;24865:39:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24934:1;24919:17;;:3;:17;;;;24938:12;;;;;;;;;;;;;;;;::::0;24911:40:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24960:24;24970:3;24975:8;24960:9;:24::i;:::-;24997:16;:3;:14;;;:16::i;:::-;24993:214;;;25029:13;25065:3;25045:41;;;25087:10;25099:5;25106:8;25116:5;25045:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25029:93;;13356:10;25149:24;;25139:34;;;:6;:34;;;;25175:23;;;;;;;;;;;;;;;;::::0;25131:68:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24993:214;;15010:1;14756::::1;24622:590:::0;;;;;;:::o;24181:163::-;24285:7;24311:19;:27;24331:6;24311:27;;;;;;;;;;;;;;;;24304:34;;24181:163;;;:::o;28500:260::-;28559:4;28589:13;;;;;;;;;;;28582:34;;;28617:4;28623:15;;;;;;;;;;;28640:9;28582:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28663:26;28669:4;28675:11;;:13;;;;;;;;;:::i;:::-;;;;;28663:5;:26::i;:::-;28726:3;28712:11;;:17;28704:26;;;;;;28750:4;28743:11;;28500:260;;;:::o;25345:110::-;25427:12;:22;25440:8;25427:22;;;;;;;;;;;;25420:29;;;;;;;;;;;25345:110;:::o;23143:234::-;23283:5;23260:28;;:9;:19;23270:8;23260:19;;;;;;;;;;;;;;;;;;;;;:28;;;23290:9;;;;;;;;;;;;;;;;;23252:48;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23337:1;23307:19;:26;23327:5;23307:26;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;23352:9;:19;23362:8;23352:19;;;;;;;;;;;;23345:26;;;;;;;;;;;23143:234;;:::o;23644:242::-;23787:1;23756:33;;:9;:19;23766:8;23756:19;;;;;;;;;;;;;;;;;;;;;:33;;;23791:18;;;;;;;;;;;;;;;;;23748:62;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23841:3;23819:9;:19;23829:8;23819:19;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;23879:1;23851:19;:24;23871:3;23851:24;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23644:242;;:::o;3738:780::-;3821:17;4262:16;4285:19;4307:66;4285:88;;;;4415:5;4403:18;4391:30;;4481:3;4469:15;;:8;:15;;:42;;;;;4500:11;4488:8;:23;;4469:42;4453:59;;3738:780;;;;;:::o;21886:297::-;22007:1;21992:17;;:3;:17;;;;22011:12;;;;;;;;;;;;;;;;;21984:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22070:1;22039:33;;:9;:19;22049:8;22039:19;;;;;;;;;;;;;;;;;;;;;:33;;;22074:18;;;;;;;;;;;;;;;;;22031:62;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22102:26;22114:3;22119:8;22102:11;:26::i;:::-;22168:8;22163:3;22142:35;;22159:1;22142:35;;;;;;;;;;;;21886:297;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;500:133::-;;581:6;568:20;559:29;;597:30;621:5;597:30;:::i;:::-;549:84;;;;:::o;639:137::-;;724:6;718:13;709:22;;740:30;764:5;740:30;:::i;:::-;699:77;;;;:::o;782:137::-;;865:6;852:20;843:29;;881:32;907:5;881:32;:::i;:::-;833:86;;;;:::o;925:141::-;;1012:6;1006:13;997:22;;1028:32;1054:5;1028:32;:::i;:::-;987:79;;;;:::o;1085:351::-;;;1202:3;1195:4;1187:6;1183:17;1179:27;1169:2;;1220:1;1217;1210:12;1169:2;1256:6;1243:20;1233:30;;1286:18;1278:6;1275:30;1272:2;;;1318:1;1315;1308:12;1272:2;1355:4;1347:6;1343:17;1331:29;;1409:3;1401:4;1393:6;1389:17;1379:8;1375:32;1372:41;1369:2;;;1426:1;1423;1416:12;1369:2;1159:277;;;;;:::o;1455:271::-;;1559:3;1552:4;1544:6;1540:17;1536:27;1526:2;;1577:1;1574;1567:12;1526:2;1617:6;1604:20;1642:78;1716:3;1708:6;1701:4;1693:6;1689:17;1642:78;:::i;:::-;1633:87;;1516:210;;;;;:::o;1732:139::-;;1816:6;1803:20;1794:29;;1832:33;1859:5;1832:33;:::i;:::-;1784:87;;;;:::o;1877:262::-;;1985:2;1973:9;1964:7;1960:23;1956:32;1953:2;;;2001:1;1998;1991:12;1953:2;2044:1;2069:53;2114:7;2105:6;2094:9;2090:22;2069:53;:::i;:::-;2059:63;;2015:117;1943:196;;;;:::o;2145:407::-;;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;2286:1;2283;2276:12;2238:2;2329:1;2354:53;2399:7;2390:6;2379:9;2375:22;2354:53;:::i;:::-;2344:63;;2300:117;2456:2;2482:53;2527:7;2518:6;2507:9;2503:22;2482:53;:::i;:::-;2472:63;;2427:118;2228:324;;;;;:::o;2558:552::-;;;;2700:2;2688:9;2679:7;2675:23;2671:32;2668:2;;;2716:1;2713;2706:12;2668:2;2759:1;2784:53;2829:7;2820:6;2809:9;2805:22;2784:53;:::i;:::-;2774:63;;2730:117;2886:2;2912:53;2957:7;2948:6;2937:9;2933:22;2912:53;:::i;:::-;2902:63;;2857:118;3014:2;3040:53;3085:7;3076:6;3065:9;3061:22;3040:53;:::i;:::-;3030:63;;2985:118;2658:452;;;;;:::o;3116:829::-;;;;;;3294:3;3282:9;3273:7;3269:23;3265:33;3262:2;;;3311:1;3308;3301:12;3262:2;3354:1;3379:53;3424:7;3415:6;3404:9;3400:22;3379:53;:::i;:::-;3369:63;;3325:117;3481:2;3507:53;3552:7;3543:6;3532:9;3528:22;3507:53;:::i;:::-;3497:63;;3452:118;3609:2;3635:53;3680:7;3671:6;3660:9;3656:22;3635:53;:::i;:::-;3625:63;;3580:118;3765:2;3754:9;3750:18;3737:32;3796:18;3788:6;3785:30;3782:2;;;3828:1;3825;3818:12;3782:2;3864:64;3920:7;3911:6;3900:9;3896:22;3864:64;:::i;:::-;3846:82;;;;3708:230;3252:693;;;;;;;;:::o;3951:401::-;;;4073:2;4061:9;4052:7;4048:23;4044:32;4041:2;;;4089:1;4086;4079:12;4041:2;4132:1;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4103:117;4259:2;4285:50;4327:7;4318:6;4307:9;4303:22;4285:50;:::i;:::-;4275:60;;4230:115;4031:321;;;;;:::o;4358:407::-;;;4483:2;4471:9;4462:7;4458:23;4454:32;4451:2;;;4499:1;4496;4489:12;4451:2;4542:1;4567:53;4612:7;4603:6;4592:9;4588:22;4567:53;:::i;:::-;4557:63;;4513:117;4669:2;4695:53;4740:7;4731:6;4720:9;4716:22;4695:53;:::i;:::-;4685:63;;4640:118;4441:324;;;;;:::o;4771:809::-;;;;;4939:3;4927:9;4918:7;4914:23;4910:33;4907:2;;;4956:1;4953;4946:12;4907:2;4999:1;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4970:117;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;5254:2;5280:53;5325:7;5316:6;5305:9;5301:22;5280:53;:::i;:::-;5270:63;;5225:118;5410:2;5399:9;5395:18;5382:32;5441:18;5433:6;5430:30;5427:2;;;5473:1;5470;5463:12;5427:2;5501:62;5555:7;5546:6;5535:9;5531:22;5501:62;:::i;:::-;5491:72;;5353:220;4897:683;;;;;;;:::o;5586:278::-;;5702:2;5690:9;5681:7;5677:23;5673:32;5670:2;;;5718:1;5715;5708:12;5670:2;5761:1;5786:61;5839:7;5830:6;5819:9;5815:22;5786:61;:::i;:::-;5776:71;;5732:125;5660:204;;;;:::o;5870:260::-;;5977:2;5965:9;5956:7;5952:23;5948:32;5945:2;;;5993:1;5990;5983:12;5945:2;6036:1;6061:52;6105:7;6096:6;6085:9;6081:22;6061:52;:::i;:::-;6051:62;;6007:116;5935:195;;;;:::o;6136:282::-;;6254:2;6242:9;6233:7;6229:23;6225:32;6222:2;;;6270:1;6267;6260:12;6222:2;6313:1;6338:63;6393:7;6384:6;6373:9;6369:22;6338:63;:::i;:::-;6328:73;;6284:127;6212:206;;;;:::o;6424:262::-;;6532:2;6520:9;6511:7;6507:23;6503:32;6500:2;;;6548:1;6545;6538:12;6500:2;6591:1;6616:53;6661:7;6652:6;6641:9;6637:22;6616:53;:::i;:::-;6606:63;;6562:117;6490:196;;;;:::o;6692:118::-;6779:24;6797:5;6779:24;:::i;:::-;6774:3;6767:37;6757:53;;:::o;6816:109::-;6897:21;6912:5;6897:21;:::i;:::-;6892:3;6885:34;6875:50;;:::o;6931:360::-;;7045:38;7077:5;7045:38;:::i;:::-;7099:70;7162:6;7157:3;7099:70;:::i;:::-;7092:77;;7178:52;7223:6;7218:3;7211:4;7204:5;7200:16;7178:52;:::i;:::-;7255:29;7277:6;7255:29;:::i;:::-;7250:3;7246:39;7239:46;;7021:270;;;;;:::o;7297:163::-;7400:53;7447:5;7400:53;:::i;:::-;7395:3;7388:66;7378:82;;:::o;7466:364::-;;7582:39;7615:5;7582:39;:::i;:::-;7637:71;7701:6;7696:3;7637:71;:::i;:::-;7630:78;;7717:52;7762:6;7757:3;7750:4;7743:5;7739:16;7717:52;:::i;:::-;7794:29;7816:6;7794:29;:::i;:::-;7789:3;7785:39;7778:46;;7558:272;;;;;:::o;7836:118::-;7923:24;7941:5;7923:24;:::i;:::-;7918:3;7911:37;7901:53;;:::o;7960:222::-;;8091:2;8080:9;8076:18;8068:26;;8104:71;8172:1;8161:9;8157:17;8148:6;8104:71;:::i;:::-;8058:124;;;;:::o;8188:474::-;;8391:2;8380:9;8376:18;8368:26;;8404:71;8472:1;8461:9;8457:17;8448:6;8404:71;:::i;:::-;8485:72;8553:2;8542:9;8538:18;8529:6;8485:72;:::i;:::-;8567:88;8651:2;8640:9;8636:18;8627:6;8567:88;:::i;:::-;8358:304;;;;;;:::o;8668:640::-;;8901:3;8890:9;8886:19;8878:27;;8915:71;8983:1;8972:9;8968:17;8959:6;8915:71;:::i;:::-;8996:72;9064:2;9053:9;9049:18;9040:6;8996:72;:::i;:::-;9078;9146:2;9135:9;9131:18;9122:6;9078:72;:::i;:::-;9197:9;9191:4;9187:20;9182:2;9171:9;9167:18;9160:48;9225:76;9296:4;9287:6;9225:76;:::i;:::-;9217:84;;8868:440;;;;;;;:::o;9314:210::-;;9439:2;9428:9;9424:18;9416:26;;9452:65;9514:1;9503:9;9499:17;9490:6;9452:65;:::i;:::-;9406:118;;;;:::o;9530:313::-;;9681:2;9670:9;9666:18;9658:26;;9730:9;9724:4;9720:20;9716:1;9705:9;9701:17;9694:47;9758:78;9831:4;9822:6;9758:78;:::i;:::-;9750:86;;9648:195;;;;:::o;9849:222::-;;9980:2;9969:9;9965:18;9957:26;;9993:71;10061:1;10050:9;10046:17;10037:6;9993:71;:::i;:::-;9947:124;;;;:::o;10077:283::-;;10143:2;10137:9;10127:19;;10185:4;10177:6;10173:17;10292:6;10280:10;10277:22;10256:18;10244:10;10241:34;10238:62;10235:2;;;10303:18;;:::i;:::-;10235:2;10343:10;10339:2;10332:22;10117:243;;;;:::o;10366:331::-;;10517:18;10509:6;10506:30;10503:2;;;10539:18;;:::i;:::-;10503:2;10624:4;10620:9;10613:4;10605:6;10601:17;10597:33;10589:41;;10685:4;10679;10675:15;10667:23;;10432:265;;;:::o;10703:98::-;;10788:5;10782:12;10772:22;;10761:40;;;:::o;10807:99::-;;10893:5;10887:12;10877:22;;10866:40;;;:::o;10912:168::-;;11029:6;11024:3;11017:19;11069:4;11064:3;11060:14;11045:29;;11007:73;;;;:::o;11086:169::-;;11204:6;11199:3;11192:19;11244:4;11239:3;11235:14;11220:29;;11182:73;;;;:::o;11261:305::-;;11320:20;11338:1;11320:20;:::i;:::-;11315:25;;11354:20;11372:1;11354:20;:::i;:::-;11349:25;;11508:1;11440:66;11436:74;11433:1;11430:81;11427:2;;;11514:18;;:::i;:::-;11427:2;11558:1;11555;11551:9;11544:16;;11305:261;;;;:::o;11572:191::-;;11632:20;11650:1;11632:20;:::i;:::-;11627:25;;11666:20;11684:1;11666:20;:::i;:::-;11661:25;;11705:1;11702;11699:8;11696:2;;;11710:18;;:::i;:::-;11696:2;11755:1;11752;11748:9;11740:17;;11617:146;;;;:::o;11769:96::-;;11835:24;11853:5;11835:24;:::i;:::-;11824:35;;11814:51;;;:::o;11871:90::-;;11948:5;11941:13;11934:21;11923:32;;11913:48;;;:::o;11967:149::-;;12043:66;12036:5;12032:78;12021:89;;12011:105;;;:::o;12122:126::-;;12199:42;12192:5;12188:54;12177:65;;12167:81;;;:::o;12254:77::-;;12320:5;12309:16;;12299:32;;;:::o;12337:129::-;;12436:24;12454:5;12436:24;:::i;:::-;12423:37;;12413:53;;;:::o;12472:154::-;12556:6;12551:3;12546;12533:30;12618:1;12609:6;12604:3;12600:16;12593:27;12523:103;;;:::o;12632:307::-;12700:1;12710:113;12724:6;12721:1;12718:13;12710:113;;;12809:1;12804:3;12800:11;12794:18;12790:1;12785:3;12781:11;12774:39;12746:2;12743:1;12739:10;12734:15;;12710:113;;;12841:6;12838:1;12835:13;12832:2;;;12921:1;12912:6;12907:3;12903:16;12896:27;12832:2;12681:258;;;;:::o;12945:320::-;;13026:1;13020:4;13016:12;13006:22;;13073:1;13067:4;13063:12;13094:18;13084:2;;13150:4;13142:6;13138:17;13128:27;;13084:2;13212;13204:6;13201:14;13181:18;13178:38;13175:2;;;13231:18;;:::i;:::-;13175:2;12996:269;;;;:::o;13271:233::-;;13333:24;13351:5;13333:24;:::i;:::-;13324:33;;13379:66;13372:5;13369:77;13366:2;;;13449:18;;:::i;:::-;13366:2;13496:1;13489:5;13485:13;13478:20;;13314:190;;;:::o;13510:180::-;13558:77;13555:1;13548:88;13655:4;13652:1;13645:15;13679:4;13676:1;13669:15;13696:180;13744:77;13741:1;13734:88;13841:4;13838:1;13831:15;13865:4;13862:1;13855:15;13882:180;13930:77;13927:1;13920:88;14027:4;14024:1;14017:15;14051:4;14048:1;14041:15;14068:102;;14160:2;14156:7;14151:2;14144:5;14140:14;14136:28;14126:38;;14116:54;;;:::o;14176:122::-;14249:24;14267:5;14249:24;:::i;:::-;14242:5;14239:35;14229:2;;14288:1;14285;14278:12;14229:2;14219:79;:::o;14304:116::-;14374:21;14389:5;14374:21;:::i;:::-;14367:5;14364:32;14354:2;;14410:1;14407;14400:12;14354:2;14344:76;:::o;14426:120::-;14498:23;14515:5;14498:23;:::i;:::-;14491:5;14488:34;14478:2;;14536:1;14533;14526:12;14478:2;14468:78;:::o;14552:122::-;14625:24;14643:5;14625:24;:::i;:::-;14618:5;14615:35;14605:2;;14664:1;14661;14654:12;14605:2;14595:79;:::o
Swarm Source
ipfs://330f6b6fb3dd4d7512a915073f75e09fa0db0791d3a8a7160ed81cbbbbf8ed7b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.