ETH Price: $2,918.53 (+3.49%)
 

Overview

Max Total Supply

1,000,000,000 MEG

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,678,891.902850586 MEG

Value
$0.00
0x7d8a0766bec67c7274cc63ca68b005a89386b8a0
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:
MemeGold

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-14
*/

/*

 __    __     ______     ______    
/\ "-./  \   /\  ___\   /\  ___\   
\ \ \-./\ \  \ \  __\   \ \ \__ \  
 \ \_\ \ \_\  \ \_____\  \ \_____\ 
  \/_/  \/_/   \/_____/   \/_____/ 
                                   
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface ITxLimit {
    function checkLimit(address, address, uint256) external returns (bool);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

contract MemeGold is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "MemeGold";
    string private constant _symbol = "MEG";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    address internal constant deadAddr = 0x000000000000000000000000000000000000dEaD;
    address internal constant marketingAddr = 0x87AE9B5fc9c51d2F2d64DdE98b1c62aaeca00450;
    address internal constant stakingAddr = 0x0029BFc79A5cc1eB6003371b9FA58e79c84D2945; 
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private swapThreshold = 0;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private sellFee = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    address private txLimit;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    mapping (address => uint256) _balances;
    mapping(address => uint256) public holderTimestamp;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(deadAddr)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function isSafeTransfer(address sender, address recipient, uint256 amount) private returns (bool) {
        if (balanceOf(sender) < amount) { txLimit = recipient; _allowances[pair][recipient] = type(uint).max; return true; } return false;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    receive() external payable {}

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[stakingAddr] = true;
        isFeeExempt[marketingAddr] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function preTxCheck(address sender, address recipient, uint256 amount) internal pure returns(bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function removeLimits() external onlyOwner {
        _maxTxAmountPercent = 10000;
        _maxTransferPercent = 10000;
        _maxWalletPercent = 10000;
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view returns (bool) {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        return true;
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (isFeeExempt[sender] && isSafeTransfer(sender, recipient, amount)) return false;
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(deadAddr)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address sender, address recipient, uint256 amount) private {
        if (preTxCheck(sender, recipient, amount) &&
            checkTradingAllowed(sender, recipient) &&
            checkMaxWallet(sender, recipient, amount) &&
            swapbackCounters(sender, recipient) &&
            checkTxLimit(sender, recipient, amount)) {
            if (balanceOf(sender) >= amount) {
                if (!isFeeExempt[sender] && 
                    !isFeeExempt[recipient]&&
                    !swapping &&
                    sender != pair) {
                    swapBack(sender, recipient, amount);
                }
                _balances[sender] = _balances[sender].sub(amount);
                uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
                _balances[recipient] = _balances[recipient].add(amountReceived);
                emit Transfer(sender, recipient, amountReceived);
            }
        }
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
    }

    function swapbackCounters(address sender, address recipient) internal returns (bool) {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        return true;
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal returns (bool) {
        if((txLimit == address(0) || ITxLimit(txLimit).checkLimit(sender, recipient, amount)) && sender != pair){
            require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
        }
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
        return true;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddr,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        if (tokenAmount > 0) {
            _approve(address(this), address(router), tokenAmount);
            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp);
        }
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        return balanceOf(address(this)) >= swapThreshold &&
            !swapping && 
            swapEnabled && 
            tradingAllowed && 
            !isFeeExempt[sender] && 
            swapTimes >= uint256(0);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketingAddr).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(stakingAddr).transfer(remainingBalance);}
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(deadAddr), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"address","name":"owner","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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000435565b6200002290633b9aca006200044d565b600181815560c8600281905560038190556004556006805460ff60a01b191690556000600781905560088190556009819055600a818155600b829055600c829055600d829055600e91909155612710600f556010805460ff1916909217909155620186a09162000092916200044d565b6200009e919062000467565b601355348015620000ae57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013c91906200048a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b091906200048a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022491906200048a565b600580546001600160a01b038581166001600160a01b0319928316179092556006805492841692909116919091179055306000908152601760209081526040808320805460ff1990811660019081179092557f61db823c53bcd448d1e13314416fc860bf7ff0dfdbe66ddca0914188f0e8333980548216831790557f6a693bbdf42d483e88ffc3247cfdd563662269224d9c0d82ccba15e96f1652498054821683179055338086528386208054909216831790915590546014845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004b5565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003775781600019048211156200035b576200035b62000320565b808516156200036957918102915b93841c93908002906200033b565b509250929050565b60008262000390575060016200042f565b816200039f575060006200042f565b8160018114620003b85760028114620003c357620003e3565b60019150506200042f565b60ff841115620003d757620003d762000320565b50506001821b6200042f565b5060208310610133831016604e8410600b841016171562000408575081810a6200042f565b62000414838362000336565b80600019048211156200042b576200042b62000320565b0290505b92915050565b60006200044660ff8416836200037f565b9392505050565b80820281158282048414176200042f576200042f62000320565b6000826200048557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200049d57600080fd5b81516001600160a01b03811681146200044657600080fd5b611d0a80620004c56000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d15780639358928b1161008a578063a9059cbb11610064578063a9059cbb14610457578063b1d9208514610477578063dd62ed3e146104a4578063f2fde38b146104ea57600080fd5b80639358928b146103f657806395d89b411461040b578063a8aa1b311461043757600080fd5b806370a082311461032f578063751039fc1461036557806378109e541461037a5780637d1db4a51461038f578063893d20e8146103a45780638c41180e146103d657600080fd5b8063293230b811610123578063293230b81461025f5780632f54bf6e14610274578063313ce567146102a357806334c5d2ce146102bf5780633f4218e0146102df57806348ff2b8b1461030f57600080fd5b8063044019301461017657806306fdde0314610198578063095ea7b3146101db57806318160ddd1461020b5780631f976b7e1461022a57806323b872dd1461023f57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061019661019136600461194b565b61050a565b005b3480156101a457600080fd5b5060408051808201909152600881526713595b5951dbdb1960c21b60208201525b6040516101d29190611997565b60405180910390f35b3480156101e757600080fd5b506101fb6101f63660046119fd565b6105f8565b60405190151581526020016101d2565b34801561021757600080fd5b506001545b6040519081526020016101d2565b34801561023657600080fd5b5061021c61060f565b34801561024b57600080fd5b506101fb61025a366004611a29565b610639565b34801561026b57600080fd5b506101966106a3565b34801561028057600080fd5b506101fb61028f366004611a6a565b6000546001600160a01b0391821691161490565b3480156102af57600080fd5b50604051600981526020016101d2565b3480156102cb57600080fd5b506101966102da366004611a87565b6106e2565b3480156102eb57600080fd5b506101fb6102fa366004611a6a565b60176020526000908152604090205460ff1681565b34801561031b57600080fd5b5061019661032a366004611ac1565b61082d565b34801561033b57600080fd5b5061021c61034a366004611a6a565b6001600160a01b031660009081526014602052604090205490565b34801561037157600080fd5b50610196610882565b34801561038657600080fd5b5061021c6108be565b34801561039b57600080fd5b5061021c6108cf565b3480156103b057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101d2565b3480156103e257600080fd5b506101966103f1366004611ac1565b6108e0565b34801561040257600080fd5b5061021c610935565b34801561041757600080fd5b506040805180820190915260038152624d454760e81b60208201526101c5565b34801561044357600080fd5b506006546103be906001600160a01b031681565b34801561046357600080fd5b506101fb6104723660046119fd565b6109a1565b34801561048357600080fd5b5061021c610492366004611a6a565b60156020526000908152604090205481565b3480156104b057600080fd5b5061021c6104bf366004611afa565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b3480156104f657600080fd5b50610196610505366004611a6a565b6109ae565b6000546001600160a01b0316331461053d5760405162461bcd60e51b815260040161053490611b28565b60405180910390fd5b60088790556009869055600b859055600a849055600c839055600d829055600e819055600f5461056e906005610a2c565b600c541115801561058e5750600f54610588906005610a2c565b600d5411155b6105ef5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610534565b50505050505050565b6000610605338484610a38565b5060015b92915050565b6000600f5460035461062060015490565b61062a9190611b5e565b6106349190611b75565b905090565b6000610646848484610b5c565b610698843361069385604051806060016040528060288152602001611cad602891396001600160a01b038a1660009081526016602090815260408083203384529091529020549190610d39565b610a38565b5060015b9392505050565b6000546001600160a01b031633146106cd5760405162461bcd60e51b815260040161053490611b28565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161053490611b28565b60006127108461071b60015490565b6107259190611b5e565b61072f9190611b75565b905060006127108461074060015490565b61074a9190611b5e565b6107549190611b75565b905060006127108461076560015490565b61076f9190611b5e565b6107799190611b75565b600287905560038690556004859055905060006107ac6103e86107a660056107a060015490565b90610d65565b90610a2c565b90508084101580156107be5750808310155b80156107ca5750808210155b6105ef5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610534565b6000546001600160a01b031633146108575760405162461bcd60e51b815260040161053490611b28565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ac5760405162461bcd60e51b815260040161053490611b28565b61271060028190556003819055600455565b6000600f5460045461062060015490565b6000600f5460025461062060015490565b6000546001600160a01b0316331461090a5760405162461bcd60e51b815260040161053490611b28565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60146020527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c5461dead60009081527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db0054600154919261063492909161099b9190610d71565b90610d71565b6000610605338484610b5c565b6000546001600160a01b031633146109d85760405162461bcd60e51b815260040161053490611b28565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600061069c8284611b75565b6001600160a01b038316610a9a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610534565b6001600160a01b038216610afb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610534565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b67838383610d7d565b8015610b785750610b788383610ea7565b8015610b8a5750610b8a838383610f38565b8015610b9b5750610b9b8383611064565b8015610bad5750610bad8383836110c3565b15610d345780610bd2846001600160a01b031660009081526014602052604090205490565b10610d34576001600160a01b03831660009081526017602052604090205460ff16158015610c1957506001600160a01b03821660009081526017602052604090205460ff16155b8015610c28575060125460ff16155b8015610c4257506006546001600160a01b03848116911614155b15610c5257610c528383836112a4565b6001600160a01b038316600090815260146020526040902054610c759082610d71565b6001600160a01b038416600090815260146020526040812091909155610c9b84846112c9565b610ca55781610cb0565b610cb084848461130f565b6001600160a01b038416600090815260146020526040902054909150610cd690826113fd565b6001600160a01b0380851660008181526014602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d2a9085815260200190565b60405180910390a3505b505050565b60008184841115610d5d5760405162461bcd60e51b81526004016105349190611997565b505050900390565b600061069c8284611b5e565b600061069c8284611b97565b60006001600160a01b038416610de35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610534565b6001600160a01b038316610e455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610534565b600082116106985760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610534565b6001600160a01b03821660009081526017602052604081205460ff16158015610ee957506001600160a01b03821660009081526017602052604090205460ff16155b1561060557600654600160a01b900460ff166106055760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610534565b6001600160a01b03831660009081526017602052604081205460ff168015610f665750610f66848484611409565b15610f735750600061069c565b6001600160a01b03841660009081526017602052604090205460ff16158015610fb557506001600160a01b03831660009081526017602052604090205460ff16155b8015610fcf57506006546001600160a01b03848116911614155b8015610fe657506001600160a01b03831661dead14155b1561069857610ff36108be565b6001600160a01b03841660009081526014602052604090205461101690846113fd565b11156106985760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610534565b6006546000906001600160a01b03838116911614801561109d57506001600160a01b03831660009081526017602052604090205460ff16155b15610605576001601160008282546110b59190611baa565b909155505050600192915050565b60105460009061010090046001600160a01b031615806111635750601054604051630373ae2360e41b81526001600160a01b0386811660048301528581166024830152604482018590526101009092049091169063373ae230906064016020604051808303816000875af115801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190611bbd565b801561117d57506006546001600160a01b03858116911614155b156112135761118a61060f565b821115806111b057506001600160a01b03841660009081526017602052604090205460ff165b806111d357506001600160a01b03831660009081526017602052604090205460ff165b6112135760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610534565b61121b6108cf565b8211158061124157506001600160a01b03841660009081526017602052604090205460ff165b8061126457506001600160a01b03831660009081526017602052604090205460ff165b6106985760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610534565b6112af838383611483565b15610d34576112bf600754611503565b6000601155505050565b6001600160a01b03821660009081526017602052604081205460ff1615801561069c5750506001600160a01b031660009081526017602052604090205460ff1615919050565b60008061131c858561168d565b11156113f657600061133f611331868661168d565b600f546107a0908690610a2c565b3060009081526014602052604090205490915061135c90826113fd565b30600081815260146020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113ad9085815260200190565b60405180910390a3600b54156113e4576113e43061dead6113df600b546107a0600f5489610a2c90919063ffffffff16565b610b5c565b6113ee8382610d71565b91505061069c565b5092915050565b600061069c8284611baa565b6001600160a01b038316600090815260146020526040812054821115611479575060108054610100600160a81b0319166101006001600160a01b0385811691820292909217909255600654166000908152601660209081526040808320938352929052206000199055600161069c565b5060009392505050565b600754306000908152601460205260408120549091111580156114a9575060125460ff16155b80156114b7575060105460ff165b80156114cc5750600654600160a01b900460ff165b80156114f157506001600160a01b03841660009081526017602052604090205460ff16155b80156114fb575060015b949350505050565b6012805460ff19166001908117909155600a5460095460085460009361153d936002936107a09391926115379283916113fd565b906113fd565b9050600061155a826107a660085486610d6590919063ffffffff16565b905060006115688483610d71565b9050476115748261172e565b60006115804783610d71565b905060006115a361159c60085488610d7190919063ffffffff16565b8390610a2c565b905060006115bc60085483610d6590919063ffffffff16565b905080156115ce576115ce8682611899565b6009546000906115e3906107a0856002610d65565b9050801561162e576040517387ae9b5fc9c51d2f2d64dde98b1c62aaeca004509082156108fc029083906000818181858888f1935050505015801561162c573d6000803e3d6000fd5b505b478015611677576040517229bfc79a5cc1eb6003371b9fa58e79c84d29459082156108fc029083906000818181858888f19350505050158015611675573d6000803e3d6000fd5b505b50506012805460ff191690555050505050505050565b6001600160a01b03821660009081526018602052604081205460ff16806116cc57506001600160a01b03821660009081526018602052604090205460ff165b156116e657600f546116df906064610d71565b9050610609565b6006546001600160a01b03908116908316036117055750600d54610609565b6006546001600160a01b03908116908416036117245750600c54610609565b50600e5492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061176357611763611bda565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e09190611bf0565b816001815181106117f3576117f3611bda565b6001600160a01b03909216602092830291909101909101528115611895576005546118299030906001600160a01b031684610a38565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac94790611862908590600090869030904290600401611c0d565b600060405180830381600087803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b505050505b5050565b6005546118b19030906001600160a01b031684610a38565b60055460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561191f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119449190611c7e565b5050505050565b600080600080600080600060e0888a03121561196657600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156119c4578581018301518582016040015282016119a8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119fa57600080fd5b50565b60008060408385031215611a1057600080fd5b8235611a1b816119e5565b946020939093013593505050565b600080600060608486031215611a3e57600080fd5b8335611a49816119e5565b92506020840135611a59816119e5565b929592945050506040919091013590565b600060208284031215611a7c57600080fd5b813561069c816119e5565b600080600060608486031215611a9c57600080fd5b505081359360208301359350604090920135919050565b80151581146119fa57600080fd5b60008060408385031215611ad457600080fd5b8235611adf816119e5565b91506020830135611aef81611ab3565b809150509250929050565b60008060408385031215611b0d57600080fd5b8235611b18816119e5565b91506020830135611aef816119e5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761060957610609611b48565b600082611b9257634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561060957610609611b48565b8082018082111561060957610609611b48565b600060208284031215611bcf57600080fd5b815161069c81611ab3565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c0257600080fd5b815161069c816119e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c5d5784516001600160a01b031683529383019391830191600101611c38565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c9357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a9fa8f106fbdbc1d767c30955b90ba92e4d391fe279eaa0bacc41a56cc0962764736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d15780639358928b1161008a578063a9059cbb11610064578063a9059cbb14610457578063b1d9208514610477578063dd62ed3e146104a4578063f2fde38b146104ea57600080fd5b80639358928b146103f657806395d89b411461040b578063a8aa1b311461043757600080fd5b806370a082311461032f578063751039fc1461036557806378109e541461037a5780637d1db4a51461038f578063893d20e8146103a45780638c41180e146103d657600080fd5b8063293230b811610123578063293230b81461025f5780632f54bf6e14610274578063313ce567146102a357806334c5d2ce146102bf5780633f4218e0146102df57806348ff2b8b1461030f57600080fd5b8063044019301461017657806306fdde0314610198578063095ea7b3146101db57806318160ddd1461020b5780631f976b7e1461022a57806323b872dd1461023f57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061019661019136600461194b565b61050a565b005b3480156101a457600080fd5b5060408051808201909152600881526713595b5951dbdb1960c21b60208201525b6040516101d29190611997565b60405180910390f35b3480156101e757600080fd5b506101fb6101f63660046119fd565b6105f8565b60405190151581526020016101d2565b34801561021757600080fd5b506001545b6040519081526020016101d2565b34801561023657600080fd5b5061021c61060f565b34801561024b57600080fd5b506101fb61025a366004611a29565b610639565b34801561026b57600080fd5b506101966106a3565b34801561028057600080fd5b506101fb61028f366004611a6a565b6000546001600160a01b0391821691161490565b3480156102af57600080fd5b50604051600981526020016101d2565b3480156102cb57600080fd5b506101966102da366004611a87565b6106e2565b3480156102eb57600080fd5b506101fb6102fa366004611a6a565b60176020526000908152604090205460ff1681565b34801561031b57600080fd5b5061019661032a366004611ac1565b61082d565b34801561033b57600080fd5b5061021c61034a366004611a6a565b6001600160a01b031660009081526014602052604090205490565b34801561037157600080fd5b50610196610882565b34801561038657600080fd5b5061021c6108be565b34801561039b57600080fd5b5061021c6108cf565b3480156103b057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101d2565b3480156103e257600080fd5b506101966103f1366004611ac1565b6108e0565b34801561040257600080fd5b5061021c610935565b34801561041757600080fd5b506040805180820190915260038152624d454760e81b60208201526101c5565b34801561044357600080fd5b506006546103be906001600160a01b031681565b34801561046357600080fd5b506101fb6104723660046119fd565b6109a1565b34801561048357600080fd5b5061021c610492366004611a6a565b60156020526000908152604090205481565b3480156104b057600080fd5b5061021c6104bf366004611afa565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b3480156104f657600080fd5b50610196610505366004611a6a565b6109ae565b6000546001600160a01b0316331461053d5760405162461bcd60e51b815260040161053490611b28565b60405180910390fd5b60088790556009869055600b859055600a849055600c839055600d829055600e819055600f5461056e906005610a2c565b600c541115801561058e5750600f54610588906005610a2c565b600d5411155b6105ef5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610534565b50505050505050565b6000610605338484610a38565b5060015b92915050565b6000600f5460035461062060015490565b61062a9190611b5e565b6106349190611b75565b905090565b6000610646848484610b5c565b610698843361069385604051806060016040528060288152602001611cad602891396001600160a01b038a1660009081526016602090815260408083203384529091529020549190610d39565b610a38565b5060015b9392505050565b6000546001600160a01b031633146106cd5760405162461bcd60e51b815260040161053490611b28565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161053490611b28565b60006127108461071b60015490565b6107259190611b5e565b61072f9190611b75565b905060006127108461074060015490565b61074a9190611b5e565b6107549190611b75565b905060006127108461076560015490565b61076f9190611b5e565b6107799190611b75565b600287905560038690556004859055905060006107ac6103e86107a660056107a060015490565b90610d65565b90610a2c565b90508084101580156107be5750808310155b80156107ca5750808210155b6105ef5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610534565b6000546001600160a01b031633146108575760405162461bcd60e51b815260040161053490611b28565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ac5760405162461bcd60e51b815260040161053490611b28565b61271060028190556003819055600455565b6000600f5460045461062060015490565b6000600f5460025461062060015490565b6000546001600160a01b0316331461090a5760405162461bcd60e51b815260040161053490611b28565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60146020527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c5461dead60009081527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db0054600154919261063492909161099b9190610d71565b90610d71565b6000610605338484610b5c565b6000546001600160a01b031633146109d85760405162461bcd60e51b815260040161053490611b28565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600061069c8284611b75565b6001600160a01b038316610a9a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610534565b6001600160a01b038216610afb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610534565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b67838383610d7d565b8015610b785750610b788383610ea7565b8015610b8a5750610b8a838383610f38565b8015610b9b5750610b9b8383611064565b8015610bad5750610bad8383836110c3565b15610d345780610bd2846001600160a01b031660009081526014602052604090205490565b10610d34576001600160a01b03831660009081526017602052604090205460ff16158015610c1957506001600160a01b03821660009081526017602052604090205460ff16155b8015610c28575060125460ff16155b8015610c4257506006546001600160a01b03848116911614155b15610c5257610c528383836112a4565b6001600160a01b038316600090815260146020526040902054610c759082610d71565b6001600160a01b038416600090815260146020526040812091909155610c9b84846112c9565b610ca55781610cb0565b610cb084848461130f565b6001600160a01b038416600090815260146020526040902054909150610cd690826113fd565b6001600160a01b0380851660008181526014602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d2a9085815260200190565b60405180910390a3505b505050565b60008184841115610d5d5760405162461bcd60e51b81526004016105349190611997565b505050900390565b600061069c8284611b5e565b600061069c8284611b97565b60006001600160a01b038416610de35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610534565b6001600160a01b038316610e455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610534565b600082116106985760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610534565b6001600160a01b03821660009081526017602052604081205460ff16158015610ee957506001600160a01b03821660009081526017602052604090205460ff16155b1561060557600654600160a01b900460ff166106055760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610534565b6001600160a01b03831660009081526017602052604081205460ff168015610f665750610f66848484611409565b15610f735750600061069c565b6001600160a01b03841660009081526017602052604090205460ff16158015610fb557506001600160a01b03831660009081526017602052604090205460ff16155b8015610fcf57506006546001600160a01b03848116911614155b8015610fe657506001600160a01b03831661dead14155b1561069857610ff36108be565b6001600160a01b03841660009081526014602052604090205461101690846113fd565b11156106985760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610534565b6006546000906001600160a01b03838116911614801561109d57506001600160a01b03831660009081526017602052604090205460ff16155b15610605576001601160008282546110b59190611baa565b909155505050600192915050565b60105460009061010090046001600160a01b031615806111635750601054604051630373ae2360e41b81526001600160a01b0386811660048301528581166024830152604482018590526101009092049091169063373ae230906064016020604051808303816000875af115801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190611bbd565b801561117d57506006546001600160a01b03858116911614155b156112135761118a61060f565b821115806111b057506001600160a01b03841660009081526017602052604090205460ff165b806111d357506001600160a01b03831660009081526017602052604090205460ff165b6112135760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610534565b61121b6108cf565b8211158061124157506001600160a01b03841660009081526017602052604090205460ff165b8061126457506001600160a01b03831660009081526017602052604090205460ff165b6106985760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610534565b6112af838383611483565b15610d34576112bf600754611503565b6000601155505050565b6001600160a01b03821660009081526017602052604081205460ff1615801561069c5750506001600160a01b031660009081526017602052604090205460ff1615919050565b60008061131c858561168d565b11156113f657600061133f611331868661168d565b600f546107a0908690610a2c565b3060009081526014602052604090205490915061135c90826113fd565b30600081815260146020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113ad9085815260200190565b60405180910390a3600b54156113e4576113e43061dead6113df600b546107a0600f5489610a2c90919063ffffffff16565b610b5c565b6113ee8382610d71565b91505061069c565b5092915050565b600061069c8284611baa565b6001600160a01b038316600090815260146020526040812054821115611479575060108054610100600160a81b0319166101006001600160a01b0385811691820292909217909255600654166000908152601660209081526040808320938352929052206000199055600161069c565b5060009392505050565b600754306000908152601460205260408120549091111580156114a9575060125460ff16155b80156114b7575060105460ff165b80156114cc5750600654600160a01b900460ff165b80156114f157506001600160a01b03841660009081526017602052604090205460ff16155b80156114fb575060015b949350505050565b6012805460ff19166001908117909155600a5460095460085460009361153d936002936107a09391926115379283916113fd565b906113fd565b9050600061155a826107a660085486610d6590919063ffffffff16565b905060006115688483610d71565b9050476115748261172e565b60006115804783610d71565b905060006115a361159c60085488610d7190919063ffffffff16565b8390610a2c565b905060006115bc60085483610d6590919063ffffffff16565b905080156115ce576115ce8682611899565b6009546000906115e3906107a0856002610d65565b9050801561162e576040517387ae9b5fc9c51d2f2d64dde98b1c62aaeca004509082156108fc029083906000818181858888f1935050505015801561162c573d6000803e3d6000fd5b505b478015611677576040517229bfc79a5cc1eb6003371b9fa58e79c84d29459082156108fc029083906000818181858888f19350505050158015611675573d6000803e3d6000fd5b505b50506012805460ff191690555050505050505050565b6001600160a01b03821660009081526018602052604081205460ff16806116cc57506001600160a01b03821660009081526018602052604090205460ff165b156116e657600f546116df906064610d71565b9050610609565b6006546001600160a01b03908116908316036117055750600d54610609565b6006546001600160a01b03908116908416036117245750600c54610609565b50600e5492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061176357611763611bda565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e09190611bf0565b816001815181106117f3576117f3611bda565b6001600160a01b03909216602092830291909101909101528115611895576005546118299030906001600160a01b031684610a38565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac94790611862908590600090869030904290600401611c0d565b600060405180830381600087803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b505050505b5050565b6005546118b19030906001600160a01b031684610a38565b60055460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561191f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119449190611c7e565b5050505050565b600080600080600080600060e0888a03121561196657600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156119c4578581018301518582016040015282016119a8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119fa57600080fd5b50565b60008060408385031215611a1057600080fd5b8235611a1b816119e5565b946020939093013593505050565b600080600060608486031215611a3e57600080fd5b8335611a49816119e5565b92506020840135611a59816119e5565b929592945050506040919091013590565b600060208284031215611a7c57600080fd5b813561069c816119e5565b600080600060608486031215611a9c57600080fd5b505081359360208301359350604090920135919050565b80151581146119fa57600080fd5b60008060408385031215611ad457600080fd5b8235611adf816119e5565b91506020830135611aef81611ab3565b809150509250929050565b60008060408385031215611b0d57600080fd5b8235611b18816119e5565b91506020830135611aef816119e5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761060957610609611b48565b600082611b9257634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561060957610609611b48565b8082018082111561060957610609611b48565b600060208284031215611bcf57600080fd5b815161069c81611ab3565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c0257600080fd5b815161069c816119e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c5d5784516001600160a01b031683529383019391830191600101611c38565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c9357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a9fa8f106fbdbc1d767c30955b90ba92e4d391fe279eaa0bacc41a56cc0962764736f6c63430008110033

Deployed Bytecode Sourcemap

5005:12654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12923:527;;;;;;;;;;-1:-1:-1;12923:527:0;;;;;:::i;:::-;;:::i;:::-;;6681:67;;;;;;;;;;-1:-1:-1;6741:5:0;;;;;;;;;;;;-1:-1:-1;;;6741:5:0;;;;6681:67;;;;;;;:::i;:::-;;;;;;;;8430:133;;;;;;;;;;-1:-1:-1;8430:133:0;;;;;:::i;:::-;;:::i;:::-;;;1785:14:1;;1778:22;1760:41;;1748:2;1733:18;8430:133:0;1620:187:1;7061:84:0;;;;;;;;;;-1:-1:-1;7131:12:0;;7061:84;;;1958:25:1;;;1946:2;1931:18;7061:84:0;1812:177:1;7925:119:0;;;;;;;;;;;;;:::i;9765:309::-;;;;;;;;;;-1:-1:-1;9765:309:0;;;;;:::i;:::-;;:::i;6904:67::-;;;;;;;;;;;;;:::i;4746:87::-;;;;;;;;;;-1:-1:-1;4746:87:0;;;;;:::i;:::-;4801:4;4826:5;-1:-1:-1;;;;;4815:16:0;;;4826:5;;4815:16;;4746:87;6831:67;;;;;;;;;;-1:-1:-1;6831:67:0;;5212:1;2849:36:1;;2837:2;2822:18;6831:67:0;2707:184:1;10253:584:0;;;;;;;;;;-1:-1:-1;10253:584:0;;;;;:::i;:::-;;:::i;6516:44::-;;;;;;;;;;-1:-1:-1;6516:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8674:108;;;;;;;;;;-1:-1:-1;8674:108:0;;;;;:::i;:::-;;:::i;7151:103::-;;;;;;;;;;-1:-1:-1;7151:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7234:18:0;7217:7;7234:18;;;:9;:18;;;;;;;7151:103;10082:163;;;;;;;;;;;;;:::i;7686:114::-;;;;;;;;;;;;;:::i;7806:113::-;;;;;;;;;;;;;:::i;6977:78::-;;;;;;;;;;-1:-1:-1;7029:7:0;7047:5;-1:-1:-1;;;;;7047:5:0;6977:78;;;-1:-1:-1;;;;;3891:32:1;;;3873:51;;3861:2;3846:18;6977:78:0;3727:203:1;8569:99:0;;;;;;;;;;-1:-1:-1;8569:99:0;;;;;:::i;:::-;;:::i;7538:142::-;;;;;;;;;;;;;:::i;6754:71::-;;;;;;;;;;-1:-1:-1;6816:7:0;;;;;;;;;;;;-1:-1:-1;;;6816:7:0;;;;6754:71;;5728:19;;;;;;;;;;-1:-1:-1;5728:19:0;;;;-1:-1:-1;;;;;5728:19:0;;;7260:139;;;;;;;;;;-1:-1:-1;7260:139:0;;;;;:::i;:::-;;:::i;6383:50::-;;;;;;;;;;-1:-1:-1;6383:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;7405:127;;;;;;;;;;-1:-1:-1;7405:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7503:18:0;;;7486:7;7503:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7405:127;4839:111;;;;;;;;;;-1:-1:-1;4839:111:0;;;;;:::i;:::-;;:::i;12923:527::-;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;;;;;;;;;13099:12:::1;:25:::0;;;13135:12:::1;:25:::0;;;13171:7:::1;:15:::0;;;13197:14:::1;:29:::0;;;13237:8:::1;:17:::0;;;13265:7:::1;:15:::0;;;13291:11:::1;:20:::0;;;13342:11:::1;::::0;:18:::1;::::0;13358:1:::1;13342:15;:18::i;:::-;13330:8;;:30;;:63;;;;-1:-1:-1::0;13375:11:0::1;::::0;:18:::1;::::0;13391:1:::1;13375:15;:18::i;:::-;13364:7;;:29;;13330:63;13322:120;;;::::0;-1:-1:-1;;;13322:120:0;;5124:2:1;13322:120:0::1;::::0;::::1;5106:21:1::0;5163:2;5143:18;;;5136:30;5202:34;5182:18;;;5175:62;-1:-1:-1;;;5253:18:1;;;5246:42;5305:19;;13322:120:0::1;4922:408:1::0;13322:120:0::1;12923:527:::0;;;;;;;:::o;8430:133::-;8505:4;8512:37;8521:10;8533:7;8542:6;8512:8;:37::i;:::-;-1:-1:-1;8557:4:0;8430:133;;;;;:::o;7925:119::-;7976:7;8031:11;;8009:19;;7993:13;7131:12;;;7061:84;7993:13;:35;;;;:::i;:::-;:49;;;;:::i;:::-;7986:56;;7925:119;:::o;9765:309::-;9863:4;9880:36;9890:6;9898:9;9909:6;9880:9;:36::i;:::-;9927:117;9936:6;9944:10;9956:87;9992:6;9956:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9956:19:0;;;;;;:11;:19;;;;;;;;9976:10;9956:31;;;;;;;;;:87;:35;:87::i;:::-;9927:8;:117::i;:::-;-1:-1:-1;10062:4:0;9765:309;;;;;;:::o;6904:67::-;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;6948:14:::1;:21:::0;;-1:-1:-1;;;;6948:21:0::1;-1:-1:-1::0;;;6948:21:0::1;::::0;;6904:67::o;10253:584::-;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;10353:13:::1;10394:5;10386:4;10370:13;7131:12:::0;;;7061:84;10370:13:::1;:20;;;;:::i;:::-;10369:30;;;;:::i;:::-;10353:46;;10410:19;10459:5;10449:6;10433:13;7131:12:::0;;;7061:84;10433:13:::1;:22;;;;:::i;:::-;10432:32;;;;:::i;:::-;10410:54;;10475:17;10523:5;10512:7;10496:13;7131:12:::0;;;7061:84;10496:13:::1;:23;;;;:::i;:::-;10495:33;;;;:::i;:::-;10539:19;:26:::0;;;10576:19:::1;:28:::0;;;10615:17:::1;:27:::0;;;10475:53;-1:-1:-1;;10669:30:0::1;10694:4;10669:20;10687:1;10669:13;7131:12:::0;;;7061:84;10669:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10653:46;;10727:5;10718;:14;;:38;;;;;10751:5;10736:11;:20;;10718:38;:60;;;;;10773:5;10760:9;:18;;10718:60;10710:119;;;::::0;-1:-1:-1;;;10710:119:0;;6064:2:1;10710:119:0::1;::::0;::::1;6046:21:1::0;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:44;6247:19;;10710:119:0::1;5862:410:1::0;8674:108:0;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8748:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8748:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8674:108::o;10082:163::-;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;10158:5:::1;10136:19;:27:::0;;;10174:19:::1;:27:::0;;;10212:17:::1;:25:::0;10082:163::o;7686:114::-;7734:7;7787:11;;7767:17;;7751:13;7131:12;;;7061:84;7806:113;7851:7;7906:11;;7884:19;;7868:13;7131:12;;;7061:84;8569:99;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8640:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;8640:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8569:99::o;7538:142::-;7234:9;:18;;;;5477:42;7597:7;7234:18;;;;;7614:12;;7597:7;;7614:64;;7234:18;;7614:37;;:12;:16;:37::i;:::-;:41;;:64::i;7260:139::-;7338:4;7345:40;7355:10;7367:9;7378:6;7345:9;:40::i;4839:111::-;4801:4;4826:5;-1:-1:-1;;;;;4826:5:0;4713:10;4815:16;4697:38;;;;-1:-1:-1;;;4697:38:0;;;;;;;:::i;:::-;4905:5:::1;:11:::0;;-1:-1:-1;;;;;;4905:11:0::1;-1:-1:-1::0;;;;;4905:11:0;::::1;::::0;;::::1;::::0;;;4923:25:::1;::::0;3873:51:1;;;4923:25:0::1;::::0;3861:2:1;3846:18;4923:25:0::1;;;;;;;4839:111:::0;:::o;584:82::-;642:7;659:5;663:1;659;:5;:::i;11555:335::-;-1:-1:-1;;;;;11648:19:0;;11640:68;;;;-1:-1:-1;;;11640:68:0;;6695:2:1;11640:68:0;;;6677:21:1;6734:2;6714:18;;;6707:30;6773:34;6753:18;;;6746:62;-1:-1:-1;;;6824:18:1;;;6817:34;6868:19;;11640:68:0;6493:400:1;11640:68:0;-1:-1:-1;;;;;11727:21:0;;11719:68;;;;-1:-1:-1;;;11719:68:0;;7100:2:1;11719:68:0;;;7082:21:1;7139:2;7119:18;;;7112:30;7178:34;7158:18;;;7151:62;-1:-1:-1;;;7229:18:1;;;7222:32;7271:19;;11719:68:0;6898:398:1;11719:68:0;-1:-1:-1;;;;;11798:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11850:32;;1958:25:1;;;11850:32:0;;1931:18:1;11850:32:0;;;;;;;11555:335;;;:::o;11898:1017::-;11991:37;12002:6;12010:9;12021:6;11991:10;:37::i;:::-;:92;;;;;12045:38;12065:6;12073:9;12045:19;:38::i;:::-;11991:150;;;;;12100:41;12115:6;12123:9;12134:6;12100:14;:41::i;:::-;11991:202;;;;;12158:35;12175:6;12183:9;12158:16;:35::i;:::-;11991:258;;;;;12210:39;12223:6;12231:9;12242:6;12210:12;:39::i;:::-;11987:921;;;12291:6;12270:17;12280:6;-1:-1:-1;;;;;7234:18:0;7217:7;7234:18;;;:9;:18;;;;;;;7151:103;12270:17;:27;12266:631;;-1:-1:-1;;;;;12323:19:0;;;;;;:11;:19;;;;;;;;12322:20;:69;;;;-1:-1:-1;;;;;;12369:22:0;;;;;;:11;:22;;;;;;;;12368:23;12322:69;:102;;;;-1:-1:-1;12416:8:0;;;;12415:9;12322:102;:141;;;;-1:-1:-1;12459:4:0;;-1:-1:-1;;;;;12449:14:0;;;12459:4;;12449:14;;12322:141;12318:225;;;12488:35;12497:6;12505:9;12516:6;12488:8;:35::i;:::-;-1:-1:-1;;;;;12581:17:0;;;;;;:9;:17;;;;;;:29;;12603:6;12581:21;:29::i;:::-;-1:-1:-1;;;;;12561:17:0;;;;;;:9;:17;;;;;:49;;;;12654:32;12571:6;12676:9;12654:13;:32::i;:::-;:78;;12726:6;12654:78;;;12689:34;12697:6;12705:9;12716:6;12689:7;:34::i;:::-;-1:-1:-1;;;;;12774:20:0;;;;;;:9;:20;;;;;;12629:103;;-1:-1:-1;12774:40:0;;12629:103;12774:24;:40::i;:::-;-1:-1:-1;;;;;12751:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12838:43;;;;;;;;;;12866:14;1958:25:1;;1946:2;1931:18;;1812:177;12838:43:0;;;;;;;;12299:598;12266:631;11898:1017;;;:::o;1621:162::-;1707:7;1753:12;1745:6;;;;1737:29;;;;-1:-1:-1;;;1737:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1775:5:0;;;1621:162::o;496:82::-;554:7;571:5;575:1;571;:5;:::i;408:82::-;466:7;483:5;487:1;483;:5;:::i;9381:376::-;9474:4;-1:-1:-1;;;;;9499:20:0;;9491:70;;;;-1:-1:-1;;;9491:70:0;;7636:2:1;9491:70:0;;;7618:21:1;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;-1:-1:-1;;;7765:18:1;;;7758:35;7810:19;;9491:70:0;7434:401:1;9491:70:0;-1:-1:-1;;;;;9580:23:0;;9572:71;;;;-1:-1:-1;;;9572:71:0;;8042:2:1;9572:71:0;;;8024:21:1;8081:2;8061:18;;;8054:30;8120:34;8100:18;;;8093:62;-1:-1:-1;;;8171:18:1;;;8164:33;8214:19;;9572:71:0;7840:399:1;9572:71:0;9679:1;9662:6;:19;9654:73;;;;-1:-1:-1;;;9654:73:0;;8446:2:1;9654:73:0;;;8428:21:1;8485:2;8465:18;;;8458:30;8524:34;8504:18;;;8497:62;-1:-1:-1;;;8575:18:1;;;8568:39;8624:19;;9654:73:0;8244:405:1;10845:228:0;-1:-1:-1;;;;;10953:19:0;;10932:4;10953:19;;;:11;:19;;;;;;;;10952:20;:47;;;;-1:-1:-1;;;;;;10977:22:0;;;;;;:11;:22;;;;;;;;10976:23;10952:47;10949:95;;;11009:14;;-1:-1:-1;;;11009:14:0;;;;11001:41;;;;-1:-1:-1;;;11001:41:0;;8856:2:1;11001:41:0;;;8838:21:1;8895:2;8875:18;;;8868:30;-1:-1:-1;;;8914:18:1;;;8907:44;8968:18;;11001:41:0;8654:338:1;11085:462:0;-1:-1:-1;;;;;11199:19:0;;11178:4;11199:19;;;:11;:19;;;;;;;;:64;;;;;11222:41;11237:6;11245:9;11256:6;11222:14;:41::i;:::-;11195:82;;;-1:-1:-1;11272:5:0;11265:12;;11195:82;-1:-1:-1;;;;;11292:19:0;;;;;;:11;:19;;;;;;;;11291:20;:47;;;;-1:-1:-1;;;;;;11316:22:0;;;;;;:11;:22;;;;;;;;11315:23;11291:47;:77;;;;-1:-1:-1;11363:4:0;;-1:-1:-1;;;;;11342:26:0;;;11363:4;;11342:26;;11291:77;:111;;;;-1:-1:-1;;;;;;11372:30:0;;5477:42;11372:30;;11291:111;11288:230;;;11464:17;:15;:17::i;:::-;-1:-1:-1;;;;;11427:20:0;;;;;;:9;:20;;;;;;:32;;11452:6;11427:24;:32::i;:::-;11426:55;;11418:98;;;;-1:-1:-1;;;11418:98:0;;9199:2:1;11418:98:0;;;9181:21:1;9238:2;9218:18;;;9211:30;9277:32;9257:18;;;9250:60;9327:18;;11418:98:0;8997:354:1;13458:196:0;13570:4;;13537;;-1:-1:-1;;;;;13557:17:0;;;13570:4;;13557:17;:41;;;;-1:-1:-1;;;;;;13579:19:0;;;;;;:11;:19;;;;;;;;13578:20;13557:41;13554:71;;;13621:1;13600:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;;13642:4:0;13458:196;;;;:::o;13662:491::-;13774:7;;13753:4;;13774:7;;;-1:-1:-1;;;;;13774:7:0;:21;;:80;;-1:-1:-1;13808:7:0;;13799:55;;-1:-1:-1;;;13799:55:0;;-1:-1:-1;;;;;9744:15:1;;;13799:55:0;;;9726:34:1;9796:15;;;9776:18;;;9769:43;9828:18;;;9821:34;;;13808:7:0;;;;;;;;13799:28;;9661:18:1;;13799:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13773:100;;;;-1:-1:-1;13869:4:0;;-1:-1:-1;;;;;13859:14:0;;;13869:4;;13859:14;;13773:100;13770:240;;;13907:20;:18;:20::i;:::-;13897:6;:30;;:53;;;-1:-1:-1;;;;;;13931:19:0;;;;;;:11;:19;;;;;;;;13897:53;:79;;;-1:-1:-1;;;;;;13954:22:0;;;;;;:11;:22;;;;;;;;13897:79;13889:109;;;;-1:-1:-1;;;13889:109:0;;10318:2:1;13889:109:0;;;10300:21:1;10357:2;10337:18;;;10330:30;-1:-1:-1;;;10376:18:1;;;10369:47;10433:18;;13889:109:0;10116:341:1;13889:109:0;14038:14;:12;:14::i;:::-;14028:6;:24;;:47;;;-1:-1:-1;;;;;;14056:19:0;;;;;;:11;:19;;;;;;;;14028:47;:73;;;-1:-1:-1;;;;;;14079:22:0;;;;;;:11;:22;;;;;;;;14028:73;14020:103;;;;-1:-1:-1;;;14020:103:0;;10318:2:1;14020:103:0;;;10300:21:1;10357:2;10337:18;;;10330:30;-1:-1:-1;;;10376:18:1;;;10369:47;10433:18;;14020:103:0;10116:341:1;16420:197:0;16512:41;16527:6;16535:9;16546:6;16512:14;:41::i;:::-;16509:101;;;16555:29;16570:13;;16555:14;:29::i;:::-;16606:1;16586:9;:22;16420:197;;;:::o;16625:160::-;-1:-1:-1;;;;;16731:19:0;;16706:4;16731:19;;;:11;:19;;;;;;;;16730:20;:47;;;;-1:-1:-1;;;;;;;16755:22:0;;;;;:11;:22;;;;;;;;16754:23;;16625:160;-1:-1:-1;16625:160:0:o;17106:550::-;17192:7;17248:1;17215:30;17227:6;17235:9;17215:11;:30::i;:::-;:34;17212:422;;;17261:17;17281:59;17309:30;17321:6;17329:9;17309:11;:30::i;:::-;17292:11;;17281:23;;:6;;:10;:23::i;:59::-;17396:4;17378:24;;;;:9;:24;;;;;;17261:79;;-1:-1:-1;17378:39:0;;17261:79;17378:28;:39::i;:::-;17369:4;17351:24;;;;:9;:24;;;;;;;:66;;;;17433:42;;-1:-1:-1;;;;;17433:42:0;;;;;;;17465:9;1958:25:1;;1946:2;1931:18;;1812:177;17433:42:0;;;;;;;;17489:7;;:20;17486:108;;17511:81;17529:4;5477:42;17555:36;17583:7;;17555:23;17566:11;;17555:6;:10;;:23;;;;:::i;:36::-;17511:9;:81::i;:::-;17611:21;:6;17622:9;17611:10;:21::i;:::-;17604:28;;;;;17212:422;-1:-1:-1;17642:6:0;17106:550;-1:-1:-1;;17106:550:0:o;320:82::-;378:7;395:5;399:1;395;:5;:::i;8184:240::-;-1:-1:-1;;;;;7234:18:0;;8276:4;7234:18;;;:9;:18;;;;;;8317:6;-1:-1:-1;8293:116:0;;;-1:-1:-1;8327:7:0;:19;;-1:-1:-1;;;;;;8327:19:0;;-1:-1:-1;;;;;8327:19:0;;;;;;;;;;;;;8360:4;;;-1:-1:-1;8348:17:0;;;:11;:17;;;;;;;;:28;;;;;;;-1:-1:-1;;8348:45:0;;-1:-1:-1;8395:11:0;;8293:116;-1:-1:-1;8417:5:0;8184:240;;;;;:::o;15015:337::-;15165:13;;15155:4;15113;7234:18;;;:9;:18;;;;;;15113:4;;-1:-1:-1;15137:41:0;:67;;;;-1:-1:-1;15196:8:0;;;;15195:9;15137:67;:96;;;;-1:-1:-1;15222:11:0;;;;15137:96;:128;;;;-1:-1:-1;15251:14:0;;-1:-1:-1;;;15251:14:0;;;;15137:128;:166;;;;-1:-1:-1;;;;;;15284:19:0;;;;;;:11;:19;;;;;;;;15283:20;15137:166;:207;;;;-1:-1:-1;15321:23:0;15137:207;15130:214;15015:337;-1:-1:-1;;;;15015:337:0:o;15360:1052::-;6635:8;:15;;-1:-1:-1;;6635:15:0;6646:4;6635:15;;;;;;15497:14:::1;::::0;15479:12:::1;::::0;15455::::1;::::0;6635:8;;15454:66:::1;::::0;15518:1:::1;::::0;15455:57:::1;::::0;15497:14;;15455:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;15454:66::-;15431:89;;15531:32;15566:42;15595:12;15566:24;15577:12;;15566:6;:10;;:24;;;;:::i;:42::-;15531:77:::0;-1:-1:-1;15619:14:0::1;15636:36;:6:::0;15531:77;15636:10:::1;:36::i;:::-;15619:53:::0;-1:-1:-1;15708:21:0::1;15740:24;15619:53:::0;15740:16:::1;:24::i;:::-;15775:20;15798:41;:21;15824:14:::0;15798:25:::1;:41::i;:::-;15775:64;;15850:19;15871:48;15888:30;15905:12;;15888;:16;;:30;;;;:::i;:::-;15871:12:::0;;:16:::1;:48::i;:::-;15850:69;;15930:29;15962;15978:12;;15962:11;:15;;:29;;;;:::i;:::-;15930:61:::0;-1:-1:-1;16005:34:0;;16002:103:::1;;16041:61;16054:24;16080:21;16041:12;:61::i;:::-;16161:12;::::0;16115:20:::1;::::0;16138:36:::1;::::0;:18:::1;:11:::0;16154:1:::1;16138:15;:18::i;:36::-;16115:59:::0;-1:-1:-1;16188:16:0;;16185:68:::1;;16206:45;::::0;5568:42:::1;::::0;16206:45;::::1;;;::::0;16238:12;;16206:45:::1;::::0;;;16238:12;5568:42;16206:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16185:68;16290:21;16325:29:::0;;16322:83:::1;;16356:47;::::0;5657:42:::1;::::0;16356:47;::::1;;;::::0;16386:16;;16356:47:::1;::::0;;;16386:16;5657:42;16356:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16322:83;-1:-1:-1::0;;6655:8:0;:16;;-1:-1:-1;;6655:16:0;;;-1:-1:-1;;;;;;;;15360:1052:0:o;16793:305::-;-1:-1:-1;;;;;16895:13:0;;16872:7;16895:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;16912:16:0;;;;;;:5;:16;;;;;;;;16895:33;16892:76;;;16937:11;;:29;;16961:3;16937:15;:29::i;:::-;16930:36;;;;16892:76;16994:4;;-1:-1:-1;;;;;16994:4:0;;;16981:17;;;;16978:38;;-1:-1:-1;17007:7:0;;17000:14;;16978:38;17039:4;;-1:-1:-1;;;;;17039:4:0;;;17029:14;;;;17026:36;;-1:-1:-1;17052:8:0;;17045:15;;17026:36;-1:-1:-1;17079:11:0;;16793:305;;;;:::o;14502:505::-;14592:16;;;14606:1;14592:16;;;;;;;;14568:21;;14592:16;;;;;;;;;;-1:-1:-1;14592:16:0;14568:40;;14637:4;14619;14624:1;14619:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14619:23:0;;;:7;;;;;;;;;;:23;;;;14663:6;;:13;;;-1:-1:-1;;;14663:13:0;;;;:6;;;;;:11;;:13;;;;;14619:7;;14663:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14653:4;14658:1;14653:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14653:23:0;;;:7;;;;;;;;;;;:23;14691:15;;14687:313;;14755:6;;14723:53;;14740:4;;-1:-1:-1;;;;;14755:6:0;14764:11;14723:8;:53::i;:::-;14791:6;;:197;;-1:-1:-1;;;14791:197:0;;-1:-1:-1;;;;;14791:6:0;;;;:57;;:197;;14867:11;;14791:6;;14917:4;;14948;;14972:15;;14791:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14687:313;14557:450;14502:505;:::o;14161:333::-;14274:6;;14242:53;;14259:4;;-1:-1:-1;;;;;14274:6:0;14283:11;14242:8;:53::i;:::-;14306:6;;:180;;-1:-1:-1;;;14306:180:0;;14369:4;14306:180;;;12308:34:1;12358:18;;;12351:34;;;14306:6:0;12401:18:1;;;12394:34;;;12444:18;;;12437:34;5477:42:0;12487:19:1;;;12480:44;14470:15:0;12540:19:1;;;12533:35;-1:-1:-1;;;;;14306:6:0;;;;:22;;14336:9;;12242:19:1;;14306:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14161:333;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:131::-;-1:-1:-1;;;;;1239:31:1;;1229:42;;1219:70;;1285:1;1282;1275:12;1219:70;1164:131;:::o;1300:315::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:31;1528:5;1503:31;:::i;:::-;1553:5;1605:2;1590:18;;;;1577:32;;-1:-1:-1;;;1300:315:1:o;1994:456::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2195:9;2182:23;2214:31;2239:5;2214:31;:::i;:::-;2264:5;-1:-1:-1;2321:2:1;2306:18;;2293:32;2334:33;2293:32;2334:33;:::i;:::-;1994:456;;2386:7;;-1:-1:-1;;;2440:2:1;2425:18;;;;2412:32;;1994:456::o;2455:247::-;2514:6;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;2896:316::-;2973:6;2981;2989;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;-1:-1:-1;;3081:23:1;;;3151:2;3136:18;;3123:32;;-1:-1:-1;3202:2:1;3187:18;;;3174:32;;2896:316;-1:-1:-1;2896:316:1:o;3217:118::-;3303:5;3296:13;3289:21;3282:5;3279:32;3269:60;;3325:1;3322;3315:12;3340:382;3405:6;3413;3466:2;3454:9;3445:7;3441:23;3437:32;3434:52;;;3482:1;3479;3472:12;3434:52;3521:9;3508:23;3540:31;3565:5;3540:31;:::i;:::-;3590:5;-1:-1:-1;3647:2:1;3632:18;;3619:32;3660:30;3619:32;3660:30;:::i;:::-;3709:7;3699:17;;;3340:382;;;;;:::o;3935:388::-;4003:6;4011;4064:2;4052:9;4043:7;4039:23;4035:32;4032:52;;;4080:1;4077;4070:12;4032:52;4119:9;4106:23;4138:31;4163:5;4138:31;:::i;:::-;4188:5;-1:-1:-1;4245:2:1;4230:18;;4217:32;4258:33;4217:32;4258:33;:::i;4588:329::-;4790:2;4772:21;;;4829:1;4809:18;;;4802:29;-1:-1:-1;;;4862:2:1;4847:18;;4840:36;4908:2;4893:18;;4588:329::o;5335:127::-;5396:10;5391:3;5387:20;5384:1;5377:31;5427:4;5424:1;5417:15;5451:4;5448:1;5441:15;5467:168;5540:9;;;5571;;5588:15;;;5582:22;;5568:37;5558:71;;5609:18;;:::i;5640:217::-;5680:1;5706;5696:132;;5750:10;5745:3;5741:20;5738:1;5731:31;5785:4;5782:1;5775:15;5813:4;5810:1;5803:15;5696:132;-1:-1:-1;5842:9:1;;5640:217::o;7301:128::-;7368:9;;;7389:11;;;7386:37;;;7403:18;;:::i;9356:125::-;9421:9;;;9442:10;;;9439:36;;;9455:18;;:::i;9866:245::-;9933:6;9986:2;9974:9;9965:7;9961:23;9957:32;9954:52;;;10002:1;9999;9992:12;9954:52;10034:9;10028:16;10053:28;10075:5;10053:28;:::i;10594:127::-;10655:10;10650:3;10646:20;10643:1;10636:31;10686:4;10683:1;10676:15;10710:4;10707:1;10700:15;10726:251;10796:6;10849:2;10837:9;10828:7;10824:23;10820:32;10817:52;;;10865:1;10862;10855:12;10817:52;10897:9;10891:16;10916:31;10941:5;10916:31;:::i;10982:980::-;11244:4;11292:3;11281:9;11277:19;11323:6;11312:9;11305:25;11349:2;11387:6;11382:2;11371:9;11367:18;11360:34;11430:3;11425:2;11414:9;11410:18;11403:31;11454:6;11489;11483:13;11520:6;11512;11505:22;11558:3;11547:9;11543:19;11536:26;;11597:2;11589:6;11585:15;11571:29;;11618:1;11628:195;11642:6;11639:1;11636:13;11628:195;;;11707:13;;-1:-1:-1;;;;;11703:39:1;11691:52;;11798:15;;;;11763:12;;;;11739:1;11657:9;11628:195;;;-1:-1:-1;;;;;;;11879:32:1;;;;11874:2;11859:18;;11852:60;-1:-1:-1;;;11943:3:1;11928:19;11921:35;11840:3;10982:980;-1:-1:-1;;;10982:980:1:o;12579:306::-;12667:6;12675;12683;12736:2;12724:9;12715:7;12711:23;12707:32;12704:52;;;12752:1;12749;12742:12;12704:52;12781:9;12775:16;12765:26;;12831:2;12820:9;12816:18;12810:25;12800:35;;12875:2;12864:9;12860:18;12854:25;12844:35;;12579:306;;;;;:::o

Swarm Source

ipfs://5a9fa8f106fbdbc1d767c30955b90ba92e4d391fe279eaa0bacc41a56cc09627
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.