ETH Price: $3,312.56 (-4.55%)
Gas: 5.77 Gwei

Token

CLIPPYAI (CLIPPY)
 

Overview

Max Total Supply

420,000,000,000 CLIPPY

Holders

65

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
CLIPPYAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-16
*/

/**
Website: https://clippycoin.io/

Twitter: https://twitter.com/clippy_coin

Telegram: https://t.me/ClippyAIPortal
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

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

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    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 CLIPPYAI is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'CLIPPYAI';
    string private constant _symbol = 'CLIPPY';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 420000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 1000;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 0;
    uint256 private totalFee = 3000;
    uint256 private sellFee = 6000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 public swapThreshold = ( _totalSupply * 100 ) / 10000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x3037B08fDD52808A1B4C469750C26E2e9BD31C95; 
    address internal marketing_receiver = 0x3037B08fDD52808A1B4C469750C26E2e9BD31C95;
    address internal liquidity_receiver = 0x819E8246C7d49e1021711cD5b9434A4d16D40265;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function launchClippy() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisfeeExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function settaxes(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        
    }

    function setlimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");

    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(1) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function changeSwapthreshold(uint256 _swapThreshold) public onlyOwner {
        swapThreshold = _swapThreshold;
    
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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);
    }

}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","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":"_maxWalletToken","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":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchClippy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setlimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"settaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200047c565b62000023906461c9f3680062000493565b600181815560c8600281905560038190556004556009805460ff60a01b191690556103e8600a556107d0600b555f600c819055610bb8600d55611770600e55600f5561271060108190556011805460ff1916909217909155906200008990606462000493565b620000959190620004ad565b601455620186a0600154600a620000ad919062000493565b620000b99190620004ad565b601555601680546001600160a01b0319908116733037b08fdd52808a1b4c469750c26e2e9bd31c959081179092556017805482169092179091556018805490911673819e8246c7d49e1021711cd5b9434a4d16d402651790553480156200011e575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000183573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a99190620004cd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021b9190620004cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000266573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028c9190620004cd565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055305f908152600760209081526040808320805460ff19908116600190811790925560185486168552828520805482168317905560175486168552828520805482168317905560165490951684528184208054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004f5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003c157815f1904821115620003a557620003a56200036d565b80851615620003b357918102915b93841c939080029062000386565b509250929050565b5f82620003d95750600162000476565b81620003e757505f62000476565b81600181146200040057600281146200040b576200042b565b600191505062000476565b60ff8411156200041f576200041f6200036d565b50506001821b62000476565b5060208310610133831016604e8410600b841016171562000450575081810a62000476565b6200045c838362000381565b805f19048211156200047257620004726200036d565b0290505b92915050565b5f6200048c60ff841683620003c9565b9392505050565b80820281158282048414176200047657620004766200036d565b5f82620004c857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004de575f80fd5b81516001600160a01b03811681146200048c575f80fd5b6118c280620005035f395ff3fe60806040526004361061013f575f3560e01c80637d1db4a5116100b3578063a8aa1b311161006d578063a8aa1b31146103a5578063a9059cbb146103c4578063d37e9177146103e3578063dd62ed3e14610402578063e3f2d2d514610446578063f2fde38b14610465575f80fd5b80637d1db4a5146102df578063893d20e8146102f3578063945684a91461032357806395d89b41146103395780639abba4e614610367578063a325c2f314610386575f80fd5b806323b872dd1161010457806323b872dd146102025780632f54bf6e14610221578063313ce5671461024e5780633f4218e01461026957806370a082311461029757806378109e54146102cb575f80fd5b80630445b6671461014a57806306fdde0314610172578063095ea7b3146101ab57806318160ddd146101da5780631f976b7e146101ee575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f60145481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b50604080518082019091526008815267434c49505059414960c01b60208201525b6040516101699190611540565b3480156101b6575f80fd5b506101ca6101c53660046115a2565b610484565b6040519015158152602001610169565b3480156101e5575f80fd5b5061015f61049a565b3480156101f9575f80fd5b5061015f6104d6565b34801561020d575f80fd5b506101ca61021c3660046115cc565b6104f9565b34801561022c575f80fd5b506101ca61023b36600461160a565b5f546001600160a01b0391821691161490565b348015610259575f80fd5b5060405160098152602001610169565b348015610274575f80fd5b506101ca61028336600461160a565b60076020525f908152604090205460ff1681565b3480156102a2575f80fd5b5061015f6102b136600461160a565b6001600160a01b03165f9081526005602052604090205490565b3480156102d6575f80fd5b5061015f610561565b3480156102ea575f80fd5b5061015f610570565b3480156102fe575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610169565b34801561032e575f80fd5b5061033761057f565b005b348015610344575f80fd5b50604080518082019091526006815265434c4950505960d01b602082015261019e565b348015610372575f80fd5b50610337610381366004611625565b6105c6565b348015610391575f80fd5b506103376103a036600461163c565b6105f4565b3480156103b0575f80fd5b5060095461030b906001600160a01b031681565b3480156103cf575f80fd5b506101ca6103de3660046115a2565b61073f565b3480156103ee575f80fd5b506103376103fd366004611665565b61074b565b34801561040d575f80fd5b5061015f61041c3660046116a0565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610451575f80fd5b506103376104603660046116cc565b61079e565b348015610470575f80fd5b5061033761047f36600461160a565b6107e4565b5f610490338484610860565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104d191610983565b905090565b5f6010546003546104e561049a565b6104ef919061171f565b6104d19190611736565b5f61050584848461098e565b610556843361055185604051806060016040528060288152602001611865602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610ab0565b610860565b5060015b9392505050565b5f6010546004546104e561049a565b5f6010546002546104e561049a565b5f546001600160a01b031633146105b15760405162461bcd60e51b81526004016105a890611755565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105ef5760405162461bcd60e51b81526004016105a890611755565b601455565b5f546001600160a01b0316331461061d5760405162461bcd60e51b81526004016105a890611755565b5f6127108461062a61049a565b610634919061171f565b61063e9190611736565b90505f6127108461064d61049a565b610657919061171f565b6106619190611736565b90505f6127108461067061049a565b61067a919061171f565b6106849190611736565b60028790556003869055600485905590505f6106b56103e86106af60056106a961049a565b90610adb565b90610ae6565b90508084101580156106c75750808310155b80156106d35750808210155b6107365760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105a8565b50505050505050565b5f61049033848461098e565b5f546001600160a01b031633146107745760405162461bcd60e51b81526004016105a890611755565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107c75760405162461bcd60e51b81526004016105a890611755565b600a95909555600b93909355600c91909155600d55600e55600f55565b5f546001600160a01b0316331461080d5760405162461bcd60e51b81526004016105a890611755565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108c25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a8565b6001600160a01b0382166109235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a8565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61055a8284611775565b610999838383610af1565b6109a38383610c9e565b6109ae838383610d31565b6109b88383610e1f565b6109c3838383610e74565b6109ce838383610fa7565b6001600160a01b0383165f908152600560205260409020546109f09082610983565b6001600160a01b0384165f90815260056020526040812091909155610a158484610fcb565b610a1f5781610a2a565b610a2a84848461100f565b6001600160a01b0384165f90815260056020526040902054909150610a4f90826110ca565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610aa29085815260200190565b60405180910390a350505050565b5f8184841115610ad35760405162461bcd60e51b81526004016105a89190611540565b505050900390565b5f61055a828461171f565b5f61055a8284611736565b6001600160a01b038316610b555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a8565b6001600160a01b038216610bb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a8565b5f8111610c185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a8565b6001600160a01b0383165f90815260056020526040902054811115610c995760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105a8565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610cde57506001600160a01b0381165f9081526007602052604090205460ff16155b15610d2d57600954600160a01b900460ff16610d2d5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105a8565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610d7157506001600160a01b0382165f9081526007602052604090205460ff16155b8015610d8b57506009546001600160a01b03838116911614155b8015610da257506001600160a01b03821661dead14155b15610c9957610daf610561565b6001600160a01b0383165f90815260056020526040902054610dd190836110ca565b1115610c995760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105a8565b6009546001600160a01b038281169116148015610e5457506001600160a01b0382165f9081526007602052604090205460ff16155b15610d2d57600160125f828254610e6b9190611788565b90915550505050565b6009546001600160a01b03848116911614610f1857610e916104d6565b81111580610eb657506001600160a01b0383165f9081526007602052604090205460ff165b80610ed857506001600160a01b0382165f9081526007602052604090205460ff165b610f185760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105a8565b610f20610570565b81111580610f4557506001600160a01b0383165f9081526007602052604090205460ff165b80610f6757506001600160a01b0382165f9081526007602052604090205460ff165b610c995760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105a8565b610fb28383836110d5565b15610c9957610fc2601454611185565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561055a5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061101b85856112f5565b11156110c3575f61103d61102f86866112f5565b6010546106a9908690610ae6565b305f9081526005602052604090205490915061105990826110ca565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a99085815260200190565b60405180910390a36110bb8382610983565b91505061055a565b5092915050565b5f61055a8284611788565b601554601454305f9081526005602052604081205460135491938510159211159060ff16158015611108575060115460ff165b801561111d5750600954600160a01b900460ff165b80156111265750815b801561114a57506001600160a01b0386165f9081526007602052604090205460ff16155b801561116357506009546001600160a01b038681169116145b80156111725750600160125410155b801561117b5750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936111be936002936106a99391926111b89283916110ca565b906110ca565b90505f6111da826106af600a5486610adb90919063ffffffff16565b90505f6111e78483610983565b9050476111f38261133f565b5f6111fe4783610983565b90505f611220611219600a548861098390919063ffffffff16565b8390610ae6565b90505f611238600a5483610adb90919063ffffffff16565b9050801561124a5761124a868261148f565b600b545f9061125e906106a9856002610adb565b9050801561129f576017546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561129d573d5f803e3d5ffd5b505b4780156112df576016546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112dd573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036113165750600e54610494565b6009546001600160a01b03908116908416036113355750600d54610494565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113725761137261179b565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ed91906117af565b816001815181106114005761140061179b565b6001600160a01b0392831660209182029290920101526008546114269130911684610860565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061145e9085905f908690309042906004016117ca565b5f604051808303815f87803b158015611475575f80fd5b505af1158015611487573d5f803e3d5ffd5b505050505050565b6008546114a79030906001600160a01b031684610860565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611514573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115399190611839565b5050505050565b5f6020808352835180828501525f5b8181101561156b5785810183015185820160400152820161154f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159f575f80fd5b50565b5f80604083850312156115b3575f80fd5b82356115be8161158b565b946020939093013593505050565b5f805f606084860312156115de575f80fd5b83356115e98161158b565b925060208401356115f98161158b565b929592945050506040919091013590565b5f6020828403121561161a575f80fd5b813561055a8161158b565b5f60208284031215611635575f80fd5b5035919050565b5f805f6060848603121561164e575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611676575f80fd5b82356116818161158b565b915060208301358015158114611695575f80fd5b809150509250929050565b5f80604083850312156116b1575f80fd5b82356116bc8161158b565b915060208301356116958161158b565b5f805f805f8060c087890312156116e1575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104945761049461170b565b5f8261175057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b818103818111156104945761049461170b565b808201808211156104945761049461170b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117bf575f80fd5b815161055a8161158b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118185784516001600160a01b0316835293830193918301916001016117f3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561184b575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cd48d6ba0e7723ef7e44dd03456ae34b06adc8c969dd33529ed4f8735bcc47c064736f6c63430008150033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80637d1db4a5116100b3578063a8aa1b311161006d578063a8aa1b31146103a5578063a9059cbb146103c4578063d37e9177146103e3578063dd62ed3e14610402578063e3f2d2d514610446578063f2fde38b14610465575f80fd5b80637d1db4a5146102df578063893d20e8146102f3578063945684a91461032357806395d89b41146103395780639abba4e614610367578063a325c2f314610386575f80fd5b806323b872dd1161010457806323b872dd146102025780632f54bf6e14610221578063313ce5671461024e5780633f4218e01461026957806370a082311461029757806378109e54146102cb575f80fd5b80630445b6671461014a57806306fdde0314610172578063095ea7b3146101ab57806318160ddd146101da5780631f976b7e146101ee575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f60145481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b50604080518082019091526008815267434c49505059414960c01b60208201525b6040516101699190611540565b3480156101b6575f80fd5b506101ca6101c53660046115a2565b610484565b6040519015158152602001610169565b3480156101e5575f80fd5b5061015f61049a565b3480156101f9575f80fd5b5061015f6104d6565b34801561020d575f80fd5b506101ca61021c3660046115cc565b6104f9565b34801561022c575f80fd5b506101ca61023b36600461160a565b5f546001600160a01b0391821691161490565b348015610259575f80fd5b5060405160098152602001610169565b348015610274575f80fd5b506101ca61028336600461160a565b60076020525f908152604090205460ff1681565b3480156102a2575f80fd5b5061015f6102b136600461160a565b6001600160a01b03165f9081526005602052604090205490565b3480156102d6575f80fd5b5061015f610561565b3480156102ea575f80fd5b5061015f610570565b3480156102fe575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610169565b34801561032e575f80fd5b5061033761057f565b005b348015610344575f80fd5b50604080518082019091526006815265434c4950505960d01b602082015261019e565b348015610372575f80fd5b50610337610381366004611625565b6105c6565b348015610391575f80fd5b506103376103a036600461163c565b6105f4565b3480156103b0575f80fd5b5060095461030b906001600160a01b031681565b3480156103cf575f80fd5b506101ca6103de3660046115a2565b61073f565b3480156103ee575f80fd5b506103376103fd366004611665565b61074b565b34801561040d575f80fd5b5061015f61041c3660046116a0565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610451575f80fd5b506103376104603660046116cc565b61079e565b348015610470575f80fd5b5061033761047f36600461160a565b6107e4565b5f610490338484610860565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104d191610983565b905090565b5f6010546003546104e561049a565b6104ef919061171f565b6104d19190611736565b5f61050584848461098e565b610556843361055185604051806060016040528060288152602001611865602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610ab0565b610860565b5060015b9392505050565b5f6010546004546104e561049a565b5f6010546002546104e561049a565b5f546001600160a01b031633146105b15760405162461bcd60e51b81526004016105a890611755565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105ef5760405162461bcd60e51b81526004016105a890611755565b601455565b5f546001600160a01b0316331461061d5760405162461bcd60e51b81526004016105a890611755565b5f6127108461062a61049a565b610634919061171f565b61063e9190611736565b90505f6127108461064d61049a565b610657919061171f565b6106619190611736565b90505f6127108461067061049a565b61067a919061171f565b6106849190611736565b60028790556003869055600485905590505f6106b56103e86106af60056106a961049a565b90610adb565b90610ae6565b90508084101580156106c75750808310155b80156106d35750808210155b6107365760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105a8565b50505050505050565b5f61049033848461098e565b5f546001600160a01b031633146107745760405162461bcd60e51b81526004016105a890611755565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107c75760405162461bcd60e51b81526004016105a890611755565b600a95909555600b93909355600c91909155600d55600e55600f55565b5f546001600160a01b0316331461080d5760405162461bcd60e51b81526004016105a890611755565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108c25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a8565b6001600160a01b0382166109235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a8565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61055a8284611775565b610999838383610af1565b6109a38383610c9e565b6109ae838383610d31565b6109b88383610e1f565b6109c3838383610e74565b6109ce838383610fa7565b6001600160a01b0383165f908152600560205260409020546109f09082610983565b6001600160a01b0384165f90815260056020526040812091909155610a158484610fcb565b610a1f5781610a2a565b610a2a84848461100f565b6001600160a01b0384165f90815260056020526040902054909150610a4f90826110ca565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610aa29085815260200190565b60405180910390a350505050565b5f8184841115610ad35760405162461bcd60e51b81526004016105a89190611540565b505050900390565b5f61055a828461171f565b5f61055a8284611736565b6001600160a01b038316610b555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a8565b6001600160a01b038216610bb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a8565b5f8111610c185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a8565b6001600160a01b0383165f90815260056020526040902054811115610c995760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105a8565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610cde57506001600160a01b0381165f9081526007602052604090205460ff16155b15610d2d57600954600160a01b900460ff16610d2d5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105a8565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610d7157506001600160a01b0382165f9081526007602052604090205460ff16155b8015610d8b57506009546001600160a01b03838116911614155b8015610da257506001600160a01b03821661dead14155b15610c9957610daf610561565b6001600160a01b0383165f90815260056020526040902054610dd190836110ca565b1115610c995760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105a8565b6009546001600160a01b038281169116148015610e5457506001600160a01b0382165f9081526007602052604090205460ff16155b15610d2d57600160125f828254610e6b9190611788565b90915550505050565b6009546001600160a01b03848116911614610f1857610e916104d6565b81111580610eb657506001600160a01b0383165f9081526007602052604090205460ff165b80610ed857506001600160a01b0382165f9081526007602052604090205460ff165b610f185760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105a8565b610f20610570565b81111580610f4557506001600160a01b0383165f9081526007602052604090205460ff165b80610f6757506001600160a01b0382165f9081526007602052604090205460ff165b610c995760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105a8565b610fb28383836110d5565b15610c9957610fc2601454611185565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561055a5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061101b85856112f5565b11156110c3575f61103d61102f86866112f5565b6010546106a9908690610ae6565b305f9081526005602052604090205490915061105990826110ca565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a99085815260200190565b60405180910390a36110bb8382610983565b91505061055a565b5092915050565b5f61055a8284611788565b601554601454305f9081526005602052604081205460135491938510159211159060ff16158015611108575060115460ff165b801561111d5750600954600160a01b900460ff165b80156111265750815b801561114a57506001600160a01b0386165f9081526007602052604090205460ff16155b801561116357506009546001600160a01b038681169116145b80156111725750600160125410155b801561117b5750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936111be936002936106a99391926111b89283916110ca565b906110ca565b90505f6111da826106af600a5486610adb90919063ffffffff16565b90505f6111e78483610983565b9050476111f38261133f565b5f6111fe4783610983565b90505f611220611219600a548861098390919063ffffffff16565b8390610ae6565b90505f611238600a5483610adb90919063ffffffff16565b9050801561124a5761124a868261148f565b600b545f9061125e906106a9856002610adb565b9050801561129f576017546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561129d573d5f803e3d5ffd5b505b4780156112df576016546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112dd573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036113165750600e54610494565b6009546001600160a01b03908116908416036113355750600d54610494565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113725761137261179b565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ed91906117af565b816001815181106114005761140061179b565b6001600160a01b0392831660209182029290920101526008546114269130911684610860565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061145e9085905f908690309042906004016117ca565b5f604051808303815f87803b158015611475575f80fd5b505af1158015611487573d5f803e3d5ffd5b505050505050565b6008546114a79030906001600160a01b031684610860565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611514573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115399190611839565b5050505050565b5f6020808352835180828501525f5b8181101561156b5785810183015185820160400152820161154f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159f575f80fd5b50565b5f80604083850312156115b3575f80fd5b82356115be8161158b565b946020939093013593505050565b5f805f606084860312156115de575f80fd5b83356115e98161158b565b925060208401356115f98161158b565b929592945050506040919091013590565b5f6020828403121561161a575f80fd5b813561055a8161158b565b5f60208284031215611635575f80fd5b5035919050565b5f805f6060848603121561164e575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611676575f80fd5b82356116818161158b565b915060208301358015158114611695575f80fd5b809150509250929050565b5f80604083850312156116b1575f80fd5b82356116bc8161158b565b915060208301356116958161158b565b5f805f805f8060c087890312156116e1575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104945761049461170b565b5f8261175057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b818103818111156104945761049461170b565b808201808211156104945761049461170b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117bf575f80fd5b815161055a8161158b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118185784516001600160a01b0316835293830193918301916001016117f3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561184b575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cd48d6ba0e7723ef7e44dd03456ae34b06adc8c969dd33529ed4f8735bcc47c064736f6c63430008150033

Deployed Bytecode Sourcemap

4739:11202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5819:61;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5819:61:0;;;;;;;;7028:67;;;;;;;;;;-1:-1:-1;7088:5:0;;;;;;;;;;;;-1:-1:-1;;;7088:5:0;;;;7028:67;;;;;;;:::i;8046:133::-;;;;;;;;;;-1:-1:-1;8046:133:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8046:133:0;1205:187:1;8185:111:0;;;;;;;;;;;;;:::i;8541:119::-;;;;;;;;;;;;;:::i;15284:309::-;;;;;;;;;;-1:-1:-1;15284:309:0;;;;;:::i;:::-;;:::i;3119:87::-;;;;;;;;;;-1:-1:-1;3119:87:0;;;;;:::i;:::-;3174:4;3199:5;-1:-1:-1;;;;;3188:16:0;;;3199:5;;3188:16;;3119:87;7178:67;;;;;;;;;;-1:-1:-1;7178:67:0;;4949:1;2252:36:1;;2240:2;2225:18;7178:67:0;2110:184:1;5300:44:0;;;;;;;;;;-1:-1:-1;5300:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7408:103;;;;;;;;;;-1:-1:-1;7408:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7491:18:0;7474:7;7491:18;;;:9;:18;;;;;;;7408:103;8302:114;;;;;;;;;;;;;:::i;8422:113::-;;;;;;;;;;;;;:::i;7324:78::-;;;;;;;;;;-1:-1:-1;7376:7:0;7394:5;-1:-1:-1;;;;;7394:5:0;7324:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;7324:78:0;2299:203:1;7251:67:0;;;;;;;;;;;;;:::i;:::-;;7101:71;;;;;;;;;;-1:-1:-1;7163:7:0;;;;;;;;;;;;-1:-1:-1;;;7163:7:0;;;;7101:71;;14711:125;;;;;;;;;;-1:-1:-1;14711:125:0;;;;;:::i;:::-;;:::i;10178:582::-;;;;;;;;;;-1:-1:-1;10178:582:0;;;;;:::i;:::-;;:::i;5372:19::-;;;;;;;;;;-1:-1:-1;5372:19:0;;;;-1:-1:-1;;;;;5372:19:0;;;7517:139;;;;;;;;;;-1:-1:-1;7517:139:0;;;;;:::i;:::-;;:::i;7929:111::-;;;;;;;;;;-1:-1:-1;7929:111:0;;;;;:::i;:::-;;:::i;7662:127::-;;;;;;;;;;-1:-1:-1;7662:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7760:18:0;;;7743:7;7760:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7662:127;9809:361;;;;;;;;;;-1:-1:-1;9809:361:0;;;;;:::i;:::-;;:::i;3212:111::-;;;;;;;;;;-1:-1:-1;3212:111:0;;;;;:::i;:::-;;:::i;8046:133::-;8121:4;8128:37;8137:10;8149:7;8158:6;8128:8;:37::i;:::-;-1:-1:-1;8173:4:0;8046:133;;;;;:::o;8185:111::-;8238:7;7491:18;;;:9;:18;;;;8255:12;;:39;;:16;:39::i;:::-;8248:46;;8185:111;:::o;8541:119::-;8592:7;8647:11;;8625:19;;8609:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;15284:309::-;15382:4;15399:36;15409:6;15417:9;15428:6;15399:9;:36::i;:::-;15446:117;15455:6;15463:10;15475:87;15511:6;15475:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15475:19:0;;;;;;:11;:19;;;;;;;;15495:10;15475:31;;;;;;;;;:87;:35;:87::i;:::-;15446:8;:117::i;:::-;-1:-1:-1;15581:4:0;15284:309;;;;;;:::o;8302:114::-;8350:7;8403:11;;8383:17;;8367:13;:11;:13::i;8422:113::-;8467:7;8522:11;;8500:19;;8484:13;:11;:13::i;7251:67::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;;;;;;;;;7295:14:::1;:21:::0;;-1:-1:-1;;;;7295:21:0::1;-1:-1:-1::0;;;7295:21:0::1;::::0;;7251:67::o;14711:125::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;14792:13:::1;:30:::0;14711:125::o;10178:582::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;10274:13:::1;10315:5;10307:4;10291:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10290:30;;;;:::i;:::-;10274:46;;10331:19;10380:5;10370:6;10354:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10353:32;;;;:::i;:::-;10331:54;;10396:17;10444:5;10433:7;10417:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10416:33;;;;:::i;:::-;10460:19;:26:::0;;;10497:19:::1;:28:::0;;;10536:17:::1;:27:::0;;;10396:53;-1:-1:-1;;10590:30:0::1;10615:4;10590:20;10608:1;10590:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10574:46;;10648:5;10639;:14;;:38;;;;;10672:5;10657:11;:20;;10639:38;:60;;;;;10694:5;10681:9;:18;;10639:60;10631:119;;;::::0;-1:-1:-1;;;10631:119:0;;5678:2:1;10631:119:0::1;::::0;::::1;5660:21:1::0;5717:2;5697:18;;;5690:30;5756:34;5736:18;;;5729:62;-1:-1:-1;;;5807:18:1;;;5800:44;5861:19;;10631:119:0::1;5476:410:1::0;10631:119:0::1;10263:497;;;;10178:582:::0;;;:::o;7517:139::-;7595:4;7602:40;7612:10;7624:9;7635:6;7602:9;:40::i;7929:111::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8006:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8006:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7929:111::o;9809:361::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;9966:12:::1;:25:::0;;;;10002:12:::1;:25:::0;;;;10038:14:::1;:29:::0;;;;10078:8:::1;:17:::0;10106:7:::1;:15:::0;10132:11:::1;:20:::0;9809:361::o;3212:111::-;3174:4;3199:5;-1:-1:-1;;;;;3199:5:0;3086:10;3188:16;3070:38;;;;-1:-1:-1;;;3070:38:0;;;;;;;:::i;:::-;3278:5:::1;:11:::0;;-1:-1:-1;;;;;;3278:11:0::1;-1:-1:-1::0;;;;;3278:11:0;::::1;::::0;;::::1;::::0;;;3296:25:::1;::::0;2445:51:1;;;3296:25:0::1;::::0;2433:2:1;2418:18;3296:25:0::1;;;;;;;3212:111:::0;:::o;15601:335::-;-1:-1:-1;;;;;15694:19:0;;15686:68;;;;-1:-1:-1;;;15686:68:0;;6309:2:1;15686:68:0;;;6291:21:1;6348:2;6328:18;;;6321:30;6387:34;6367:18;;;6360:62;-1:-1:-1;;;6438:18:1;;;6431:34;6482:19;;15686:68:0;6107:400:1;15686:68:0;-1:-1:-1;;;;;15773:21:0;;15765:68;;;;-1:-1:-1;;;15765:68:0;;6714:2:1;15765:68:0;;;6696:21:1;6753:2;6733:18;;;6726:30;6792:34;6772:18;;;6765:62;-1:-1:-1;;;6843:18:1;;;6836:32;6885:19;;15765:68:0;6512:398:1;15765:68:0;-1:-1:-1;;;;;15844:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15896:32;;160:25:1;;;15896:32:0;;133:18:1;15896:32:0;;;;;;;15601:335;;;:::o;305:82::-;363:7;380:5;384:1;380;:5;:::i;9115:686::-;9204:37;9215:6;9223:9;9234:6;9204:10;:37::i;:::-;9252:38;9272:6;9280:9;9252:19;:38::i;:::-;9301:41;9316:6;9324:9;9335:6;9301:14;:41::i;:::-;9354:35;9371:6;9379:9;9354:16;:35::i;:::-;9400:39;9413:6;9421:9;9432:6;9400:12;:39::i;:::-;9451:35;9460:6;9468:9;9479:6;9451:8;:35::i;:::-;-1:-1:-1;;;;;9517:17:0;;;;;;:9;:17;;;;;;:29;;9539:6;9517:21;:29::i;:::-;-1:-1:-1;;;;;9497:17:0;;;;;;:9;:17;;;;;:49;;;;9582:32;9507:6;9604:9;9582:13;:32::i;:::-;:78;;9654:6;9582:78;;;9617:34;9625:6;9633:9;9644:6;9617:7;:34::i;:::-;-1:-1:-1;;;;;9694:20:0;;;;;;:9;:20;;;;;;9557:103;;-1:-1:-1;9694:40:0;;9557:103;9694:24;:40::i;:::-;-1:-1:-1;;;;;9671:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9750:43;;;;;;;;;;9778:14;160:25:1;;148:2;133:18;;14:177;9750:43:0;;;;;;;;9193:608;9115:686;;;:::o;1518:162::-;1604:7;1650:12;1642:6;;;;1634:29;;;;-1:-1:-1;;;1634:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1672:5:0;;;1518:162::o;393:82::-;451:7;468:5;472:1;468;:5;:::i;481:82::-;539:7;556:5;560:1;556;:5;:::i;8668:439::-;-1:-1:-1;;;;;8772:20:0;;8764:70;;;;-1:-1:-1;;;8764:70:0;;7250:2:1;8764:70:0;;;7232:21:1;7289:2;7269:18;;;7262:30;7328:34;7308:18;;;7301:62;-1:-1:-1;;;7379:18:1;;;7372:35;7424:19;;8764:70:0;7048:401:1;8764:70:0;-1:-1:-1;;;;;8853:23:0;;8845:71;;;;-1:-1:-1;;;8845:71:0;;7656:2:1;8845:71:0;;;7638:21:1;7695:2;7675:18;;;7668:30;7734:34;7714:18;;;7707:62;-1:-1:-1;;;7785:18:1;;;7778:33;7828:19;;8845:71:0;7454:399:1;8845:71:0;8952:1;8935:6;:19;8927:73;;;;-1:-1:-1;;;8927:73:0;;8060:2:1;8927:73:0;;;8042:21:1;8099:2;8079:18;;;8072:30;8138:34;8118:18;;;8111:62;-1:-1:-1;;;8189:18:1;;;8182:39;8238:19;;8927:73:0;7858:405:1;8927:73:0;-1:-1:-1;;;;;7491:18:0;;7474:7;7491:18;;;:9;:18;;;;;;9019:6;:27;;9011:88;;;;-1:-1:-1;;;9011:88:0;;8470:2:1;9011:88:0;;;8452:21:1;8509:2;8489:18;;;8482:30;8548:34;8528:18;;;8521:62;-1:-1:-1;;;8599:18:1;;;8592:47;8656:19;;9011:88:0;8268:413:1;9011:88:0;8668:439;;;:::o;10768:191::-;-1:-1:-1;;;;;10861:19:0;;;;;;:11;:19;;;;;;;;10860:20;:47;;;;-1:-1:-1;;;;;;10885:22:0;;;;;;:11;:22;;;;;;;;10884:23;10860:47;10857:95;;;10917:14;;-1:-1:-1;;;10917:14:0;;;;10909:41;;;;-1:-1:-1;;;10909:41:0;;8888:2:1;10909:41:0;;;8870:21:1;8927:2;8907:18;;;8900:30;-1:-1:-1;;;8946:18:1;;;8939:44;9000:18;;10909:41:0;8686:338:1;10909:41:0;10768:191;;:::o;10971:333::-;-1:-1:-1;;;;;11075:19:0;;;;;;:11;:19;;;;;;;;11074:20;:47;;;;-1:-1:-1;;;;;;11099:22:0;;;;;;:11;:22;;;;;;;;11098:23;11074:47;:77;;;;-1:-1:-1;11146:4:0;;-1:-1:-1;;;;;11125:26:0;;;11146:4;;11125:26;;11074:77;:107;;;;-1:-1:-1;;;;;;11155:26:0;;6059:42;11155:26;;11074:107;11071:226;;;11243:17;:15;:17::i;:::-;-1:-1:-1;;;;;11206:20:0;;;;;;:9;:20;;;;;;:32;;11231:6;11206:24;:32::i;:::-;11205:55;;11197:98;;;;-1:-1:-1;;;11197:98:0;;9231:2:1;11197:98:0;;;9213:21:1;9270:2;9250:18;;;9243:30;9309:32;9289:18;;;9282:60;9359:18;;11197:98:0;9029:354:1;11312:159:0;11409:4;;-1:-1:-1;;;;;11396:17:0;;;11409:4;;11396:17;:41;;;;-1:-1:-1;;;;;;11418:19:0;;;;;;:11;:19;;;;;;;;11417:20;11396:41;11393:71;;;11460:1;11439:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11312:159:0;;:::o;11479:349::-;11590:4;;-1:-1:-1;;;;;11580:14:0;;;11590:4;;11580:14;11577:130;;11614:20;:18;:20::i;:::-;11604:6;:30;;:53;;;-1:-1:-1;;;;;;11638:19:0;;;;;;:11;:19;;;;;;;;11604:53;:79;;;-1:-1:-1;;;;;;11661:22:0;;;;;;:11;:22;;;;;;;;11604:79;11596:109;;;;-1:-1:-1;;;11596:109:0;;9720:2:1;11596:109:0;;;9702:21:1;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:47;9835:18;;11596:109:0;9518:341:1;11596:109:0;11735:14;:12;:14::i;:::-;11725:6;:24;;:47;;;-1:-1:-1;;;;;;11753:19:0;;;;;;:11;:19;;;;;;;;11725:47;:73;;;-1:-1:-1;;;;;;11776:22:0;;;;;;:11;:22;;;;;;;;11725:73;11717:103;;;;-1:-1:-1;;;11717:103:0;;9720:2:1;11717:103:0;;;9702:21:1;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:47;9835:18;;11717:103:0;9518:341:1;14111:197:0;14203:41;14218:6;14226:9;14237:6;14203:14;:41::i;:::-;14200:101;;;14246:29;14261:13;;14246:14;:29::i;:::-;14297:1;14277:9;:22;14111:197;;;:::o;14316:160::-;-1:-1:-1;;;;;14422:19:0;;14397:4;14422:19;;;:11;:19;;;;;;;;14421:20;:47;;;;-1:-1:-1;;;;;;;14446:22:0;;;;;:11;:22;;;;;;;;14445:23;;14316:160;-1:-1:-1;14316:160:0:o;14844:432::-;14930:7;14986:1;14953:30;14965:6;14973:9;14953:11;:30::i;:::-;:34;14950:304;;;14999:17;15019:59;15047:30;15059:6;15067:9;15047:11;:30::i;:::-;15030:11;;15019:23;;:6;;:10;:23::i;:59::-;15134:4;15116:24;;;;:9;:24;;;;;;14999:79;;-1:-1:-1;15116:39:0;;14999:79;15116:28;:39::i;:::-;15107:4;15089:24;;;;:9;:24;;;;;;;:66;;;;15171:42;;-1:-1:-1;;;;;15171:42:0;;;;;;;15203:9;160:25:1;;148:2;133:18;;14:177;15171:42:0;;;;;;;;15231:21;:6;15242:9;15231:10;:21::i;:::-;15224:28;;;;;14950:304;-1:-1:-1;15262:6:0;14844:432;-1:-1:-1;;14844:432:0:o;217:82::-;275:7;292:5;296:1;292;:5;:::i;13703:400::-;13844:15;;13920:13;;13910:4;13801;7491:18;;;:9;:18;;;;;;13952:8;;13801:4;;13834:25;;;;-1:-1:-1;13892:41:0;;13952:8;;13951:9;:24;;;;-1:-1:-1;13964:11:0;;;;13951:24;:42;;;;-1:-1:-1;13979:14:0;;-1:-1:-1;;;13979:14:0;;;;13951:42;:54;;;;;13997:8;13951:54;:78;;;;-1:-1:-1;;;;;;14010:19:0;;;;;;:11;:19;;;;;;;;14009:20;13951:78;:99;;;;-1:-1:-1;14046:4:0;;-1:-1:-1;;;;;14033:17:0;;;14046:4;;14033:17;13951:99;:126;;;;;14075:1;14054:9;;:23;;13951:126;:144;;;;;14081:14;13951:144;13944:151;13703:400;-1:-1:-1;;;;;;13703:400:0:o;11836:1066::-;5980:8;:15;;-1:-1:-1;;5980:15:0;5991:4;5980:15;;;;;;11973:14:::1;::::0;11955:12:::1;::::0;11931::::1;::::0;5980:8;;11930:66:::1;::::0;11994:1:::1;::::0;11931:57:::1;::::0;11973:14;;11931:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;11930:66::-;11907:89;;12007:32;12042:42;12071:12;12042:24;12053:12;;12042:6;:10;;:24;;;;:::i;:42::-;12007:77:::0;-1:-1:-1;12095:14:0::1;12112:36;:6:::0;12007:77;12112:10:::1;:36::i;:::-;12095:53:::0;-1:-1:-1;12184:21:0::1;12216:24;12095:53:::0;12216:16:::1;:24::i;:::-;12251:20;12274:41;:21;12300:14:::0;12274:25:::1;:41::i;:::-;12251:64;;12326:19;12347:48;12364:30;12381:12;;12364;:16;;:30;;;;:::i;:::-;12347:12:::0;;:16:::1;:48::i;:::-;12326:69;;12406:29;12438;12454:12;;12438:11;:15;;:29;;;;:::i;:::-;12406:61:::0;-1:-1:-1;12481:34:0;;12478:103:::1;;12517:61;12530:24;12556:21;12517:12;:61::i;:::-;12637:12;::::0;12591:20:::1;::::0;12614:36:::1;::::0;:18:::1;:11:::0;12630:1:::1;12614:15;:18::i;:36::-;12591:59:::0;-1:-1:-1;12664:16:0;;12661:73:::1;;12690:18;::::0;12682:50:::1;::::0;-1:-1:-1;;;;;12690:18:0;;::::1;::::0;12682:50;::::1;;;::::0;12719:12;;12690:18:::1;12682:50:::0;12690:18;12682:50;12719:12;12690:18;12682:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12661:73;12771:21;12806:29:::0;;12803:92:::1;;12845:20;::::0;12837:56:::1;::::0;-1:-1:-1;;;;;12845:20:0;;::::1;::::0;12837:56;::::1;;;::::0;12876:16;;12845:20:::1;12837:56:::0;12845:20;12837:56;12876:16;12845:20;12837:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12803:92;-1:-1:-1::0;;6000:8:0;:16;;-1:-1:-1;;6000:16:0;;;-1:-1:-1;;;;;;;;11836:1066:0:o;14484:219::-;14599:4;;14563:7;;-1:-1:-1;;;;;14599:4:0;;;14586:17;;;;14583:38;;-1:-1:-1;14612:7:0;;14605:14;;14583:38;14644:4;;-1:-1:-1;;;;;14644:4:0;;;14634:14;;;;14631:36;;-1:-1:-1;14657:8:0;;14650:15;;14631:36;-1:-1:-1;14684:11:0;;14484:219;;;;:::o;13261:434::-;13351:16;;;13365:1;13351:16;;;;;;;;13327:21;;13351:16;;;;;;;;;;-1:-1:-1;13351:16:0;13327:40;;13396:4;13378;13383:1;13378:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13378:23:0;;;:7;;;;;;;;;;:23;;;;13422:6;;:13;;;-1:-1:-1;;;13422:13:0;;;;:6;;;;;:11;;:13;;;;;13378:7;;13422:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13412:4;13417:1;13412:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13412:23:0;;;:7;;;;;;;;;:23;13478:6;;13446:53;;13463:4;;13478:6;13487:11;13446:8;:53::i;:::-;13510:6;;:177;;-1:-1:-1;;;13510:177:0;;-1:-1:-1;;;;;13510:6:0;;;;:57;;:177;;13582:11;;13510:6;;13624:4;;13651;;13671:15;;13510:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13316:379;13261:434;:::o;12910:343::-;13023:6;;12991:53;;13008:4;;-1:-1:-1;;;;;13023:6:0;13032:11;12991:8;:53::i;:::-;13055:6;;13196:18;;13055:190;;-1:-1:-1;;;13055:190:0;;13118:4;13055:190;;;11710:34:1;11760:18;;;11753:34;;;13055:6:0;11803:18:1;;;11796:34;;;11846:18;;;11839:34;-1:-1:-1;;;;;13196:18:0;;;11889:19:1;;;11882:44;13229:15:0;11942:19:1;;;11935:35;13055:6:0;;;:22;;13085:9;;11644:19:1;;13055:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12910:343;;:::o;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;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:316::-;2769:6;2777;2785;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;-1:-1:-1;;2877:23:1;;;2947:2;2932:18;;2919:32;;-1:-1:-1;2998:2:1;2983:18;;;2970:32;;2692:316;-1:-1:-1;2692:316:1:o;3013:416::-;3078:6;3086;3139:2;3127:9;3118:7;3114:23;3110:32;3107:52;;;3155:1;3152;3145:12;3107:52;3194:9;3181:23;3213:31;3238:5;3213:31;:::i;:::-;3263:5;-1:-1:-1;3320:2:1;3305:18;;3292:32;3362:15;;3355:23;3343:36;;3333:64;;3393:1;3390;3383:12;3333:64;3416:7;3406:17;;;3013:416;;;;;:::o;3434:388::-;3502:6;3510;3563:2;3551:9;3542:7;3538:23;3534:32;3531:52;;;3579:1;3576;3569:12;3531:52;3618:9;3605:23;3637:31;3662:5;3637:31;:::i;:::-;3687:5;-1:-1:-1;3744:2:1;3729:18;;3716:32;3757:33;3716:32;3757:33;:::i;3827:523::-;3931:6;3939;3947;3955;3963;3971;4024:3;4012:9;4003:7;3999:23;3995:33;3992:53;;;4041:1;4038;4031:12;3992:53;-1:-1:-1;;4064:23:1;;;4134:2;4119:18;;4106:32;;-1:-1:-1;4185:2:1;4170:18;;4157:32;;4236:2;4221:18;;4208:32;;-1:-1:-1;4287:3:1;4272:19;;4259:33;;-1:-1:-1;4339:3:1;4324:19;4311:33;;-1:-1:-1;3827:523:1;-1:-1:-1;3827:523:1:o;4615:127::-;4676:10;4671:3;4667:20;4664:1;4657:31;4707:4;4704:1;4697:15;4731:4;4728:1;4721:15;4747:168;4820:9;;;4851;;4868:15;;;4862:22;;4848:37;4838:71;;4889:18;;:::i;4920:217::-;4960:1;4986;4976:132;;5030:10;5025:3;5021:20;5018:1;5011:31;5065:4;5062:1;5055:15;5093:4;5090:1;5083:15;4976:132;-1:-1:-1;5122:9:1;;4920:217::o;5142:329::-;5344:2;5326:21;;;5383:1;5363:18;;;5356:29;-1:-1:-1;;;5416:2:1;5401:18;;5394:36;5462:2;5447:18;;5142:329::o;6915:128::-;6982:9;;;7003:11;;;7000:37;;;7017:18;;:::i;9388:125::-;9453:9;;;9474:10;;;9471:36;;;9487:18;;:::i;9996:127::-;10057:10;10052:3;10048:20;10045:1;10038:31;10088:4;10085:1;10078:15;10112:4;10109:1;10102:15;10128:251;10198:6;10251:2;10239:9;10230:7;10226:23;10222:32;10219:52;;;10267:1;10264;10257:12;10219:52;10299:9;10293:16;10318:31;10343:5;10318:31;:::i;10384:980::-;10646:4;10694:3;10683:9;10679:19;10725:6;10714:9;10707:25;10751:2;10789:6;10784:2;10773:9;10769:18;10762:34;10832:3;10827:2;10816:9;10812:18;10805:31;10856:6;10891;10885:13;10922:6;10914;10907:22;10960:3;10949:9;10945:19;10938:26;;10999:2;10991:6;10987:15;10973:29;;11020:1;11030:195;11044:6;11041:1;11038:13;11030:195;;;11109:13;;-1:-1:-1;;;;;11105:39:1;11093:52;;11200:15;;;;11165:12;;;;11141:1;11059:9;11030:195;;;-1:-1:-1;;;;;;;11281:32:1;;;;11276:2;11261:18;;11254:60;-1:-1:-1;;;11345:3:1;11330:19;11323:35;11242:3;10384:980;-1:-1:-1;;;10384:980:1:o;11981:306::-;12069:6;12077;12085;12138:2;12126:9;12117:7;12113:23;12109:32;12106:52;;;12154:1;12151;12144:12;12106:52;12183:9;12177:16;12167:26;;12233:2;12222:9;12218:18;12212:25;12202:35;;12277:2;12266:9;12262:18;12256:25;12246:35;;11981:306;;;;;:::o

Swarm Source

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