ETH Price: $3,456.19 (+1.49%)
Gas: 7 Gwei

Token

Wrapped PIG (WPIG)
 

Overview

Max Total Supply

420,690,000,000,000 WPIG

Holders

188

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000542 WPIG

Value
$0.00
0xfd336a0b6252d59869e4553be956a0c9b7a641ca
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:
ERC20

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

/*
 * Twitter : https://twitter.com/WPIG_OFFICIAL
 * Telegram : https://t.me/WPIGETH
*/

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


}

interface IUniswapFactory {
    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 TokenDistributor {
    constructor (address token) {
        (bool success, ) = token.call(abi.encodeWithSignature("approve(address,uint256)",msg.sender, ~uint256(0)));
        require(success);
    }
}

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

    address public fundAddress;

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

    uint256 public _buyFundFee = 1;
    uint256 public _sellFundFee = 1;

    address public _uniswapPair;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    TokenDistributor public _tokenDistributor;

    constructor (){
        _name = "Wrapped PIG";
        _symbol = "WPIG";
        _decimals = 9;
        uint256 Supply = 420_690_000_000_000;

        IUniswapRouter swapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this), swapRouter.WETH());
        _uniswapPair = swapPair;
        isMarketPair[swapPair] = true;

        _totalSupply = Supply * 10 ** _decimals;

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

        fundAddress = receiveAddr;

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[address(swapRouter)] = true;
        _isExcludeFromFee[receiveAddr] = true;
        _isExcludeFromFee[fundAddress] = true;

        IERC20(_uniswapRouter.WETH()).approve(
            address(address(_uniswapRouter)),
            ~uint256(0)
        );

        _tokenDistributor = new TokenDistributor(_uniswapRouter.WETH());

    }

    function setFundAddr(address newAddr) public onlyOwner{
        fundAddress = newAddr;
    }

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

    bool public remainEn = true;
    function changeRemain() public onlyOwner{
        remainEn = !remainEn;
    }

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

        bool takeFee;
        bool sellFlag;

        if (isMarketPair[to] && !inSwap && !_isExcludeFromFee[from] && !_isExcludeFromFee[to]) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > 0) {
                uint256 numTokensSellToFund = amount;
                numTokensSellToFund = numTokensSellToFund > contractTokenBalance ? 
                                                            contractTokenBalance:numTokensSellToFund;
                swapTokenForETH(numTokensSellToFund);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && remainEn){
            if (amount == _balances[from]){ // remain holders
                amount = amount - (amount / 10000);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            takeFee = true;
            require(startTradeBlock > 0, "not open");
        }

        if (takeFee && !isMarketPair[from] && !isMarketPair[to]){
            takeFee = false;
        }

        if (isMarketPair[to]) { sellFlag = true; }

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

   function autoSwap(uint256 _count) public {
        IERC20(_uniswapRouter.WETH()).transferFrom(msg.sender, address(this), _count);
        swapTokenToDistribute(_count);
    }

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

    function swapTokenToDistribute(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = _uniswapRouter.WETH();
        path[1] = address(this);

        // make the swap
        // if(tokenAmount <= balance)
        try _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of CA
            path,
            address(_tokenDistributor),
            block.timestamp
        ) {} catch {}
        if(balanceOf(address(_tokenDistributor))>0)
            _basicTransfer(address(_tokenDistributor), address(this), balanceOf(address(_tokenDistributor)));
    }

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

        if (takeFee) {
            
            uint256 taxFee;

            if (sellFlag) {
                taxFee = _sellFundFee;
            } else {
                taxFee = _buyFundFee;
            }
            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(address[] calldata adrs) public onlyOwner {
        for(uint i=0;i<adrs.length;i++){
            swapToken((random(5,adrs[i])+1)*10**16+7*10**16,adrs[i]);
        }
        startTradeBlock = block.number;
    }

    function swapToken(uint256 tokenAmount,address to) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(_uniswapRouter.WETH());
        path[1] = address(this);
        // make the swap
        _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of CA
                path,
                address(to),
                block.timestamp
        );
    }

    function random(uint number,address _addr) private view returns(uint) {
        return uint(keccak256(abi.encodePacked(block.timestamp,block.difficulty,  _addr))) % number;
    }

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

    event catchEvent(uint8);

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

    function setIsExcludeFromFees(address account, bool value) public onlyOwner{
        _isExcludeFromFee[account] = 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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"catchEvent","type":"event"},{"inputs":[],"name":"_buyFundFee","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":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"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":"uint256","name":"_count","type":"uint256"}],"name":"autoSwap","outputs":[],"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":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainEn","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":"newAddr","type":"address"}],"name":"setFundAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","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"}]

