ETH Price: $3,357.85 (-2.76%)
Gas: 4 Gwei

Token

Evil Kongs - Pixel Edition (EKPE)
 

Overview

Max Total Supply

1,356 EKPE

Holders

870

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
somablu.eth
Balance
1 EKPE
0xc544c15d0dad85bd0fee03bf4a4a117a7b8d5adc
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Pixel Edition collection consists of 2,023 wicked artworks ready to be flown to the Ethereum blockchain as ERC-721A tokens. Each artwork is unique and designed with various combinations of a wide variety of esoteric traits among others.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PixelEK

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-13
*/

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity ^0.8.0;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/Address.sol

pragma solidity ^0.8.0;


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.8.0;


interface IERC20 {
    
    function totalSupply() external view returns (uint256);

    
    function balanceOf(address account) external view returns (uint256);

    
    function transfer(address recipient, uint256 amount) external returns (bool);

    
    function allowance(address owner, address spender) external view returns (uint256);

    
    function approve(address spender, uint256 amount) external returns (bool);

    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    
    event Transfer(address indexed from, address indexed to, uint256 value);

    
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)

pragma solidity ^0.8.0;


library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol


// OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;


library MerkleProof {
    
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol

pragma solidity ^0.8.0;


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

// File: contracts/ERC721.sol

pragma solidity >=0.8.0;

abstract contract ERC721 {
    

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    

    mapping(address => uint256) public balanceOf;

    mapping(uint256 => address) public ownerOf;

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    

    function approve(address spender, uint256 id) public virtual {
        address owner = ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            balanceOf[from]--;

            balanceOf[to]++;
        }

        ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            balanceOf[to]++;
        }

        ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = ownerOf[id];

        require(ownerOf[id] != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            balanceOf[owner]--;
        }

        delete ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
	interface ERC721TokenReceiver {
		function onERC721Received(
			address operator,
			address from,
			uint256 id,
			bytes calldata data
		) external returns (bytes4);
	}


pragma solidity >=0.8.4;

contract PixelEK is ERC721  {
    uint256 public totalSupply;
    uint256 public cost = 0.0 ether;
    uint256 public maxMints = 5;
    address public owner = msg.sender;
    address private lmnft = 0x9E6865DAEeeDD093ea4A4f6c9bFbBB0cE6Bc8b17;
    
    
    
    
    

    mapping(address => uint256) internal userMints;

    error SoldOut();
    error InsufficientFunds();
    error MintLimit();
    error NotOwner();
    
    

    event Minted(
        address indexed owner,
        string tokenURI,
        uint256 indexed mintTime
    );

    constructor()
        ERC721("Evil Kongs - Pixel Edition", "EKPE")
    {}

    function mint() external payable {
        
        if (userMints[msg.sender] >= maxMints) revert MintLimit();
        if (totalSupply + 1 > 2023) revert SoldOut();
        if (msg.value < cost) revert InsufficientFunds();
        
        userMints[msg.sender]++;
        totalSupply++;
        _safeMint(msg.sender, totalSupply);
        payable(lmnft).transfer(msg.value / 40);
        payable(owner).transfer(msg.value - (msg.value / 40));
        emit Minted(msg.sender, tokenURI(totalSupply), block.timestamp);
    }

    

    function setCost(uint256 _cost) external {
        if (msg.sender != owner) revert NotOwner();
        cost = _cost;
    }

    function setMaxMints(uint256 _limit) external {
        if (msg.sender != owner) revert NotOwner();
        maxMints = _limit;
    }

    

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721)
        returns (string memory)
    {
        return
            string(
                abi.encodePacked("ipfs://bafybeidum77qm5pieauvbjihq4h3vtdrnhzr72aguehhpmvsje6h7zckby/", Strings.toString(tokenId), ".json")
            );
    }

    function withdraw() external  {
        if (msg.sender != owner) revert NotOwner();
        (bool success, ) = payable(owner).call{value: address(this).balance}("");
        require(success);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"MintLimit","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"SoldOut","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"owner","type":"address"},{"indexed":false,"internalType":"string","name":"tokenURI","type":"string"},{"indexed":true,"internalType":"uint256","name":"mintTime","type":"uint256"}],"name":"Minted","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","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":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setMaxMints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","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":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006007556005600855600980546001600160a01b03199081163317909155600a8054909116739e6865daeeedd093ea4a4f6c9bfbbb0ce6bc8b171790553480156200004f57600080fd5b506040518060400160405280601a81526020017f4576696c204b6f6e6773202d20506978656c2045646974696f6e00000000000081525060405180604001604052806004815260200163454b504560e01b8152508160009081620000b4919062000171565b506001620000c3828262000171565b5050506200023d565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000f757607f821691505b6020821081036200011857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016c57600081815260208120601f850160051c81016020861015620001475750805b601f850160051c820191505b81811015620001685782815560010162000153565b5050505b505050565b81516001600160401b038111156200018d576200018d620000cc565b620001a5816200019e8454620000e2565b846200011e565b602080601f831160018114620001dd5760008415620001c45750858301515b600019600386901b1c1916600185901b17855562000168565b600085815260208120601f198616915b828110156200020e57888601518255948401946001909101908401620001ed565b50858210156200022d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6113e5806200024d6000396000f3fe6080604052600436106100fa5760003560e01c806301ffc9a7146100ff57806306fdde0314610134578063081812fc14610156578063095ea7b3146101a45780631249c58b146101c657806313faede6146101ce57806318160ddd146101f257806323b872dd146102085780633ccfd60b1461022857806342842e0e1461023d57806344a0d68a1461025d5780636352211e1461027d57806370a08231146102b357806379c9cb7b146102e05780638da5cb5b1461030057806395d89b4114610320578063a22cb46514610335578063b6b6f0c314610355578063b88d4fde1461036b578063c87b56dd1461038b578063e985e9c5146103ab575b600080fd5b34801561010b57600080fd5b5061011f61011a366004610e6e565b6103e6565b60405190151581526020015b60405180910390f35b34801561014057600080fd5b50610149610438565b60405161012b9190610eea565b34801561016257600080fd5b5061018c610171366004610efd565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b3480156101b057600080fd5b506101c46101bf366004610f32565b6104c6565b005b6101c4610590565b3480156101da57600080fd5b506101e460075481565b60405190815260200161012b565b3480156101fe57600080fd5b506101e460065481565b34801561021457600080fd5b506101c4610223366004610f5c565b610734565b34801561023457600080fd5b506101c46108a4565b34801561024957600080fd5b506101c4610258366004610f5c565b610932565b34801561026957600080fd5b506101c4610278366004610efd565b6109f1565b34801561028957600080fd5b5061018c610298366004610efd565b6003602052600090815260409020546001600160a01b031681565b3480156102bf57600080fd5b506101e46102ce366004610f98565b60026020526000908152604090205481565b3480156102ec57600080fd5b506101c46102fb366004610efd565b610a21565b34801561030c57600080fd5b5060095461018c906001600160a01b031681565b34801561032c57600080fd5b50610149610a51565b34801561034157600080fd5b506101c4610350366004610fb3565b610a5e565b34801561036157600080fd5b506101e460085481565b34801561037757600080fd5b506101c4610386366004611005565b610aca565b34801561039757600080fd5b506101496103a6366004610efd565b610b8c565b3480156103b757600080fd5b5061011f6103c63660046110e0565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061041757506380ac58cd60e01b6001600160e01b03198316145b806104325750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461044590611113565b80601f016020809104026020016040519081016040528092919081815260200182805461047190611113565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b03163381148061050f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6105345760405162461bcd60e51b815260040161052b9061114d565b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600854336000908152600b6020526040902054106105c15760405163ec8e6a6360e01b815260040160405180910390fd5b6107e760065460016105d3919061118b565b11156105f2576040516352df9fe560e01b815260040160405180910390fd5b6007543410156106155760405163356680b760e01b815260040160405180910390fd5b336000908152600b60205260408120805491610630836111a3565b909155505060068054906000610645836111a3565b919050555061065633600654610bbd565b600a546001600160a01b03166108fc6106706028346111d2565b6040518115909202916000818181858888f19350505050158015610698573d6000803e3d6000fd5b506009546001600160a01b03166108fc6106b36028346111d2565b6106bd90346111e6565b6040518115909202916000818181858888f193505050501580156106e5573d6000803e3d6000fd5b5042336001600160a01b03167fe678c8da3d2d6082f140bbbaa1ee822f0c7072ab604536db4a3e0315f8a9277661071d600654610b8c565b60405161072a9190610eea565b60405180910390a3565b6000818152600360205260409020546001600160a01b0384811691161461078a5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161052b565b6001600160a01b0382166107b05760405162461bcd60e51b815260040161052b906111fd565b336001600160a01b03841614806107dd57506000818152600460205260409020546001600160a01b031633145b8061080b57506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b6108275760405162461bcd60e51b815260040161052b9061114d565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b031990811683179091556004909252848320805490921690915592518493929160008051602061139083398151915291a4505050565b6009546001600160a01b031633146108cf576040516330cd747160e01b815260040160405180910390fd5b6009546040516000916001600160a01b03169047908381818185875af1925050503d806000811461091c576040519150601f19603f3d011682016040523d82523d6000602084013e610921565b606091505b505090508061092f57600080fd5b50565b61093d838383610734565b6001600160a01b0382163b15806109d05750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a029061098190339088908790600401611228565b6020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c4919061125b565b6001600160e01b031916145b6109ec5760405162461bcd60e51b815260040161052b90611278565b505050565b6009546001600160a01b03163314610a1c576040516330cd747160e01b815260040160405180910390fd5b600755565b6009546001600160a01b03163314610a4c576040516330cd747160e01b815260040160405180910390fd5b600855565b6001805461044590611113565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ad5848484610734565b6001600160a01b0383163b1580610b6a5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610b1b9033908990889088906004016112a2565b6020604051808303816000875af1158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061125b565b6001600160e01b031916145b610b865760405162461bcd60e51b815260040161052b90611278565b50505050565b6060610b9782610c7b565b604051602001610ba791906112df565b6040516020818303038152906040529050919050565b610bc78282610d83565b6001600160a01b0382163b1580610c5b5750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a0290610c0c9033906000908790600401611228565b6020604051808303816000875af1158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f919061125b565b6001600160e01b031916145b610c775760405162461bcd60e51b815260040161052b90611278565b5050565b606081600003610ca25750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610ccc5780610cb6816111a3565b9150610cc59050600a836111d2565b9150610ca6565b6000816001600160401b03811115610ce657610ce6610fef565b6040519080825280601f01601f191660200182016040528015610d10576020820181803683370190505b5090505b8415610d7b57610d256001836111e6565b9150610d32600a86611365565b610d3d90603061118b565b60f81b818381518110610d5257610d52611379565b60200101906001600160f81b031916908160001a905350610d74600a866111d2565b9450610d14565b949350505050565b6001600160a01b038216610da95760405162461bcd60e51b815260040161052b906111fd565b6000818152600360205260409020546001600160a01b031615610dff5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161052b565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b031916841790555183929190600080516020611390833981519152908290a45050565b6001600160e01b03198116811461092f57600080fd5b600060208284031215610e8057600080fd5b8135610e8b81610e58565b9392505050565b60005b83811015610ead578181015183820152602001610e95565b83811115610b865750506000910152565b60008151808452610ed6816020860160208601610e92565b601f01601f19169290920160200192915050565b602081526000610e8b6020830184610ebe565b600060208284031215610f0f57600080fd5b5035919050565b80356001600160a01b0381168114610f2d57600080fd5b919050565b60008060408385031215610f4557600080fd5b610f4e83610f16565b946020939093013593505050565b600080600060608486031215610f7157600080fd5b610f7a84610f16565b9250610f8860208501610f16565b9150604084013590509250925092565b600060208284031215610faa57600080fd5b610e8b82610f16565b60008060408385031215610fc657600080fd5b610fcf83610f16565b915060208301358015158114610fe457600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561101b57600080fd5b61102485610f16565b935061103260208601610f16565b92506040850135915060608501356001600160401b038082111561105557600080fd5b818701915087601f83011261106957600080fd5b81358181111561107b5761107b610fef565b604051601f8201601f19908116603f011681019083821181831017156110a3576110a3610fef565b816040528281528a60208487010111156110bc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110f357600080fd5b6110fc83610f16565b915061110a60208401610f16565b90509250929050565b600181811c9082168061112757607f821691505b60208210810361114757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561119e5761119e611175565b500190565b6000600182016111b5576111b5611175565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111e1576111e16111bc565b500490565b6000828210156111f8576111f8611175565b500390565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b60006020828403121561126d57600080fd5b8151610e8b81610e58565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112d590830184610ebe565b9695505050505050565b7f697066733a2f2f6261667962656964756d3737716d35706965617576626a696881527f71346833767464726e687a723732616775656868706d76736a653668377a636b60208201526262792f60e81b604082015260008251611349816043850160208701610e92565b64173539b7b760d91b6043939091019283015250604801919050565b600082611374576113746111bc565b500690565b634e487b7160e01b600052603260045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cdc0ff5f2e40b4f3e5dfc5b41c823f0210d247dab0dc6ad6f0f577c5cc94e78664736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106100fa5760003560e01c806301ffc9a7146100ff57806306fdde0314610134578063081812fc14610156578063095ea7b3146101a45780631249c58b146101c657806313faede6146101ce57806318160ddd146101f257806323b872dd146102085780633ccfd60b1461022857806342842e0e1461023d57806344a0d68a1461025d5780636352211e1461027d57806370a08231146102b357806379c9cb7b146102e05780638da5cb5b1461030057806395d89b4114610320578063a22cb46514610335578063b6b6f0c314610355578063b88d4fde1461036b578063c87b56dd1461038b578063e985e9c5146103ab575b600080fd5b34801561010b57600080fd5b5061011f61011a366004610e6e565b6103e6565b60405190151581526020015b60405180910390f35b34801561014057600080fd5b50610149610438565b60405161012b9190610eea565b34801561016257600080fd5b5061018c610171366004610efd565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b3480156101b057600080fd5b506101c46101bf366004610f32565b6104c6565b005b6101c4610590565b3480156101da57600080fd5b506101e460075481565b60405190815260200161012b565b3480156101fe57600080fd5b506101e460065481565b34801561021457600080fd5b506101c4610223366004610f5c565b610734565b34801561023457600080fd5b506101c46108a4565b34801561024957600080fd5b506101c4610258366004610f5c565b610932565b34801561026957600080fd5b506101c4610278366004610efd565b6109f1565b34801561028957600080fd5b5061018c610298366004610efd565b6003602052600090815260409020546001600160a01b031681565b3480156102bf57600080fd5b506101e46102ce366004610f98565b60026020526000908152604090205481565b3480156102ec57600080fd5b506101c46102fb366004610efd565b610a21565b34801561030c57600080fd5b5060095461018c906001600160a01b031681565b34801561032c57600080fd5b50610149610a51565b34801561034157600080fd5b506101c4610350366004610fb3565b610a5e565b34801561036157600080fd5b506101e460085481565b34801561037757600080fd5b506101c4610386366004611005565b610aca565b34801561039757600080fd5b506101496103a6366004610efd565b610b8c565b3480156103b757600080fd5b5061011f6103c63660046110e0565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061041757506380ac58cd60e01b6001600160e01b03198316145b806104325750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461044590611113565b80601f016020809104026020016040519081016040528092919081815260200182805461047190611113565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b03163381148061050f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6105345760405162461bcd60e51b815260040161052b9061114d565b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600854336000908152600b6020526040902054106105c15760405163ec8e6a6360e01b815260040160405180910390fd5b6107e760065460016105d3919061118b565b11156105f2576040516352df9fe560e01b815260040160405180910390fd5b6007543410156106155760405163356680b760e01b815260040160405180910390fd5b336000908152600b60205260408120805491610630836111a3565b909155505060068054906000610645836111a3565b919050555061065633600654610bbd565b600a546001600160a01b03166108fc6106706028346111d2565b6040518115909202916000818181858888f19350505050158015610698573d6000803e3d6000fd5b506009546001600160a01b03166108fc6106b36028346111d2565b6106bd90346111e6565b6040518115909202916000818181858888f193505050501580156106e5573d6000803e3d6000fd5b5042336001600160a01b03167fe678c8da3d2d6082f140bbbaa1ee822f0c7072ab604536db4a3e0315f8a9277661071d600654610b8c565b60405161072a9190610eea565b60405180910390a3565b6000818152600360205260409020546001600160a01b0384811691161461078a5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161052b565b6001600160a01b0382166107b05760405162461bcd60e51b815260040161052b906111fd565b336001600160a01b03841614806107dd57506000818152600460205260409020546001600160a01b031633145b8061080b57506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b6108275760405162461bcd60e51b815260040161052b9061114d565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b031990811683179091556004909252848320805490921690915592518493929160008051602061139083398151915291a4505050565b6009546001600160a01b031633146108cf576040516330cd747160e01b815260040160405180910390fd5b6009546040516000916001600160a01b03169047908381818185875af1925050503d806000811461091c576040519150601f19603f3d011682016040523d82523d6000602084013e610921565b606091505b505090508061092f57600080fd5b50565b61093d838383610734565b6001600160a01b0382163b15806109d05750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a029061098190339088908790600401611228565b6020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c4919061125b565b6001600160e01b031916145b6109ec5760405162461bcd60e51b815260040161052b90611278565b505050565b6009546001600160a01b03163314610a1c576040516330cd747160e01b815260040160405180910390fd5b600755565b6009546001600160a01b03163314610a4c576040516330cd747160e01b815260040160405180910390fd5b600855565b6001805461044590611113565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ad5848484610734565b6001600160a01b0383163b1580610b6a5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610b1b9033908990889088906004016112a2565b6020604051808303816000875af1158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061125b565b6001600160e01b031916145b610b865760405162461bcd60e51b815260040161052b90611278565b50505050565b6060610b9782610c7b565b604051602001610ba791906112df565b6040516020818303038152906040529050919050565b610bc78282610d83565b6001600160a01b0382163b1580610c5b5750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a0290610c0c9033906000908790600401611228565b6020604051808303816000875af1158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f919061125b565b6001600160e01b031916145b610c775760405162461bcd60e51b815260040161052b90611278565b5050565b606081600003610ca25750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610ccc5780610cb6816111a3565b9150610cc59050600a836111d2565b9150610ca6565b6000816001600160401b03811115610ce657610ce6610fef565b6040519080825280601f01601f191660200182016040528015610d10576020820181803683370190505b5090505b8415610d7b57610d256001836111e6565b9150610d32600a86611365565b610d3d90603061118b565b60f81b818381518110610d5257610d52611379565b60200101906001600160f81b031916908160001a905350610d74600a866111d2565b9450610d14565b949350505050565b6001600160a01b038216610da95760405162461bcd60e51b815260040161052b906111fd565b6000818152600360205260409020546001600160a01b031615610dff5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161052b565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b031916841790555183929190600080516020611390833981519152908290a45050565b6001600160e01b03198116811461092f57600080fd5b600060208284031215610e8057600080fd5b8135610e8b81610e58565b9392505050565b60005b83811015610ead578181015183820152602001610e95565b83811115610b865750506000910152565b60008151808452610ed6816020860160208601610e92565b601f01601f19169290920160200192915050565b602081526000610e8b6020830184610ebe565b600060208284031215610f0f57600080fd5b5035919050565b80356001600160a01b0381168114610f2d57600080fd5b919050565b60008060408385031215610f4557600080fd5b610f4e83610f16565b946020939093013593505050565b600080600060608486031215610f7157600080fd5b610f7a84610f16565b9250610f8860208501610f16565b9150604084013590509250925092565b600060208284031215610faa57600080fd5b610e8b82610f16565b60008060408385031215610fc657600080fd5b610fcf83610f16565b915060208301358015158114610fe457600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561101b57600080fd5b61102485610f16565b935061103260208601610f16565b92506040850135915060608501356001600160401b038082111561105557600080fd5b818701915087601f83011261106957600080fd5b81358181111561107b5761107b610fef565b604051601f8201601f19908116603f011681019083821181831017156110a3576110a3610fef565b816040528281528a60208487010111156110bc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110f357600080fd5b6110fc83610f16565b915061110a60208401610f16565b90509250929050565b600181811c9082168061112757607f821691505b60208210810361114757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561119e5761119e611175565b500190565b6000600182016111b5576111b5611175565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111e1576111e16111bc565b500490565b6000828210156111f8576111f8611175565b500390565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b60006020828403121561126d57600080fd5b8151610e8b81610e58565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112d590830184610ebe565b9695505050505050565b7f697066733a2f2f6261667962656964756d3737716d35706965617576626a696881527f71346833767464726e687a723732616775656868706d76736a653668377a636b60208201526262792f60e81b604082015260008251611349816043850160208701610e92565b64173539b7b760d91b6043939091019283015250604801919050565b600082611374576113746111bc565b500690565b634e487b7160e01b600052603260045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cdc0ff5f2e40b4f3e5dfc5b41c823f0210d247dab0dc6ad6f0f577c5cc94e78664736f6c634300080f0033

