ETH Price: $1,994.58 (+1.03%)

Token

Runes (Runes)
 

Overview

Max Total Supply

0 Runes

Holders

0

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Runes

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-02-04
*/

// SPDX-License-Identifier: MIT
// This is a ERC-20 token that is ONLY meant to be used as a extension for the Mysterious World NFT Project
// The only use case for this token is to be used to interact with The Mysterious World.
// This token has no monetary value associated to it.
// Read more at https://www.themysterious.world/utility

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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// The interface is used so we can get the balance of each holder
interface TheMysteriousWorld {
    function balanceOf(address inhabitant) external view returns(uint256);
    function ritualWallet() external view returns(address);
}

/*
 * 888d888888  88888888b.  .d88b. .d8888b  
 * 888P"  888  888888 "88bd8P  Y8b88K      
 * 888    888  888888  88888888888"Y8888b. 
 * 888    Y88b 888888  888Y8b.         X88 
 * 888     "Y88888888  888 "Y8888  88888P' 
 */
contract Runes is ERC20, Ownable {
    TheMysteriousWorld public mysteriousworld;

    uint256 public deployedStamp       = 0; // this is used to calculate the amount of $RUNES a user has from the current block.timestamp
    uint256 public runesPerDay         = 10 ether; // this ends up being 25 $RUNES per day. this might change in the future depending on how the collection grows overtime.
    bool    public allowRuneCollecting = false; // this lets you claim your $RUNES from the contract to the wallet

    mapping(address => uint256) public runesObtained; // this tracks how much $RUNES each address earned
    mapping(address => uint256) public lastTimeCollectedRunes; // this sets the block.timestamp to the address so it subtracts the timestamp from the pending rewards
    mapping(address => bool)    public contractWallets; // these are used to interact with the burning mechanisms of the contract - these will only be set to contracts related to The Mysterious World

    constructor() ERC20("Runes", "Runes") {}

    /*
     * # onlyContractWallets
     * blocks anyone from accessing it but contract wallets
     */
    modifier onlyContractWallets() {
        require(contractWallets[msg.sender], "You angered the gods!");
        _;
    }

    /*
     * # onlyWhenCollectingIsEnabled
     * blocks anyone from accessing functions that require allowRuneCollecting
     */
    modifier onlyWhenCollectingIsEnabled() {
        require(allowRuneCollecting, "You angered the gods!");
        _;
    }

    /*
     * # setRuneCollecting
     * enables or disables users to withdraw their runes - should only be called once unless the gods intended otherwise
     */
    function setRuneCollecting(bool newState) public payable onlyOwner {
        allowRuneCollecting = newState;
    }

    /*
     * # setDeployedStamp
     * sets the timestamp for when the $RUNES should start being generated
     */
    function setDeployedStamp(bool forced, uint256 stamp) public payable onlyOwner {
        if (forced) {
            deployedStamp = stamp;
        } else {
            deployedStamp = block.timestamp;
        }
    }

    /*
     * # setRunesPerDay
     * incase we want to change the amount gained per day, the gods can set it here
     */
    function setRunesPerDay(uint256 newRunesPerDay) public payable onlyOwner {
        runesPerDay = newRunesPerDay;
    }

    /*
     * # setMysteriousWorldContract
     * sets the address to the deployed Mysterious World contract
     */
    function setMysteriousWorldContract(address contractAddress) public payable onlyOwner {
        mysteriousworld = TheMysteriousWorld(contractAddress);
    }

    /*
     * # setContractWallets
     * enables or disables a contract wallet from interacting with the burn mechanics of the contract
     */
    function setContractWallets(address contractAddress, bool newState) public payable onlyOwner {
        contractWallets[contractAddress] = newState;
    }

    /*
     * # getPendingRunes
     * calculates the runes a inhabitant has from the last time they claimed and the deployedStamp time
     */
    function getPendingRunes(address inhabitant) internal view returns(uint256) {
        uint256 sumOfRunes = mysteriousworld.balanceOf(inhabitant) * runesPerDay;

        if (lastTimeCollectedRunes[inhabitant] >= deployedStamp) {
            return sumOfRunes * ((block.timestamp - lastTimeCollectedRunes[inhabitant])) / 86400;
        } else {
            return sumOfRunes * ((block.timestamp - deployedStamp)) / 86400;
        }
    }

    /*
     * # getUnclaimedRunes
     * returns the total amount of unclaimed runes a wallet has
     */
    function getUnclaimedRunes(address inhabitant) external view returns(uint256) {
        return getPendingRunes(inhabitant);
    }

    /*
     * # getTotalRunes
     * returns the runesObtained and getPendingRunes for the inhabitant passed
     */
    function getTotalRunes(address inhabitant) external view returns(uint256) {
        return runesObtained[inhabitant] + getPendingRunes(inhabitant);
    }

    /*
     * # burn
     * removes the withdrawn $RUNES from the wallet provided for the amount provided
     */
    function burn(address inhabitant, uint256 cost) external payable onlyContractWallets {
        _burn(inhabitant, cost);
    }

    /*
     * # claimRunes
     * adds the $RUNES to your wallet
     */
    function claimRunes() external payable {
        _mint(msg.sender, runesObtained[msg.sender] + getPendingRunes(msg.sender));

        runesObtained[msg.sender] = 0;
        lastTimeCollectedRunes[msg.sender] = block.timestamp;
    }

    /*
     * # updateRunes
     * updates the pending balance for both of the wallets associated to the transfer so they don't lose the $RUNES generated
     */
    function updateRunes(address from, address to) external onlyContractWallets {
        if (from != address(0) && from != mysteriousworld.ritualWallet()) {
            runesObtained[from]          += getPendingRunes(from);
            lastTimeCollectedRunes[from] = block.timestamp;
        }

        if (to != address(0) && to != mysteriousworld.ritualWallet()) {
            runesObtained[to]          += getPendingRunes(to);
            lastTimeCollectedRunes[to] = block.timestamp;
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"allowRuneCollecting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"},{"internalType":"uint256","name":"cost","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimRunes","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployedStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getTotalRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getUnclaimedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTimeCollectedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mysteriousworld","outputs":[{"internalType":"contract TheMysteriousWorld","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"runesObtained","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runesPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"newState","type":"bool"}],"name":"setContractWallets","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"forced","type":"bool"},{"internalType":"uint256","name":"stamp","type":"uint256"}],"name":"setDeployedStamp","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setMysteriousWorldContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"newState","type":"bool"}],"name":"setRuneCollecting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRunesPerDay","type":"uint256"}],"name":"setRunesPerDay","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"updateRunes","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600755678ac7230489e800006008556009805460ff191690553480156200002c57600080fd5b5060408051808201825260058082526452756e657360d81b6020808401828152855180870190965292855284015281519192916200006d91600391620000fc565b50805162000083906004906020840190620000fc565b505050620000a06200009a620000a660201b60201c565b620000aa565b620001df565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010a90620001a2565b90600052602060002090601f0160209004810192826200012e576000855562000179565b82601f106200014957805160ff191683800117855562000179565b8280016001018555821562000179579182015b82811115620001795782518255916020019190600101906200015c565b50620001879291506200018b565b5090565b5b808211156200018757600081556001016200018c565b600181811c90821680620001b757607f821691505b60208210811415620001d957634e487b7160e01b600052602260045260246000fd5b50919050565b61171280620001ef6000396000f3fe6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611582565b60405180910390f35b34801561021457600080fd5b506102286102233660046114ed565b61064d565b60405190151581526020016101ff565b61024b610246366004611534565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611477565b6106ab565b34801561029857600080fd5b5061025e6102a7366004611404565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114ed565b6107a2565b34801561030957600080fd5b5061025e610318366004611404565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d366004611404565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b6107de565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e2366004611404565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e610412366004611404565b610814565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f2610848565b61024b6104583660046114ed565b610857565b61024b61046b3660046114b8565b6108b8565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114ed565b61090d565b3480156104b257600080fd5b506102286104c13660046114ed565b6109a6565b61024b6104d4366004611550565b6109b3565b3480156104e557600080fd5b5061024b6104f436600461143e565b6109e2565b61024b610507366004611404565b610c46565b34801561051857600080fd5b5061025e60075481565b61024b610530366004611519565b610c92565b34801561054157600080fd5b5061025e610550366004611404565b610ccf565b34801561056157600080fd5b5061025e61057036600461143e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b6366004611404565b610cda565b6060600380546105ca9061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167c565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d75565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115d7565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e9a565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d75565b506001949350505050565b6107813361076233611069565b336000908152600a602052604090205461077c919061160c565b611178565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107d990869061160c565b610d75565b6005546001600160a01b031633146108085760405162461bcd60e51b815260040161068d906115d7565b6108126000611257565b565b600061081f82611069565b6001600160a01b0383166000908152600a6020526040902054610842919061160c565b92915050565b6060600480546105ca9061167c565b336000908152600c602052604090205460ff166108ae5760405162461bcd60e51b8152602060048201526015602482015274596f7520616e67657265642074686520676f64732160581b604482015260640161068d565b6106a782826112a9565b6005546001600160a01b031633146108e25760405162461bcd60e51b815260040161068d906115d7565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561098f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b61099c3385858403610d75565b5060019392505050565b600061065a338484610e9a565b6005546001600160a01b031633146109dd5760405162461bcd60e51b815260040161068d906115d7565b600855565b336000908152600c602052604090205460ff16610a395760405162461bcd60e51b8152602060048201526015602482015274596f7520616e67657265642074686520676f64732160581b604482015260640161068d565b6001600160a01b03821615801590610ae85750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9a57600080fd5b505afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611421565b6001600160a01b0316826001600160a01b031614155b15610b3f57610af682611069565b6001600160a01b0383166000908152600a602052604081208054909190610b1e90849061160c565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bee5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190611421565b6001600160a01b0316816001600160a01b031614155b156106a757610bfc81611069565b6001600160a01b0382166000908152600a602052604081208054909190610c2490849061160c565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c705760405162461bcd60e51b815260040161068d906115d7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cbc5760405162461bcd60e51b815260040161068d906115d7565b6009805460ff1916911515919091179055565b600061084282611069565b6005546001600160a01b03163314610d045760405162461bcd60e51b815260040161068d906115d7565b6001600160a01b038116610d695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d7281611257565b50565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610fd85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061100f90849061160c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105b91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef9190611569565b6110f99190611646565b6007546001600160a01b0385166000908152600b602052604090205491925011611160576001600160a01b0383166000908152600b602052604090205462015180906111459042611665565b61114f9083611646565b6111599190611624565b9392505050565b62015180600754426111459190611665565b50919050565b6001600160a01b0382166111ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111e0919061160c565b90915550506001600160a01b0382166000908152602081905260408120805483929061120d90849061160c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166113095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561137d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b03831660009081526020819052604081208383039055600280548492906113ac908490611665565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e8d565b803580151581146113ff57600080fd5b919050565b60006020828403121561141657600080fd5b8135611159816116c7565b60006020828403121561143357600080fd5b8151611159816116c7565b6000806040838503121561145157600080fd5b823561145c816116c7565b9150602083013561146c816116c7565b809150509250929050565b60008060006060848603121561148c57600080fd5b8335611497816116c7565b925060208401356114a7816116c7565b929592945050506040919091013590565b600080604083850312156114cb57600080fd5b82356114d6816116c7565b91506114e4602084016113ef565b90509250929050565b6000806040838503121561150057600080fd5b823561150b816116c7565b946020939093013593505050565b60006020828403121561152b57600080fd5b611159826113ef565b6000806040838503121561154757600080fd5b61150b836113ef565b60006020828403121561156257600080fd5b5035919050565b60006020828403121561157b57600080fd5b5051919050565b600060208083528351808285015260005b818110156115af57858101830151858201604001528201611593565b818111156115c1576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561161f5761161f6116b1565b500190565b60008261164157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611660576116606116b1565b500290565b600082821015611677576116776116b1565b500390565b600181811c9082168061169057607f821691505b6020821081141561117257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d7257600080fdfea2646970667358221220e5464351a03acf08655548103e2e202ee6bc2bf3a808ea6b10ebf377ac9e185664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611582565b60405180910390f35b34801561021457600080fd5b506102286102233660046114ed565b61064d565b60405190151581526020016101ff565b61024b610246366004611534565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611477565b6106ab565b34801561029857600080fd5b5061025e6102a7366004611404565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114ed565b6107a2565b34801561030957600080fd5b5061025e610318366004611404565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d366004611404565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b6107de565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e2366004611404565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e610412366004611404565b610814565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f2610848565b61024b6104583660046114ed565b610857565b61024b61046b3660046114b8565b6108b8565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114ed565b61090d565b3480156104b257600080fd5b506102286104c13660046114ed565b6109a6565b61024b6104d4366004611550565b6109b3565b3480156104e557600080fd5b5061024b6104f436600461143e565b6109e2565b61024b610507366004611404565b610c46565b34801561051857600080fd5b5061025e60075481565b61024b610530366004611519565b610c92565b34801561054157600080fd5b5061025e610550366004611404565b610ccf565b34801561056157600080fd5b5061025e61057036600461143e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b6366004611404565b610cda565b6060600380546105ca9061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167c565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d75565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115d7565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e9a565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d75565b506001949350505050565b6107813361076233611069565b336000908152600a602052604090205461077c919061160c565b611178565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107d990869061160c565b610d75565b6005546001600160a01b031633146108085760405162461bcd60e51b815260040161068d906115d7565b6108126000611257565b565b600061081f82611069565b6001600160a01b0383166000908152600a6020526040902054610842919061160c565b92915050565b6060600480546105ca9061167c565b336000908152600c602052604090205460ff166108ae5760405162461bcd60e51b8152602060048201526015602482015274596f7520616e67657265642074686520676f64732160581b604482015260640161068d565b6106a782826112a9565b6005546001600160a01b031633146108e25760405162461bcd60e51b815260040161068d906115d7565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561098f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b61099c3385858403610d75565b5060019392505050565b600061065a338484610e9a565b6005546001600160a01b031633146109dd5760405162461bcd60e51b815260040161068d906115d7565b600855565b336000908152600c602052604090205460ff16610a395760405162461bcd60e51b8152602060048201526015602482015274596f7520616e67657265642074686520676f64732160581b604482015260640161068d565b6001600160a01b03821615801590610ae85750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9a57600080fd5b505afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611421565b6001600160a01b0316826001600160a01b031614155b15610b3f57610af682611069565b6001600160a01b0383166000908152600a602052604081208054909190610b1e90849061160c565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bee5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190611421565b6001600160a01b0316816001600160a01b031614155b156106a757610bfc81611069565b6001600160a01b0382166000908152600a602052604081208054909190610c2490849061160c565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c705760405162461bcd60e51b815260040161068d906115d7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cbc5760405162461bcd60e51b815260040161068d906115d7565b6009805460ff1916911515919091179055565b600061084282611069565b6005546001600160a01b03163314610d045760405162461bcd60e51b815260040161068d906115d7565b6001600160a01b038116610d695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d7281611257565b50565b6001600160a01b038316610dd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610fd85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061100f90849061160c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105b91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef9190611569565b6110f99190611646565b6007546001600160a01b0385166000908152600b602052604090205491925011611160576001600160a01b0383166000908152600b602052604090205462015180906111459042611665565b61114f9083611646565b6111599190611624565b9392505050565b62015180600754426111459190611665565b50919050565b6001600160a01b0382166111ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111e0919061160c565b90915550506001600160a01b0382166000908152602081905260408120805483929061120d90849061160c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166113095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561137d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b03831660009081526020819052604081208383039055600280548492906113ac908490611665565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e8d565b803580151581146113ff57600080fd5b919050565b60006020828403121561141657600080fd5b8135611159816116c7565b60006020828403121561143357600080fd5b8151611159816116c7565b6000806040838503121561145157600080fd5b823561145c816116c7565b9150602083013561146c816116c7565b809150509250929050565b60008060006060848603121561148c57600080fd5b8335611497816116c7565b925060208401356114a7816116c7565b929592945050506040919091013590565b600080604083850312156114cb57600080fd5b82356114d6816116c7565b91506114e4602084016113ef565b90509250929050565b6000806040838503121561150057600080fd5b823561150b816116c7565b946020939093013593505050565b60006020828403121561152b57600080fd5b611159826113ef565b6000806040838503121561154757600080fd5b61150b836113ef565b60006020828403121561156257600080fd5b5035919050565b60006020828403121561157b57600080fd5b5051919050565b600060208083528351808285015260005b818110156115af57858101830151858201604001528201611593565b818111156115c1576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561161f5761161f6116b1565b500190565b60008261164157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611660576116606116b1565b500290565b600082821015611677576116776116b1565b500390565b600181811c9082168061169057607f821691505b6020821081141561117257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d7257600080fdfea2646970667358221220e5464351a03acf08655548103e2e202ee6bc2bf3a808ea6b10ebf377ac9e185664736f6c63430008070033