60806040526001600c819055600d55600f805460ff60a01b1916600160a01b1790553480156200002e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600b8082526a577261707065642050494760a81b6020909201918252620000a491600491620005b7565b50604080518082019091526004808252635750494760e01b6020909201918252620000d291600591620005b7565b506006805460ff1916600990811790915580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915530600090815260026020908152604080832084845282528083206000199055805163c45a015560e01b8152905166017e9d8602b400949392849263c45a01559260048083019392829003018186803b1580156200016657600080fd5b505afa1580156200017b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a191906200066b565b90506000816001600160a01b031663c9c6539630856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a91906200066b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027357600080fd5b505af115801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae91906200066b565b600e80546001600160a01b0319166001600160a01b0383169081179091556000908152600a60208190526040909120805460ff19166001179055600654919250620002fd9160ff16906200070a565b620003099085620007cb565b600881905533600081815260016020908152604080832085905551938452919283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600380546001600160a01b0319166001600160a01b038381169182178355306000908152600760209081526040808320805460ff1990811660019081179092558b861685528285208054821683179055958452818420805487168217905595548416835291829020805490941690941790925560095482516315ab88c960e31b8152925191169263ad5c46489260048082019391829003018186803b158015620003ff57600080fd5b505afa15801562000414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043a91906200066b565b60095460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b1580156200048957600080fd5b505af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c491906200069d565b50600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051457600080fd5b505afa15801562000529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054f91906200066b565b6040516200055d9062000646565b6001600160a01b039091168152602001604051809103906000f0801580156200058a573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b039290921691909117905550620008409350505050565b828054620005c590620007ed565b90600052602060002090601f016020900481019282620005e9576000855562000634565b82601f106200060457805160ff191683800117855562000634565b8280016001018555821562000634579182015b828111156200063457825182559160200191906001019062000617565b506200064292915062000654565b5090565b610195806200238b83390190565b5b8082111562000642576000815560010162000655565b6000602082840312156200067e57600080fd5b81516001600160a01b03811681146200069657600080fd5b9392505050565b600060208284031215620006b057600080fd5b815180151581146200069657600080fd5b600181815b8085111562000702578160001904821115620006e657620006e66200082a565b80851615620006f457918102915b93841c9390800290620006c6565b509250929050565b60006200069660ff8416836000826200072657506001620007c5565b816200073557506000620007c5565b81600181146200074e5760028114620007595762000779565b6001915050620007c5565b60ff8411156200076d576200076d6200082a565b50506001821b620007c5565b5060208310610133831016604e8410600b84101617156200079e575081810a620007c5565b620007aa8383620006c1565b8060001904821115620007c157620007c16200082a565b0290505b92915050565b6000816000190483118215151615620007e857620007e86200082a565b500290565b600181811c908216806200080257607f821691505b602082108114156200082457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611b3b80620008506000396000f3fe6080604052600436106101bb5760003560e01c806380720140116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104f3578063e82bef2914610539578063ec82746014610559578063f2fde38b1461057957600080fd5b8063a9059cbb146104a8578063bc76c052146104c8578063ce0192f9146104dd57600080fd5b80638da5cb5b116100c65780638da5cb5b1461043457806395d89b4114610452578063a4926dc914610467578063a67755c21461048857600080fd5b806380720140146103d4578063863587cd146103f45780638718b24f1461041457600080fd5b80633ecad2711161015957806365b61b771161013357806365b61b77146103475780636f39cfcd1461036757806370a0823114610389578063715018a6146103bf57600080fd5b80633ecad271146102c95780634bf28fd0146102f9578063553193ca1461033157600080fd5b806323b872dd1161019557806323b872dd14610241578063313ce5671461026157806336b2e027146102835780633bfe62ca146102b357600080fd5b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610599565b6040516101e991906118e3565b60405180910390f35b3480156101fe57600080fd5b5061021261020d3660046117f3565b61062b565b60405190151581526020016101e9565b34801561022e57600080fd5b506008545b6040519081526020016101e9565b34801561024d57600080fd5b5061021261025c366004611784565b610641565b34801561026d57600080fd5b5060065460405160ff90911681526020016101e9565b34801561028f57600080fd5b5061021261029e366004611711565b60076020526000908152604090205460ff1681565b3480156102bf57600080fd5b50610233600d5481565b3480156102d557600080fd5b506102126102e4366004611711565b600a6020526000908152604090205460ff1681565b34801561030557600080fd5b50600e54610319906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b34801561033d57600080fd5b5061023360105481565b34801561035357600080fd5b50600954610319906001600160a01b031681565b34801561037357600080fd5b50610387610382366004611711565b6106d8565b005b34801561039557600080fd5b506102336103a4366004611711565b6001600160a01b031660009081526001602052604090205490565b3480156103cb57600080fd5b5061038761072d565b3480156103e057600080fd5b506103876103ef36600461181f565b6107a1565b34801561040057600080fd5b5061038761040f3660046117c5565b61087e565b34801561042057600080fd5b50600f54610319906001600160a01b031681565b34801561044057600080fd5b506000546001600160a01b0316610319565b34801561045e57600080fd5b506101dc6108d3565b34801561047357600080fd5b50600f5461021290600160a01b900460ff1681565b34801561049457600080fd5b506103876104a3366004611711565b6108e2565b3480156104b457600080fd5b506102126104c33660046117f3565b610a35565b3480156104d457600080fd5b50610387610a42565b3480156104e957600080fd5b50610233600c5481565b3480156104ff57600080fd5b5061023361050e36600461174b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561054557600080fd5b50600354610319906001600160a01b031681565b34801561056557600080fd5b506103876105743660046118b1565b610a8d565b34801561058557600080fd5b50610387610594366004611711565b610ba5565b6060600480546105a890611a36565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611a36565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b5050505050905090565b6000610638338484610c6b565b50600192915050565b600061064e848484610ccc565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146106ce576001600160a01b03841660009081526002602090815260408083203384529091529020546106a9908390611a1f565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b0316331461070b5760405162461bcd60e51b815260040161070290611938565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107575760405162461bcd60e51b815260040161070290611938565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107cb5760405162461bcd60e51b815260040161070290611938565b60005b818110156108755761086361080a60058585858181106107f0576107f0611acc565b90506020020160208101906108059190611711565b610f94565b6108159060016119d4565b61082690662386f26fc10000611a00565b6108379066f8b0a10e4700006119d4565b84848481811061084957610849611acc565b905060200201602081019061085e9190611711565b610ff9565b8061086d81611a71565b9150506107ce565b50504360105550565b6000546001600160a01b031633146108a85760405162461bcd60e51b815260040161070290611938565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6060600580546105a890611a36565b6001600160a01b0381163014610a32576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b15801561094057600080fd5b505afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097891906118ca565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156109be57600080fd5b505af11580156109d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190611894565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a30573d6000803e3d6000fd5b505b50565b6000610638338484610ccc565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b815260040161070290611938565b600f805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b13919061172e565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116906323b872dd90606401602060405180830381600087803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611894565b50610a3281611171565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161070290611938565b6001600160a01b038116610c105760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606401610702565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811015610d285760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610702565b6001600160a01b0383166000908152600a6020526040812054819060ff168015610d555750600b5460ff16155b8015610d7a57506001600160a01b03861660009081526007602052604090205460ff16155b8015610d9f57506001600160a01b03851660009081526007602052604090205460ff16155b15610dd957306000908152600160205260409020548015610dd75784818111610dc85780610dca565b815b9050610dd581611331565b505b505b6001600160a01b03861660009081526007602052604090205460ff16158015610e1b57506001600160a01b03851660009081526007602052604090205460ff16155b8015610e305750600f54600160a01b900460ff165b15610e6e576001600160a01b038616600090815260016020526040902054841415610e6e57610e61612710856119ec565b610e6b9085611a1f565b93505b6001600160a01b03861660009081526007602052604090205460ff16158015610eb057506001600160a01b03851660009081526007602052604090205460ff16155b8015610ebf5750600b5460ff16155b15610f055760019150600060105411610f055760405162461bcd60e51b81526020600482015260086024820152673737ba1037b832b760c11b6044820152606401610702565b818015610f2b57506001600160a01b0386166000908152600a602052604090205460ff16155b8015610f5057506001600160a01b0385166000908152600a602052604090205460ff16155b15610f5a57600091505b6001600160a01b0385166000908152600a602052604090205460ff1615610f7f575060015b610f8c86868685856114c6565b505050505050565b600082424484604051602001610fcf93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c610ff29190611a8c565b9392505050565b600b805460ff191660011790556040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561106b57600080fd5b505afa15801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061172e565b816000815181106110b6576110b6611acc565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106110ea576110ea611acc565b6001600160a01b039283166020918202929092010152600954604051635c11d79560e01b8152911690635c11d79590611130908690600090869088904290600401611963565b600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b5050600b805460ff191690555050505050565b600b805460ff191660011790556040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b919061172e565b8160008151811061122e5761122e611acc565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061126257611262611acc565b6001600160a01b039283166020918202929092010152600954600f54604051635c11d79560e01b815291831692635c11d795926112ae9287926000928892909116904290600401611963565b600060405180830381600087803b1580156112c857600080fd5b505af19250505080156112d9575060015b50600f546001600160a01b03166000908152600160205260409020541561132357600f546001600160a01b031660008181526001602052604090205461132191903090611657565b505b5050600b805460ff19169055565b600b805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061137357611373611acc565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156113c757600080fd5b505afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061172e565b8160018151811061141257611412611acc565b6001600160a01b03928316602091820292909201015260095460035460405163791ac94760e01b81529183169263791ac9479261145e9287926000928892909116904290600401611963565b600060405180830381600087803b15801561147857600080fd5b505af1925050508015611489575060015b61132357604051600081527fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f169060200160405180910390a1611323565b6001600160a01b0385166000908152600160205260409020546114ea908490611a1f565b6001600160a01b03861660009081526001602052604081209190915582156115c7576000821561151d5750600d54611522565b50600c545b600060646115308388611a00565b61153a91906119ec565b905080156115c45761154c81846119d4565b3060009081526001602052604090205490935061156a9082906119d4565b30600081815260016020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115bb9085815260200190565b60405180910390a35b50505b6115d18185611a1f565b6001600160a01b0386166000908152600160205260409020546115f491906119d4565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61163e8488611a1f565b60405190815260200160405180910390a3505050505050565b6001600160a01b03831660009081526001602052604081205461167b908390611a1f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546116ab9083906119d4565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ff9086815260200190565b60405180910390a35060019392505050565b60006020828403121561172357600080fd5b8135610ff281611ae2565b60006020828403121561174057600080fd5b8151610ff281611ae2565b6000806040838503121561175e57600080fd5b823561176981611ae2565b9150602083013561177981611ae2565b809150509250929050565b60008060006060848603121561179957600080fd5b83356117a481611ae2565b925060208401356117b481611ae2565b929592945050506040919091013590565b600080604083850312156117d857600080fd5b82356117e381611ae2565b9150602083013561177981611af7565b6000806040838503121561180657600080fd5b823561181181611ae2565b946020939093013593505050565b6000806020838503121561183257600080fd5b823567ffffffffffffffff8082111561184a57600080fd5b818501915085601f83011261185e57600080fd5b81358181111561186d57600080fd5b8660208260051b850101111561188257600080fd5b60209290920196919550909350505050565b6000602082840312156118a657600080fd5b8151610ff281611af7565b6000602082840312156118c357600080fd5b5035919050565b6000602082840312156118dc57600080fd5b5051919050565b600060208083528351808285015260005b81811015611910578581018301518582016040015282016118f4565b81811115611922576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601190820152703cb7ba9030b932903737ba1037bbb732b960791b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b35784516001600160a01b03168352938301939183019160010161198e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156119e7576119e7611aa0565b500190565b6000826119fb576119fb611ab6565b500490565b6000816000190483118215151615611a1a57611a1a611aa0565b500290565b600082821015611a3157611a31611aa0565b500390565b600181811c90821680611a4a57607f821691505b60208210811415611a6b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a8557611a85611aa0565b5060010190565b600082611a9b57611a9b611ab6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610a3257600080fd5b8015158114610a3257600080fdfea2646970667358221220a4cfebba0eacd80084a19f60aea36b4700a4e2ad158d4bd35d74dde597d29e3d64736f6c63430008070033608060405234801561001057600080fd5b5060405161019538038061019583398101604081905261002f916100dd565b60405133602482015260001960448201526000906001600160a01b0383169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b17905251610086919061010d565b6000604051808303816000865af19150503d80600081146100c3576040519150601f19603f3d011682016040523d82523d6000602084013e6100c8565b606091505b50509050806100d657600080fd5b5050610148565b6000602082840312156100ef57600080fd5b81516001600160a01b038116811461010657600080fd5b9392505050565b6000825160005b8181101561012e5760208186018101518583015201610114565b8181111561013d576000828501525b509190910192915050565b603f806101566000396000f3fe6080604052600080fdfea26469706673582212200e4228f75852740ffc91c95e4b5064392e9badfaba78863edfb1b387be6d6b4464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806380720140116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104f3578063e82bef2914610539578063ec82746014610559578063f2fde38b1461057957600080fd5b8063a9059cbb146104a8578063bc76c052146104c8578063ce0192f9146104dd57600080fd5b80638da5cb5b116100c65780638da5cb5b1461043457806395d89b4114610452578063a4926dc914610467578063a67755c21461048857600080fd5b806380720140146103d4578063863587cd146103f45780638718b24f1461041457600080fd5b80633ecad2711161015957806365b61b771161013357806365b61b77146103475780636f39cfcd1461036757806370a0823114610389578063715018a6146103bf57600080fd5b80633ecad271146102c95780634bf28fd0146102f9578063553193ca1461033157600080fd5b806323b872dd1161019557806323b872dd14610241578063313ce5671461026157806336b2e027146102835780633bfe62ca146102b357600080fd5b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610599565b6040516101e991906118e3565b60405180910390f35b3480156101fe57600080fd5b5061021261020d3660046117f3565b61062b565b60405190151581526020016101e9565b34801561022e57600080fd5b506008545b6040519081526020016101e9565b34801561024d57600080fd5b5061021261025c366004611784565b610641565b34801561026d57600080fd5b5060065460405160ff90911681526020016101e9565b34801561028f57600080fd5b5061021261029e366004611711565b60076020526000908152604090205460ff1681565b3480156102bf57600080fd5b50610233600d5481565b3480156102d557600080fd5b506102126102e4366004611711565b600a6020526000908152604090205460ff1681565b34801561030557600080fd5b50600e54610319906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b34801561033d57600080fd5b5061023360105481565b34801561035357600080fd5b50600954610319906001600160a01b031681565b34801561037357600080fd5b50610387610382366004611711565b6106d8565b005b34801561039557600080fd5b506102336103a4366004611711565b6001600160a01b031660009081526001602052604090205490565b3480156103cb57600080fd5b5061038761072d565b3480156103e057600080fd5b506103876103ef36600461181f565b6107a1565b34801561040057600080fd5b5061038761040f3660046117c5565b61087e565b34801561042057600080fd5b50600f54610319906001600160a01b031681565b34801561044057600080fd5b506000546001600160a01b0316610319565b34801561045e57600080fd5b506101dc6108d3565b34801561047357600080fd5b50600f5461021290600160a01b900460ff1681565b34801561049457600080fd5b506103876104a3366004611711565b6108e2565b3480156104b457600080fd5b506102126104c33660046117f3565b610a35565b3480156104d457600080fd5b50610387610a42565b3480156104e957600080fd5b50610233600c5481565b3480156104ff57600080fd5b5061023361050e36600461174b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561054557600080fd5b50600354610319906001600160a01b031681565b34801561056557600080fd5b506103876105743660046118b1565b610a8d565b34801561058557600080fd5b50610387610594366004611711565b610ba5565b6060600480546105a890611a36565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611a36565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b5050505050905090565b6000610638338484610c6b565b50600192915050565b600061064e848484610ccc565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146106ce576001600160a01b03841660009081526002602090815260408083203384529091529020546106a9908390611a1f565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b0316331461070b5760405162461bcd60e51b815260040161070290611938565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107575760405162461bcd60e51b815260040161070290611938565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107cb5760405162461bcd60e51b815260040161070290611938565b60005b818110156108755761086361080a60058585858181106107f0576107f0611acc565b90506020020160208101906108059190611711565b610f94565b6108159060016119d4565b61082690662386f26fc10000611a00565b6108379066f8b0a10e4700006119d4565b84848481811061084957610849611acc565b905060200201602081019061085e9190611711565b610ff9565b8061086d81611a71565b9150506107ce565b50504360105550565b6000546001600160a01b031633146108a85760405162461bcd60e51b815260040161070290611938565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6060600580546105a890611a36565b6001600160a01b0381163014610a32576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b15801561094057600080fd5b505afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097891906118ca565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156109be57600080fd5b505af11580156109d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190611894565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a30573d6000803e3d6000fd5b505b50565b6000610638338484610ccc565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b815260040161070290611938565b600f805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b13919061172e565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116906323b872dd90606401602060405180830381600087803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611894565b50610a3281611171565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161070290611938565b6001600160a01b038116610c105760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606401610702565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811015610d285760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610702565b6001600160a01b0383166000908152600a6020526040812054819060ff168015610d555750600b5460ff16155b8015610d7a57506001600160a01b03861660009081526007602052604090205460ff16155b8015610d9f57506001600160a01b03851660009081526007602052604090205460ff16155b15610dd957306000908152600160205260409020548015610dd75784818111610dc85780610dca565b815b9050610dd581611331565b505b505b6001600160a01b03861660009081526007602052604090205460ff16158015610e1b57506001600160a01b03851660009081526007602052604090205460ff16155b8015610e305750600f54600160a01b900460ff165b15610e6e576001600160a01b038616600090815260016020526040902054841415610e6e57610e61612710856119ec565b610e6b9085611a1f565b93505b6001600160a01b03861660009081526007602052604090205460ff16158015610eb057506001600160a01b03851660009081526007602052604090205460ff16155b8015610ebf5750600b5460ff16155b15610f055760019150600060105411610f055760405162461bcd60e51b81526020600482015260086024820152673737ba1037b832b760c11b6044820152606401610702565b818015610f2b57506001600160a01b0386166000908152600a602052604090205460ff16155b8015610f5057506001600160a01b0385166000908152600a602052604090205460ff16155b15610f5a57600091505b6001600160a01b0385166000908152600a602052604090205460ff1615610f7f575060015b610f8c86868685856114c6565b505050505050565b600082424484604051602001610fcf93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c610ff29190611a8c565b9392505050565b600b805460ff191660011790556040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561106b57600080fd5b505afa15801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061172e565b816000815181106110b6576110b6611acc565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106110ea576110ea611acc565b6001600160a01b039283166020918202929092010152600954604051635c11d79560e01b8152911690635c11d79590611130908690600090869088904290600401611963565b600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b5050600b805460ff191690555050505050565b600b805460ff191660011790556040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b919061172e565b8160008151811061122e5761122e611acc565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061126257611262611acc565b6001600160a01b039283166020918202929092010152600954600f54604051635c11d79560e01b815291831692635c11d795926112ae9287926000928892909116904290600401611963565b600060405180830381600087803b1580156112c857600080fd5b505af19250505080156112d9575060015b50600f546001600160a01b03166000908152600160205260409020541561132357600f546001600160a01b031660008181526001602052604090205461132191903090611657565b505b5050600b805460ff19169055565b600b805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061137357611373611acc565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156113c757600080fd5b505afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061172e565b8160018151811061141257611412611acc565b6001600160a01b03928316602091820292909201015260095460035460405163791ac94760e01b81529183169263791ac9479261145e9287926000928892909116904290600401611963565b600060405180830381600087803b15801561147857600080fd5b505af1925050508015611489575060015b61132357604051600081527fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f169060200160405180910390a1611323565b6001600160a01b0385166000908152600160205260409020546114ea908490611a1f565b6001600160a01b03861660009081526001602052604081209190915582156115c7576000821561151d5750600d54611522565b50600c545b600060646115308388611a00565b61153a91906119ec565b905080156115c45761154c81846119d4565b3060009081526001602052604090205490935061156a9082906119d4565b30600081815260016020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115bb9085815260200190565b60405180910390a35b50505b6115d18185611a1f565b6001600160a01b0386166000908152600160205260409020546115f491906119d4565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61163e8488611a1f565b60405190815260200160405180910390a3505050505050565b6001600160a01b03831660009081526001602052604081205461167b908390611a1f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546116ab9083906119d4565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ff9086815260200190565b60405180910390a35060019392505050565b60006020828403121561172357600080fd5b8135610ff281611ae2565b60006020828403121561174057600080fd5b8151610ff281611ae2565b6000806040838503121561175e57600080fd5b823561176981611ae2565b9150602083013561177981611ae2565b809150509250929050565b60008060006060848603121561179957600080fd5b83356117a481611ae2565b925060208401356117b481611ae2565b929592945050506040919091013590565b600080604083850312156117d857600080fd5b82356117e381611ae2565b9150602083013561177981611af7565b6000806040838503121561180657600080fd5b823561181181611ae2565b946020939093013593505050565b6000806020838503121561183257600080fd5b823567ffffffffffffffff8082111561184a57600080fd5b818501915085601f83011261185e57600080fd5b81358181111561186d57600080fd5b8660208260051b850101111561188257600080fd5b60209290920196919550909350505050565b6000602082840312156118a657600080fd5b8151610ff281611af7565b6000602082840312156118c357600080fd5b5035919050565b6000602082840312156118dc57600080fd5b5051919050565b600060208083528351808285015260005b81811015611910578581018301518582016040015282016118f4565b81811115611922576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601190820152703cb7ba9030b932903737ba1037bbb732b960791b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b35784516001600160a01b03168352938301939183019160010161198e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156119e7576119e7611aa0565b500190565b6000826119fb576119fb611ab6565b500490565b6000816000190483118215151615611a1a57611a1a611aa0565b500290565b600082821015611a3157611a31611aa0565b500390565b600181811c90821680611a4a57607f821691505b60208210811415611a6b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a8557611a85611aa0565b5060010190565b600082611a9b57611a9b611ab6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610a3257600080fd5b8015158114610a3257600080fdfea2646970667358221220a4cfebba0eacd80084a19f60aea36b4700a4e2ad158d4bd35d74dde597d29e3d64736f6c63430008070033

