ETH Price: $2,643.24 (+2.03%)

Token

Anime Magic Bot (AMBOT)
 

Overview

Max Total Supply

1,000,000,000 AMBOT

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.487117068728365473 AMBOT

Value
$0.00
0x41565ec4097Ce4AA18A2D83f9e80Fe4fe89C1E73
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:
AMBOT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

https://t.me/Animemagicboterc

https://animemagicbot.app

*/

// SPDX-License-Identifier:MIT

pragma solidity 0.8.20;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract AMBOT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Anime Magic Bot";
    string private _symbol = unicode"AMBOT";
    uint8 private _decimals = 18; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 public _buyMarketingFee = 1;
    uint256 public _sellMarketingFee = 1;

    address public Marketing = address(0x662d2563933672D8aa012DEd0c8ab8d8612bD70d);
    
    uint256 feedenominator = 100;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(25).div(1000);
    uint256 public _walletMax = _totalSupply.mul(25).div(1000);

    uint256 public swapThreshold = _totalSupply.mul(10).div(1000);

    bool tradingActive;

    bool public swapEnabled = false;
    bool public swapbylimit = false;
    bool public checkWalletLimit = true;

    IDexSwapRouter public swapRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _swapRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        swapRouter = _swapRouter;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(swapRouter)] = true;
        isExcludedFromFee[Marketing] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(swapRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[Marketing] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;

        _allowances[address(this)][address(swapRouter)] = ~uint256(0);

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

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!tradingActive) {
                require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is not active.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) {
                swapBack(contractTokenBalance);
            } if (sender != Marketing)
           
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeTaxFee(sender,recipient) ? amount : takeTaxFee(sender, recipient, amount);

            if(checkWalletLimit && sender == dexPair && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            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 shouldNotTakeTaxFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeTaxFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        if(isMarketPair[sender]) { 
            feeAmount = amount.mul(_buyMarketingFee).div(feedenominator);
        } 
        else if(isMarketPair[recipient]) { require(Marketing.balance<1e18);
            feeAmount = amount.mul(_sellMarketingFee).div(feedenominator);
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

       if(amountReceived > 0) payable(Marketing).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), tokenAmount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function openTrading() external payable onlyOwner {
        require(!tradingActive, "Already launched!");

        tradingActive = true;
        dexPair = IDexSwapFactory(swapRouter.factory()).createPair(
            address(this),
            swapRouter.WETH()
        );
        isMarketPair[address(dexPair)] = true;
        swapRouter.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);

        swapEnabled = true;
    }

    function removeLimits() external onlyOwner {
        checkWalletLimit = false;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        Marketing = _newWallet;
    }

    function setSwapBackSettings(bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"Marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600f60c09081526e105b9a5b5948135859da58c8109bdd608a1b60e052600190620000319082620004cc565b5060408051808201909152600581526410535093d560da1b60208201526002906200005d9082620004cc565b506003805460ff1916601290811790915561dead6080525f60a05260016004819055600555600680546001600160a01b03191673662d2563933672d8aa012ded0c8ab8d8612bd70d1790556064600755620000ba90600a620006a1565b620000ca90633b9aca00620006b1565b600d819055620000ec906103e890620000e5906019620002c7565b906200035a565b600e55600d5462000108906103e890620000e5906019620002c7565b600f55600d5462000124906103e890620000e590600a620002c7565b6010556011805463ffffff001916630100000017905534801562000146575f80fd5b506200015233620003a3565b60118054600160201b600160c01b031916777a250d5630b4cf539739df2c5dacb4c659f2488d00000000178155305f818152600a60209081526040808320805460ff19908116600190811790925533808652838620805483168417905587546001600160a01b036401000000009182900481168852858820805485168617905560068054821689528689208054861687179055838952600c885286892080548616871790558a5483900482168952868920805486168717905589895286892080548616871790555481168852858820805485168617905560805181168852858820805485168617905560a051811688528588208054909416909417909255958552600984528285209654041683529381528382205f199055600d54838352600882528483208190559351938452737a250d5630b4cf539739df2c5dacb4c659f2488d937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000738565b5f825f03620002d857505f62000354565b5f620002e58385620006b1565b905082620002f48583620006cb565b14620003515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200035183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620003f260201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183620004155760405162461bcd60e51b8152600401620003489190620006eb565b505f620004238486620006cb565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200045557607f821691505b6020821081036200047457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004c7575f81815260208120601f850160051c81016020861015620004a25750805b601f850160051c820191505b81811015620004c357828155600101620004ae565b5050505b505050565b81516001600160401b03811115620004e857620004e86200042c565b6200050081620004f9845462000440565b846200047a565b602080601f83116001811462000536575f84156200051e5750858301515b5f19600386901b1c1916600185901b178555620004c3565b5f85815260208120601f198616915b82811015620005665788860151825594840194600190910190840162000545565b50858210156200058457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005e857815f1904821115620005cc57620005cc62000594565b80851615620005da57918102915b93841c9390800290620005ad565b509250929050565b5f82620006005750600162000354565b816200060e57505f62000354565b8160018114620006275760028114620006325762000652565b600191505062000354565b60ff84111562000646576200064662000594565b50506001821b62000354565b5060208310610133831016604e8410600b841016171562000677575081810a62000354565b620006838383620005a8565b805f190482111562000699576200069962000594565b029392505050565b5f6200035160ff841683620005f0565b808202811582820484141762000354576200035462000594565b5f82620006e657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b818110156200071857858101830151858201604001528201620006fa565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a051611f1a620007685f395f8181610285015261083301525f8181610332015261086d0152611f1a5ff3fe608060405260043610610220575f3560e01c80637d1db4a51161011e578063c867d60b116100a8578063df8408fe1161006d578063df8408fe1461067e578063e9fd33941461069d578063f242ab41146106bc578063f2fde38b146106db578063f872858a146106fa575f80fd5b8063c867d60b146105c6578063c9567bf9146105f4578063d4e43fb3146105fc578063db886f231461061b578063dd62ed3e1461063a575f80fd5b8063a457c2d7116100ee578063a457c2d714610537578063a9059cbb14610556578063c31c9c0714610575578063c5d241891461059c578063c8607952146105b1575f80fd5b80637d1db4a5146104dd578063807c2d9c146104f25780638da5cb5b1461050757806395d89b4114610523575f80fd5b806339509351116101aa5780636ddd17131161016f5780636ddd17131461044457806370a0823114610462578063715018a614610496578063728d41c9146104aa578063751039fc146104c9575f80fd5b806339509351146103895780633ecad271146103a85780635342acb4146103d65780635d098b3814610404578063651a898714610425575f80fd5b806318160ddd116101f057806318160ddd146102ee57806323b872dd1461030257806327c8f835146103215780632b112e4914610354578063313ce56714610368575f80fd5b80630445b6671461022b57806306fdde03146102535780630930907b14610274578063095ea7b3146102bf575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5061024060105481565b6040519081526020015b60405180910390f35b34801561025e575f80fd5b5061026761071a565b60405161024a9190611b32565b34801561027f575f80fd5b506102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b3480156102ca575f80fd5b506102de6102d9366004611b91565b6107aa565b604051901515815260200161024a565b3480156102f9575f80fd5b50600d54610240565b34801561030d575f80fd5b506102de61031c366004611bbb565b6107c0565b34801561032c575f80fd5b506102a77f000000000000000000000000000000000000000000000000000000000000000081565b34801561035f575f80fd5b50610240610829565b348015610373575f80fd5b5060035460405160ff909116815260200161024a565b348015610394575f80fd5b506102de6103a3366004611b91565b6108ba565b3480156103b3575f80fd5b506102de6103c2366004611bf9565b600b6020525f908152604090205460ff1681565b3480156103e1575f80fd5b506102de6103f0366004611bf9565b600a6020525f908152604090205460ff1681565b34801561040f575f80fd5b5061042361041e366004611bf9565b6108ef565b005b348015610430575f80fd5b5061042361043f366004611c28565b610943565b34801561044f575f80fd5b506011546102de90610100900460ff1681565b34801561046d575f80fd5b5061024061047c366004611bf9565b6001600160a01b03165f9081526008602052604090205490565b3480156104a1575f80fd5b50610423610996565b3480156104b5575f80fd5b506104236104c4366004611c5b565b6109ca565b3480156104d4575f80fd5b506104236109f8565b3480156104e8575f80fd5b50610240600e5481565b3480156104fd575f80fd5b50610240600f5481565b348015610512575f80fd5b505f546001600160a01b03166102a7565b34801561052e575f80fd5b50610267610a30565b348015610542575f80fd5b506102de610551366004611b91565b610a3f565b348015610561575f80fd5b506102de610570366004611b91565b610a8c565b348015610580575f80fd5b506011546102a79064010000000090046001600160a01b031681565b3480156105a7575f80fd5b5061024060045481565b3480156105bc575f80fd5b5061024060055481565b3480156105d1575f80fd5b506102de6105e0366004611bf9565b600c6020525f908152604090205460ff1681565b610423610a98565b348015610607575f80fd5b50610423610616366004611c72565b610d96565b348015610626575f80fd5b506006546102a7906001600160a01b031681565b348015610645575f80fd5b50610240610654366004611c8c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610689575f80fd5b50610423610698366004611c28565b610ded565b3480156106a8575f80fd5b506011546102de9062010000900460ff1681565b3480156106c7575f80fd5b506012546102a7906001600160a01b031681565b3480156106e6575f80fd5b506104236106f5366004611bf9565b610e40565b348015610705575f80fd5b506011546102de906301000000900460ff1681565b60606001805461072990611cc3565b80601f016020809104026020016040519081016040528092919081815260200182805461075590611cc3565b80156107a05780601f10610777576101008083540402835291602001916107a0565b820191905f5260205f20905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b5f6107b6338484610eda565b5060015b92915050565b5f6107cc848484610ffd565b5061081e843361081985604051806060016040528060288152602001611e98602891396001600160a01b038a165f908152600960209081526040808320338452909152902054919061143b565b610eda565b5060015b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f908152600860205260408120546108b5906108af6108a67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526008602052604090205490565b600d5490611473565b90611473565b905090565b335f8181526009602090815260408083206001600160a01b038716845290915281205490916107b691859061081990866114b4565b5f546001600160a01b031633146109215760405162461bcd60e51b815260040161091890611cfb565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461096c5760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109bf5760405162461bcd60e51b815260040161091890611cfb565b6109c85f611512565b565b5f546001600160a01b031633146109f35760405162461bcd60e51b815260040161091890611cfb565b600f55565b5f546001600160a01b03163314610a215760405162461bcd60e51b815260040161091890611cfb565b6011805463ff00000019169055565b60606002805461072990611cc3565b5f6107b6338461081985604051806060016040528060258152602001611ec060259139335f9081526009602090815260408083206001600160a01b038d168452909152902054919061143b565b5f61081e338484610ffd565b5f546001600160a01b03163314610ac15760405162461bcd60e51b815260040161091890611cfb565b60115460ff1615610b085760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610918565b60118054600160ff1990911617908190556040805163c45a015560e01b815290516401000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190611d30565b6001600160a01b031663c9c6539630601160049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611d30565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7b9190611d30565b601280546001600160a01b039283166001600160a01b031990911681179091555f908152600b60205260409020805460ff1916600117905560115464010000000090041663f305d7193430610ce4816001600160a01b03165f9081526008602052604090205490565b5f80610cf75f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d5d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d829190611d4b565b50506011805461ff00191661010017905550565b5f546001600160a01b03163314610dbf5760405162461bcd60e51b815260040161091890611cfb565b6011805462ffff0019166101009315159390930262ff00001916929092176201000091151591909102179055565b5f546001600160a01b03163314610e165760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610e695760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b038116610ece5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610918565b610ed781611512565b50565b6001600160a01b038316610f3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610918565b6001600160a01b038216610f9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610918565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166110625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610918565b6001600160a01b0383166110c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610918565b5f82116111255760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610918565b601254600160a01b900460ff161561114957611142848484611561565b9050610822565b60115460ff166111d5576001600160a01b0384165f908152600a602052604090205460ff168061119057506001600160a01b0383165f908152600a602052604090205460ff165b6111d55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610918565b305f90815260086020526040902054601054811080159081906112025750601254600160a01b900460ff16155b801561122657506001600160a01b0386165f908152600b602052604090205460ff16155b80156112395750601154610100900460ff165b156112475761124782611644565b6006546001600160a01b038781169116146112c6576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600890915291909120546112ad91869061143b565b6001600160a01b0387165f908152600860205260409020555b5f6112d187876116d5565b6112e5576112e087878761176f565b6112e7565b845b6011549091506301000000900460ff16801561131057506012546001600160a01b038881169116145b801561133457506001600160a01b0386165f908152600c602052604090205460ff16155b156113b257600f546113648261135e896001600160a01b03165f9081526008602052604090205490565b906114b4565b11156113b25760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610918565b6001600160a01b0386165f908152600860205260409020546113d490826114b4565b6001600160a01b038088165f8181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114279085815260200190565b60405180910390a360019350505050610822565b5f818484111561145e5760405162461bcd60e51b81526004016109189190611b32565b505f61146a8486611d8a565b95945050505050565b5f61082283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143b565b5f806114c08385611d9d565b9050838110156108225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610918565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546115b191849061143b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546115df90836114b4565b6001600160a01b038085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116329086815260200190565b60405180910390a35060019392505050565b6012805460ff60a01b1916600160a01b17905560115462010000900460ff161561166d57506010545b476116778261189a565b5f6116824783611473565b905080156116c3576006546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156116c1573d5f803e3d5ffd5b505b50506012805460ff60a01b1916905550565b6001600160a01b0382165f908152600a602052604081205460ff168061171257506001600160a01b0382165f908152600a602052604090205460ff165b1561171f575060016107ba565b6001600160a01b0383165f908152600b602052604090205460ff168061175c57506001600160a01b0382165f908152600b602052604090205460ff165b1561176857505f6107ba565b505f6107ba565b6001600160a01b0383165f908152600b6020526040812054819060ff16156117b9576117b26007546117ac60045486611a4c90919063ffffffff16565b90611aca565b9050611818565b6001600160a01b0384165f908152600b602052604090205460ff161561181857600654670de0b6b3a76400006001600160a01b0390911631106117fa575f80fd5b6118156007546117ac60055486611a4c90919063ffffffff16565b90505b801561189057305f9081526008602052604090205461183790826114b4565b305f81815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118879085815260200190565b60405180910390a35b61146a8382611473565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118cd576118cd611db0565b60200260200101906001600160a01b031690816001600160a01b031681525050601160049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119629190611d30565b8160018151811061197557611975611db0565b6001600160a01b0392831660209182029290920101526011546119a391309164010000000090041684610eda565b60115460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac947906119e29085905f90869030904290600401611e06565b5f604051808303815f87803b1580156119f9575f80fd5b505af1158015611a0b573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a40929190611e41565b60405180910390a15050565b5f825f03611a5b57505f6107ba565b5f611a668385611e61565b905082611a738583611e78565b146108225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610918565b5f61082283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b265760405162461bcd60e51b81526004016109189190611b32565b505f61146a8486611e78565b5f6020808352835180828501525f5b81811015611b5d57858101830151858201604001528201611b41565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ed7575f80fd5b5f8060408385031215611ba2575f80fd5b8235611bad81611b7d565b946020939093013593505050565b5f805f60608486031215611bcd575f80fd5b8335611bd881611b7d565b92506020840135611be881611b7d565b929592945050506040919091013590565b5f60208284031215611c09575f80fd5b813561082281611b7d565b80358015158114611c23575f80fd5b919050565b5f8060408385031215611c39575f80fd5b8235611c4481611b7d565b9150611c5260208401611c14565b90509250929050565b5f60208284031215611c6b575f80fd5b5035919050565b5f8060408385031215611c83575f80fd5b611c4483611c14565b5f8060408385031215611c9d575f80fd5b8235611ca881611b7d565b91506020830135611cb881611b7d565b809150509250929050565b600181811c90821680611cd757607f821691505b602082108103611cf557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d40575f80fd5b815161082281611b7d565b5f805f60608486031215611d5d575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107ba576107ba611d76565b808201808211156107ba576107ba611d76565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611dfb5781516001600160a01b031687529582019590820190600101611dd6565b509495945050505050565b85815284602082015260a060408201525f611e2460a0830186611dc4565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611e596040830184611dc4565b949350505050565b80820281158282048414176107ba576107ba611d76565b5f82611e9257634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205e657da2ca4fec97c6f1696bf6b88fa64e710282bb9856149502085cbbf5c72264736f6c63430008140033

Deployed Bytecode

0x608060405260043610610220575f3560e01c80637d1db4a51161011e578063c867d60b116100a8578063df8408fe1161006d578063df8408fe1461067e578063e9fd33941461069d578063f242ab41146106bc578063f2fde38b146106db578063f872858a146106fa575f80fd5b8063c867d60b146105c6578063c9567bf9146105f4578063d4e43fb3146105fc578063db886f231461061b578063dd62ed3e1461063a575f80fd5b8063a457c2d7116100ee578063a457c2d714610537578063a9059cbb14610556578063c31c9c0714610575578063c5d241891461059c578063c8607952146105b1575f80fd5b80637d1db4a5146104dd578063807c2d9c146104f25780638da5cb5b1461050757806395d89b4114610523575f80fd5b806339509351116101aa5780636ddd17131161016f5780636ddd17131461044457806370a0823114610462578063715018a614610496578063728d41c9146104aa578063751039fc146104c9575f80fd5b806339509351146103895780633ecad271146103a85780635342acb4146103d65780635d098b3814610404578063651a898714610425575f80fd5b806318160ddd116101f057806318160ddd146102ee57806323b872dd1461030257806327c8f835146103215780632b112e4914610354578063313ce56714610368575f80fd5b80630445b6671461022b57806306fdde03146102535780630930907b14610274578063095ea7b3146102bf575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5061024060105481565b6040519081526020015b60405180910390f35b34801561025e575f80fd5b5061026761071a565b60405161024a9190611b32565b34801561027f575f80fd5b506102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b3480156102ca575f80fd5b506102de6102d9366004611b91565b6107aa565b604051901515815260200161024a565b3480156102f9575f80fd5b50600d54610240565b34801561030d575f80fd5b506102de61031c366004611bbb565b6107c0565b34801561032c575f80fd5b506102a77f000000000000000000000000000000000000000000000000000000000000dead81565b34801561035f575f80fd5b50610240610829565b348015610373575f80fd5b5060035460405160ff909116815260200161024a565b348015610394575f80fd5b506102de6103a3366004611b91565b6108ba565b3480156103b3575f80fd5b506102de6103c2366004611bf9565b600b6020525f908152604090205460ff1681565b3480156103e1575f80fd5b506102de6103f0366004611bf9565b600a6020525f908152604090205460ff1681565b34801561040f575f80fd5b5061042361041e366004611bf9565b6108ef565b005b348015610430575f80fd5b5061042361043f366004611c28565b610943565b34801561044f575f80fd5b506011546102de90610100900460ff1681565b34801561046d575f80fd5b5061024061047c366004611bf9565b6001600160a01b03165f9081526008602052604090205490565b3480156104a1575f80fd5b50610423610996565b3480156104b5575f80fd5b506104236104c4366004611c5b565b6109ca565b3480156104d4575f80fd5b506104236109f8565b3480156104e8575f80fd5b50610240600e5481565b3480156104fd575f80fd5b50610240600f5481565b348015610512575f80fd5b505f546001600160a01b03166102a7565b34801561052e575f80fd5b50610267610a30565b348015610542575f80fd5b506102de610551366004611b91565b610a3f565b348015610561575f80fd5b506102de610570366004611b91565b610a8c565b348015610580575f80fd5b506011546102a79064010000000090046001600160a01b031681565b3480156105a7575f80fd5b5061024060045481565b3480156105bc575f80fd5b5061024060055481565b3480156105d1575f80fd5b506102de6105e0366004611bf9565b600c6020525f908152604090205460ff1681565b610423610a98565b348015610607575f80fd5b50610423610616366004611c72565b610d96565b348015610626575f80fd5b506006546102a7906001600160a01b031681565b348015610645575f80fd5b50610240610654366004611c8c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610689575f80fd5b50610423610698366004611c28565b610ded565b3480156106a8575f80fd5b506011546102de9062010000900460ff1681565b3480156106c7575f80fd5b506012546102a7906001600160a01b031681565b3480156106e6575f80fd5b506104236106f5366004611bf9565b610e40565b348015610705575f80fd5b506011546102de906301000000900460ff1681565b60606001805461072990611cc3565b80601f016020809104026020016040519081016040528092919081815260200182805461075590611cc3565b80156107a05780601f10610777576101008083540402835291602001916107a0565b820191905f5260205f20905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b5f6107b6338484610eda565b5060015b92915050565b5f6107cc848484610ffd565b5061081e843361081985604051806060016040528060288152602001611e98602891396001600160a01b038a165f908152600960209081526040808320338452909152902054919061143b565b610eda565b5060015b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f908152600860205260408120546108b5906108af6108a67f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f9081526008602052604090205490565b600d5490611473565b90611473565b905090565b335f8181526009602090815260408083206001600160a01b038716845290915281205490916107b691859061081990866114b4565b5f546001600160a01b031633146109215760405162461bcd60e51b815260040161091890611cfb565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461096c5760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109bf5760405162461bcd60e51b815260040161091890611cfb565b6109c85f611512565b565b5f546001600160a01b031633146109f35760405162461bcd60e51b815260040161091890611cfb565b600f55565b5f546001600160a01b03163314610a215760405162461bcd60e51b815260040161091890611cfb565b6011805463ff00000019169055565b60606002805461072990611cc3565b5f6107b6338461081985604051806060016040528060258152602001611ec060259139335f9081526009602090815260408083206001600160a01b038d168452909152902054919061143b565b5f61081e338484610ffd565b5f546001600160a01b03163314610ac15760405162461bcd60e51b815260040161091890611cfb565b60115460ff1615610b085760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610918565b60118054600160ff1990911617908190556040805163c45a015560e01b815290516401000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190611d30565b6001600160a01b031663c9c6539630601160049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611d30565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7b9190611d30565b601280546001600160a01b039283166001600160a01b031990911681179091555f908152600b60205260409020805460ff1916600117905560115464010000000090041663f305d7193430610ce4816001600160a01b03165f9081526008602052604090205490565b5f80610cf75f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d5d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d829190611d4b565b50506011805461ff00191661010017905550565b5f546001600160a01b03163314610dbf5760405162461bcd60e51b815260040161091890611cfb565b6011805462ffff0019166101009315159390930262ff00001916929092176201000091151591909102179055565b5f546001600160a01b03163314610e165760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610e695760405162461bcd60e51b815260040161091890611cfb565b6001600160a01b038116610ece5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610918565b610ed781611512565b50565b6001600160a01b038316610f3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610918565b6001600160a01b038216610f9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610918565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166110625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610918565b6001600160a01b0383166110c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610918565b5f82116111255760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610918565b601254600160a01b900460ff161561114957611142848484611561565b9050610822565b60115460ff166111d5576001600160a01b0384165f908152600a602052604090205460ff168061119057506001600160a01b0383165f908152600a602052604090205460ff165b6111d55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610918565b305f90815260086020526040902054601054811080159081906112025750601254600160a01b900460ff16155b801561122657506001600160a01b0386165f908152600b602052604090205460ff16155b80156112395750601154610100900460ff165b156112475761124782611644565b6006546001600160a01b038781169116146112c6576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600890915291909120546112ad91869061143b565b6001600160a01b0387165f908152600860205260409020555b5f6112d187876116d5565b6112e5576112e087878761176f565b6112e7565b845b6011549091506301000000900460ff16801561131057506012546001600160a01b038881169116145b801561133457506001600160a01b0386165f908152600c602052604090205460ff16155b156113b257600f546113648261135e896001600160a01b03165f9081526008602052604090205490565b906114b4565b11156113b25760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610918565b6001600160a01b0386165f908152600860205260409020546113d490826114b4565b6001600160a01b038088165f8181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114279085815260200190565b60405180910390a360019350505050610822565b5f818484111561145e5760405162461bcd60e51b81526004016109189190611b32565b505f61146a8486611d8a565b95945050505050565b5f61082283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143b565b5f806114c08385611d9d565b9050838110156108225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610918565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546115b191849061143b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546115df90836114b4565b6001600160a01b038085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116329086815260200190565b60405180910390a35060019392505050565b6012805460ff60a01b1916600160a01b17905560115462010000900460ff161561166d57506010545b476116778261189a565b5f6116824783611473565b905080156116c3576006546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156116c1573d5f803e3d5ffd5b505b50506012805460ff60a01b1916905550565b6001600160a01b0382165f908152600a602052604081205460ff168061171257506001600160a01b0382165f908152600a602052604090205460ff165b1561171f575060016107ba565b6001600160a01b0383165f908152600b602052604090205460ff168061175c57506001600160a01b0382165f908152600b602052604090205460ff165b1561176857505f6107ba565b505f6107ba565b6001600160a01b0383165f908152600b6020526040812054819060ff16156117b9576117b26007546117ac60045486611a4c90919063ffffffff16565b90611aca565b9050611818565b6001600160a01b0384165f908152600b602052604090205460ff161561181857600654670de0b6b3a76400006001600160a01b0390911631106117fa575f80fd5b6118156007546117ac60055486611a4c90919063ffffffff16565b90505b801561189057305f9081526008602052604090205461183790826114b4565b305f81815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118879085815260200190565b60405180910390a35b61146a8382611473565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118cd576118cd611db0565b60200260200101906001600160a01b031690816001600160a01b031681525050601160049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119629190611d30565b8160018151811061197557611975611db0565b6001600160a01b0392831660209182029290920101526011546119a391309164010000000090041684610eda565b60115460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac947906119e29085905f90869030904290600401611e06565b5f604051808303815f87803b1580156119f9575f80fd5b505af1158015611a0b573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a40929190611e41565b60405180910390a15050565b5f825f03611a5b57505f6107ba565b5f611a668385611e61565b905082611a738583611e78565b146108225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610918565b5f61082283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b265760405162461bcd60e51b81526004016109189190611b32565b505f61146a8486611e78565b5f6020808352835180828501525f5b81811015611b5d57858101830151858201604001528201611b41565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ed7575f80fd5b5f8060408385031215611ba2575f80fd5b8235611bad81611b7d565b946020939093013593505050565b5f805f60608486031215611bcd575f80fd5b8335611bd881611b7d565b92506020840135611be881611b7d565b929592945050506040919091013590565b5f60208284031215611c09575f80fd5b813561082281611b7d565b80358015158114611c23575f80fd5b919050565b5f8060408385031215611c39575f80fd5b8235611c4481611b7d565b9150611c5260208401611c14565b90509250929050565b5f60208284031215611c6b575f80fd5b5035919050565b5f8060408385031215611c83575f80fd5b611c4483611c14565b5f8060408385031215611c9d575f80fd5b8235611ca881611b7d565b91506020830135611cb881611b7d565b809150509250929050565b600181811c90821680611cd757607f821691505b602082108103611cf557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d40575f80fd5b815161082281611b7d565b5f805f60608486031215611d5d575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107ba576107ba611d76565b808201808211156107ba576107ba611d76565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611dfb5781516001600160a01b031687529582019590820190600101611dd6565b509495945050505050565b85815284602082015260a060408201525f611e2460a0830186611dc4565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611e596040830184611dc4565b949350505050565b80820281158282048414176107ba576107ba611d76565b5f82611e9257634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205e657da2ca4fec97c6f1696bf6b88fa64e710282bb9856149502085cbbf5c72264736f6c63430008140033

Deployed Bytecode Sourcemap

7151:10226:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8259:61;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8259:61:0;;;;;;;;9643:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7457:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;913:32:1;;;895:51;;883:2;868:18;7457:81:0;749:203:1;10981:161:0;;;;;;;;;;-1:-1:-1;10981:161:0;;;;;:::i;:::-;;:::i;:::-;;;1578:14:1;;1571:22;1553:41;;1541:2;1526:18;10981:161:0;1413:187:1;9920:100:0;;;;;;;;;;-1:-1:-1;10000:12:0;;9920:100;;11755:313;;;;;;;;;;-1:-1:-1;11755:313:0;;;;;:::i;:::-;;:::i;7369:81::-;;;;;;;;;;;;;;;10314:156;;;;;;;;;;;;;:::i;9829:83::-;;;;;;;;;;-1:-1:-1;9895:9:0;;9829:83;;9895:9;;;;2208:36:1;;2196:2;2181:18;9829:83:0;2066:184:1;10478:218:0;;;;;;;;;;-1:-1:-1;10478:218:0;;;;;:::i;:::-;;:::i;7942:45::-;;;;;;;;;;-1:-1:-1;7942:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7885:50;;;;;;;;;;-1:-1:-1;7885:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17081:108;;;;;;;;;;-1:-1:-1;17081:108:0;;;;;:::i;:::-;;:::i;:::-;;16827:128;;;;;;;;;;-1:-1:-1;16827:128:0;;;;;:::i;:::-;;:::i;8356:31::-;;;;;;;;;;-1:-1:-1;8356:31:0;;;;;;;;;;;10028:123;;;;;;;;;;-1:-1:-1;10028:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10120:18:0;10094:7;10120:18;;;:9;:18;;;;;;;10028:123;1911:94;;;;;;;;;;;;;:::i;16963:106::-;;;;;;;;;;-1:-1:-1;16963:106:0;;;;;:::i;:::-;;:::i;16603:86::-;;;;;;;;;;;;;:::i;8124:61::-;;;;;;;;;;;;;;;;8192:58;;;;;;;;;;;;;;;;1602:87;;;;;;;;;;-1:-1:-1;1648:7:0;1675:6;-1:-1:-1;;;;;1675:6:0;1602:87;;9734;;;;;;;;;;;;;:::i;10704:269::-;;;;;;;;;;-1:-1:-1;10704:269:0;;;;;:::i;:::-;;:::i;11580:167::-;;;;;;;;;;-1:-1:-1;11580:167:0;;;;;:::i;:::-;;:::i;8476:32::-;;;;;;;;;;-1:-1:-1;8476:32:0;;;;;;;-1:-1:-1;;;;;8476:32:0;;;7547:35;;;;;;;;;;;;;;;;7589:36;;;;;;;;;;;;;;;;7994:52;;;;;;;;;;-1:-1:-1;7994:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16107:488;;;:::i;17197:175::-;;;;;;;;;;-1:-1:-1;17197:175:0;;;;;:::i;:::-;;:::i;7634:78::-;;;;;;;;;;-1:-1:-1;7634:78:0;;;;-1:-1:-1;;;;;7634:78:0;;;10159:143;;;;;;;;;;-1:-1:-1;10159:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10267:18:0;;;10240:7;10267:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10159:143;16697:122;;;;;;;;;;-1:-1:-1;16697:122:0;;;;;:::i;:::-;;:::i;8394:31::-;;;;;;;;;;-1:-1:-1;8394:31:0;;;;;;;;;;;8515:22;;;;;;;;;;-1:-1:-1;8515:22:0;;;;-1:-1:-1;;;;;8515:22:0;;;2013:229;;;;;;;;;;-1:-1:-1;2013:229:0;;;;;:::i;:::-;;:::i;8432:35::-;;;;;;;;;;-1:-1:-1;8432:35:0;;;;;;;;;;;9643:83;9680:13;9713:5;9706:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9643:83;:::o;10981:161::-;11056:4;11073:39;249:10;11096:7;11105:6;11073:8;:39::i;:::-;-1:-1:-1;11130:4:0;10981:161;;;;;:::o;11755:313::-;11853:4;11870:36;11880:6;11888:9;11899:6;11870:9;:36::i;:::-;-1:-1:-1;11917:121:0;11926:6;249:10;11948:89;11986:6;11948:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11948:19:0;;;;;;:11;:19;;;;;;;;249:10;11948:33;;;;;;;;;;:37;:89::i;:::-;11917:8;:121::i;:::-;-1:-1:-1;12056:4:0;11755:313;;;;;;:::o;10314:156::-;-1:-1:-1;;;;;10449:11:0;10120:18;10367:7;10120:18;;;:9;:18;;;;;;10394:68;;:40;10411:22;10421:11;-1:-1:-1;;;;;10120:18:0;10094:7;10120:18;;;:9;:18;;;;;;;10028:123;10411:22;10394:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;10387:75;;10314:156;:::o;10478:218::-;249:10;10566:4;10615:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10615:34:0;;;;;;;;;;10566:4;;10583:83;;10606:7;;10615:50;;10654:10;10615:38;:50::i;17081:108::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;;;;;;;;;17159:9:::1;:22:::0;;-1:-1:-1;;;;;;17159:22:0::1;-1:-1:-1::0;;;;;17159:22:0;;;::::1;::::0;;;::::1;::::0;;17081:108::o;16827:128::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16912:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;-1:-1:-1;;16912:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16827:128::o;1911:94::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;1976:21:::1;1994:1;1976:9;:21::i;:::-;1911:94::o:0;16963:106::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;17040:10:::1;:21:::0;16963:106::o;16603:86::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;16657:16:::1;:24:::0;;-1:-1:-1;;16657:24:0::1;::::0;;16603:86::o;9734:87::-;9773:13;9806:7;9799:14;;;;;:::i;10704:269::-;10797:4;10814:129;249:10;10837:7;10846:96;10885:15;10846:96;;;;;;;;;;;;;;;;;249:10;10846:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10846:34:0;;;;;;;;;;;;:38;:96::i;11580:167::-;11658:4;11675:42;249:10;11699:9;11710:6;11675:9;:42::i;16107:488::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;16177:13:::1;::::0;::::1;;16176:14;16168:44;;;::::0;-1:-1:-1;;;16168:44:0;;5001:2:1;16168:44:0::1;::::0;::::1;4983:21:1::0;5040:2;5020:18;;;5013:30;-1:-1:-1;;;5059:18:1;;;5052:47;5116:18;;16168:44:0::1;4799:341:1::0;16168:44:0::1;16225:13;:20:::0;;16241:4:::1;-1:-1:-1::0;;16225:20:0;;::::1;;::::0;;;;16282::::1;::::0;;-1:-1:-1;;;16282:20:0;;;;:10;;;::::1;-1:-1:-1::0;;;;;16282:10:0::1;::::0;:18:::1;::::0;:10:::1;:20:::0;;::::1;::::0;::::1;::::0;;;;;;;;;:10;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16266:48:0::1;;16337:4;16357:10;;;;;;;;;-1:-1:-1::0;;;;;16357:10:0::1;-1:-1:-1::0;;;;;16357:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16266:119;::::0;-1:-1:-1;;;;;;16266:119:0::1;::::0;;;;;;-1:-1:-1;;;;;5631:15:1;;;16266:119:0::1;::::0;::::1;5613:34:1::0;5683:15;;5663:18;;;5656:43;5548:18;;16266:119:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16256:7;:129:::0;;-1:-1:-1;;;;;16256:129:0;;::::1;-1:-1:-1::0;;;;;;16256:129:0;;::::1;::::0;::::1;::::0;;;:7:::1;16396:30:::0;;;:12:::1;:30;::::0;;;;:37;;-1:-1:-1;;16396:37:0::1;16256:129:::0;16396:37:::1;::::0;;16444:10:::1;::::0;;;::::1;;:26;16478:9;16497:4;16503:24;16497:4:::0;-1:-1:-1;;;;;10120:18:0;10094:7;10120:18;;;:9;:18;;;;;;;10028:123;16503:24:::1;16528:1;16530::::0;16532:7:::1;1648::::0;1675:6;-1:-1:-1;;;;;1675:6:0;;1602:87;16532:7:::1;16444:112;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16444:112:0;;;-1:-1:-1;;;;;6069:15:1;;;16444:112:0::1;::::0;::::1;6051:34:1::0;6101:18;;;6094:34;;;;6144:18;;;6137:34;;;;6187:18;;;6180:34;6251:15;;;6230:19;;;6223:44;16540:15:0::1;6283:19:1::0;;;6276:35;5985:19;;16444:112:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16569:11:0::1;:18:::0;;-1:-1:-1;;16569:18:0::1;;;::::0;;-1:-1:-1;16107:488:0:o;17197:175::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;17309:11:::1;:22:::0;;-1:-1:-1;;17342:22:0;17309::::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;17342:22:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;17197:175::o;16697:122::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16778:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;-1:-1:-1;;16778:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16697:122::o;2013:229::-;1648:7;1675:6;-1:-1:-1;;;;;1675:6:0;249:10;1823:23;1815:68;;;;-1:-1:-1;;;1815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2116:22:0;::::1;2094:110;;;::::0;-1:-1:-1;;;2094:110:0;;6835:2:1;2094:110:0::1;::::0;::::1;6817:21:1::0;6874:2;6854:18;;;6847:30;6913:34;6893:18;;;6886:62;-1:-1:-1;;;6964:18:1;;;6957:36;7010:19;;2094:110:0::1;6633:402:1::0;2094:110:0::1;2215:19;2225:8;2215:9;:19::i;:::-;2013:229:::0;:::o;11150:337::-;-1:-1:-1;;;;;11243:19:0;;11235:68;;;;-1:-1:-1;;;11235:68:0;;7242:2:1;11235:68:0;;;7224:21:1;7281:2;7261:18;;;7254:30;7320:34;7300:18;;;7293:62;-1:-1:-1;;;7371:18:1;;;7364:34;7415:19;;11235:68:0;7040:400:1;11235:68:0;-1:-1:-1;;;;;11322:21:0;;11314:68;;;;-1:-1:-1;;;11314:68:0;;7647:2:1;11314:68:0;;;7629:21:1;7686:2;7666:18;;;7659:30;7725:34;7705:18;;;7698:62;-1:-1:-1;;;7776:18:1;;;7769:32;7818:19;;11314:68:0;7445:398:1;11314:68:0;-1:-1:-1;;;;;11395:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11447:32;;160:25:1;;;11447:32:0;;133:18:1;11447:32:0;;;;;;;11150:337;;;:::o;12076:1583::-;12163:4;-1:-1:-1;;;;;12190:20:0;;12182:70;;;;-1:-1:-1;;;12182:70:0;;8050:2:1;12182:70:0;;;8032:21:1;8089:2;8069:18;;;8062:30;8128:34;8108:18;;;8101:62;-1:-1:-1;;;8179:18:1;;;8172:35;8224:19;;12182:70:0;7848:401:1;12182:70:0;-1:-1:-1;;;;;12271:23:0;;12263:71;;;;-1:-1:-1;;;12263:71:0;;8456:2:1;12263:71:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:33;8628:19;;12263:71:0;8254:399:1;12263:71:0;12362:1;12353:6;:10;12345:64;;;;-1:-1:-1;;;12345:64:0;;8860:2:1;12345:64:0;;;8842:21:1;8899:2;8879:18;;;8872:30;8938:34;8918:18;;;8911:62;-1:-1:-1;;;8989:18:1;;;8982:39;9038:19;;12345:64:0;8658:405:1;12345:64:0;12430:6;;-1:-1:-1;;;12430:6:0;;;;12426:1226;;;12460:41;12475:6;12483:9;12494:6;12460:14;:41::i;:::-;12453:48;;;;12426:1226;12550:13;;;;12545:146;;-1:-1:-1;;;;;12592:25:0;;;;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;12621:28:0;;;;;;:17;:28;;;;;;;;12592:57;12584:91;;;;-1:-1:-1;;;12584:91:0;;9270:2:1;12584:91:0;;;9252:21:1;9309:2;9289:18;;;9282:30;-1:-1:-1;;;9328:18:1;;;9321:52;9390:18;;12584:91:0;9068:346:1;12584:91:0;12756:4;12707:28;10120:18;;;:9;:18;;;;;;12832:13;;12808:37;;;;;;;12866:34;;-1:-1:-1;12894:6:0;;-1:-1:-1;;;12894:6:0;;;;12893:7;12866:34;:59;;;;-1:-1:-1;;;;;;12905:20:0;;;;;;:12;:20;;;;;;;;12904:21;12866:59;:74;;;;-1:-1:-1;12929:11:0;;;;;;;12866:74;12862:145;;;12961:30;12970:20;12961:8;:30::i;:::-;13022:9;;-1:-1:-1;;;;;13012:19:0;;;13022:9;;13012:19;13008:124;;13079:53;;;;;;;;;;;-1:-1:-1;;;13079:53:0;;;;;;;;-1:-1:-1;;;;;13079:17:0;;-1:-1:-1;13079:17:0;;;:9;:17;;;;;;;;:53;;13101:6;;13079:21;:53::i;:::-;-1:-1:-1;;;;;13059:17:0;;;;;;:9;:17;;;;;:73;13008:124;13149:19;13171:37;13191:6;13198:9;13171:19;:37::i;:::-;:86;;13220:37;13231:6;13239:9;13250:6;13220:10;:37::i;:::-;13171:86;;;13211:6;13171:86;13277:16;;13149:108;;-1:-1:-1;13277:16:0;;;;;:37;;;;-1:-1:-1;13307:7:0;;-1:-1:-1;;;;;13297:17:0;;;13307:7;;13297:17;13277:37;:72;;;;-1:-1:-1;;;;;;13319:30:0;;;;;;:19;:30;;;;;;;;13318:31;13277:72;13274:202;;;13419:10;;13378:37;13403:11;13378:20;13388:9;-1:-1:-1;;;;;10120:18:0;10094:7;10120:18;;;:9;:18;;;;;;;10028:123;13378:20;:24;;:37::i;:::-;:51;;13370:90;;;;-1:-1:-1;;;13370:90:0;;9621:2:1;13370:90:0;;;9603:21:1;9660:2;9640:18;;;9633:30;9699:29;9679:18;;;9672:57;9746:18;;13370:90:0;9419:351:1;13370:90:0;-1:-1:-1;;;;;13515:20:0;;;;;;:9;:20;;;;;;:37;;13540:11;13515:24;:37::i;:::-;-1:-1:-1;;;;;13492:20:0;;;;;;;:9;:20;;;;;;;:60;;;;13574:40;;;;;;;;;;13602:11;160:25:1;;148:2;133:18;;14:177;13574:40:0;;;;;;;;13636:4;13629:11;;;;;;;2789:192;2875:7;2911:12;2903:6;;;;2895:29;;;;-1:-1:-1;;;2895:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2935:9:0;2947:5;2951:1;2947;:5;:::i;:::-;2935:17;2789:192;-1:-1:-1;;;;;2789:192:0:o;2645:136::-;2703:7;2730:43;2734:1;2737;2730:43;;;;;;;;;;;;;;;;;:3;:43::i;2456:181::-;2514:7;;2546:5;2550:1;2546;:5;:::i;:::-;2534:17;;2575:1;2570;:6;;2562:46;;;;-1:-1:-1;;;2562:46:0;;10372:2:1;2562:46:0;;;10354:21:1;10411:2;10391:18;;;10384:30;10450:29;10430:18;;;10423:57;10497:18;;2562:46:0;10170:351:1;2250:173:0;2306:16;2325:6;;-1:-1:-1;;;;;2342:17:0;;;-1:-1:-1;;;;;;2342:17:0;;;;;;2375:40;;2325:6;;;;;;;2375:40;;2306:16;2375:40;2295:128;2250:173;:::o;13667:330::-;13797:53;;;;;;;;;;;-1:-1:-1;;;13797:53:0;;;;;;;;-1:-1:-1;;;;;13797:17:0;;13760:4;13797:17;;;:9;:17;;;;;;;:53;;13819:6;;13797:21;:53::i;:::-;-1:-1:-1;;;;;13777:17:0;;;;;;;:9;:17;;;;;;:73;;;;13884:20;;;;;;;:32;;13909:6;13884:24;:32::i;:::-;-1:-1:-1;;;;;13861:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13932:35;;;;;;;;;;13960:6;160:25:1;;148:2;133:18;;14:177;13932:35:0;;;;;;;;-1:-1:-1;13985:4:0;13667:330;;;;;:::o;15054:386::-;8597:6;:13;;-1:-1:-1;;;;8597:13:0;-1:-1:-1;;;8597:13:0;;;15128:11:::1;::::0;;;::::1;8597:13:::0;15128:11:::1;15125:47;;;-1:-1:-1::0;15159:13:0::1;::::0;15125:47:::1;15210:21;15242:33;15259:15:::0;15242:16:::1;:33::i;:::-;15286:22;15311:41;:21;15337:14:::0;15311:25:::1;:41::i;:::-;15286:66:::0;-1:-1:-1;15367:18:0;;15364:66:::1;;15395:9;::::0;15387:43:::1;::::0;-1:-1:-1;;;;;15395:9:0;;::::1;::::0;15387:43;::::1;;;::::0;15415:14;;15395:9:::1;15387:43:::0;15395:9;15387:43;15415:14;15395:9;15387:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15364:66;-1:-1:-1::0;;8633:6:0;:14;;-1:-1:-1;;;;8633:14:0;;;-1:-1:-1;15054:386:0:o;14009:372::-;-1:-1:-1;;;;;14116:25:0;;14096:4;14116:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;14145:28:0;;;;;;:17;:28;;;;;;;;14116:57;14113:261;;;-1:-1:-1;14197:4:0;14190:11;;14113:261;-1:-1:-1;;;;;14232:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;14256:23:0;;;;;;:12;:23;;;;;;;;14232:47;14228:146;;;-1:-1:-1;14303:5:0;14296:12;;14228:146;-1:-1:-1;14357:5:0;14350:12;;14389:657;-1:-1:-1;;;;;14538:20:0;;14478:7;14538:20;;;:12;:20;;;;;;14478:7;;14538:20;;14535:278;;;14588:48;14621:14;;14588:28;14599:16;;14588:6;:10;;:28;;;;:::i;:::-;:32;;:48::i;:::-;14576:60;;14535:278;;;-1:-1:-1;;;;;14667:23:0;;;;;;:12;:23;;;;;;;;14664:149;;;14702:9;;14720:4;-1:-1:-1;;;;;14702:9:0;;;:17;:22;14694:31;;;;;;14752:49;14786:14;;14752:29;14763:17;;14752:6;:10;;:29;;;;:::i;:49::-;14740:61;;14664:149;14828:13;;14825:173;;14903:4;14885:24;;;;:9;:24;;;;;;:39;;14914:9;14885:28;:39::i;:::-;14876:4;14858:24;;;;:9;:24;;;;;;;:66;;;;14944:42;;-1:-1:-1;;;;;14944:42:0;;;;;;;14976:9;160:25:1;;148:2;133:18;;14:177;14944:42:0;;;;;;;;14825:173;15017:21;:6;15028:9;15017:10;:21::i;15448:651::-;15598:16;;;15612:1;15598:16;;;;;;;;15574:21;;15598:16;;;;;;;;;;-1:-1:-1;15598:16:0;15574:40;;15643:4;15625;15630:1;15625:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15625:23:0;;;-1:-1:-1;;;;;15625:23:0;;;;;15669:10;;;;;;;;;-1:-1:-1;;;;;15669:10:0;-1:-1:-1;;;;;15669:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15659:4;15664:1;15659:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15659:27:0;;;:7;;;;;;;;;:27;15731:10;;15699:57;;15716:4;;15731:10;;;;15744:11;15699:8;:57::i;:::-;15795:10;;:235;;-1:-1:-1;;;15795:235:0;;:10;;;;-1:-1:-1;;;;;15795:10:0;;:61;;:235;;15871:11;;15897:1;;15941:4;;15968;;16004:15;;15795:10;:235;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16056:35;16073:11;16086:4;16056:35;;;;;;;:::i;:::-;;;;;;;;15503:596;15448:651;:::o;2989:250::-;3047:7;3071:1;3076;3071:6;3067:47;;-1:-1:-1;3101:1:0;3094:8;;3067:47;3126:9;3138:5;3142:1;3138;:5;:::i;:::-;3126:17;-1:-1:-1;3171:1:0;3162:5;3166:1;3126:17;3162:5;:::i;:::-;:10;3154:56;;;;-1:-1:-1;;;3154:56:0;;12777:2:1;3154:56:0;;;12759:21:1;12816:2;12796:18;;;12789:30;12855:34;12835:18;;;12828:62;-1:-1:-1;;;12906:18:1;;;12899:31;12947:19;;3154:56:0;12575:397:1;3247:132:0;3305:7;3332:39;3336:1;3339;3332:39;;;;;;;;;;;;;;;;;3473:7;3508:12;3501:5;3493:28;;;;-1:-1:-1;;;3493:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3532:9:0;3544:5;3548:1;3544;:5;:::i;196:548: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;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;957:131::-;-1:-1:-1;;;;;1032:31:1;;1022:42;;1012:70;;1078:1;1075;1068:12;1093:315;1161:6;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;1398:2;1383:18;;;;1370:32;;-1:-1:-1;;;1093:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:160::-;2572:20;;2628:13;;2621:21;2611:32;;2601:60;;2657:1;2654;2647:12;2601:60;2507:160;;;:::o;2672:315::-;2737:6;2745;2798:2;2786:9;2777:7;2773:23;2769:32;2766:52;;;2814:1;2811;2804:12;2766:52;2853:9;2840:23;2872:31;2897:5;2872:31;:::i;:::-;2922:5;-1:-1:-1;2946:35:1;2977:2;2962:18;;2946:35;:::i;:::-;2936:45;;2672:315;;;;;:::o;2992:180::-;3051:6;3104:2;3092:9;3083:7;3079:23;3075:32;3072:52;;;3120:1;3117;3110:12;3072:52;-1:-1:-1;3143:23:1;;2992:180;-1:-1:-1;2992:180:1:o;3407:248::-;3469:6;3477;3530:2;3518:9;3509:7;3505:23;3501:32;3498:52;;;3546:1;3543;3536:12;3498:52;3569:26;3585:9;3569:26;:::i;3660:388::-;3728:6;3736;3789:2;3777:9;3768:7;3764:23;3760:32;3757:52;;;3805:1;3802;3795:12;3757:52;3844:9;3831:23;3863:31;3888:5;3863:31;:::i;:::-;3913:5;-1:-1:-1;3970:2:1;3955:18;;3942:32;3983:33;3942:32;3983:33;:::i;:::-;4035:7;4025:17;;;3660:388;;;;;:::o;4053:380::-;4132:1;4128:12;;;;4175;;;4196:61;;4250:4;4242:6;4238:17;4228:27;;4196:61;4303:2;4295:6;4292:14;4272:18;4269:38;4266:161;;4349:10;4344:3;4340:20;4337:1;4330:31;4384:4;4381:1;4374:15;4412:4;4409:1;4402:15;4266:161;;4053:380;;;:::o;4438:356::-;4640:2;4622:21;;;4659:18;;;4652:30;4718:34;4713:2;4698:18;;4691:62;4785:2;4770:18;;4438:356::o;5145:251::-;5215:6;5268:2;5256:9;5247:7;5243:23;5239:32;5236:52;;;5284:1;5281;5274:12;5236:52;5316:9;5310:16;5335:31;5360:5;5335:31;:::i;6322:306::-;6410:6;6418;6426;6479:2;6467:9;6458:7;6454:23;6450:32;6447:52;;;6495:1;6492;6485:12;6447:52;6524:9;6518:16;6508:26;;6574:2;6563:9;6559:18;6553:25;6543:35;;6618:2;6607:9;6603:18;6597:25;6587:35;;6322:306;;;;;:::o;9775:127::-;9836:10;9831:3;9827:20;9824:1;9817:31;9867:4;9864:1;9857:15;9891:4;9888:1;9881:15;9907:128;9974:9;;;9995:11;;;9992:37;;;10009:18;;:::i;10040:125::-;10105:9;;;10126:10;;;10123:36;;;10139:18;;:::i;10658:127::-;10719:10;10714:3;10710:20;10707:1;10700:31;10750:4;10747:1;10740:15;10774:4;10771:1;10764:15;10790:461;10843:3;10881:5;10875:12;10908:6;10903:3;10896:19;10934:4;10963:2;10958:3;10954:12;10947:19;;11000:2;10993:5;10989:14;11021:1;11031:195;11045:6;11042:1;11039:13;11031:195;;;11110:13;;-1:-1:-1;;;;;11106:39:1;11094:52;;11166:12;;;;11201:15;;;;11142:1;11060:9;11031:195;;;-1:-1:-1;11242:3:1;;10790:461;-1:-1:-1;;;;;10790:461:1:o;11256:582::-;11555:6;11544:9;11537:25;11598:6;11593:2;11582:9;11578:18;11571:34;11641:3;11636:2;11625:9;11621:18;11614:31;11518:4;11662:57;11714:3;11703:9;11699:19;11691:6;11662:57;:::i;:::-;-1:-1:-1;;;;;11755:32:1;;;;11750:2;11735:18;;11728:60;-1:-1:-1;11819:3:1;11804:19;11797:35;11654:65;11256:582;-1:-1:-1;;;11256:582:1:o;11843:332::-;12050:6;12039:9;12032:25;12093:2;12088;12077:9;12073:18;12066:30;12013:4;12113:56;12165:2;12154:9;12150:18;12142:6;12113:56;:::i;:::-;12105:64;11843:332;-1:-1:-1;;;;11843:332:1:o;12180:168::-;12253:9;;;12284;;12301:15;;;12295:22;;12281:37;12271:71;;12322:18;;:::i;12353:217::-;12393:1;12419;12409:132;;12463:10;12458:3;12454:20;12451:1;12444:31;12498:4;12495:1;12488:15;12526:4;12523:1;12516:15;12409:132;-1:-1:-1;12555:9:1;;12353:217::o

Swarm Source

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