Deployed Bytecode Sourcemap

8003:5429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1958:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2872:169;;;;;;;;;;-1:-1:-1;2872:169:0;;;;;:::i;:::-;;:::i;:::-;;;3366:14:1;;3359:22;3341:41;;3329:2;3314:18;2872:169:0;3201:187:1;9963:221:0;;;;;;:::i;:::-;;:::i;:::-;;2279:108;;;;;;;;;;-1:-1:-1;2367:12:0;;2279:108;;;9498:25:1;;;9486:2;9471:18;2279:108:0;9352:177:1;3049:492:0;;;;;;;;;;-1:-1:-1;3049:492:0;;;;;:::i;:::-;;:::i;8629:57::-;;;;;;;;;;-1:-1:-1;8629:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;2178:93;;;;;;;;;;-1:-1:-1;2178:93:0;;2261:2;9676:36:1;;9664:2;9649:18;2178:93:0;9534:184:1;12508:237:0;;;:::i;3549:215::-;;;;;;;;;;-1:-1:-1;3549:215:0;;;;;:::i;:::-;;:::i;8523:48::-;;;;;;;;;;-1:-1:-1;8523:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;8043:41;;;;;;;;;;-1:-1:-1;8043:41:0;;;;-1:-1:-1;;;;;8043:41:0;;;;;;-1:-1:-1;;;;;3157:32:1;;;3139:51;;3127:2;3112:18;8043:41:0;2993:203:1;2395:127:0;;;;;;;;;;-1:-1:-1;2395:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2496:18:0;2469:7;2496:18;;;;;;;;;;;;2395:127;7046:94;;;;;;;;;;;;;:::i;8405:42::-;;;;;;;;;;-1:-1:-1;8405:42:0;;;;;;;;8796:50;;;;;;;;;;-1:-1:-1;8796:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12015:155;;;;;;;;;;-1:-1:-1;12015:155:0;;;;;:::i;:::-;;:::i;6823:87::-;;;;;;;;;;-1:-1:-1;6896:6:0;;-1:-1:-1;;;;;6896:6:0;6823:87;;2066:104;;;;;;;;;;;;;:::i;12296:127::-;;;;;;:::i;:::-;;:::i;10883:155::-;;;;;;:::i;:::-;;:::i;8232:45::-;;;;;;;;;;;;;;;;3772:413;;;;;;;;;;-1:-1:-1;3772:413:0;;;;;:::i;:::-;;:::i;2530:175::-;;;;;;;;;;-1:-1:-1;2530:175:0;;;;;:::i;:::-;;:::i;10319:120::-;;;;;;:::i;:::-;;:::i;12919:510::-;;;;;;;;;;-1:-1:-1;12919:510:0;;;;;:::i;:::-;;:::i;10568:158::-;;;;;;:::i;:::-;;:::i;8093:38::-;;;;;;;;;;;;;;;;9719:116;;;;;;:::i;:::-;;:::i;11755:131::-;;;;;;;;;;-1:-1:-1;11755:131:0;;;;;:::i;:::-;;:::i;2713:151::-;;;;;;;;;;-1:-1:-1;2713:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2829:18:0;;;2802:7;2829:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2713:151;7148:192;;;;;;;;;;-1:-1:-1;7148:192:0;;;;;:::i;:::-;;:::i;1958:100::-;2012:13;2045:5;2038:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1958:100;:::o;2872:169::-;2955:4;2972:39;1418:10;2995:7;3004:6;2972:8;:39::i;:::-;-1:-1:-1;3029:4:0;2872:169;;;;:::o;9963:221::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;;;;;;;;;10057:6:::1;10053:124;;;10080:13;:21:::0;-1:-1:-1;9963:221:0:o;10053:124::-:1;10150:15;10134:13;:31:::0;10053:124:::1;9963:221:::0;;:::o;3049:492::-;3189:4;3206:36;3216:6;3224:9;3235:6;3206:9;:36::i;:::-;-1:-1:-1;;;;;3282:19:0;;3255:24;3282:19;;;:11;:19;;;;;;;;1418:10;3282:33;;;;;;;;3334:26;;;;3326:79;;;;-1:-1:-1;;;3326:79:0;;6455:2:1;3326:79:0;;;6437:21:1;6494:2;6474:18;;;6467:30;6533:34;6513:18;;;6506:62;-1:-1:-1;;;6584:18:1;;;6577:38;6632:19;;3326:79:0;6253:404:1;3326:79:0;3441:57;3450:6;1418:10;3491:6;3472:16;:25;3441:8;:57::i;:::-;-1:-1:-1;3529:4:0;;3049:492;-1:-1:-1;;;;3049:492:0:o;12508:237::-;12558:74;12564:10;12604:27;12620:10;12604:15;:27::i;:::-;12590:10;12576:25;;;;:13;:25;;;;;;:55;;;;:::i;:::-;12558:5;:74::i;:::-;12659:10;12673:1;12645:25;;;:13;:25;;;;;;;;:29;;;12685:22;:34;;;;;12722:15;12685:52;;12508:237::o;3549:215::-;1418:10;3637:4;3686:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3686:34:0;;;;;;;;;;3637:4;;3654:80;;3677:7;;3686:47;;3723:10;;3686:47;:::i;:::-;3654:8;:80::i;7046:94::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;7111:21:::1;7129:1;7111:9;:21::i;:::-;7046:94::o:0;12015:155::-;12080:7;12135:27;12151:10;12135:15;:27::i;:::-;-1:-1:-1;;;;;12107:25:0;;;;;;:13;:25;;;;;;:55;;;;:::i;:::-;12100:62;12015:155;-1:-1:-1;;12015:155:0:o;2066:104::-;2122:13;2155:7;2148:14;;;;;:::i;12296:127::-;9221:10;9205:27;;;;:15;:27;;;;;;;;9197:61;;;;-1:-1:-1;;;9197:61:0;;7627:2:1;9197:61:0;;;7609:21:1;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7685:18:1;;;7678:51;7746:18;;9197:61:0;7425:345:1;9197:61:0;12392:23:::1;12398:10;12410:4;12392:5;:23::i;10883:155::-:0;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10987:32:0;;;::::1;;::::0;;;:15:::1;:32;::::0;;;;:43;;-1:-1:-1;;10987:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10883:155::o;3772:413::-;1418:10;3865:4;3909:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3909:34:0;;;;;;;;;;3962:35;;;;3954:85;;;;-1:-1:-1;;;3954:85:0;;8788:2:1;3954:85:0;;;8770:21:1;8827:2;8807:18;;;8800:30;8866:34;8846:18;;;8839:62;-1:-1:-1;;;8917:18:1;;;8910:35;8962:19;;3954:85:0;8586:401:1;3954:85:0;4075:67;1418:10;4098:7;4126:15;4107:16;:34;4075:8;:67::i;:::-;-1:-1:-1;4173:4:0;;3772:413;-1:-1:-1;;;3772:413:0:o;2530:175::-;2616:4;2633:42;1418:10;2657:9;2668:6;2633:9;:42::i;10319:120::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;10403:11:::1;:28:::0;10319:120::o;12919:510::-;9221:10;9205:27;;;;:15;:27;;;;;;;;9197:61;;;;-1:-1:-1;;;9197:61:0;;7627:2:1;9197:61:0;;;7609:21:1;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7685:18:1;;;7678:51;7746:18;;9197:61:0;7425:345:1;9197:61:0;-1:-1:-1;;;;;13010:18:0;::::1;::::0;;::::1;::::0;:60:::1;;;13040:15;;;;;;;;;-1:-1:-1::0;;;;;13040:15:0::1;-1:-1:-1::0;;;;;13040:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13032:38:0::1;:4;-1:-1:-1::0;;;;;13032:38:0::1;;;13010:60;13006:207;;;13119:21;13135:4;13119:15;:21::i;:::-;-1:-1:-1::0;;;;;13087:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;:53;;:19;;;:53:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13155:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;13186:15:::1;13155:46:::0;;13006:207:::1;-1:-1:-1::0;;;;;13229:16:0;::::1;::::0;;::::1;::::0;:56:::1;;;13255:15;;;;;;;;;-1:-1:-1::0;;;;;13255:15:0::1;-1:-1:-1::0;;;;;13255:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13249:36:0::1;:2;-1:-1:-1::0;;;;;13249:36:0::1;;;13229:56;13225:197;;;13332:19;13348:2;13332:15;:19::i;:::-;-1:-1:-1::0;;;;;13302:17:0;::::1;;::::0;;;:13:::1;:17;::::0;;;;:49;;:17;;;:49:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13366:26:0::1;;::::0;;;:22:::1;:26;::::0;;;;13395:15:::1;13366:44:::0;;-1:-1:-1;12919:510:0:o;10568:158::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;10665:15:::1;:53:::0;;-1:-1:-1;;;;;;10665:53:0::1;-1:-1:-1::0;;;;;10665:53:0;;;::::1;::::0;;;::::1;::::0;;10568:158::o;9719:116::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;9797:19:::1;:30:::0;;-1:-1:-1;;9797:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9719:116::o;11755:131::-;11824:7;11851:27;11867:10;11851:15;:27::i;7148:192::-;6896:6;;-1:-1:-1;;;;;6896:6:0;1418:10;6958:23;6950:68;;;;-1:-1:-1;;;6950:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7237:22:0;::::1;7229:73;;;::::0;-1:-1:-1;;;7229:73:0;;5238:2:1;7229:73:0::1;::::0;::::1;5220:21:1::0;5277:2;5257:18;;;5250:30;5316:34;5296:18;;;5289:62;-1:-1:-1;;;5367:18:1;;;5360:36;5413:19;;7229:73:0::1;5036:402:1::0;7229:73:0::1;7313:19;7323:8;7313:9;:19::i;:::-;7148:192:::0;:::o;5940:380::-;-1:-1:-1;;;;;6076:19:0;;6068:68;;;;-1:-1:-1;;;6068:68:0;;8383:2:1;6068:68:0;;;8365:21:1;8422:2;8402:18;;;8395:30;8461:34;8441:18;;;8434:62;-1:-1:-1;;;8512:18:1;;;8505:34;8556:19;;6068:68:0;8181:400:1;6068:68:0;-1:-1:-1;;;;;6155:21:0;;6147:68;;;;-1:-1:-1;;;6147:68:0;;5645:2:1;6147:68:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:34;5703:18;;;5696:62;-1:-1:-1;;;5774:18:1;;;5767:32;5816:19;;6147:68:0;5443:398:1;6147:68:0;-1:-1:-1;;;;;6228:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6280:32;;9498:25:1;;;6280:32:0;;9471:18:1;6280:32:0;;;;;;;;5940:380;;;:::o;4193:733::-;-1:-1:-1;;;;;4333:20:0;;4325:70;;;;-1:-1:-1;;;4325:70:0;;7977:2:1;4325:70:0;;;7959:21:1;8016:2;7996:18;;;7989:30;8055:34;8035:18;;;8028:62;-1:-1:-1;;;8106:18:1;;;8099:35;8151:19;;4325:70:0;7775:401:1;4325:70:0;-1:-1:-1;;;;;4414:23:0;;4406:71;;;;-1:-1:-1;;;4406:71:0;;4431:2:1;4406:71:0;;;4413:21:1;4470:2;4450:18;;;4443:30;4509:34;4489:18;;;4482:62;-1:-1:-1;;;4560:18:1;;;4553:33;4603:19;;4406:71:0;4229:399:1;4406:71:0;-1:-1:-1;;;;;4574:17:0;;4550:21;4574:17;;;;;;;;;;;4610:23;;;;4602:74;;;;-1:-1:-1;;;4602:74:0;;6048:2:1;4602:74:0;;;6030:21:1;6087:2;6067:18;;;6060:30;6126:34;6106:18;;;6099:62;-1:-1:-1;;;6177:18:1;;;6170:36;6223:19;;4602:74:0;5846:402:1;4602:74:0;-1:-1:-1;;;;;4712:17:0;;;:9;:17;;;;;;;;;;;4732:22;;;4712:42;;4776:20;;;;;;;;:30;;4748:6;;4712:9;4776:30;;4748:6;;4776:30;:::i;:::-;;;;;;;;4841:9;-1:-1:-1;;;;;4824:35:0;4833:6;-1:-1:-1;;;;;4824:35:0;;4852:6;4824:35;;;;9498:25:1;;9486:2;9471:18;;9352:177;4824:35:0;;;;;;;;4314:612;4193:733;;;:::o;11194:443::-;11342:11;;11302:15;;:37;;-1:-1:-1;;;11302:37:0;;-1:-1:-1;;;;;3157:32:1;;;11302:37:0;;;3139:51:1;11261:7:0;;;;11342:11;;11302:15;;;:25;;3112:18:1;;11302:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;11408:13;;-1:-1:-1;;;;;11370:34:0;;;;;;:22;:34;;;;;;11281:72;;-1:-1:-1;;11366:264:0;;-1:-1:-1;;;;;11478:34:0;;;;;;:22;:34;;;;;;11517:5;;11460:52;;:15;:52;:::i;:::-;11445:69;;:10;:69;:::i;:::-;:77;;;;:::i;:::-;11438:84;11194:443;-1:-1:-1;;;11194:443:0:o;11366:264::-;11613:5;11595:13;;11577:15;:31;;;;:::i;11366:264::-;11270:367;11194:443;;;:::o;4934:399::-;-1:-1:-1;;;;;5018:21:0;;5010:65;;;;-1:-1:-1;;;5010:65:0;;9194:2:1;5010:65:0;;;9176:21:1;9233:2;9213:18;;;9206:30;9272:33;9252:18;;;9245:61;9323:18;;5010:65:0;8992:355:1;5010:65:0;5166:6;5150:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5183:18:0;;:9;:18;;;;;;;;;;:28;;5205:6;;5183:9;:28;;5205:6;;5183:28;:::i;:::-;;;;-1:-1:-1;;5227:37:0;;9498:25:1;;;-1:-1:-1;;;;;5227:37:0;;;5244:1;;5227:37;;9486:2:1;9471:18;5227:37:0;;;;;;;9963:221;;:::o;7348:173::-;7423:6;;;-1:-1:-1;;;;;7440:17:0;;;-1:-1:-1;;;;;;7440:17:0;;;;;;;7473:40;;7423:6;;;7440:17;7423:6;;7473:40;;7404:16;;7473:40;7393:128;7348:173;:::o;5341:591::-;-1:-1:-1;;;;;5425:21:0;;5417:67;;;;-1:-1:-1;;;5417:67:0;;7225:2:1;5417:67:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:34;7283:18;;;7276:62;-1:-1:-1;;;7354:18:1;;;7347:31;7395:19;;5417:67:0;7023:397:1;5417:67:0;-1:-1:-1;;;;;5584:18:0;;5559:22;5584:18;;;;;;;;;;;5621:24;;;;5613:71;;;;-1:-1:-1;;;5613:71:0;;4835:2:1;5613:71:0;;;4817:21:1;4874:2;4854:18;;;4847:30;4913:34;4893:18;;;4886:62;-1:-1:-1;;;4964:18:1;;;4957:32;5006:19;;5613:71:0;4633:398:1;5613:71:0;-1:-1:-1;;;;;5720:18:0;;:9;:18;;;;;;;;;;5741:23;;;5720:44;;5786:12;:22;;5758:6;;5720:9;5786:22;;5758:6;;5786:22;:::i;:::-;;;;-1:-1:-1;;5826:37:0;;9498:25:1;;;5852:1:0;;-1:-1:-1;;;;;5826:37:0;;;;;9486:2:1;9471:18;5826:37:0;9352:177:1;14:160;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:248::-;2431:6;2439;2492:2;2480:9;2471:7;2467:23;2463:32;2460:52;;;2508:1;2505;2498:12;2460:52;2531:26;2547:9;2531:26;:::i;2619:180::-;2678:6;2731:2;2719:9;2710:7;2706:23;2702:32;2699:52;;;2747:1;2744;2737:12;2699:52;-1:-1:-1;2770:23:1;;2619:180;-1:-1:-1;2619:180:1:o;2804:184::-;2874:6;2927:2;2915:9;2906:7;2902:23;2898:32;2895:52;;;2943:1;2940;2933:12;2895:52;-1:-1:-1;2966:16:1;;2804:184;-1:-1:-1;2804:184:1:o;3627:597::-;3739:4;3768:2;3797;3786:9;3779:21;3829:6;3823:13;3872:6;3867:2;3856:9;3852:18;3845:34;3897:1;3907:140;3921:6;3918:1;3915:13;3907:140;;;4016:14;;;4012:23;;4006:30;3982:17;;;4001:2;3978:26;3971:66;3936:10;;3907:140;;;4065:6;4062:1;4059:13;4056:91;;;4135:1;4130:2;4121:6;4110:9;4106:22;4102:31;4095:42;4056:91;-1:-1:-1;4208:2:1;4187:15;-1:-1:-1;;4183:29:1;4168:45;;;;4215:2;4164:54;;3627:597;-1:-1:-1;;;3627:597:1:o;6662:356::-;6864:2;6846:21;;;6883:18;;;6876:30;6942:34;6937:2;6922:18;;6915:62;7009:2;6994:18;;6662:356::o;9723:128::-;9763:3;9794:1;9790:6;9787:1;9784:13;9781:39;;;9800:18;;:::i;:::-;-1:-1:-1;9836:9:1;;9723:128::o;9856:217::-;9896:1;9922;9912:132;;9966:10;9961:3;9957:20;9954:1;9947:31;10001:4;9998:1;9991:15;10029:4;10026:1;10019:15;9912:132;-1:-1:-1;10058:9:1;;9856:217::o;10078:168::-;10118:7;10184:1;10180;10176:6;10172:14;10169:1;10166:21;10161:1;10154:9;10147:17;10143:45;10140:71;;;10191:18;;:::i;:::-;-1:-1:-1;10231:9:1;;10078:168::o;10251:125::-;10291:4;10319:1;10316;10313:8;10310:34;;;10324:18;;:::i;:::-;-1:-1:-1;10361:9:1;;10251:125::o;10381:380::-;10460:1;10456:12;;;;10503;;;10524:61;;10578:4;10570:6;10566:17;10556:27;;10524:61;10631:2;10623:6;10620:14;10600:18;10597:38;10594:161;;;10677:10;10672:3;10668:20;10665:1;10658:31;10712:4;10709:1;10702:15;10740:4;10737:1;10730:15;10766:127;10827:10;10822:3;10818:20;10815:1;10808:31;10858:4;10855:1;10848:15;10882:4;10879:1;10872:15;10898:131;-1:-1:-1;;;;;10973:31:1;;10963:42;;10953:70;;11019:1;11016;11009:12

Swarm Source

ipfs://e5464351a03acf08655548103e2e202ee6bc2bf3a808ea6b10ebf377ac9e1856
Loading...
Loading
Loading...
Loading
[ 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.