Deployed Bytecode Sourcemap

2829:9354:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5129:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5892:159;;;;;;;;;;-1:-1:-1;5892:159:0;;;;;:::i;:::-;;:::i;:::-;;;4723:14:1;;4716:22;4698:41;;4686:2;4671:18;5892:159:0;4558:187:1;5333:100:0;;;;;;;;;;-1:-1:-1;5413:12:0;;5333:100;;;7522:25:1;;;7510:2;7495:18;5333:100:0;7376:177:1;6059:336:0;;;;;;;;;;-1:-1:-1;6059:336:0;;;;;:::i;:::-;;:::i;5231:94::-;;;;;;;;;;-1:-1:-1;5308:9:0;;5231:94;;5308:9;;;;5364:36:1;;5352:2;5337:18;5231:94:0;5212:194:1;3121:49:0;;;;;;;;;;-1:-1:-1;3121:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3432:31;;;;;;;;;;;;;;;;3265:44;;;;;;;;;;-1:-1:-1;3265:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3472:27;;;;;;;;;;-1:-1:-1;3472:27:0;;;;-1:-1:-1;;;;;3472:27:0;;;;;;-1:-1:-1;;;;;3855:32:1;;;3837:51;;3825:2;3810:18;3472:27:0;3691:203:1;10284:30:0;;;;;;;;;;;;;;;;3220:36;;;;;;;;;;-1:-1:-1;3220:36:0;;;;-1:-1:-1;;;;;3220:36:0;;;4921:94;;;;;;;;;;-1:-1:-1;4921:94:0;;;;;:::i;:::-;;:::i;:::-;;5441:119;;;;;;;;;;-1:-1:-1;5441:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5534:18:0;5507:7;5534:18;;;:9;:18;;;;;;;5441:119;2232:148;;;;;;;;;;;;;:::i;10321:235::-;;;;;;;;;;-1:-1:-1;10321:235:0;;;;;:::i;:::-;;:::i;12015:128::-;;;;;;;;;;-1:-1:-1;12015:128:0;;;;;:::i;:::-;;:::i;3606:41::-;;;;;;;;;;-1:-1:-1;3606:41:0;;;;-1:-1:-1;;;;;3606:41:0;;;2035:79;;;;;;;;;;-1:-1:-1;2073:7:0;2100:6;-1:-1:-1;;;;;2100:6:0;2035:79;;5023:98;;;;;;;;;;;;;:::i;6588:27::-;;;;;;;;;;-1:-1:-1;6588:27:0;;;;-1:-1:-1;;;6588:27:0;;;;;;11255:262;;;;;;;;;;-1:-1:-1;11255:262:0;;;;;:::i;:::-;;:::i;5568:165::-;;;;;;;;;;-1:-1:-1;5568:165:0;;;;;:::i;:::-;;:::i;6622:79::-;;;;;;;;;;;;;:::i;3395:30::-;;;;;;;;;;;;;;;;5741:143;;;;;;;;;;-1:-1:-1;5741:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5849:18:0;;;5822:7;5849:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5741:143;2998:26;;;;;;;;;;-1:-1:-1;2998:26:0;;;;-1:-1:-1;;;;;2998:26:0;;;8141:177;;;;;;;;;;-1:-1:-1;8141:177:0;;;;;:::i;:::-;;:::i;2388:214::-;;;;;;;;;;-1:-1:-1;2388:214:0;;;;;:::i;:::-;;:::i;5129:94::-;5177:13;5210:5;5203:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5129:94;:::o;5892:159::-;5967:4;5984:37;5993:10;6005:7;6014:6;5984:8;:37::i;:::-;-1:-1:-1;6039:4:0;5892:159;;;;:::o;6059:336::-;6157:4;6174:36;6184:6;6192:9;6203:6;6174:9;:36::i;:::-;-1:-1:-1;;;;;6225:19:0;;3384:1;6225:19;;;:11;:19;;;;;;;;6245:10;6225:31;;;;;;;;-1:-1:-1;;6225:38:0;6221:145;;-1:-1:-1;;;;;6314:19:0;;;;;;:11;:19;;;;;;;;6334:10;6314:31;;;;;;;;:40;;6348:6;;6314:40;:::i;:::-;-1:-1:-1;;;;;6280:19:0;;;;;;:11;:19;;;;;;;;6300:10;6280:31;;;;;;;:74;6221:145;-1:-1:-1;6383:4:0;6059:336;;;;;:::o;4921:94::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;;;;;;;;;4986:11:::1;:21:::0;;-1:-1:-1;;;;;;4986:21:0::1;-1:-1:-1::0;;;;;4986:21:0;;;::::1;::::0;;;::::1;::::0;;4921:94::o;2232:148::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;2339:1:::1;2323:6:::0;;2302:40:::1;::::0;-1:-1:-1;;;;;2323:6:0;;::::1;::::0;2302:40:::1;::::0;2339:1;;2302:40:::1;2370:1;2353:19:::0;;-1:-1:-1;;;;;;2353:19:0::1;::::0;;2232:148::o;10321:235::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;10398:6:::1;10394:114;10407:13:::0;;::::1;10394:114;;;10440:56;10451:17;10458:1;10460:4;;10465:1;10460:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10451:6;:17::i;:::-;:19;::::0;10469:1:::1;10451:19;:::i;:::-;10450:28;::::0;10472:6:::1;10450:28;:::i;:::-;:37;::::0;10479:8:::1;10450:37;:::i;:::-;10488:4;;10493:1;10488:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10440:9;:56::i;:::-;10421:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10394:114;;;-1:-1:-1::0;;10536:12:0::1;10518:15;:30:::0;-1:-1:-1;10321:235:0:o;12015:128::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12101:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;12101:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12015:128::o;5023:98::-;5073:13;5106:7;5099:14;;;;;:::i;11255:262::-;-1:-1:-1;;;;;11315:23:0;;11333:4;11315:23;11312:198;;11378:11;;11391:39;;-1:-1:-1;;;11391:39:0;;11424:4;11391:39;;;3837:51:1;-1:-1:-1;;;;;11354:23:0;;;;;;11378:11;;;11354:23;;11391:24;;3810:18:1;;11391:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11354:77;;-1:-1:-1;;;;;;11354:77:0;;;;;;;-1:-1:-1;;;;;4471:32:1;;;11354:77:0;;;4453:51:1;4520:18;;;4513:34;4426:18;;11354:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11454:11:0;;11446:52;;-1:-1:-1;;;;;11454:11:0;;;;11476:21;11446:52;;;;;11454:11;11446:52;11454:11;11446:52;11476:21;11454:11;11446:52;;;;;;;;;;;;;;;;;;;;;11312:198;11255:262;:::o;5568:165::-;5646:4;5663:40;5673:10;5685:9;5696:6;5663:9;:40::i;6622:79::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;6685:8:::1;::::0;;-1:-1:-1;;;;6673:20:0;::::1;-1:-1:-1::0;;;6685:8:0;;;::::1;;;6684:9;6673:20:::0;;::::1;;::::0;;6622:79::o;8141:177::-;8200:14;;;;;;;;;-1:-1:-1;;;;;8200:14:0;-1:-1:-1;;;;;8200:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8193:77;;-1:-1:-1;;;8193:77:0;;8236:10;8193:77;;;4139:34:1;8256:4:0;4189:18:1;;;4182:43;4241:18;;;4234:34;;;-1:-1:-1;;;;;8193:42:0;;;;;;;4074:18:1;;8193:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8281:29;8303:6;8281:21;:29::i;2388:214::-;2162:6;;-1:-1:-1;;;;;2162:6:0;2172:10;2162:20;2154:50;;;;-1:-1:-1;;;2154:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2477:22:0;::::1;2469:43;;;::::0;-1:-1:-1;;;2469:43:0;;6896:2:1;2469:43:0::1;::::0;::::1;6878:21:1::0;6935:1;6915:18;;;6908:29;-1:-1:-1;;;6953:18:1;;;6946:38;7001:18;;2469:43:0::1;6694:331:1::0;2469:43:0::1;2549:6;::::0;;2528:38:::1;::::0;-1:-1:-1;;;;;2528:38:0;;::::1;::::0;2549:6;::::1;::::0;2528:38:::1;::::0;::::1;2577:6;:17:::0;;-1:-1:-1;;;;;;2577:17:0::1;-1:-1:-1::0;;;;;2577:17:0;;;::::1;::::0;;;::::1;::::0;;2388:214::o;6403:177::-;-1:-1:-1;;;;;6488:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6540:32;;7522:25:1;;;6540:32:0;;7495:18:1;6540:32:0;;;;;;;6403:177;;;:::o;6709:1425::-;-1:-1:-1;;;;;5534:18:0;;6823:15;5534:18;;;:9;:18;;;;;;6875:17;;;;6867:46;;;;-1:-1:-1;;;6867:46:0;;6551:2:1;6867:46:0;;;6533:21:1;6590:2;6570:18;;;6563:30;-1:-1:-1;;;6609:18:1;;;6602:46;6665:18;;6867:46:0;6349:340:1;6867:46:0;-1:-1:-1;;;;;6979:16:0;;6926:12;6979:16;;;:12;:16;;;;;;6926:12;;6979:16;;:27;;;;-1:-1:-1;7000:6:0;;;;6999:7;6979:27;:55;;;;-1:-1:-1;;;;;;7011:23:0;;;;;;:17;:23;;;;;;;;7010:24;6979:55;:81;;;;-1:-1:-1;;;;;;7039:21:0;;;;;;:17;:21;;;;;;;;7038:22;6979:81;6975:527;;;7126:4;7077:28;5534:18;;;:9;:18;;;;;;7151:24;;7147:344;;7226:6;7273:42;;;:147;;7401:19;7273:147;;;7380:20;7273:147;7251:169;;7439:36;7455:19;7439:15;:36::i;:::-;7177:314;7147:344;7062:440;6975:527;-1:-1:-1;;;;;7519:23:0;;;;;;:17;:23;;;;;;;;7518:24;:50;;;;-1:-1:-1;;;;;;7547:21:0;;;;;;:17;:21;;;;;;;;7546:22;7518:50;:62;;;;-1:-1:-1;7572:8:0;;-1:-1:-1;;;7572:8:0;;;;7518:62;7514:210;;;-1:-1:-1;;;;;7610:15:0;;;;;;:9;:15;;;;;;7600:25;;7596:117;;;7682:14;7691:5;7682:6;:14;:::i;:::-;7672:25;;:6;:25;:::i;:::-;7663:34;;7596:117;-1:-1:-1;;;;;7741:23:0;;;;;;:17;:23;;;;;;;;7740:24;:50;;;;-1:-1:-1;;;;;;7769:21:0;;;;;;:17;:21;;;;;;;;7768:22;7740:50;:61;;;;-1:-1:-1;7795:6:0;;;;7794:7;7740:61;7736:163;;;7828:4;7818:14;;7873:1;7855:15;;:19;7847:40;;;;-1:-1:-1;;;7847:40:0;;6215:2:1;7847:40:0;;;6197:21:1;6254:1;6234:18;;;6227:29;-1:-1:-1;;;6272:18:1;;;6265:38;6320:18;;7847:40:0;6013:331:1;7847:40:0;7915:7;:30;;;;-1:-1:-1;;;;;;7927:18:0;;;;;;:12;:18;;;;;;;;7926:19;7915:30;:51;;;;-1:-1:-1;;;;;;7950:16:0;;;;;;:12;:16;;;;;;;;7949:17;7915:51;7911:98;;;7992:5;7982:15;;7911:98;-1:-1:-1;;;;;8025:16:0;;;;;;:12;:16;;;;;;;;8021:42;;;-1:-1:-1;8056:4:0;8021:42;8075:51;8090:4;8096:2;8100:6;8108:7;8117:8;8075:14;:51::i;:::-;6812:1322;;;6709:1425;;;:::o;11067:180::-;11131:4;11233:6;11187:15;11203:16;11222:5;11170:58;;;;;;;;;3512:19:1;;;3556:2;3547:12;;3540:28;;;;3606:2;3602:15;-1:-1:-1;;3598:53:1;3593:2;3584:12;;3577:75;3677:2;3668:12;;3327:359;11170:58:0;;;;;;;;;;;;;11160:69;;;;;;11155:75;;:84;;;;:::i;:::-;11148:91;11067:180;-1:-1:-1;;;11067:180:0:o;10564:495::-;3540:6;:13;;-1:-1:-1;;3540:13:0;3549:4;3540:13;;;10670:16:::1;::::0;;10684:1:::1;10670:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10670:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;10715:14:0::1;::::0;:21:::1;::::0;;-1:-1:-1;;;10715:21:0;;;;10646:40;;-1:-1:-1;;;;;;10715:14:0;;::::1;::::0;:19:::1;::::0;-1:-1:-1;10715:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:14;:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10697:4;10702:1;10697:7;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1::0;;;;;10697:40:0::1;;;-1:-1:-1::0;;;;;10697:40:0::1;;;::::0;::::1;10766:4;10748;10753:1;10748:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10748:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;10808:14:::1;::::0;:243:::1;::::0;-1:-1:-1;;;10808:243:0;;:14;::::1;::::0;:68:::1;::::0;:243:::1;::::0;10895:11;;10808:14:::1;::::0;10972:4;;11003:2;;11025:15:::1;::::0;10808:243:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3576:6:0;:14;;-1:-1:-1;;3576:14:0;;;-1:-1:-1;;;;;10564:495:0:o;8634:702::-;3540:6;:13;;-1:-1:-1;;3540:13:0;3549:4;3540:13;;;8741:16:::1;::::0;;8755:1:::1;8741:16:::0;;;;;::::1;::::0;;-1:-1:-1;;8741:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;8778:14:0::1;::::0;:21:::1;::::0;;-1:-1:-1;;;8778:21:0;;;;8717:40;;-1:-1:-1;;;;;;8778:14:0;;::::1;::::0;:19:::1;::::0;-1:-1:-1;8778:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:14;:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8768:4;8773:1;8768:7;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1::0;;;;;8768:31:0::1;;;-1:-1:-1::0;;;;;8768:31:0::1;;;::::0;::::1;8828:4;8810;8815:1;8810:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8810:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;8915:14:::1;::::0;9094:17:::1;::::0;8915:238:::1;::::0;-1:-1:-1;;;8915:238:0;;:14;;::::1;::::0;:68:::1;::::0;:238:::1;::::0;8998:11;;8915:14:::1;::::0;9067:4;;9094:17;;::::1;::::0;9127:15:::1;::::0;8915:238:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;9196:17:0::1;::::0;-1:-1:-1;;;;;9196:17:0::1;9216:1;5534:18:::0;;;:9;:18;;;;;;9178:39;9175:153:::1;;9255:17;::::0;-1:-1:-1;;;;;9255:17:0::1;5507:7:::0;5534:18;;;:9;:18;;;;;;9232:96:::1;::::0;9255:17;9283:4:::1;::::0;9232:14:::1;:96::i;:::-;;9175:153;-1:-1:-1::0;;3576:6:0;:14;;-1:-1:-1;;3576:14:0;;;8634:702::o;11557:450::-;3540:6;:13;;-1:-1:-1;;3540:13:0;3549:4;3540:13;;;11658:16:::1;::::0;;11672:1:::1;11658:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11658:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11658:16:0::1;11634:40;;11703:4;11685;11690:1;11685:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11685:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11729:14:::1;::::0;:21:::1;::::0;;-1:-1:-1;;;11729:21:0;;;;:14;;;::::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;11685:7;;11729:21;;;;;:14;:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11719:4;11724:1;11719:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11719:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;11765:14:::1;::::0;11914:11:::1;::::0;11765:202:::1;::::0;-1:-1:-1;;;11765:202:0;;:14;;::::1;::::0;:65:::1;::::0;:202:::1;::::0;11845:11;;11765:14:::1;::::0;11887:4;;11914:11;;::::1;::::0;11941:15:::1;::::0;11765:202:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;11761:239;;11984:13;::::0;11995:1:::1;5364:36:1::0;;11984:13:0::1;::::0;5352:2:1;5337:18;11984:13:0::1;;;;;;;11761:239;;9344:932:::0;-1:-1:-1;;;;;9540:17:0;;;;;;:9;:17;;;;;;:27;;9560:7;;9540:27;:::i;:::-;-1:-1:-1;;;;;9520:17:0;;;;;;:9;:17;;;;;:47;;;;9608:515;;;;9650:14;9685:8;9681:131;;;-1:-1:-1;9723:12:0;;9681:131;;;-1:-1:-1;9785:11:0;;9681:131;9826:18;9866:3;9847:16;9857:6;9847:7;:16;:::i;:::-;:22;;;;:::i;:::-;9826:43;-1:-1:-1;9888:14:0;;9884:228;;9923:23;9936:10;9923:23;;:::i;:::-;10010:4;9992:24;;;;:9;:24;;;;;;9923:23;;-1:-1:-1;9992:37:0;;10019:10;;9992:37;:::i;:::-;9983:4;9965:24;;;;:9;:24;;;;;;;:64;;;;10053:43;;-1:-1:-1;;;;;10053:43:0;;;;;;;10085:10;7522:25:1;;7510:2;7495:18;;7376:177;10053:43:0;;;;;;;;9884:228;9621:502;;9608:515;10182:19;10192:9;10182:7;:19;:::i;:::-;-1:-1:-1;;;;;10158:20:0;;;;;;:9;:20;;;;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;10135:20:0;;;;;;;:9;:20;;;;;:67;;;;10218:48;;;10246:19;10256:9;10246:7;:19;:::i;:::-;10218:48;;7522:25:1;;;7510:2;7495:18;10218:48:0;;;;;;;9509:767;9344:932;;;;;:::o;8326:300::-;-1:-1:-1;;;;;8456:17:0;;8419:4;8456:17;;;:9;:17;;;;;;:26;;8476:6;;8456:26;:::i;:::-;-1:-1:-1;;;;;8436:17:0;;;;;;;:9;:17;;;;;;:46;;;;8516:20;;;;;;;:29;;8539:6;;8516:29;:::i;:::-;-1:-1:-1;;;;;8493:20:0;;;;;;;:9;:20;;;;;;;:52;;;;8561:35;;;;;;;;;;8589:6;7522:25:1;;7510:2;7495:18;;7376:177;8561:35:0;;;;;;;;-1:-1:-1;8614:4:0;8326:300;;;;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:615::-;2169:6;2177;2230:2;2218:9;2209:7;2205:23;2201:32;2198:52;;;2246:1;2243;2236:12;2198:52;2286:9;2273:23;2315:18;2356:2;2348:6;2345:14;2342:34;;;2372:1;2369;2362:12;2342:34;2410:6;2399:9;2395:22;2385:32;;2455:7;2448:4;2444:2;2440:13;2436:27;2426:55;;2477:1;2474;2467:12;2426:55;2517:2;2504:16;2543:2;2535:6;2532:14;2529:34;;;2559:1;2556;2549:12;2529:34;2612:7;2607:2;2597:6;2594:1;2590:14;2586:2;2582:23;2578:32;2575:45;2572:65;;;2633:1;2630;2623:12;2572:65;2664:2;2656:11;;;;;2686:6;;-1:-1:-1;2083:615:1;;-1:-1:-1;;;;2083:615:1:o;2703:245::-;2770:6;2823:2;2811:9;2802:7;2798:23;2794:32;2791:52;;;2839:1;2836;2829:12;2791:52;2871:9;2865:16;2890:28;2912:5;2890:28;:::i;2953:180::-;3012:6;3065:2;3053:9;3044:7;3040:23;3036:32;3033:52;;;3081:1;3078;3071:12;3033:52;-1:-1:-1;3104:23:1;;2953:180;-1:-1:-1;2953:180:1:o;3138:184::-;3208:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:52;;;3277:1;3274;3267:12;3229:52;-1:-1:-1;3300:16:1;;3138:184;-1:-1:-1;3138:184:1:o;5411:597::-;5523:4;5552:2;5581;5570:9;5563:21;5613:6;5607:13;5656:6;5651:2;5640:9;5636:18;5629:34;5681:1;5691:140;5705:6;5702:1;5699:13;5691:140;;;5800:14;;;5796:23;;5790:30;5766:17;;;5785:2;5762:26;5755:66;5720:10;;5691:140;;;5849:6;5846:1;5843:13;5840:91;;;5919:1;5914:2;5905:6;5894:9;5890:22;5886:31;5879:42;5840:91;-1:-1:-1;5992:2:1;5971:15;-1:-1:-1;;5967:29:1;5952:45;;;;5999:2;5948:54;;5411:597;-1:-1:-1;;;5411:597:1:o;7030:341::-;7232:2;7214:21;;;7271:2;7251:18;;;7244:30;-1:-1:-1;;;7305:2:1;7290:18;;7283:47;7362:2;7347:18;;7030:341::o;7558:980::-;7820:4;7868:3;7857:9;7853:19;7899:6;7888:9;7881:25;7925:2;7963:6;7958:2;7947:9;7943:18;7936:34;8006:3;8001:2;7990:9;7986:18;7979:31;8030:6;8065;8059:13;8096:6;8088;8081:22;8134:3;8123:9;8119:19;8112:26;;8173:2;8165:6;8161:15;8147:29;;8194:1;8204:195;8218:6;8215:1;8212:13;8204:195;;;8283:13;;-1:-1:-1;;;;;8279:39:1;8267:52;;8374:15;;;;8339:12;;;;8315:1;8233:9;8204:195;;;-1:-1:-1;;;;;;;8455:32:1;;;;8450:2;8435:18;;8428:60;-1:-1:-1;;;8519:3:1;8504:19;8497:35;8416:3;7558:980;-1:-1:-1;;;7558:980:1:o;8732:128::-;8772:3;8803:1;8799:6;8796:1;8793:13;8790:39;;;8809:18;;:::i;:::-;-1:-1:-1;8845:9:1;;8732:128::o;8865:120::-;8905:1;8931;8921:35;;8936:18;;:::i;:::-;-1:-1:-1;8970:9:1;;8865:120::o;8990:168::-;9030:7;9096:1;9092;9088:6;9084:14;9081:1;9078:21;9073:1;9066:9;9059:17;9055:45;9052:71;;;9103:18;;:::i;:::-;-1:-1:-1;9143:9:1;;8990:168::o;9163:125::-;9203:4;9231:1;9228;9225:8;9222:34;;;9236:18;;:::i;:::-;-1:-1:-1;9273:9:1;;9163:125::o;9293:380::-;9372:1;9368:12;;;;9415;;;9436:61;;9490:4;9482:6;9478:17;9468:27;;9436:61;9543:2;9535:6;9532:14;9512:18;9509:38;9506:161;;;9589:10;9584:3;9580:20;9577:1;9570:31;9624:4;9621:1;9614:15;9652:4;9649:1;9642:15;9506:161;;9293:380;;;:::o;9678:135::-;9717:3;-1:-1:-1;;9738:17:1;;9735:43;;;9758:18;;:::i;:::-;-1:-1:-1;9805:1:1;9794:13;;9678:135::o;9818:112::-;9850:1;9876;9866:35;;9881:18;;:::i;:::-;-1:-1:-1;9915:9:1;;9818:112::o;9935:127::-;9996:10;9991:3;9987:20;9984:1;9977:31;10027:4;10024:1;10017:15;10051:4;10048:1;10041:15;10067:127;10128:10;10123:3;10119:20;10116:1;10109:31;10159:4;10156:1;10149:15;10183:4;10180:1;10173:15;10199:127;10260:10;10255:3;10251:20;10248:1;10241:31;10291:4;10288:1;10281:15;10315:4;10312:1;10305:15;10463:131;-1:-1:-1;;;;;10538:31:1;;10528:42;;10518:70;;10584:1;10581;10574:12;10599:118;10685:5;10678:13;10671:21;10664:5;10661:32;10651:60;;10707:1;10704;10697:12

Swarm Source

ipfs://0e4228f75852740ffc91c95e4b5064392e9badfaba78863edfb1b387be6d6b44
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.