CRO Price: $0.08 (+3.19%)

Token

Croki ($CROKI)

Overview

Max Total Supply

1,000,000,000 $CROKI

Holders

2,549

Total Transfers

-

Market

Price

$0.00 @ 0.000000 CRO

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

OVERVIEW

The Floki of Cronos which will be changing the meme space on Cronos with NFT's , Bridge, and PVP game.

Contract Source Code Verified (Exact Match)

Contract Name:
Croki

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-26
*/

/**
 *Submitted for verification at cronoscan.com on 2022-03-26

 Tg : t.me/CrokiCoin

*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

contract Croki is IBEP20, Auth {
    using SafeMath for uint256;

    address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Croki";
    string constant _symbol = "$CROKI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;  //1% max tx
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100;  //1% max wallet

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 liquidityFee = 1;
    uint256 teamFee =1;
    uint256 marketingFee = 6;
    uint256 totalFee = 8;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver = 0xEb8328b2B97611361a455839709ea37b634Ce3E6;
    address private teamFeeReceiver = 0x0a04aAcc4dDAc363bbdA8c146A15c6B8CD3f929d;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        pair = IDEXFactory(router.factory()).createPair(WCRO, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling) { return totalFee.add(1); }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WCRO;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBdevelopment = amountBNB.mul(teamFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        (bool developmentSuccess, /* bytes memory data */) = payable(teamFeeReceiver).call{value: amountBNBdevelopment, gas: 30000}("");
        require(developmentSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WCRO;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceiver(address _marketingFeeReceiver, address _teamFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae231790915560038054821661dead179055600480549091169055620000506009600a62000437565b6200006090633b9aca006200044f565b600555606460055460016200007691906200044f565b62000082919062000471565b600655606460055460016200009891906200044f565b620000a4919062000471565b6007556001600c819055600d8190556006600e556008600f556064601055601180546001600160a01b031990811673eb8328b2b97611361a455839709ea37b634ce3e61790915560128054909116730a04aacc4ddac363bbda8c146a15c6b8cd3f929d1790556016805460ff1916909117905560055462000129906103e89062000471565b620001369060036200044f565b6017553480156200014657600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff19169092179091556013805473145677fc4d9b8f19b5d56d1820c48e0443049a30931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa158015620001cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f3919062000494565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026b919062000494565b601480546001600160a01b0319166001600160a01b0392831617905530600090815260096020908152604080832060135485168452825280832060001990558254909316808352600a8252838320805460ff199081166001908117909255600b845285852080549091169091179055600554600883528484208190559351938452928392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004bf565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003795781600019048211156200035d576200035d62000322565b808516156200036b57918102915b93841c93908002906200033d565b509250929050565b600082620003925750600162000431565b81620003a15750600062000431565b8160018114620003ba5760028114620003c557620003e5565b600191505062000431565b60ff841115620003d957620003d962000322565b50506001821b62000431565b5060208310610133831016604e8410600b84101617156200040a575081810a62000431565b62000416838362000338565b80600019048211156200042d576200042d62000322565b0290505b92915050565b60006200044860ff84168362000381565b9392505050565b60008160001904831182151516156200046c576200046c62000322565b500290565b6000826200048f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004a757600080fd5b81516001600160a01b03811681146200044857600080fd5b611cca80620004cf6000396000f3fe6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b1461065f578063f42938901461067f578063f84ba65d14610694578063f887ea40146106b4578063fe9fbb80146106d457600080fd5b8063df20fd49146105df578063e66db25e146105ff578063f0b37c041461061f578063f1f3bca31461063f57600080fd5b8063b6a5d7de116100e7578063b6a5d7de14610523578063bf56b37114610543578063d51ed1c814610559578063dc93cf7014610579578063dd62ed3e1461059957600080fd5b80638f9a55c01461049e57806395d89b41146104b4578063a8aa1b31146104e3578063a9059cbb1461050357600080fd5b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146103e65780636fcba3771461040057806370a08231146104205780637d1db4a514610456578063893d20e81461046c57600080fd5b8063571ac8b0146103645780635c85974f146103845780635d0044ca146103a6578063658d4b7f146103c657600080fd5b806318160ddd116101e257806318160ddd146102cf57806323b872dd146102e45780632b112e49146103045780632f54bf6e14610319578063313ce5671461034857600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b31461027f5780631161ae39146102af57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560175481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5060408051808201909152600581526443726f6b6960d81b60208201525b60405161023f91906118dd565b34801561028b57600080fd5b5061029f61029a36600461194a565b6106f4565b604051901515815260200161023f565b3480156102bb57600080fd5b5061029f6102ca366004611976565b610761565b3480156102db57600080fd5b50600554610235565b3480156102f057600080fd5b5061029f6102ff366004611998565b610775565b34801561031057600080fd5b50610235610837565b34801561032557600080fd5b5061029f6103343660046119d9565b6000546001600160a01b0391821691161490565b34801561035457600080fd5b506040516009815260200161023f565b34801561037057600080fd5b5061029f61037f3660046119d9565b610889565b34801561039057600080fd5b506103a461039f3660046119f6565b610897565b005b3480156103b257600080fd5b506103a46103c13660046119f6565b6108e6565b3480156103d257600080fd5b506103a46103e1366004611a24565b610931565b3480156103f257600080fd5b5060165461029f9060ff1681565b34801561040c57600080fd5b506103a461041b366004611a59565b610981565b34801561042c57600080fd5b5061023561043b3660046119d9565b6001600160a01b031660009081526008602052604090205490565b34801561046257600080fd5b5061023560065481565b34801561047857600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104aa57600080fd5b5061023560075481565b3480156104c057600080fd5b506040805180820190915260068152652443524f4b4960d01b6020820152610272565b3480156104ef57600080fd5b50601454610486906001600160a01b031681565b34801561050f57600080fd5b5061029f61051e36600461194a565b6109d4565b34801561052f57600080fd5b506103a461053e3660046119d9565b6109e1565b34801561054f57600080fd5b5061023560155481565b34801561056557600080fd5b506102356105743660046119f6565b610a32565b34801561058557600080fd5b506103a46105943660046119d9565b610a76565b3480156105a557600080fd5b506102356105b4366004611a8b565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105eb57600080fd5b506103a46105fa366004611ac4565b610baa565b34801561060b57600080fd5b506103a461061a366004611a8b565b610be6565b34801561062b57600080fd5b506103a461063a3660046119d9565b610c39565b34801561064b57600080fd5b5061023561065a366004611ae0565b610c84565b34801561066b57600080fd5b506103a461067a3660046119d9565b610cc5565b34801561068b57600080fd5b506103a4610d5b565b3480156106a057600080fd5b506103a46106af366004611a24565b610dbe565b3480156106c057600080fd5b50601354610486906001600160a01b031681565b3480156106e057600080fd5b5061029f6106ef3660046119d9565b610e0e565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074f9086815260200190565b60405180910390a35060015b92915050565b60008261076d83610a32565b119392505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610822576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107fd918490610e2c565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61082d848484610e66565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610884906003546001600160a01b031660009081526008602052604090205461087e90600554906110e8565b906110e8565b905090565b600061075b826000196106f4565b6108a033610e0e565b6108c55760405162461bcd60e51b81526004016108bc90611afb565b60405180910390fd5b6103e86005546108d59190611b36565b8110156108e157600080fd5b600655565b6000546001600160a01b031633146109105760405162461bcd60e51b81526004016108bc90611b58565b6103e86005546109209190611b36565b81101561092c57600080fd5b600755565b61093a33610e0e565b6109565760405162461bcd60e51b81526004016108bc90611afb565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61098a33610e0e565b6109a65760405162461bcd60e51b81526004016108bc90611afb565b600c849055600d839055600e8290556109c9826109c3868661112a565b9061112a565b600f55601055505050565b6000610830338484610e66565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016108bc90611b58565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061075b610a3f610837565b6014546001600160a01b0316600090815260086020526040902054610a7090610a69906002611189565b8590611189565b9061120b565b610a7f33610e0e565b610a9b5760405162461bcd60e51b81526004016108bc90611afb565b306001600160a01b03821603610aff5760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016108bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611b78565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610ba5573d6000803e3d6000fd5b505050565b610bb333610e0e565b610bcf5760405162461bcd60e51b81526004016108bc90611afb565b6016805460ff191692151592909217909155601755565b610bef33610e0e565b610c0b5760405162461bcd60e51b81526004016108bc90611afb565b601180546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b03163314610c635760405162461bcd60e51b81526004016108bc90611b58565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000436015546001610c969190611b91565b10610ca95760105461075b9060016110e8565b8115610cbd57600f5461075b90600161112a565b5050600f5490565b6000546001600160a01b03163314610cef5760405162461bcd60e51b81526004016108bc90611b58565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610d6433610e0e565b610d805760405162461bcd60e51b81526004016108bc90611afb565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610dba573d6000803e3d6000fd5b5050565b610dc733610e0e565b610de35760405162461bcd60e51b81526004016108bc90611afb565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610e505760405162461bcd60e51b81526004016108bc91906118dd565b506000610e5d8486611ba9565b95945050505050565b60185460009060ff1615610e8657610e7f84848461124d565b9050610830565b610e908483611333565b6014546001600160a01b03848116911614801590610ebc57506003546001600160a01b03848116911614155b15610f67576001600160a01b0383166000908152600b602052604090205460ff1680610f0d57506007546001600160a01b038416600090815260086020526040902054610f0a908490611b91565b11155b610f675760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016108bc565b610f6f61139c565b15610f7c57610f7c6113eb565b601554158015610f9957506014546001600160a01b038481169116145b15610fc9576001600160a01b038416600090815260086020526040902054610fc057600080fd5b610fc943601555565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461101b918490610e2c565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1615611050578261105b565b61105b8585856117fd565b6001600160a01b038516600090815260086020526040902054909150611081908261112a565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d59085815260200190565b60405180910390a3506001949350505050565b600061083083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e2c565b6000806111378385611b91565b9050838110156108305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108bc565b60008260000361119b5750600061075b565b60006111a78385611bc0565b9050826111b48583611b36565b146108305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108bc565b600061083083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118af565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461129e918490610e2c565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112cd908361112a565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113219086815260200190565b60405180910390a35060019392505050565b6006548111158061135c57506001600160a01b0382166000908152600b602052604090205460ff165b610dba5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108bc565b6014546000906001600160a01b031633148015906113bd575060185460ff16155b80156113cb575060165460ff165b801561088457505060175430600090815260086020526040902054101590565b6018805460ff19166001179055306000908152600860205260408120549050600061142c6002610a70600f54610a70600c548761118990919063ffffffff16565b9050600061143a83836110e8565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061147457611474611bdf565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106114a5576114a5611bdf565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81524792919091169063791ac947906114ef908690600090879030904290600401611bf5565b600060405180830381600087803b15801561150957600080fd5b505af115801561151d573d6000803e3d6000fd5b50505050600061153682476110e890919063ffffffff16565b9050600061155c6115536002600c5461120b90919063ffffffff16565b600f54906110e8565b9050600061157e6002610a7084610a70600c548861118990919063ffffffff16565b9050600061159b83610a70600d548761118990919063ffffffff16565b905060006115b884610a70600e548861118990919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461160f576040519150601f19603f3d011682016040523d82523d6000602084013e611614565b606091505b50509050806116655760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108bc565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146116b7576040519150601f19603f3d011682016040523d82523d6000602084013e6116bc565b606091505b505090508061170d5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108bc565b8a156117e55760135460115460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611783573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117a89190611c66565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050505050565b601054601454600091829161182f9190610a7090611828906001600160a01b03898116911614610c84565b8690611189565b3060009081526008602052604090205490915061184c908261112a565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061189d9085815260200190565b60405180910390a3610e5d83826110e8565b600081836118d05760405162461bcd60e51b81526004016108bc91906118dd565b506000610e5d8486611b36565b600060208083528351808285015260005b8181101561190a578581018301518582016040015282016118ee565b8181111561191c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461194757600080fd5b50565b6000806040838503121561195d57600080fd5b823561196881611932565b946020939093013593505050565b6000806040838503121561198957600080fd5b50508035926020909101359150565b6000806000606084860312156119ad57600080fd5b83356119b881611932565b925060208401356119c881611932565b929592945050506040919091013590565b6000602082840312156119eb57600080fd5b813561083081611932565b600060208284031215611a0857600080fd5b5035919050565b80358015158114611a1f57600080fd5b919050565b60008060408385031215611a3757600080fd5b8235611a4281611932565b9150611a5060208401611a0f565b90509250929050565b60008060008060808587031215611a6f57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a9e57600080fd5b8235611aa981611932565b91506020830135611ab981611932565b809150509250929050565b60008060408385031215611ad757600080fd5b61196883611a0f565b600060208284031215611af257600080fd5b61083082611a0f565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611b5357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611b8a57600080fd5b5051919050565b60008219821115611ba457611ba4611b20565b500190565b600082821015611bbb57611bbb611b20565b500390565b6000816000190483118215151615611bda57611bda611b20565b500290565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c455784516001600160a01b031683529383019391830191600101611c20565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c7b57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207229084e68b34816f3af66fb2256cf346823f179b92e0eea937702d6e7e21bf564736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b1461065f578063f42938901461067f578063f84ba65d14610694578063f887ea40146106b4578063fe9fbb80146106d457600080fd5b8063df20fd49146105df578063e66db25e146105ff578063f0b37c041461061f578063f1f3bca31461063f57600080fd5b8063b6a5d7de116100e7578063b6a5d7de14610523578063bf56b37114610543578063d51ed1c814610559578063dc93cf7014610579578063dd62ed3e1461059957600080fd5b80638f9a55c01461049e57806395d89b41146104b4578063a8aa1b31146104e3578063a9059cbb1461050357600080fd5b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146103e65780636fcba3771461040057806370a08231146104205780637d1db4a514610456578063893d20e81461046c57600080fd5b8063571ac8b0146103645780635c85974f146103845780635d0044ca146103a6578063658d4b7f146103c657600080fd5b806318160ddd116101e257806318160ddd146102cf57806323b872dd146102e45780632b112e49146103045780632f54bf6e14610319578063313ce5671461034857600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b31461027f5780631161ae39146102af57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560175481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5060408051808201909152600581526443726f6b6960d81b60208201525b60405161023f91906118dd565b34801561028b57600080fd5b5061029f61029a36600461194a565b6106f4565b604051901515815260200161023f565b3480156102bb57600080fd5b5061029f6102ca366004611976565b610761565b3480156102db57600080fd5b50600554610235565b3480156102f057600080fd5b5061029f6102ff366004611998565b610775565b34801561031057600080fd5b50610235610837565b34801561032557600080fd5b5061029f6103343660046119d9565b6000546001600160a01b0391821691161490565b34801561035457600080fd5b506040516009815260200161023f565b34801561037057600080fd5b5061029f61037f3660046119d9565b610889565b34801561039057600080fd5b506103a461039f3660046119f6565b610897565b005b3480156103b257600080fd5b506103a46103c13660046119f6565b6108e6565b3480156103d257600080fd5b506103a46103e1366004611a24565b610931565b3480156103f257600080fd5b5060165461029f9060ff1681565b34801561040c57600080fd5b506103a461041b366004611a59565b610981565b34801561042c57600080fd5b5061023561043b3660046119d9565b6001600160a01b031660009081526008602052604090205490565b34801561046257600080fd5b5061023560065481565b34801561047857600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104aa57600080fd5b5061023560075481565b3480156104c057600080fd5b506040805180820190915260068152652443524f4b4960d01b6020820152610272565b3480156104ef57600080fd5b50601454610486906001600160a01b031681565b34801561050f57600080fd5b5061029f61051e36600461194a565b6109d4565b34801561052f57600080fd5b506103a461053e3660046119d9565b6109e1565b34801561054f57600080fd5b5061023560155481565b34801561056557600080fd5b506102356105743660046119f6565b610a32565b34801561058557600080fd5b506103a46105943660046119d9565b610a76565b3480156105a557600080fd5b506102356105b4366004611a8b565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105eb57600080fd5b506103a46105fa366004611ac4565b610baa565b34801561060b57600080fd5b506103a461061a366004611a8b565b610be6565b34801561062b57600080fd5b506103a461063a3660046119d9565b610c39565b34801561064b57600080fd5b5061023561065a366004611ae0565b610c84565b34801561066b57600080fd5b506103a461067a3660046119d9565b610cc5565b34801561068b57600080fd5b506103a4610d5b565b3480156106a057600080fd5b506103a46106af366004611a24565b610dbe565b3480156106c057600080fd5b50601354610486906001600160a01b031681565b3480156106e057600080fd5b5061029f6106ef3660046119d9565b610e0e565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074f9086815260200190565b60405180910390a35060015b92915050565b60008261076d83610a32565b119392505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610822576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107fd918490610e2c565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61082d848484610e66565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610884906003546001600160a01b031660009081526008602052604090205461087e90600554906110e8565b906110e8565b905090565b600061075b826000196106f4565b6108a033610e0e565b6108c55760405162461bcd60e51b81526004016108bc90611afb565b60405180910390fd5b6103e86005546108d59190611b36565b8110156108e157600080fd5b600655565b6000546001600160a01b031633146109105760405162461bcd60e51b81526004016108bc90611b58565b6103e86005546109209190611b36565b81101561092c57600080fd5b600755565b61093a33610e0e565b6109565760405162461bcd60e51b81526004016108bc90611afb565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61098a33610e0e565b6109a65760405162461bcd60e51b81526004016108bc90611afb565b600c849055600d839055600e8290556109c9826109c3868661112a565b9061112a565b600f55601055505050565b6000610830338484610e66565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016108bc90611b58565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061075b610a3f610837565b6014546001600160a01b0316600090815260086020526040902054610a7090610a69906002611189565b8590611189565b9061120b565b610a7f33610e0e565b610a9b5760405162461bcd60e51b81526004016108bc90611afb565b306001600160a01b03821603610aff5760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016108bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611b78565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610ba5573d6000803e3d6000fd5b505050565b610bb333610e0e565b610bcf5760405162461bcd60e51b81526004016108bc90611afb565b6016805460ff191692151592909217909155601755565b610bef33610e0e565b610c0b5760405162461bcd60e51b81526004016108bc90611afb565b601180546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b03163314610c635760405162461bcd60e51b81526004016108bc90611b58565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000436015546001610c969190611b91565b10610ca95760105461075b9060016110e8565b8115610cbd57600f5461075b90600161112a565b5050600f5490565b6000546001600160a01b03163314610cef5760405162461bcd60e51b81526004016108bc90611b58565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610d6433610e0e565b610d805760405162461bcd60e51b81526004016108bc90611afb565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610dba573d6000803e3d6000fd5b5050565b610dc733610e0e565b610de35760405162461bcd60e51b81526004016108bc90611afb565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610e505760405162461bcd60e51b81526004016108bc91906118dd565b506000610e5d8486611ba9565b95945050505050565b60185460009060ff1615610e8657610e7f84848461124d565b9050610830565b610e908483611333565b6014546001600160a01b03848116911614801590610ebc57506003546001600160a01b03848116911614155b15610f67576001600160a01b0383166000908152600b602052604090205460ff1680610f0d57506007546001600160a01b038416600090815260086020526040902054610f0a908490611b91565b11155b610f675760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016108bc565b610f6f61139c565b15610f7c57610f7c6113eb565b601554158015610f9957506014546001600160a01b038481169116145b15610fc9576001600160a01b038416600090815260086020526040902054610fc057600080fd5b610fc943601555565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461101b918490610e2c565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1615611050578261105b565b61105b8585856117fd565b6001600160a01b038516600090815260086020526040902054909150611081908261112a565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d59085815260200190565b60405180910390a3506001949350505050565b600061083083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e2c565b6000806111378385611b91565b9050838110156108305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108bc565b60008260000361119b5750600061075b565b60006111a78385611bc0565b9050826111b48583611b36565b146108305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108bc565b600061083083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118af565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461129e918490610e2c565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112cd908361112a565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113219086815260200190565b60405180910390a35060019392505050565b6006548111158061135c57506001600160a01b0382166000908152600b602052604090205460ff165b610dba5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108bc565b6014546000906001600160a01b031633148015906113bd575060185460ff16155b80156113cb575060165460ff165b801561088457505060175430600090815260086020526040902054101590565b6018805460ff19166001179055306000908152600860205260408120549050600061142c6002610a70600f54610a70600c548761118990919063ffffffff16565b9050600061143a83836110e8565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061147457611474611bdf565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106114a5576114a5611bdf565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81524792919091169063791ac947906114ef908690600090879030904290600401611bf5565b600060405180830381600087803b15801561150957600080fd5b505af115801561151d573d6000803e3d6000fd5b50505050600061153682476110e890919063ffffffff16565b9050600061155c6115536002600c5461120b90919063ffffffff16565b600f54906110e8565b9050600061157e6002610a7084610a70600c548861118990919063ffffffff16565b9050600061159b83610a70600d548761118990919063ffffffff16565b905060006115b884610a70600e548861118990919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461160f576040519150601f19603f3d011682016040523d82523d6000602084013e611614565b606091505b50509050806116655760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108bc565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146116b7576040519150601f19603f3d011682016040523d82523d6000602084013e6116bc565b606091505b505090508061170d5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108bc565b8a156117e55760135460115460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611783573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117a89190611c66565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050505050565b601054601454600091829161182f9190610a7090611828906001600160a01b03898116911614610c84565b8690611189565b3060009081526008602052604090205490915061184c908261112a565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061189d9085815260200190565b60405180910390a3610e5d83826110e8565b600081836118d05760405162461bcd60e51b81526004016108bc91906118dd565b506000610e5d8486611b36565b600060208083528351808285015260005b8181101561190a578581018301518582016040015282016118ee565b8181111561191c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461194757600080fd5b50565b6000806040838503121561195d57600080fd5b823561196881611932565b946020939093013593505050565b6000806040838503121561198957600080fd5b50508035926020909101359150565b6000806000606084860312156119ad57600080fd5b83356119b881611932565b925060208401356119c881611932565b929592945050506040919091013590565b6000602082840312156119eb57600080fd5b813561083081611932565b600060208284031215611a0857600080fd5b5035919050565b80358015158114611a1f57600080fd5b919050565b60008060408385031215611a3757600080fd5b8235611a4281611932565b9150611a5060208401611a0f565b90509250929050565b60008060008060808587031215611a6f57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a9e57600080fd5b8235611aa981611932565b91506020830135611ab981611932565b809150509250929050565b60008060408385031215611ad757600080fd5b61196883611a0f565b600060208284031215611af257600080fd5b61083082611a0f565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611b5357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611b8a57600080fd5b5051919050565b60008219821115611ba457611ba4611b20565b500190565b600082821015611bbb57611bbb611b20565b500390565b6000816000190483118215151615611bda57611bda611b20565b500290565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c455784516001600160a01b031683529383019391830191600101611c20565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c7b57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207229084e68b34816f3af66fb2256cf346823f179b92e0eea937702d6e7e21bf564736f6c634300080d0033

Deployed Bytecode Sourcemap

5558:10710:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6824:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6824:54:0;;;;;;;;7775:80;;;;;;;;;;-1:-1:-1;7847:5:0;;;;;;;;;;;;-1:-1:-1;;;7847:5:0;;;;7775:80;;;;;;;:::i;8197:216::-;;;;;;;;;;-1:-1:-1;8197:216:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;8197:216:0;1254:187:1;16047:150:0;;;;;;;;;;-1:-1:-1;16047:150:0;;;;;:::i;:::-;;:::i;7505:88::-;;;;;;;;;;-1:-1:-1;7578:12:0;;7505:88;;8715:370;;;;;;;;;;-1:-1:-1;8715:370:0;;;;;:::i;:::-;;:::i;15722:142::-;;;;;;;;;;;;;:::i;3453:103::-;;;;;;;;;;-1:-1:-1;3453:103:0;;;;;:::i;:::-;3508:4;3543:5;-1:-1:-1;;;;;3532:16:0;;;3543:5;;3532:16;;3453:103;7599:80;;;;;;;;;;-1:-1:-1;7599:80:0;;5931:1;2554:36:1;;2542:2;2527:18;7599:80:0;2412:184:1;8421:122:0;;;;;;;;;;-1:-1:-1;8421:122:0;;;;;:::i;:::-;;:::i;13900:145::-;;;;;;;;;;-1:-1:-1;13900:145:0;;;;;:::i;:::-;;:::i;:::-;;14052:151;;;;;;;;;;-1:-1:-1;14052:151:0;;;;;:::i;:::-;;:::i;14215:120::-;;;;;;;;;;-1:-1:-1;14215:120:0;;;;;:::i;:::-;;:::i;6787:30::-;;;;;;;;;;-1:-1:-1;6787:30:0;;;;;;;;14479:352;;;;;;;;;;-1:-1:-1;14479:352:0;;;;;:::i;:::-;;:::i;7945:105::-;;;;;;;;;;-1:-1:-1;7945:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8029:18:0;8011:7;8029:18;;;:9;:18;;;;;;;7945:105;6001:54;;;;;;;;;;;;;;;;7861:78;;;;;;;;;;-1:-1:-1;7913:7:0;7931:5;-1:-1:-1;;;;;7931:5:0;7861:78;;;-1:-1:-1;;;;;3825:32:1;;;3807:51;;3795:2;3780:18;7861:78:0;3661:203:1;6075:56:0;;;;;;;;;;;;;;;;7685:84;;;;;;;;;;-1:-1:-1;7759:7:0;;;;;;;;;;;;-1:-1:-1;;;7759:7:0;;;;7685:84;;6725:19;;;;;;;;;;-1:-1:-1;6725:19:0;;;;-1:-1:-1;;;;;6725:19:0;;;8551:156;;;;;;;;;;-1:-1:-1;8551:156:0;;;;;:::i;:::-;;:::i;3126:94::-;;;;;;;;;;-1:-1:-1;3126:94:0;;;;;:::i;:::-;;:::i;6753:25::-;;;;;;;;;;;;;;;;15872:167;;;;;;;;;;-1:-1:-1;15872:167:0;;;;;:::i;:::-;;:::i;15408:298::-;;;;;;;;;;-1:-1:-1;15408:298:0;;;;;:::i;:::-;;:::i;8056:133::-;;;;;;;;;;-1:-1:-1;8056:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8158:19:0;;;8140:7;8158:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8056:133;15056:156;;;;;;;;;;-1:-1:-1;15056:156:0;;;;;:::i;:::-;;:::i;14839:209::-;;;;;;;;;;-1:-1:-1;14839:209:0;;;;;:::i;:::-;;:::i;3296:97::-;;;;;;;;;;-1:-1:-1;3296:97:0;;;;;:::i;:::-;;:::i;10685:225::-;;;;;;;;;;-1:-1:-1;10685:225:0;;;;;:::i;:::-;;:::i;3853:173::-;;;;;;;;;;-1:-1:-1;3853:173:0;;;;;:::i;:::-;;:::i;15220:180::-;;;;;;;;;;;;;:::i;14343:128::-;;;;;;;;;;-1:-1:-1;14343:128:0;;;;;:::i;:::-;;:::i;6694:24::-;;;;;;;;;;-1:-1:-1;6694:24:0;;;;-1:-1:-1;;;;;6694:24:0;;;3627:107;;;;;;;;;;-1:-1:-1;3627:107:0;;;;;:::i;:::-;;:::i;8197:216::-;8301:10;8272:4;8289:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8289:32:0;;;;;;;;;;:41;;;8346:37;8272:4;;8289:32;;8346:37;;;;8324:6;160:25:1;;148:2;133:18;;14:177;8346:37:0;;;;;;;;-1:-1:-1;8401:4:0;8197:216;;;;;:::o;16047:150::-;16127:4;16183:6;16151:29;16171:8;16151:19;:29::i;:::-;:38;;16047:150;-1:-1:-1;;;16047:150:0:o;8715:370::-;-1:-1:-1;;;;;8835:19:0;;8815:4;8835:19;;;:11;:19;;;;;;;;8855:10;8835:31;;;;;;;;-1:-1:-1;;8835:52:0;8832:186;;8937:69;;;;;;;;;;;-1:-1:-1;;;8937:69:0;;;;;;;;-1:-1:-1;;;;;8937:19:0;;-1:-1:-1;8937:19:0;;;:11;:19;;;;;8957:10;8937:31;;;;;;;;;;:69;;8973:6;;8937:35;:69::i;:::-;-1:-1:-1;;;;;8903:19:0;;;;;;:11;:19;;;;;;;;8923:10;8903:31;;;;;;;:103;8832:186;9037:40;9051:6;9059:9;9070:6;9037:13;:40::i;:::-;9030:47;;8715:370;;;;;;:::o;15722:142::-;15850:4;;-1:-1:-1;;;;;15850:4:0;15775:7;8029:18;;;:9;:18;;;;;;15802:54;;15829:4;;-1:-1:-1;;;;;15829:4:0;8011:7;8029:18;;;:9;:18;;;;;;15802:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15795:61;;15722:142;:::o;8421:122::-;8476:4;8500:35;8508:7;-1:-1:-1;;8500:7:0;:35::i;13900:145::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;;;;;;;;;14000:4:::1;13985:12;;:19;;;;:::i;:::-;13975:6;:29;;13967:38;;;::::0;::::1;;14016:12;:21:::0;13900:145::o;14052:151::-;3508:4;3543:5;-1:-1:-1;;;;;3543:5:0;2850:10;3532:16;2834:38;;;;-1:-1:-1;;;2834:38:0;;;;;;;:::i;:::-;14155:4:::1;14140:12;;:19;;;;:::i;:::-;14130:6;:29;;14122:39;;;::::0;::::1;;14172:14;:23:::0;14052:151::o;14215:120::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14299:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;14299:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14215:120::o;14479:352::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;14616:12:::1;:28:::0;;;14655:7:::1;:18:::0;;;14684:12:::1;:28:::0;;;14734:46:::1;14699:13:::0;14734:27:::1;14631:13:::0;14665:8;14734:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:::-;14723:8;:57:::0;14791:14:::1;:32:::0;-1:-1:-1;;;14479:352:0:o;8551:156::-;8631:4;8655:44;8669:10;8681:9;8692:6;8655:13;:44::i;3126:94::-;3508:4;3543:5;-1:-1:-1;;;;;3543:5:0;2850:10;3532:16;2834:38;;;;-1:-1:-1;;;2834:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3186:19:0::1;;::::0;;;3208:4:::1;3186:19;::::0;;;;;;;:26;;-1:-1:-1;;3186:26:0::1;::::0;;::::1;::::0;;3126:94::o;15872:167::-;15940:7;15967:64;16008:22;:20;:22::i;:::-;15990:4;;-1:-1:-1;;;;;15990:4:0;8011:7;8029:18;;;:9;:18;;;;;;15967:36;;15980:22;;16000:1;15980:19;:22::i;:::-;15967:8;;:12;:36::i;:::-;:40;;:64::i;15408:298::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;15509:4:::1;-1:-1:-1::0;;;;;15491:23:0;::::1;::::0;15483:71:::1;;;::::0;-1:-1:-1;;;15483:71:0;;6416:2:1;15483:71:0::1;::::0;::::1;6398:21:1::0;6455:2;6435:18;;;6428:30;6494:34;6474:18;;;6467:62;-1:-1:-1;;;6545:18:1;;;6538:33;6588:19;;15483:71:0::1;6214:399:1::0;15483:71:0::1;15592:39;::::0;-1:-1:-1;;;15592:39:0;;15625:4:::1;15592:39;::::0;::::1;3807:51:1::0;15565:24:0::1;::::0;-1:-1:-1;;;;;15592:24:0;::::1;::::0;::::1;::::0;3780:18:1;;15592:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15650:20;::::0;15642:56:::1;::::0;15565:66;;-1:-1:-1;;;;;;15650:20:0::1;::::0;15642:56;::::1;;;::::0;15565:66;;15650:20:::1;15642:56:::0;15650:20;15642:56;15565:66;15650:20;15642:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15472:234;15408:298:::0;:::o;15056:156::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;15148:11:::1;:22:::0;;-1:-1:-1;;15148:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;15181:13:::1;:23:::0;15056:156::o;14839:209::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;14951:20:::1;:44:::0;;-1:-1:-1;;;;;14951:44:0;;::::1;-1:-1:-1::0;;;;;;14951:44:0;;::::1;;::::0;;;15006:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;14839:209::o;3296:97::-;3508:4;3543:5;-1:-1:-1;;;;;3543:5:0;2850:10;3532:16;2834:38;;;;-1:-1:-1;;;2834:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3358:19:0::1;3380:5;3358:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3358:27:0::1;::::0;;3296:97::o;10685:225::-;10741:7;10782:12;10764:10;;10777:1;10764:14;;;;:::i;:::-;:30;10761:67;;10804:14;;:21;;10823:1;10804:18;:21::i;10761:67::-;10841:7;10838:39;;;10859:8;;:15;;10872:1;10859:12;:15::i;10838:39::-;-1:-1:-1;;10894:8:0;;;10685:225::o;3853:173::-;3508:4;3543:5;-1:-1:-1;;;;;3543:5:0;2850:10;3532:16;2834:38;;;;-1:-1:-1;;;2834:38:0;;;;;;;:::i;:::-;3929:5:::1;:11:::0;;-1:-1:-1;;;;;;3929:11:0::1;-1:-1:-1::0;;;;;3929:11:0;::::1;::::0;;::::1;::::0;;3951:19;;;-1:-1:-1;3951:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3951:26:0::1;::::0;;::::1;::::0;;;3993:25;;3807:51:1;;;3993:25:0::1;::::0;3780:18:1;3993:25:0::1;;;;;;;3853:173:::0;:::o;15220:180::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;15342:20:::1;::::0;15334:58:::1;::::0;15302:21:::1;::::0;-1:-1:-1;;;;;15342:20:0::1;::::0;15334:58;::::1;;;::::0;15302:21;;15273:26:::1;15334:58:::0;15273:26;15334:58;15302:21;15342:20;15334:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15262:138;15220:180::o:0;14343:128::-;3011:24;3024:10;3011:12;:24::i;:::-;3003:48;;;;-1:-1:-1;;;3003:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14431:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;14431:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14343:128::o;3627:107::-;-1:-1:-1;;;;;3707:19:0;3683:4;3707:19;;;:14;:19;;;;;;;;;3627:107::o;510:192::-;596:7;632:12;624:6;;;;616:29;;;;-1:-1:-1;;;616:29:0;;;;;;;;:::i;:::-;-1:-1:-1;656:9:0;668:5;672:1;668;:5;:::i;:::-;656:17;510:192;-1:-1:-1;;;;;510:192:0:o;9093:942::-;9205:6;;9185:4;;9205:6;;9202:63;;;9221:41;9236:6;9244:9;9255:6;9221:14;:41::i;:::-;9214:48;;;;9202:63;9285:28;9298:6;9306;9285:12;:28::i;:::-;9351:4;;-1:-1:-1;;;;;9338:17:0;;;9351:4;;9338:17;;;;:38;;-1:-1:-1;9372:4:0;;-1:-1:-1;;;;;9359:17:0;;;9372:4;;9359:17;;9338:38;9334:198;;;-1:-1:-1;;;;;9401:26:0;;;;;;:15;:26;;;;;;;;;:77;;-1:-1:-1;9464:14:0;;-1:-1:-1;;;;;9431:20:0;;;;;;:9;:20;;;;;;:29;;9454:6;;9431:29;:::i;:::-;:47;;9401:77;9393:127;;;;-1:-1:-1;;;9393:127:0;;7488:2:1;9393:127:0;;;7470:21:1;7527:2;7507:18;;;7500:30;7566:34;7546:18;;;7539:62;-1:-1:-1;;;7617:18:1;;;7610:35;7662:19;;9393:127:0;7286:401:1;9393:127:0;9555:16;:14;:16::i;:::-;9552:35;;;9574:10;:8;:10::i;:::-;13790;;:15;;;9602:32;;-1:-1:-1;9630:4:0;;-1:-1:-1;;;;;9617:17:0;;;9630:4;;9617:17;9602:32;9599:81;;;-1:-1:-1;;;;;9645:17:0;;9665:1;9645:17;;;:9;:17;;;;;;9637:30;;;;;;9669:8;13872:12;13859:10;:25;13821:71;9669:8;9712:53;;;;;;;;;;;-1:-1:-1;;;9712:53:0;;;;;;;;-1:-1:-1;;;;;9712:17:0;;-1:-1:-1;9712:17:0;;;:9;:17;;;;;;;;:53;;9734:6;;9712:21;:53::i;:::-;-1:-1:-1;;;;;9692:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10650:11;:19;;;;;;;;10649:20;9803:67;;9864:6;9803:67;;;9827:34;9835:6;9843:9;9854:6;9827:7;:34::i;:::-;-1:-1:-1;;;;;9904:20:0;;;;;;:9;:20;;;;;;9778:92;;-1:-1:-1;9904:40:0;;9778:92;9904:24;:40::i;:::-;-1:-1:-1;;;;;9881:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9962:43;;;;;;;;;;9990:14;160:25:1;;148:2;133:18;;14:177;9962:43:0;;;;;;;;-1:-1:-1;10023:4:0;;9093:942;-1:-1:-1;;;;9093:942:0:o;368:136::-;426:7;453:43;457:1;460;453:43;;;;;;;;;;;;;;;;;:3;:43::i;181:181::-;239:7;;271:5;275:1;271;:5;:::i;:::-;259:17;;300:1;295;:6;;287:46;;;;-1:-1:-1;;;287:46:0;;7894:2:1;287:46:0;;;7876:21:1;7933:2;7913:18;;;7906:30;7972:29;7952:18;;;7945:57;8019:18;;287:46:0;7692:351:1;708:250:0;766:7;790:1;795;790:6;786:47;;-1:-1:-1;820:1:0;813:8;;786:47;845:9;857:5;861:1;857;:5;:::i;:::-;845:17;-1:-1:-1;890:1:0;881:5;885:1;845:17;881:5;:::i;:::-;:10;873:56;;;;-1:-1:-1;;;873:56:0;;8423:2:1;873:56:0;;;8405:21:1;8462:2;8442:18;;;8435:30;8501:34;8481:18;;;8474:62;-1:-1:-1;;;8552:18:1;;;8545:31;8593:19;;873:56:0;8221:397:1;964:132:0;1022:7;1049:39;1053:1;1056;1049:39;;;;;;;;;;;;;;;;;:3;:39::i;10047:330::-;10177:53;;;;;;;;;;;-1:-1:-1;;;10177:53:0;;;;;;;;-1:-1:-1;;;;;10177:17:0;;10140:4;10177:17;;;:9;:17;;;;;;;:53;;10199:6;;10177:21;:53::i;:::-;-1:-1:-1;;;;;10157:17:0;;;;;;;:9;:17;;;;;;:73;;;;10264:20;;;;;;;:32;;10289:6;10264:24;:32::i;:::-;-1:-1:-1;;;;;10241:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10312:35;;;;;;;;;;10340:6;160:25:1;;148:2;133:18;;14:177;10312:35:0;;;;;;;;-1:-1:-1;10365:4:0;10047:330;;;;;:::o;10385:166::-;10482:12;;10472:6;:22;;:49;;;-1:-1:-1;;;;;;10498:23:0;;;;;;:15;:23;;;;;;;;10472:49;10464:79;;;;-1:-1:-1;;;10464:79:0;;8825:2:1;10464:79:0;;;8807:21:1;8864:2;8844:18;;;8837:30;-1:-1:-1;;;8883:18:1;;;8876:47;8940:18;;10464:79:0;8623:341:1;11298:197:0;11385:4;;11347;;-1:-1:-1;;;;;11385:4:0;11371:10;:18;;;;:38;;-1:-1:-1;11403:6:0;;;;11402:7;11371:38;:62;;;;-1:-1:-1;11422:11:0;;;;11371:62;:116;;;;-1:-1:-1;;11474:13:0;;11464:4;11446:24;;;;:9;:24;;;;;;:41;;;11298:197::o;11503:1843::-;6933:6;:13;;-1:-1:-1;;6933:13:0;6942:4;6933:13;;;11601:4:::1;-1:-1:-1::0;8029:18:0;;;:9;:18;;;;;;11552:55:::1;;11618:23;11644:59;11701:1;11644:52;11687:8;;11644:38;11669:12;;11644:20;:24;;:38;;;;:::i;:59::-;11618:85:::0;-1:-1:-1;11714:20:0::1;11737:41;:20:::0;11618:85;11737:24:::1;:41::i;:::-;11815:16;::::0;;11829:1:::1;11815:16:::0;;;;;::::1;::::0;;11714:64;;-1:-1:-1;11791:21:0::1;::::0;11815:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11815:16:0::1;11791:40;;11860:4;11842;11847:1;11842:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11842:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11886:4:::1;::::0;11876:7;;11886:4;::::1;::::0;11876;;11886;;11876:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;11876:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;11961:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11961:188:0;;11927:21:::1;::::0;11961:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12033:12;;11903:21:::1;::::0;12076:4;;12103::::1;::::0;12123:15:::1;::::0;11961:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12160:17;12180:40;12206:13;12180:21;:25;;:40;;;;:::i;:::-;12160:60;;12231:19;12253:33;12266:19;12283:1;12266:12;;:16;;:19;;;;:::i;:::-;12253:8;::::0;;:12:::1;:33::i;:::-;12231:55;;12297:26;12326:51;12375:1;12326:44;12358:11;12326:27;12340:12;;12326:9;:13;;:27;;;;:::i;:51::-;12297:80;;12388:28;12419:39;12446:11;12419:22;12433:7;;12419:9;:13;;:22;;;;:::i;:39::-;12388:70;;12469:26;12498:44;12530:11;12498:27;12512:12;;12498:9;:13;;:27;;;;:::i;:44::-;12616:20;::::0;12608:77:::1;::::0;12469:73;;-1:-1:-1;12558:21:0::1;::::0;-1:-1:-1;;;;;12616:20:0;;::::1;::::0;12675:5:::1;::::0;12469:73;;12558:21;12608:77;12558:21;12608:77;12469:73;12616:20;12675:5;12608:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12557:128;;;12704:16;12696:59;;;::::0;-1:-1:-1;;;12696:59:0;;10630:2:1;12696:59:0::1;::::0;::::1;10612:21:1::0;10669:2;10649:18;;;10642:30;10708:32;10688:18;;;10681:60;10758:18;;12696:59:0::1;10428:354:1::0;12696:59:0::1;12827:15;::::0;12819:74:::1;::::0;12767:23:::1;::::0;-1:-1:-1;;;;;12827:15:0::1;::::0;12883:5:::1;::::0;12856:20;;12767:23;12819:74;12767:23;12819:74;12856:20;12827:15;12883:5;12819:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12766:127;;;12912:18;12904:61;;;::::0;-1:-1:-1;;;12904:61:0;;10630:2:1;12904:61:0::1;::::0;::::1;10612:21:1::0;10669:2;10649:18;;;10642:30;10708:32;10688:18;;;10681:60;10758:18;;12904:61:0::1;10428:354:1::0;12904:61:0::1;12981:19:::0;;12978:361:::1;;13016:6;::::0;13190:20:::1;::::0;13016:243:::1;::::0;-1:-1:-1;;;13016:243:0;;13092:4:::1;13016:243;::::0;::::1;11128:34:1::0;11178:18;;;11171:34;;;13016:6:0::1;11221:18:1::0;;;11214:34;;;11264:18;;;11257:34;-1:-1:-1;;;;;13190:20:0;;::::1;11307:19:1::0;;;11300:44;13229:15:0::1;11360:19:1::0;;;11353:35;13016:6:0;::::1;::::0;:22:::1;::::0;13046:18;;11062:19:1;;13016:243:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13279:48:0::1;::::0;;11884:25:1;;;11940:2;11925:18;;11918:34;;;13279:48:0::1;::::0;-1:-1:-1;11857:18:1;13279:48:0::1;;;;;;;12978:361;-1:-1:-1::0;;6951:6:0;:14;;-1:-1:-1;;6951:14:0;;;-1:-1:-1;;;;;;;;;;11503:1843:0:o;10918:372::-;11089:14;;11078:4;;11003:7;;;;11043:61;;11089:14;11043:41;;11054:29;;-1:-1:-1;;;;;11066:16:0;;;11078:4;;11066:16;11054:11;:29::i;:::-;11043:6;;:10;:41::i;:61::-;11162:4;11144:24;;;;:9;:24;;;;;;11023:81;;-1:-1:-1;11144:39:0;;11023:81;11144:28;:39::i;:::-;11135:4;11117:24;;;;:9;:24;;;;;;;:66;;;;11199:42;;-1:-1:-1;;;;;11199:42:0;;;;;;;11231:9;160:25:1;;148:2;133:18;;14:177;11199:42:0;;;;;;;;11261:21;:6;11272:9;11261:10;:21::i;1102:345::-;1188:7;1290:12;1283:5;1275:28;;;;-1:-1:-1;;;1275:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1314:9:0;1326:5;1330:1;1326;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:248::-;1514:6;1522;1575:2;1563:9;1554:7;1550:23;1546:32;1543:52;;;1591:1;1588;1581:12;1543:52;-1:-1:-1;;1614:23:1;;;1684:2;1669:18;;;1656:32;;-1:-1:-1;1446:248:1:o;1699:456::-;1776:6;1784;1792;1845:2;1833:9;1824:7;1820:23;1816:32;1813:52;;;1861:1;1858;1851:12;1813:52;1900:9;1887:23;1919:31;1944:5;1919:31;:::i;:::-;1969:5;-1:-1:-1;2026:2:1;2011:18;;1998:32;2039:33;1998:32;2039:33;:::i;:::-;1699:456;;2091:7;;-1:-1:-1;;;2145:2:1;2130:18;;;;2117:32;;1699:456::o;2160:247::-;2219:6;2272:2;2260:9;2251:7;2247:23;2243:32;2240:52;;;2288:1;2285;2278:12;2240:52;2327:9;2314:23;2346:31;2371:5;2346:31;:::i;2601:180::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;-1:-1:-1;2752:23:1;;2601:180;-1:-1:-1;2601:180:1:o;2786:160::-;2851:20;;2907:13;;2900:21;2890:32;;2880:60;;2936:1;2933;2926:12;2880:60;2786:160;;;:::o;2951:315::-;3016:6;3024;3077:2;3065:9;3056:7;3052:23;3048:32;3045:52;;;3093:1;3090;3083:12;3045:52;3132:9;3119:23;3151:31;3176:5;3151:31;:::i;:::-;3201:5;-1:-1:-1;3225:35:1;3256:2;3241:18;;3225:35;:::i;:::-;3215:45;;2951:315;;;;;:::o;3271:385::-;3357:6;3365;3373;3381;3434:3;3422:9;3413:7;3409:23;3405:33;3402:53;;;3451:1;3448;3441:12;3402:53;-1:-1:-1;;3474:23:1;;;3544:2;3529:18;;3516:32;;-1:-1:-1;3595:2:1;3580:18;;3567:32;;3646:2;3631:18;3618:32;;-1:-1:-1;3271:385:1;-1:-1:-1;3271:385:1:o;3869:388::-;3937:6;3945;3998:2;3986:9;3977:7;3973:23;3969:32;3966:52;;;4014:1;4011;4004:12;3966:52;4053:9;4040:23;4072:31;4097:5;4072:31;:::i;:::-;4122:5;-1:-1:-1;4179:2:1;4164:18;;4151:32;4192:33;4151:32;4192:33;:::i;:::-;4244:7;4234:17;;;3869:388;;;;;:::o;4262:248::-;4327:6;4335;4388:2;4376:9;4367:7;4363:23;4359:32;4356:52;;;4404:1;4401;4394:12;4356:52;4427:26;4443:9;4427:26;:::i;4515:180::-;4571:6;4624:2;4612:9;4603:7;4599:23;4595:32;4592:52;;;4640:1;4637;4630:12;4592:52;4663:26;4679:9;4663:26;:::i;5186:335::-;5388:2;5370:21;;;5427:2;5407:18;;;5400:30;-1:-1:-1;;;5461:2:1;5446:18;;5439:41;5512:2;5497:18;;5186:335::o;5526:127::-;5587:10;5582:3;5578:20;5575:1;5568:31;5618:4;5615:1;5608:15;5642:4;5639:1;5632:15;5658:217;5698:1;5724;5714:132;;5768:10;5763:3;5759:20;5756:1;5749:31;5803:4;5800:1;5793:15;5831:4;5828:1;5821:15;5714:132;-1:-1:-1;5860:9:1;;5658:217::o;5880:329::-;6082:2;6064:21;;;6121:1;6101:18;;;6094:29;-1:-1:-1;;;6154:2:1;6139:18;;6132:36;6200:2;6185:18;;5880:329::o;6618:184::-;6688:6;6741:2;6729:9;6720:7;6716:23;6712:32;6709:52;;;6757:1;6754;6747:12;6709:52;-1:-1:-1;6780:16:1;;6618:184;-1:-1:-1;6618:184:1:o;6807:128::-;6847:3;6878:1;6874:6;6871:1;6868:13;6865:39;;;6884:18;;:::i;:::-;-1:-1:-1;6920:9:1;;6807:128::o;7156:125::-;7196:4;7224:1;7221;7218:8;7215:34;;;7229:18;;:::i;:::-;-1:-1:-1;7266:9:1;;7156:125::o;8048:168::-;8088:7;8154:1;8150;8146:6;8142:14;8139:1;8136:21;8131:1;8124:9;8117:17;8113:45;8110:71;;;8161:18;;:::i;:::-;-1:-1:-1;8201:9:1;;8048:168::o;9101:127::-;9162:10;9157:3;9153:20;9150:1;9143:31;9193:4;9190:1;9183:15;9217:4;9214:1;9207:15;9233:980;9495:4;9543:3;9532:9;9528:19;9574:6;9563:9;9556:25;9600:2;9638:6;9633:2;9622:9;9618:18;9611:34;9681:3;9676:2;9665:9;9661:18;9654:31;9705:6;9740;9734:13;9771:6;9763;9756:22;9809:3;9798:9;9794:19;9787:26;;9848:2;9840:6;9836:15;9822:29;;9869:1;9879:195;9893:6;9890:1;9887:13;9879:195;;;9958:13;;-1:-1:-1;;;;;9954:39:1;9942:52;;10049:15;;;;10014:12;;;;9990:1;9908:9;9879:195;;;-1:-1:-1;;;;;;;10130:32:1;;;;10125:2;10110:18;;10103:60;-1:-1:-1;;;10194:3:1;10179:19;10172:35;10091:3;9233:980;-1:-1:-1;;;9233:980:1:o;11399:306::-;11487:6;11495;11503;11556:2;11544:9;11535:7;11531:23;11527:32;11524:52;;;11572:1;11569;11562:12;11524:52;11601:9;11595:16;11585:26;;11651:2;11640:9;11636:18;11630:25;11620:35;;11695:2;11684:9;11680:18;11674:25;11664:35;;11399:306;;;;;:::o

Swarm Source

ipfs://7229084e68b34816f3af66fb2256cf346823f179b92e0eea937702d6e7e21bf5
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.