Deployed Bytecode Sourcemap

16335:2042:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14024:340;;;;;;;;;;-1:-1:-1;14024:340:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;14024:340:0;;;;;;;;11348:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11598:46::-;;;;;;;;;;-1:-1:-1;11598:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11598:46:0;;;;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;11598:46:0;1528:203:1;11868:289:0;;;;;;;;;;-1:-1:-1;11868:289:0;;;;;:::i;:::-;;:::i;:::-;;16994:534;;;:::i;16403:31::-;;;;;;;;;;;;;;;;;;;2319:25:1;;;2307:2;2292:18;16403:31:0;2173:177:1;16370:26:0;;;;;;;;;;;;;;;;12380:764;;;;;;;;;;-1:-1:-1;12380:764:0;;;;;:::i;:::-;;:::i;18167:201::-;;;;;;;;;;;;;:::i;13152:409::-;;;;;;;;;;-1:-1:-1;13152:409:0;;;;;:::i;:::-;;:::i;17544:125::-;;;;;;;;;;-1:-1:-1;17544:125:0;;;;;:::i;:::-;;:::i;11547:42::-;;;;;;;;;;-1:-1:-1;11547:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11547:42:0;;;11494:44;;;;;;;;;;-1:-1:-1;11494:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;17677:135;;;;;;;;;;-1:-1:-1;17677:135:0;;;;;:::i;:::-;;:::i;16475:33::-;;;;;;;;;;-1:-1:-1;16475:33:0;;;;-1:-1:-1;;;;;16475:33:0;;;11375:20;;;;;;;;;;;;;:::i;12165:207::-;;;;;;;;;;-1:-1:-1;12165:207:0;;;;;:::i;:::-;;:::i;16441:27::-;;;;;;;;;;;;;;;;13569:439;;;;;;;;;;-1:-1:-1;13569:439:0;;;;;:::i;:::-;;:::i;17828:331::-;;;;;;;;;;-1:-1:-1;17828:331:0;;;;;:::i;:::-;;:::i;11653:68::-;;;;;;;;;;-1:-1:-1;11653:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;14024:340;14100:4;-1:-1:-1;;;;;;;;;14137:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;14213:25:0;;;14137:101;:177;;;-1:-1:-1;;;;;;;;;;14289:25:0;;;14137:177;14117:197;14024:340;-1:-1:-1;;14024:340:0:o;11348:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11868:289::-;11940:13;11956:11;;;:7;:11;;;;;;-1:-1:-1;;;;;11956:11:0;11988:10;:19;;;:58;;-1:-1:-1;;;;;;12011:23:0;;;;;;:16;:23;;;;;;;;12035:10;12011:35;;;;;;;;;;11988:58;11980:85;;;;-1:-1:-1;;;11980:85:0;;;;;;;:::i;:::-;;;;;;;;;12078:15;;;;:11;:15;;;;;;:25;;-1:-1:-1;;;;;;12078:25:0;-1:-1:-1;;;;;12078:25:0;;;;;;;;;12121:28;;12078:15;;12121:28;;;;;;;11929:228;11868:289;;:::o;16994:534::-;17077:8;;17062:10;17052:21;;;;:9;:21;;;;;;:33;17048:57;;17094:11;;-1:-1:-1;;;17094:11:0;;;;;;;;;;;17048:57;17138:4;17120:11;;17134:1;17120:15;;;;:::i;:::-;:22;17116:44;;;17151:9;;-1:-1:-1;;;17151:9:0;;;;;;;;;;;17116:44;17187:4;;17175:9;:16;17171:48;;;17200:19;;-1:-1:-1;;;17200:19:0;;;;;;;;;;;17171:48;17250:10;17240:21;;;;:9;:21;;;;;:23;;;;;;:::i;:::-;;;;-1:-1:-1;;17274:11:0;:13;;;:11;:13;;;:::i;:::-;;;;;;17298:34;17308:10;17320:11;;17298:9;:34::i;:::-;17351:5;;-1:-1:-1;;;;;17351:5:0;17343:39;17367:14;17379:2;17367:9;:14;:::i;:::-;17343:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17401:5:0;;-1:-1:-1;;;;;17401:5:0;17393:53;17430:14;17442:2;17430:9;:14;:::i;:::-;17417:28;;:9;:28;:::i;:::-;17393:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:15;17469:10;-1:-1:-1;;;;;17462:58:0;;17481:21;17490:11;;17481:8;:21::i;:::-;17462:58;;;;;;:::i;:::-;;;;;;;;16994:534::o;12380:764::-;12516:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;12508:19:0;;;12516:11;;12508:19;12500:42;;;;-1:-1:-1;;;12500:42:0;;6493:2:1;12500:42:0;;;6475:21:1;6532:2;6512:18;;;6505:30;-1:-1:-1;;;6551:18:1;;;6544:40;6601:18;;12500:42:0;6291:334:1;12500:42:0;-1:-1:-1;;;;;12563:16:0;;12555:46;;;;-1:-1:-1;;;12555:46:0;;;;;;;:::i;:::-;12636:10;-1:-1:-1;;;;;12636:18:0;;;;:51;;-1:-1:-1;12672:15:0;;;;:11;:15;;;;;;-1:-1:-1;;;;;12672:15:0;12658:10;:29;12636:51;:89;;;-1:-1:-1;;;;;;12691:22:0;;;;;;:16;:22;;;;;;;;12714:10;12691:34;;;;;;;;;;12636:89;12614:153;;;;-1:-1:-1;;;12614:153:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12972:15:0;;;;;;;:9;:15;;;;;;;;:17;;-1:-1:-1;;12972:17:0;;;13006:13;;;;;;;;;:15;;12972:17;13006:15;;;13045:11;;;:7;:11;;;;;:16;;-1:-1:-1;;;;;;13045:16:0;;;;;;;;13081:11;:15;;;;;;13074:22;;;;;;;;13114;;13053:2;;13006:13;12972:15;-1:-1:-1;;;;;;;;;;;13114:22:0;;12380:764;;;:::o;18167:201::-;18226:5;;-1:-1:-1;;;;;18226:5:0;18212:10;:19;18208:42;;18240:10;;-1:-1:-1;;;18240:10:0;;;;;;;;;;;18208:42;18288:5;;18280:53;;18262:12;;-1:-1:-1;;;;;18288:5:0;;18307:21;;18262:12;18280:53;18262:12;18280:53;18307:21;18288:5;18280:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18261:72;;;18352:7;18344:16;;;;;;18197:171;18167:201::o;13152:409::-;13276:26;13289:4;13295:2;13299;13276:12;:26::i;:::-;-1:-1:-1;;;;;13337:14:0;;;:19;;:172;;-1:-1:-1;13377:66:0;;-1:-1:-1;;;13377:66:0;;;13464:45;-1:-1:-1;;;;;13377:40:0;;;13464:45;;13377:66;;13418:10;;13430:4;;13436:2;;13377:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13377:132:0;;13337:172;13315:238;;;;-1:-1:-1;;;13315:238:0;;;;;;;:::i;:::-;13152:409;;;:::o;17544:125::-;17614:5;;-1:-1:-1;;;;;17614:5:0;17600:10;:19;17596:42;;17628:10;;-1:-1:-1;;;17628:10:0;;;;;;;;;;;17596:42;17649:4;:12;17544:125::o;17677:135::-;17752:5;;-1:-1:-1;;;;;17752:5:0;17738:10;:19;17734:42;;17766:10;;-1:-1:-1;;;17766:10:0;;;;;;;;;;;17734:42;17787:8;:17;17677:135::o;11375:20::-;;;;;;;:::i;12165:207::-;12268:10;12251:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;12251:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;12251:49:0;;;;;;;;;;12318:46;;540:41:1;;;12251:38:0;;12268:10;12318:46;;513:18:1;12318:46:0;;;;;;;12165:207;;:::o;13569:439::-;13721:26;13734:4;13740:2;13744;13721:12;:26::i;:::-;-1:-1:-1;;;;;13782:14:0;;;:19;;:174;;-1:-1:-1;13822:68:0;;-1:-1:-1;;;13822:68:0;;;13911:45;-1:-1:-1;;;;;13822:40:0;;;13911:45;;13822:68;;13863:10;;13875:4;;13881:2;;13885:4;;13822:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13822:134:0;;13782:174;13760:240;;;;-1:-1:-1;;;13760:240:0;;;;;;;:::i;:::-;13569:439;;;;:::o;17828:331::-;17937:13;18101:25;18118:7;18101:16;:25::i;:::-;18013:123;;;;;;;;:::i;:::-;;;;;;;;;;;;;17968:183;;17828:331;;;:::o;15174:349::-;15245:13;15251:2;15255;15245:5;:13::i;:::-;-1:-1:-1;;;;;15293:14:0;;;:19;;:178;;-1:-1:-1;15333:72:0;;-1:-1:-1;;;15333:72:0;;;15426:45;-1:-1:-1;;;;;15333:40:0;;;15426:45;;15333:72;;15374:10;;15394:1;;15398:2;;15333:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;15333:138:0;;15293:178;15271:244;;;;-1:-1:-1;;;15271:244:0;;;;;;;:::i;:::-;15174:349;;:::o;9421:723::-;9477:13;9698:5;9707:1;9698:10;9694:53;;-1:-1:-1;;9725:10:0;;;;;;;;;;;;-1:-1:-1;;;9725:10:0;;;;;9421:723::o;9694:53::-;9772:5;9757:12;9813:78;9820:9;;9813:78;;9846:8;;;;:::i;:::-;;-1:-1:-1;9869:10:0;;-1:-1:-1;9877:2:0;9869:10;;:::i;:::-;;;9813:78;;;9901:19;9933:6;-1:-1:-1;;;;;9923:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9923:17:0;;9901:39;;9951:154;9958:10;;9951:154;;9985:11;9995:1;9985:11;;:::i;:::-;;-1:-1:-1;10054:10:0;10062:2;10054:5;:10;:::i;:::-;10041:24;;:2;:24;:::i;:::-;10028:39;;10011:6;10018;10011:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;10011:56:0;;;;;;;;-1:-1:-1;10082:11:0;10091:2;10082:11;;:::i;:::-;;;9951:154;;;10129:6;9421:723;-1:-1:-1;;;;9421:723:0:o;14380:381::-;-1:-1:-1;;;;;14455:16:0;;14447:46;;;;-1:-1:-1;;;14447:46:0;;;;;;;:::i;:::-;14537:1;14514:11;;;:7;:11;;;;;;-1:-1:-1;;;;;14514:11:0;:25;14506:52;;;;-1:-1:-1;;;14506:52:0;;10004:2:1;14506:52:0;;;9986:21:1;10043:2;10023:18;;;10016:30;-1:-1:-1;;;10062:18:1;;;10055:44;10116:18;;14506:52:0;9802:338:1;14506:52:0;-1:-1:-1;;;;;14652:13:0;;;;;;:9;:13;;;;;;;;:15;;;;;;14691:11;;;:7;:11;;;;;;:16;;-1:-1:-1;;;;;;14691:16:0;;;;;14725:28;14699:2;;14652:13;;-1:-1:-1;;;;;;;;;;;14725:28:0;14652:13;;14725:28;14380:381;;:::o;14:131:1:-;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:1:o;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:1;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:1:o;2355:328::-;2432:6;2440;2448;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2540:29;2559:9;2540:29;:::i;:::-;2530:39;;2588:38;2622:2;2611:9;2607:18;2588:38;:::i;:::-;2578:48;;2673:2;2662:9;2658:18;2645:32;2635:42;;2355:328;;;;;:::o;2688:186::-;2747:6;2800:2;2788:9;2779:7;2775:23;2771:32;2768:52;;;2816:1;2813;2806:12;2768:52;2839:29;2858:9;2839:29;:::i;2879:347::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;;3123:2;3112:9;3108:18;3095:32;3170:5;3163:13;3156:21;3149:5;3146:32;3136:60;;3192:1;3189;3182:12;3136:60;3215:5;3205:15;;;2879:347;;;;;:::o;3231:127::-;3292:10;3287:3;3283:20;3280:1;3273:31;3323:4;3320:1;3313:15;3347:4;3344:1;3337:15;3363:1138;3458:6;3466;3474;3482;3535:3;3523:9;3514:7;3510:23;3506:33;3503:53;;;3552:1;3549;3542:12;3503:53;3575:29;3594:9;3575:29;:::i;:::-;3565:39;;3623:38;3657:2;3646:9;3642:18;3623:38;:::i;:::-;3613:48;-1:-1:-1;3708:2:1;3693:18;;3680:32;;-1:-1:-1;3763:2:1;3748:18;;3735:32;-1:-1:-1;;;;;3816:14:1;;;3813:34;;;3843:1;3840;3833:12;3813:34;3881:6;3870:9;3866:22;3856:32;;3926:7;3919:4;3915:2;3911:13;3907:27;3897:55;;3948:1;3945;3938:12;3897:55;3984:2;3971:16;4006:2;4002;3999:10;3996:36;;;4012:18;;:::i;:::-;4087:2;4081:9;4055:2;4141:13;;-1:-1:-1;;4137:22:1;;;4161:2;4133:31;4129:40;4117:53;;;4185:18;;;4205:22;;;4182:46;4179:72;;;4231:18;;:::i;:::-;4271:10;4267:2;4260:22;4306:2;4298:6;4291:18;4346:7;4341:2;4336;4332;4328:11;4324:20;4321:33;4318:53;;;4367:1;4364;4357:12;4318:53;4423:2;4418;4414;4410:11;4405:2;4397:6;4393:15;4380:46;4468:1;4463:2;4458;4450:6;4446:15;4442:24;4435:35;4489:6;4479:16;;;;;;;3363:1138;;;;;;;:::o;4506:260::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4674:29;4693:9;4674:29;:::i;:::-;4664:39;;4722:38;4756:2;4745:9;4741:18;4722:38;:::i;:::-;4712:48;;4506:260;;;;;:::o;4771:380::-;4850:1;4846:12;;;;4893;;;4914:61;;4968:4;4960:6;4956:17;4946:27;;4914:61;5021:2;5013:6;5010:14;4990:18;4987:38;4984:161;;5067:10;5062:3;5058:20;5055:1;5048:31;5102:4;5099:1;5092:15;5130:4;5127:1;5120:15;4984:161;;4771:380;;;:::o;5156:338::-;5358:2;5340:21;;;5397:2;5377:18;;;5370:30;-1:-1:-1;;;5431:2:1;5416:18;;5409:44;5485:2;5470:18;;5156:338::o;5499:127::-;5560:10;5555:3;5551:20;5548:1;5541:31;5591:4;5588:1;5581:15;5615:4;5612:1;5605:15;5631:128;5671:3;5702:1;5698:6;5695:1;5692:13;5689:39;;;5708:18;;:::i;:::-;-1:-1:-1;5744:9:1;;5631:128::o;5764:135::-;5803:3;5824:17;;;5821:43;;5844:18;;:::i;:::-;-1:-1:-1;5891:1:1;5880:13;;5764:135::o;5904:127::-;5965:10;5960:3;5956:20;5953:1;5946:31;5996:4;5993:1;5986:15;6020:4;6017:1;6010:15;6036:120;6076:1;6102;6092:35;;6107:18;;:::i;:::-;-1:-1:-1;6141:9:1;;6036:120::o;6161:125::-;6201:4;6229:1;6226;6223:8;6220:34;;;6234:18;;:::i;:::-;-1:-1:-1;6271:9:1;;6161:125::o;6630:341::-;6832:2;6814:21;;;6871:2;6851:18;;;6844:30;-1:-1:-1;;;6905:2:1;6890:18;;6883:47;6962:2;6947:18;;6630:341::o;7186:555::-;-1:-1:-1;;;;;7509:15:1;;;7491:34;;7561:15;;;;7556:2;7541:18;;7534:43;7608:2;7593:18;;7586:34;;;;7656:3;7651:2;7636:18;;7629:31;;;7434:4;7676:19;;;7669:30;7471:3;7716:19;;7186:555::o;7746:249::-;7815:6;7868:2;7856:9;7847:7;7843:23;7839:32;7836:52;;;7884:1;7881;7874:12;7836:52;7916:9;7910:16;7935:30;7959:5;7935:30;:::i;8000:340::-;8202:2;8184:21;;;8241:2;8221:18;;;8214:30;-1:-1:-1;;;8275:2:1;8260:18;;8253:46;8331:2;8316:18;;8000:340::o;8345:489::-;-1:-1:-1;;;;;8614:15:1;;;8596:34;;8666:15;;8661:2;8646:18;;8639:43;8713:2;8698:18;;8691:34;;;8761:3;8756:2;8741:18;;8734:31;;;8539:4;;8782:46;;8808:19;;8800:6;8782:46;:::i;:::-;8774:54;8345:489;-1:-1:-1;;;;;;8345:489:1:o;8839:709::-;9202:34;9197:3;9190:47;9267:34;9262:2;9257:3;9253:12;9246:56;-1:-1:-1;;;9327:2:1;9322:3;9318:12;9311:27;9172:3;9367:6;9361:13;9383:60;9436:6;9431:2;9426:3;9422:12;9417:2;9409:6;9405:15;9383:60;:::i;:::-;-1:-1:-1;;;9502:2:1;9462:16;;;;9494:11;;;9487:28;-1:-1:-1;9539:2:1;9531:11;;8839:709;-1:-1:-1;8839:709:1:o;9553:112::-;9585:1;9611;9601:35;;9616:18;;:::i;:::-;-1:-1:-1;9650:9:1;;9553:112::o;9670:127::-;9731:10;9726:3;9722:20;9719:1;9712:31;9762:4;9759:1;9752:15;9786:4;9783:1;9776:15

Swarm Source

ipfs://cdc0ff5f2e40b4f3e5dfc5b41c823f0210d247dab0dc6ad6f0f577c5cc94e786
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.