ETH Price: $3,626.22 (+0.13%)
 

Overview

Max Total Supply

1,000,000,000 ISCS

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,817,945.382913992 ISCS

Value
$0.00
0xf768BB446821E07b756388ecbBf580Ea31251dcB
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:
ISCS

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 400 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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);
}

contract ISCS is IERC20, Auth {
    string private constant _symbol  = "ISCS";
    string private constant _name    = "Inscription Sniper";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0x221898b0895df756f6551a55F7bfD747bCE74544);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 15;
    uint8 private _buyTaxrate  = 20;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 150 / 100000;
    uint256 private _swapTrigger = 200 * (10**15);
    uint256 private _swapLimits = _swapMin * 45 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (uint256 => uint8) private blockSwaps;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP; 
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        WETH = _primarySwapRouter.WETH();

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

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

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

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[_primaryLP], "Failed bootstrap");
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
        _tradingOpen = true;
    }

    function shouldSwap(uint256 tokenAmt) private returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { 
                if (blockSwaps[block.number] < 5) {
                    result = true; 
                    blockSwaps[block.number] += 1;
                }
            }    
        } else { result = true; }
        if (blockSwaps[block.number] > 5) {}
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 99, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }  

    function marketingWallet() external view returns (address) { 
        return _marketingWallet; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function swapMin() external view returns (uint256) { 
        return _swapMin; }
    function swapMax() external view returns (uint256) { 
        return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

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

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","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":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160a01b03191673221898b0895df756f6551a55f7bfd747bce74544179055600280556003805461140f61ffff199091161790556200004d6009600a62000467565b6200005d90633b9aca006200047e565b6005556200006e6009600a62000467565b6200007e90633b9aca006200047e565b600655620186a0620000936009600a62000467565b620000a390633b9aca006200047e565b620000b090600a6200047e565b620000bc919062000498565b600755620186a0620000d16009600a62000467565b620000e190633b9aca006200047e565b620000ee9060966200047e565b620000fa919062000498565b6008556702c68af0bb1400006009556007546200011990602d6200047e565b620001269060646200047e565b600a55601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015805461ff001916905534801562000166575f80fd5b505f8054336001600160a01b03199182168117909255601180549091169091179055601254604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f79190620004b8565b6001600160a01b0316608052620002116009600a62000467565b6200022190633b9aca006200047e565b335f818152600b6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600f602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880548316841790558654861687526010909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df88054909216179055620004e0565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003ac57815f190482111562000390576200039062000358565b808516156200039e57918102915b93841c939080029062000371565b509250929050565b5f82620003c45750600162000461565b81620003d257505f62000461565b8160018114620003eb5760028114620003f65762000416565b600191505062000461565b60ff8411156200040a576200040a62000358565b50506001821b62000461565b5060208310610133831016604e8410600b84101617156200043b575081810a62000461565b6200044783836200036c565b805f19048211156200045d576200045d62000358565b0290505b92915050565b5f6200047760ff841683620003b4565b9392505050565b808202811582820484141762000461576200046162000358565b5f82620004b357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004c9575f80fd5b81516001600160a01b038116811462000477575f80fd5b6080516121df620005075f395f8181610e92015281816117350152611ba101526121df5ff3fe60806040526004361061019c575f3560e01c806375f0a874116100dc578063b3de9b5d11610087578063e537a83411610062578063e537a834146104ff578063e8078d941461051e578063f2fde38b14610526578063f8b45b0514610545575f80fd5b8063b3de9b5d14610493578063c3f70b52146104a7578063dd62ed3e146104bb575f80fd5b8063a5e992bb116100b7578063a5e992bb14610441578063a9059cbb14610455578063aacebbe314610474575f80fd5b806375f0a874146103c85780638da5cb5b146103f957806395d89b4114610415575f80fd5b806330449efd11610147578063470624021161012257806347062402146103455780634fcd24461461036157806370a0823114610380578063715018a6146103b4575f80fd5b806330449efd146102b4578063313ce56714610313578063368f480014610326575f80fd5b806318839bc31161017757806318839bc31461024f57806323b872dd146102705780632b14ca561461028f575f80fd5b806306fdde03146101a7578063095ea7b3146101fe57806318160ddd1461022d575f80fd5b366101a357005b5f80fd5b3480156101b2575f80fd5b5060408051808201909152601281527f496e736372697074696f6e20536e69706572000000000000000000000000000060208201525b6040516101f59190611ca6565b60405180910390f35b348015610209575f80fd5b5061021d610218366004611cec565b610559565b60405190151581526020016101f5565b348015610238575f80fd5b506102416105c5565b6040519081526020016101f5565b34801561025a575f80fd5b5061026e610269366004611d2a565b6105e5565b005b34801561027b575f80fd5b5061021d61028a366004611d6c565b6106da565b34801561029a575f80fd5b5060035460ff165b60405160ff90911681526020016101f5565b3480156102bf575f80fd5b506102fc6102ce366004611daa565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101f5565b34801561031e575f80fd5b5060096102a2565b348015610331575f80fd5b5061026e610340366004611dd6565b61076e565b348015610350575f80fd5b50600354610100900460ff166102a2565b34801561036c575f80fd5b5061026e61037b366004611e17565b6108cb565b34801561038b575f80fd5b5061024161039a366004611daa565b6001600160a01b03165f908152600b602052604090205490565b3480156103bf575f80fd5b5061026e61098e565b3480156103d3575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101f5565b348015610404575f80fd5b505f546001600160a01b03166103e1565b348015610420575f80fd5b506040805180820190915260048152634953435360e01b60208201526101e8565b34801561044c575f80fd5b50600854610241565b348015610460575f80fd5b5061021d61046f366004611cec565b610a18565b34801561047f575f80fd5b5061026e61048e366004611daa565b610a73565b34801561049e575f80fd5b50600754610241565b3480156104b2575f80fd5b50600554610241565b3480156104c6575f80fd5b506102416104d5366004611e3f565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b34801561050a575f80fd5b5061026e610519366004611e89565b610b6f565b61026e610c9b565b348015610531575f80fd5b5061026e610540366004611daa565b6110ac565b348015610550575f80fd5b50600654610241565b335f818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b39086815260200190565b60405180910390a35060015b92915050565b5f6105d26009600a611fde565b6105e090633b9aca00611fec565b905090565b5f546001600160a01b031633146106305760405162461bcd60e51b815260206004820152601860248201525f8051602061218a83398151915260448201526064015b60405180910390fd5b80806106395750815b15610699576001600160a01b0383165f9081526014602052604090205460ff16156106995760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610627565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f6106e484611145565b6107235760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610627565b6001600160a01b0384165f908152600c6020908152604080832033845290915281208054849290610755908490612003565b9091555061076690508484846111a8565b949350505050565b5f546001600160a01b031633146107b45760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f6103e861ffff84166107c96009600a611fde565b6107d790633b9aca00611fec565b6107e19190611fec565b6107eb9190612016565b6107f6906001612035565b90506005548110156108375760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610627565b60058190555f6103e861ffff84166108516009600a611fde565b61085f90633b9aca00611fec565b6108699190611fec565b6108739190612016565b61087e906001612035565b90506006548110156108c35760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610627565b600655505050565b5f546001600160a01b031633146109115760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b606361091d8284612048565b60ff16111561096e5760405162461bcd60e51b815260206004820152601260248201527f526f756e647472697020746f6f206869676800000000000000000000000000006044820152606401610627565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109d45760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f610a2233611145565b610a615760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610627565b610a6c3384846111a8565b9392505050565b5f546001600160a01b03163314610ab95760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b6001600160a01b0381165f9081526014602052604090205460ff1615610b215760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610627565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610bb55760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b63ffffffff808516908616610bcc6009600a611fde565b610bda90633b9aca00611fec565b610be49190611fec565b610bee9190612016565b60075563ffffffff808316908416610c086009600a611fde565b610c1690633b9aca00611fec565b610c209190611fec565b610c2a9190612016565b600855610c4463ffffffff821666038d7ea4c68000612061565b66ffffffffffffff166009556007546008541015610c945760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610627565b5050505050565b5f546001600160a01b03163314610ce15760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b6015805461ff0019166101001790556013546001600160a01b031615610d365760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610627565b60155460ff1615610d785760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610627565b5f341180610d8557505f47115b610dba5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610627565b305f908152600b6020526040902054610e015760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610627565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e75919061208c565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ee2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f06919061208c565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f908152600b6020526040902054610f3f90476115cb565b600a546013546001600160a01b03165f908152600b602052604081208054909190610f6b908490612003565b909155505060135460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ffff6cae90000000000000000000000000000000000000000000000000000000017905290516001600160a01b0390921691610fe191906120a7565b5f604051808303815f865af19150503d805f811461101a576040519150601f19603f3d011682016040523d82523d5f602084013e61101f565b606091505b5050601380546001600160a01b039081165f90815260146020526040808220805460ff1916951515959095179094559154168152205460ff166110975760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610627565b61109f611666565b6015805461ff0019169055565b5f546001600160a01b031633146110f25760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6015545f90819060ff161561115c575060016105bf565b6001600160a01b0383165f908152600f602052604090205460ff16801561119a57506001600160a01b0383165f9081526010602052604090205460ff165b156105bf5750600192915050565b5f6001600160a01b0384166111ff5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610627565b60155460ff16611293576001600160a01b0384165f908152600f602052604090205460ff16801561124757506001600160a01b0384165f9081526010602052604090205460ff165b6112935760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f7420796574206f70656e0000000000000000000000006044820152606401610627565b601554610100900460ff161580156112c257506001600160a01b0383165f9081526014602052604090205460ff165b80156112d257506112d2826116f3565b156112df576112df611837565b600454431061145a576002544310801561131057506001600160a01b0384165f9081526014602052604090205460ff165b15611359576001600160a01b03831632146113595760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610627565b60025461136890610258612035565b4310801561138d57506001600160a01b0383165f9081526014602052604090205460ff165b80156113a257506001600160a01b0384163014155b1561145a57435f908152600d602090815260408083206001600160a01b038716845290915281208054600192906113dd90849060ff16612048565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b0389168452909152902054600291161115905061145a5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610627565b6001600160a01b038416301480159061147c57506001600160a01b0383163014155b801561149557505f546001600160a01b03858116911614155b156114e2576114a58484846118f4565b6114e25760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610627565b5f6114ee8585856119b7565b90505f6114fb8285612003565b6001600160a01b0387165f908152600b6020526040812080549293508692909190611527908490612003565b9250508190555081600a5f82825461153f9190612035565b90915550506001600160a01b0385165f908152600b60205260408120805483929061156b908490612035565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115b791815260200190565b60405180910390a350600195945050505050565b6115d482611aa1565b60125460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611641573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c9491906120c2565b60646116746009600a611fde565b61168290633b9aca00611fec565b61168d906002611fec565b6116979190612016565b60055560646116a86009600a611fde565b6116b690633b9aca00611fec565b6116c1906002611fec565b6116cb9190612016565b6006554360048190556002546116e19190612035565b6002556015805460ff19166001179055565b5f805f6009541115611825576013546001600160a01b039081165f818152600b60205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561177c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a091906120ed565b90505f826117ae8388611fec565b6117b89190612016565b9050600954811061181d57435f908152600e6020526040902054600560ff909116101561181d57435f908152600e6020526040812080546001965086929061180490849060ff16612048565b92506101000a81548160ff021916908360ff1602179055505b505050611829565b5060015b435f52600e60205292915050565b6015805461ff001916610100179055600a54600754811080159061185d575060155460ff165b156118e657600854811061187057506008545b8061187d6009600a611fde565b611888906001611fec565b8111156118d357305f908152600b6020526040812080548492906118ad908490612035565b909155506118bc905081611b43565b81600a5f8282546118cd9190612003565b90915550505b4780156118e3576118e381611c49565b50505b506015805461ff0019169055565b6015545f9060019060ff16801561192357506001600160a01b0385165f9081526010602052604090205460ff16155b801561194757506001600160a01b0384165f9081526010602052604090205460ff16155b156107665760055483111561195d57505f610766565b6001600160a01b0384165f9081526014602052604090205460ff161580156119a857506006546001600160a01b0385165f908152600b60205260409020546119a6908590612035565b115b1561076657505f949350505050565b6015545f90819060ff1615806119e457506001600160a01b0385165f908152600f602052604090205460ff165b80611a0657506001600160a01b0384165f908152600f602052604090205460ff165b15611a1257505f610766565b6001600160a01b0385165f9081526014602052604090205460ff1615611a5b57600354606490611a4a90610100900460ff1685611fec565b611a549190612016565b9050610766565b6001600160a01b0384165f9081526014602052604090205460ff161561076657600354606490611a8e9060ff1685611fec565b611a989190612016565b95945050505050565b305f908152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611b4057305f818152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611b4c81611aa1565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b7f57611b7f612104565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bd357611bd3612104565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611c189085905f90869030904290600401612118565b5f604051808303815f87803b158015611c2f575f80fd5b505af1158015611c41573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c80573d5f803e3d5ffd5b5050565b5f5b83811015611c9e578181015183820152602001611c86565b50505f910152565b602081525f8251806020840152611cc4816040850160208701611c84565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b40575f80fd5b5f8060408385031215611cfd575f80fd5b8235611d0881611cd8565b946020939093013593505050565b80358015158114611d25575f80fd5b919050565b5f805f60608486031215611d3c575f80fd5b8335611d4781611cd8565b9250611d5560208501611d16565b9150611d6360408501611d16565b90509250925092565b5f805f60608486031215611d7e575f80fd5b8335611d8981611cd8565b92506020840135611d9981611cd8565b929592945050506040919091013590565b5f60208284031215611dba575f80fd5b8135610a6c81611cd8565b803561ffff81168114611d25575f80fd5b5f8060408385031215611de7575f80fd5b611df083611dc5565b9150611dfe60208401611dc5565b90509250929050565b803560ff81168114611d25575f80fd5b5f8060408385031215611e28575f80fd5b611e3183611e07565b9150611dfe60208401611e07565b5f8060408385031215611e50575f80fd5b8235611e5b81611cd8565b91506020830135611e6b81611cd8565b809150509250929050565b803563ffffffff81168114611d25575f80fd5b5f805f805f60a08688031215611e9d575f80fd5b611ea686611e76565b9450611eb460208701611e76565b9350611ec260408701611e76565b9250611ed060608701611e76565b9150611ede60808701611e76565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f3857815f1904821115611f1e57611f1e611eea565b80851615611f2b57918102915b93841c9390800290611f03565b509250929050565b5f82611f4e575060016105bf565b81611f5a57505f6105bf565b8160018114611f705760028114611f7a57611f96565b60019150506105bf565b60ff841115611f8b57611f8b611eea565b50506001821b6105bf565b5060208310610133831016604e8410600b8410161715611fb9575081810a6105bf565b611fc38383611efe565b805f1904821115611fd657611fd6611eea565b029392505050565b5f610a6c60ff841683611f40565b80820281158282048414176105bf576105bf611eea565b818103818111156105bf576105bf611eea565b5f8261203057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bf576105bf611eea565b60ff81811683821601908111156105bf576105bf611eea565b66ffffffffffffff81811683821602808216919082811461208457612084611eea565b505092915050565b5f6020828403121561209c575f80fd5b8151610a6c81611cd8565b5f82516120b8818460208701611c84565b9190910192915050565b5f805f606084860312156120d4575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156120fd575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156121685784516001600160a01b031683529383019391830191600101612143565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000a26469706673582212204186937514af025a7189df0615e5c40e9bcb358d2b40d88b8a614bdf4b33393464736f6c63430008170033

Deployed Bytecode

0x60806040526004361061019c575f3560e01c806375f0a874116100dc578063b3de9b5d11610087578063e537a83411610062578063e537a834146104ff578063e8078d941461051e578063f2fde38b14610526578063f8b45b0514610545575f80fd5b8063b3de9b5d14610493578063c3f70b52146104a7578063dd62ed3e146104bb575f80fd5b8063a5e992bb116100b7578063a5e992bb14610441578063a9059cbb14610455578063aacebbe314610474575f80fd5b806375f0a874146103c85780638da5cb5b146103f957806395d89b4114610415575f80fd5b806330449efd11610147578063470624021161012257806347062402146103455780634fcd24461461036157806370a0823114610380578063715018a6146103b4575f80fd5b806330449efd146102b4578063313ce56714610313578063368f480014610326575f80fd5b806318839bc31161017757806318839bc31461024f57806323b872dd146102705780632b14ca561461028f575f80fd5b806306fdde03146101a7578063095ea7b3146101fe57806318160ddd1461022d575f80fd5b366101a357005b5f80fd5b3480156101b2575f80fd5b5060408051808201909152601281527f496e736372697074696f6e20536e69706572000000000000000000000000000060208201525b6040516101f59190611ca6565b60405180910390f35b348015610209575f80fd5b5061021d610218366004611cec565b610559565b60405190151581526020016101f5565b348015610238575f80fd5b506102416105c5565b6040519081526020016101f5565b34801561025a575f80fd5b5061026e610269366004611d2a565b6105e5565b005b34801561027b575f80fd5b5061021d61028a366004611d6c565b6106da565b34801561029a575f80fd5b5060035460ff165b60405160ff90911681526020016101f5565b3480156102bf575f80fd5b506102fc6102ce366004611daa565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101f5565b34801561031e575f80fd5b5060096102a2565b348015610331575f80fd5b5061026e610340366004611dd6565b61076e565b348015610350575f80fd5b50600354610100900460ff166102a2565b34801561036c575f80fd5b5061026e61037b366004611e17565b6108cb565b34801561038b575f80fd5b5061024161039a366004611daa565b6001600160a01b03165f908152600b602052604090205490565b3480156103bf575f80fd5b5061026e61098e565b3480156103d3575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101f5565b348015610404575f80fd5b505f546001600160a01b03166103e1565b348015610420575f80fd5b506040805180820190915260048152634953435360e01b60208201526101e8565b34801561044c575f80fd5b50600854610241565b348015610460575f80fd5b5061021d61046f366004611cec565b610a18565b34801561047f575f80fd5b5061026e61048e366004611daa565b610a73565b34801561049e575f80fd5b50600754610241565b3480156104b2575f80fd5b50600554610241565b3480156104c6575f80fd5b506102416104d5366004611e3f565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b34801561050a575f80fd5b5061026e610519366004611e89565b610b6f565b61026e610c9b565b348015610531575f80fd5b5061026e610540366004611daa565b6110ac565b348015610550575f80fd5b50600654610241565b335f818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b39086815260200190565b60405180910390a35060015b92915050565b5f6105d26009600a611fde565b6105e090633b9aca00611fec565b905090565b5f546001600160a01b031633146106305760405162461bcd60e51b815260206004820152601860248201525f8051602061218a83398151915260448201526064015b60405180910390fd5b80806106395750815b15610699576001600160a01b0383165f9081526014602052604090205460ff16156106995760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610627565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f6106e484611145565b6107235760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610627565b6001600160a01b0384165f908152600c6020908152604080832033845290915281208054849290610755908490612003565b9091555061076690508484846111a8565b949350505050565b5f546001600160a01b031633146107b45760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f6103e861ffff84166107c96009600a611fde565b6107d790633b9aca00611fec565b6107e19190611fec565b6107eb9190612016565b6107f6906001612035565b90506005548110156108375760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610627565b60058190555f6103e861ffff84166108516009600a611fde565b61085f90633b9aca00611fec565b6108699190611fec565b6108739190612016565b61087e906001612035565b90506006548110156108c35760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610627565b600655505050565b5f546001600160a01b031633146109115760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b606361091d8284612048565b60ff16111561096e5760405162461bcd60e51b815260206004820152601260248201527f526f756e647472697020746f6f206869676800000000000000000000000000006044820152606401610627565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109d45760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f610a2233611145565b610a615760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610627565b610a6c3384846111a8565b9392505050565b5f546001600160a01b03163314610ab95760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b6001600160a01b0381165f9081526014602052604090205460ff1615610b215760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610627565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610bb55760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b63ffffffff808516908616610bcc6009600a611fde565b610bda90633b9aca00611fec565b610be49190611fec565b610bee9190612016565b60075563ffffffff808316908416610c086009600a611fde565b610c1690633b9aca00611fec565b610c209190611fec565b610c2a9190612016565b600855610c4463ffffffff821666038d7ea4c68000612061565b66ffffffffffffff166009556007546008541015610c945760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610627565b5050505050565b5f546001600160a01b03163314610ce15760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b6015805461ff0019166101001790556013546001600160a01b031615610d365760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610627565b60155460ff1615610d785760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610627565b5f341180610d8557505f47115b610dba5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610627565b305f908152600b6020526040902054610e015760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610627565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e75919061208c565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ee2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f06919061208c565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f908152600b6020526040902054610f3f90476115cb565b600a546013546001600160a01b03165f908152600b602052604081208054909190610f6b908490612003565b909155505060135460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ffff6cae90000000000000000000000000000000000000000000000000000000017905290516001600160a01b0390921691610fe191906120a7565b5f604051808303815f865af19150503d805f811461101a576040519150601f19603f3d011682016040523d82523d5f602084013e61101f565b606091505b5050601380546001600160a01b039081165f90815260146020526040808220805460ff1916951515959095179094559154168152205460ff166110975760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610627565b61109f611666565b6015805461ff0019169055565b5f546001600160a01b031633146110f25760405162461bcd60e51b815260206004820152601860248201525f8051602061218a8339815191526044820152606401610627565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6015545f90819060ff161561115c575060016105bf565b6001600160a01b0383165f908152600f602052604090205460ff16801561119a57506001600160a01b0383165f9081526010602052604090205460ff165b156105bf5750600192915050565b5f6001600160a01b0384166111ff5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610627565b60155460ff16611293576001600160a01b0384165f908152600f602052604090205460ff16801561124757506001600160a01b0384165f9081526010602052604090205460ff165b6112935760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f7420796574206f70656e0000000000000000000000006044820152606401610627565b601554610100900460ff161580156112c257506001600160a01b0383165f9081526014602052604090205460ff165b80156112d257506112d2826116f3565b156112df576112df611837565b600454431061145a576002544310801561131057506001600160a01b0384165f9081526014602052604090205460ff165b15611359576001600160a01b03831632146113595760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610627565b60025461136890610258612035565b4310801561138d57506001600160a01b0383165f9081526014602052604090205460ff165b80156113a257506001600160a01b0384163014155b1561145a57435f908152600d602090815260408083206001600160a01b038716845290915281208054600192906113dd90849060ff16612048565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b0389168452909152902054600291161115905061145a5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610627565b6001600160a01b038416301480159061147c57506001600160a01b0383163014155b801561149557505f546001600160a01b03858116911614155b156114e2576114a58484846118f4565b6114e25760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610627565b5f6114ee8585856119b7565b90505f6114fb8285612003565b6001600160a01b0387165f908152600b6020526040812080549293508692909190611527908490612003565b9250508190555081600a5f82825461153f9190612035565b90915550506001600160a01b0385165f908152600b60205260408120805483929061156b908490612035565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115b791815260200190565b60405180910390a350600195945050505050565b6115d482611aa1565b60125460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611641573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c9491906120c2565b60646116746009600a611fde565b61168290633b9aca00611fec565b61168d906002611fec565b6116979190612016565b60055560646116a86009600a611fde565b6116b690633b9aca00611fec565b6116c1906002611fec565b6116cb9190612016565b6006554360048190556002546116e19190612035565b6002556015805460ff19166001179055565b5f805f6009541115611825576013546001600160a01b039081165f818152600b60205260408082205490516370a0823160e01b815260048101939093529290917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa15801561177c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a091906120ed565b90505f826117ae8388611fec565b6117b89190612016565b9050600954811061181d57435f908152600e6020526040902054600560ff909116101561181d57435f908152600e6020526040812080546001965086929061180490849060ff16612048565b92506101000a81548160ff021916908360ff1602179055505b505050611829565b5060015b435f52600e60205292915050565b6015805461ff001916610100179055600a54600754811080159061185d575060155460ff165b156118e657600854811061187057506008545b8061187d6009600a611fde565b611888906001611fec565b8111156118d357305f908152600b6020526040812080548492906118ad908490612035565b909155506118bc905081611b43565b81600a5f8282546118cd9190612003565b90915550505b4780156118e3576118e381611c49565b50505b506015805461ff0019169055565b6015545f9060019060ff16801561192357506001600160a01b0385165f9081526010602052604090205460ff16155b801561194757506001600160a01b0384165f9081526010602052604090205460ff16155b156107665760055483111561195d57505f610766565b6001600160a01b0384165f9081526014602052604090205460ff161580156119a857506006546001600160a01b0385165f908152600b60205260409020546119a6908590612035565b115b1561076657505f949350505050565b6015545f90819060ff1615806119e457506001600160a01b0385165f908152600f602052604090205460ff165b80611a0657506001600160a01b0384165f908152600f602052604090205460ff165b15611a1257505f610766565b6001600160a01b0385165f9081526014602052604090205460ff1615611a5b57600354606490611a4a90610100900460ff1685611fec565b611a549190612016565b9050610766565b6001600160a01b0384165f9081526014602052604090205460ff161561076657600354606490611a8e9060ff1685611fec565b611a989190612016565b95945050505050565b305f908152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611b4057305f818152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611b4c81611aa1565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b7f57611b7f612104565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611bd357611bd3612104565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611c189085905f90869030904290600401612118565b5f604051808303815f87803b158015611c2f575f80fd5b505af1158015611c41573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c80573d5f803e3d5ffd5b5050565b5f5b83811015611c9e578181015183820152602001611c86565b50505f910152565b602081525f8251806020840152611cc4816040850160208701611c84565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b40575f80fd5b5f8060408385031215611cfd575f80fd5b8235611d0881611cd8565b946020939093013593505050565b80358015158114611d25575f80fd5b919050565b5f805f60608486031215611d3c575f80fd5b8335611d4781611cd8565b9250611d5560208501611d16565b9150611d6360408501611d16565b90509250925092565b5f805f60608486031215611d7e575f80fd5b8335611d8981611cd8565b92506020840135611d9981611cd8565b929592945050506040919091013590565b5f60208284031215611dba575f80fd5b8135610a6c81611cd8565b803561ffff81168114611d25575f80fd5b5f8060408385031215611de7575f80fd5b611df083611dc5565b9150611dfe60208401611dc5565b90509250929050565b803560ff81168114611d25575f80fd5b5f8060408385031215611e28575f80fd5b611e3183611e07565b9150611dfe60208401611e07565b5f8060408385031215611e50575f80fd5b8235611e5b81611cd8565b91506020830135611e6b81611cd8565b809150509250929050565b803563ffffffff81168114611d25575f80fd5b5f805f805f60a08688031215611e9d575f80fd5b611ea686611e76565b9450611eb460208701611e76565b9350611ec260408701611e76565b9250611ed060608701611e76565b9150611ede60808701611e76565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f3857815f1904821115611f1e57611f1e611eea565b80851615611f2b57918102915b93841c9390800290611f03565b509250929050565b5f82611f4e575060016105bf565b81611f5a57505f6105bf565b8160018114611f705760028114611f7a57611f96565b60019150506105bf565b60ff841115611f8b57611f8b611eea565b50506001821b6105bf565b5060208310610133831016604e8410600b8410161715611fb9575081810a6105bf565b611fc38383611efe565b805f1904821115611fd657611fd6611eea565b029392505050565b5f610a6c60ff841683611f40565b80820281158282048414176105bf576105bf611eea565b818103818111156105bf576105bf611eea565b5f8261203057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bf576105bf611eea565b60ff81811683821601908111156105bf576105bf611eea565b66ffffffffffffff81811683821602808216919082811461208457612084611eea565b505092915050565b5f6020828403121561209c575f80fd5b8151610a6c81611cd8565b5f82516120b8818460208701611c84565b9190910192915050565b5f805f606084860312156120d4575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156120fd575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156121685784516001600160a01b031683529383019391830191600101612143565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000a26469706673582212204186937514af025a7189df0615e5c40e9bcb358d2b40d88b8a614bdf4b33393464736f6c63430008170033

Deployed Bytecode Sourcemap

1580:12152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4107:80;;;;;;;;;;-1:-1:-1;4179:5:0;;;;;;;;;;;;;;;;;4107:80;;;;;;;:::i;:::-;;;;;;;;4555:211;;;;;;;;;;-1:-1:-1;4555:211:0;;;;;:::i;:::-;;:::i;:::-;;;1314:14:1;;1307:22;1289:41;;1277:2;1262:18;4555:211:0;1149:187:1;4013:88:0;;;;;;;;;;;;;:::i;:::-;;;1487:25:1;;;1475:2;1460:18;4013:88:0;1341:177:1;10368:240:0;;;;;;;;;;-1:-1:-1;10368:240:0;;;;;:::i;:::-;;:::i;:::-;;5000:298;;;;;;;;;;-1:-1:-1;5000:298:0;;;;;:::i;:::-;;:::i;10692:72::-;;;;;;;;;;-1:-1:-1;10749:12:0;;;;10692:72;;;2709:4:1;2697:17;;;2679:36;;2667:2;2652:18;10692:72:0;2537:184:1;10222:138:0;;;;;;;;;;-1:-1:-1;10222:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;10324:14:0;10281:9;10324:14;;;:6;:14;;;;;;;;;10340:8;:16;;;;;;;10324:14;;;;;10340:16;;;10222:138;;;;;3165:14:1;;3158:22;3140:41;;3224:14;;3217:22;3212:2;3197:18;;3190:50;3113:18;10222:138:0;2978:268:1;3927:80:0;;;;;;;;;;-1:-1:-1;1762:1:0;3927:80;;11745:436;;;;;;;;;;-1:-1:-1;11745:436:0;;;;;:::i;:::-;;:::i;10616:70::-;;;;;;;;;;-1:-1:-1;10672:11:0;;;;;;;10616:70;;10772:207;;;;;;;;;;-1:-1:-1;10772:207:0;;;;;:::i;:::-;;:::i;4283:115::-;;;;;;;;;;-1:-1:-1;4283:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4377:18:0;4349:7;4377:18;;;:9;:18;;;;;;;4283:115;586:130;;;;;;;;;;;;;:::i;10989:97::-;;;;;;;;;;-1:-1:-1;11067:16:0;;-1:-1:-1;;;;;11067:16:0;10989:97;;;-1:-1:-1;;;;;4258:55:1;;;4240:74;;4228:2;4213:18;10989:97:0;4094:226:1;358:65:0;;;;;;;;;;-1:-1:-1;396:7:0;414:6;-1:-1:-1;;;;;414:6:0;358:65;;4193:84;;;;;;;;;;-1:-1:-1;4267:7:0;;;;;;;;;;;;-1:-1:-1;;;4267:7:0;;;;4193:84;;11656:81;;;;;;;;;;-1:-1:-1;11726:8:0;;11656:81;;4774:218;;;;;;;;;;-1:-1:-1;4774:218:0;;;;;:::i;:::-;;:::i;11094:276::-;;;;;;;;;;-1:-1:-1;11094:276:0;;;;;:::i;:::-;;:::i;11569:81::-;;;;;;;;;;-1:-1:-1;11639:8:0;;11569:81;;11472:89;;;;;;;;;;-1:-1:-1;11549:9:0;;11472:89;;4404:143;;;;;;;;;;-1:-1:-1;4404:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4516:19:0;;;4488:7;4516:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4404:143;12189:325;;;;;;;;;;-1:-1:-1;12189:325:0;;;;;:::i;:::-;;:::i;5631:697::-;;;:::i;429:151::-;;;;;;;;;;-1:-1:-1;429:151:0;;;;;:::i;:::-;;:::i;11378:88::-;;;;;;;;;;-1:-1:-1;11450:13:0;;11378:88;;4555:211;4659:10;4630:4;4647:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4647:32:0;;;;;;;;;;:41;;;4704:37;4630:4;;4647:32;;4704:37;;;;4682:6;1487:25:1;;1475:2;1460:18;;1341:177;4704:37:0;;;;;;;;-1:-1:-1;4759:4:0;4555:211;;;;;:::o;4013:88::-;4068:7;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;;:10;:28;:::i;:::-;4079:19;;4013:88;:::o;10368:240::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;;;;;;;;;10466:8:::1;:18;;;;10478:6;10466:18;10462:69;;;-1:-1:-1::0;;;;;10497:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;10496:11;10488:40;;;::::0;-1:-1:-1;;;10488:40:0;;7862:2:1;10488:40:0::1;::::0;::::1;7844:21:1::0;7901:2;7881:18;;;7874:30;-1:-1:-1;;;7920:18:1;;;7913:46;7976:18;;10488:40:0::1;7660:340:1::0;10488:40:0::1;-1:-1:-1::0;;;;;10541:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;10541:22:0;;::::1;;::::0;;10574:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10368:240::o;5000:298::-;5103:4;5128:29;5146:10;5128:17;:29::i;:::-;5120:58;;;;-1:-1:-1;;;5120:58:0;;8207:2:1;5120:58:0;;;8189:21:1;8246:2;8226:18;;;8219:30;-1:-1:-1;;;8265:18:1;;;8258:46;8321:18;;5120:58:0;8005:340:1;5120:58:0;-1:-1:-1;;;;;5189:23:0;;;;;;:11;:23;;;;;;;;5213:10;5189:35;;;;;;;:45;;5228:6;;5189:23;:45;;5228:6;;5189:45;:::i;:::-;;;;-1:-1:-1;5252:43:0;;-1:-1:-1;5266:10:0;5278:8;5288:6;5252:13;:43::i;:::-;5245:50;5000:298;-1:-1:-1;;;;5000:298:0:o;11745:436::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;11844:16:::1;11897:4;11863:31;::::0;::::1;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;::::0;:10:::1;:28;:::i;:::-;11863:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;11904:1:::1;11863:42;:::i;:::-;11844:61;;11936:9;;11924:8;:21;;11916:44;;;::::0;-1:-1:-1;;;11916:44:0;;9037:2:1;11916:44:0::1;::::0;::::1;9019:21:1::0;9076:2;9056:18;;;9049:30;-1:-1:-1;;;9095:18:1;;;9088:40;9145:18;;11916:44:0::1;8835:334:1::0;11916:44:0::1;11971:9;:20:::0;;;12002::::1;12059:4;12025:31;::::0;::::1;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;::::0;:10:::1;:28;:::i;:::-;12025:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;12066:1:::1;12025:42;:::i;:::-;12002:65;;12102:13;;12086:12;:29;;12078:56;;;::::0;-1:-1:-1;;;12078:56:0;;9376:2:1;12078:56:0::1;::::0;::::1;9358:21:1::0;9415:2;9395:18;;;9388:30;-1:-1:-1;;;9434:18:1;;;9427:44;9488:18;;12078:56:0::1;9174:338:1::0;12078:56:0::1;12145:13;:28:::0;-1:-1:-1;;;11745:436:0:o;10772:207::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;10880:2:::1;10858:18;10868:8:::0;10858:7;:18:::1;:::i;:::-;:24;;;;10850:55;;;::::0;-1:-1:-1;;;10850:55:0;;9872:2:1;10850:55:0::1;::::0;::::1;9854:21:1::0;9911:2;9891:18;;;9884:30;9950:20;9930:18;;;9923:48;9988:18;;10850:55:0::1;9670:342:1::0;10850:55:0::1;10916:11;:21:::0;;-1:-1:-1;;10948:23:0;10916:21:::1;;::::0;;::::1;;-1:-1:-1::0;;10948:23:0;;;;;::::1;;::::0;;10772:207::o;586:130::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;663:1:::1;646:19:::0;;-1:-1:-1;;;;;;646:19:0::1;::::0;;681:32:::1;::::0;4240:74:1;;;681:32:0::1;::::0;4228:2:1;4213:18;681:32:0::1;;;;;;;586:130::o:0;4774:218::-;4853:4;4878:29;4896:10;4878:17;:29::i;:::-;4870:58;;;;-1:-1:-1;;;4870:58:0;;8207:2:1;4870:58:0;;;8189:21:1;8246:2;8226:18;;;8219:30;-1:-1:-1;;;8265:18:1;;;8258:46;8321:18;;4870:58:0;8005:340:1;4870:58:0;4946:43;4960:10;4972:8;4982:6;4946:13;:43::i;:::-;4939:50;4774:218;-1:-1:-1;;;4774:218:0:o;11094:276::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;-1:-1:-1;;;;;11186:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;11185:20;11177:56;;;::::0;-1:-1:-1;;;11177:56:0;;10219:2:1;11177:56:0::1;::::0;::::1;10201:21:1::0;10258:2;10238:18;;;10231:30;10297:25;10277:18;;;10270:53;10340:18;;11177:56:0::1;10017:347:1::0;11177:56:0::1;11244:16;:40:::0;;-1:-1:-1;;;;;11244:40:0;;::::1;-1:-1:-1::0;;;;;;11244:40:0;;::::1;::::0;::::1;::::0;;:16:::1;11295:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;11295:27:0;;::::1;::::0;::::1;::::0;;;11333:8:::1;:22:::0;;;;;;:29;;;;::::1;;::::0;;11094:276::o;12189:325::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;12327:30:::1;::::0;;::::1;::::0;:21;::::1;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;::::0;:10:::1;:28;:::i;:::-;12327:21;;;;:::i;:::-;:30;;;;:::i;:::-;12316:8;:41:::0;12379:30:::1;::::0;;::::1;::::0;:21;::::1;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;::::0;:10:::1;:28;:::i;:::-;12379:21;;;;:::i;:::-;:30;;;;:::i;:::-;12368:8;:41:::0;12435:16:::1;;::::0;::::1;12445:6;12435:16;:::i;:::-;12420:31;;:12;:31:::0;12480:8:::1;::::0;12470::::1;::::0;:18:::1;;12462:44;;;::::0;-1:-1:-1;;;12462:44:0;;10831:2:1;12462:44:0::1;::::0;::::1;10813:21:1::0;10870:2;10850:18;;;10843:30;-1:-1:-1;;;10889:18:1;;;10882:43;10942:18;;12462:44:0::1;10629:337:1::0;12462:44:0::1;12189:325:::0;;;;;:::o;5631:697::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;3248:7:::1;:14:::0;;-1:-1:-1;;3248:14:0::1;;;::::0;;5713:10:::2;::::0;-1:-1:-1;;;;;5713:10:0::2;:24:::0;5705:47:::2;;;::::0;-1:-1:-1;;;5705:47:0;;11173:2:1;5705:47:0::2;::::0;::::2;11155:21:1::0;11212:2;11192:18;;;11185:30;-1:-1:-1;;;11231:18:1;;;11224:40;11281:18;;5705:47:0::2;10971:334:1::0;5705:47:0::2;5772:12;::::0;::::2;;5771:13;5763:38;;;::::0;-1:-1:-1;;;5763:38:0;;11512:2:1;5763:38:0::2;::::0;::::2;11494:21:1::0;11551:2;11531:18;;;11524:30;-1:-1:-1;;;11570:18:1;;;11563:42;11622:18;;5763:38:0::2;11310:336:1::0;5763:38:0::2;5832:1;5820:9;:13;:40;;;;5859:1;5837:21;:23;5820:40;5812:59;;;::::0;-1:-1:-1;;;5812:59:0;;11853:2:1;5812:59:0::2;::::0;::::2;11835:21:1::0;11892:1;11872:18;;;11865:29;-1:-1:-1;;;11910:18:1;;;11903:36;11956:18;;5812:59:0::2;11651:329:1::0;5812:59:0::2;5908:4;5915:1;5890:24:::0;;;:9:::2;:24;::::0;;;;;5882:48:::2;;;::::0;-1:-1:-1;;;5882:48:0;;12187:2:1;5882:48:0::2;::::0;::::2;12169:21:1::0;12226:1;12206:18;;;12199:29;-1:-1:-1;;;12244:18:1;;;12237:39;12293:18;;5882:48:0::2;11985:332:1::0;5882:48:0::2;5972:18;;;;;;;;;-1:-1:-1::0;;;;;5972:18:0::2;-1:-1:-1::0;;;;;5972:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5954:79;::::0;-1:-1:-1;;;5954:79:0;;6021:4:::2;5954:79;::::0;::::2;12813:34:1::0;-1:-1:-1;;;;;6028:4:0::2;12883:15:1::0;;12863:18;;;12856:43;5954:58:0;;;::::2;::::0;::::2;::::0;12725:18:1;;5954:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5941:10;:92:::0;;-1:-1:-1;;;;;;5941:92:0::2;-1:-1:-1::0;;;;;5941:92:0;;;::::2;::::0;;;::::2;::::0;;6076:4:::2;-1:-1:-1::0;6058:24:0;;;:9:::2;:24;::::0;;;;;6044:62:::2;::::0;6084:21:::2;6044:13;:62::i;:::-;6142:11;::::0;6127:10:::2;::::0;-1:-1:-1;;;;;6127:10:0::2;6117:21;::::0;;;:9:::2;:21;::::0;;;;:36;;:21;;;:36:::2;::::0;6142:11;;6117:36:::2;:::i;:::-;::::0;;;-1:-1:-1;;6187:10:0::2;::::0;6203:33:::2;::::0;;;;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;;;;::::0;;6187:51;;-1:-1:-1;;;;;6187:10:0;;::::2;::::0;:51:::2;::::0;6203:33;6187:51:::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;6171:10:0::2;::::0;;-1:-1:-1;;;;;6171:10:0;;::::2;6165:17;::::0;;;:5:::2;:17;::::0;;;;;6164:74;;-1:-1:-1;;6164:74:0::2;::::0;::::2;;::::0;;;::::2;::::0;;;6263:10;;::::2;6257:17:::0;;;;6164:74:::2;6257:17;6249:46;;;::::0;-1:-1:-1;;;6249:46:0;;13404:2:1;6249:46:0::2;::::0;::::2;13386:21:1::0;13443:2;13423:18;;;13416:30;-1:-1:-1;;;13462:18:1;;;13455:46;13518:18;;6249:46:0::2;13202:340:1::0;6249:46:0::2;6306:14;:12;:14::i;:::-;3277:7:::1;:15:::0;;-1:-1:-1;;3277:15:0::1;::::0;;5631:697::o;429:151::-;223:6;;-1:-1:-1;;;;;223:6:0;209:10;:20;201:57;;;;-1:-1:-1;;;201:57:0;;7509:2:1;201:57:0;;;7491:21:1;7548:2;7528:18;;;7521:30;-1:-1:-1;;;;;;;;;;;7567:18:1;;;7560:54;7631:18;;201:57:0;7307:348:1;201:57:0;513:6:::1;:17:::0;;-1:-1:-1;;;;;;513:17:0::1;-1:-1:-1::0;;;;;513:17:0;::::1;::::0;;::::1;::::0;;;547:30:::1;::::0;4240:74:1;;;547:30:0::1;::::0;4228:2:1;4213:18;547:30:0::1;;;;;;;429:151:::0;:::o;9419:289::-;9544:12;;9488:4;;;;9544:12;;9539:130;;;-1:-1:-1;9575:4:0;9539:130;;;-1:-1:-1;;;;;9602:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;9624:20:0;;;;;;:8;:20;;;;;;;;9602:42;9598:71;;;-1:-1:-1;9662:4:0;9689:11;9419:289;-1:-1:-1;;9419:289:0:o;7510:1334::-;7601:4;-1:-1:-1;;;;;7626:20:0;;7618:59;;;;-1:-1:-1;;;7618:59:0;;13988:2:1;7618:59:0;;;13970:21:1;14027:2;14007:18;;;14000:30;14066:28;14046:18;;;14039:56;14112:18;;7618:59:0;13786:350:1;7618:59:0;7693:12;;;;7688:91;;-1:-1:-1;;;;;7717:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;7735:16:0;;;;;;:8;:16;;;;;;;;7717:34;7709:67;;;;-1:-1:-1;;;7709:67:0;;14343:2:1;7709:67:0;;;14325:21:1;14382:2;14362:18;;;14355:30;14421:22;14401:18;;;14394:50;14461:18;;7709:67:0;14141:344:1;7709:67:0;7795:7;;;;;;;7794:8;:27;;;;-1:-1:-1;;;;;;7806:15:0;;;;;;:5;:15;;;;;;;;7794:27;:49;;;;;7825:18;7836:6;7825:10;:18::i;:::-;7789:82;;;7848:20;:18;:20::i;:::-;7904:10;;7888:12;:26;7883:444;;7951:12;;7936;:27;:44;;;;-1:-1:-1;;;;;;7967:13:0;;;;;;:5;:13;;;;;;;;7936:44;7932:130;;;-1:-1:-1;;;;;8010:21:0;;8022:9;8010:21;8002:43;;;;-1:-1:-1;;;8002:43:0;;14692:2:1;8002:43:0;;;14674:21:1;14731:1;14711:18;;;14704:29;-1:-1:-1;;;14749:18:1;;;14742:39;14798:18;;8002:43:0;14490:332:1;8002:43:0;8095:12;;:18;;8110:3;8095:18;:::i;:::-;8080:12;:33;:52;;;;-1:-1:-1;;;;;;8117:15:0;;;;;;:5;:15;;;;;;;;8080:52;:79;;;;-1:-1:-1;;;;;;8136:23:0;;8154:4;8136:23;;8080:79;8076:240;;;8192:12;8181:24;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8181:34:0;;;;;;;;;:39;;8219:1;;8181:24;:39;;8219:1;;8181:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8258:12;-1:-1:-1;8247:24:0;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8247:34:0;;;;;;;;;;8285:1;8247:34;;:39;;;-1:-1:-1;8239:61:0;;;;-1:-1:-1;;;8239:61:0;;14692:2:1;8239:61:0;;;14674:21:1;14731:1;14711:18;;;14704:29;-1:-1:-1;;;14749:18:1;;;14742:39;14798:18;;8239:61:0;14490:332:1;8239:61:0;-1:-1:-1;;;;;8344:23:0;;8362:4;8344:23;;;;:52;;-1:-1:-1;;;;;;8371:25:0;;8391:4;8371:25;;8344:52;:72;;;;-1:-1:-1;8410:6:0;;-1:-1:-1;;;;;8400:16:0;;;8410:6;;8400:16;;8344:72;8339:174;;;8443:38;8456:6;8464:8;8474:6;8443:12;:38::i;:::-;8435:65;;;;-1:-1:-1;;;8435:65:0;;15029:2:1;8435:65:0;;;15011:21:1;15068:2;15048:18;;;15041:30;-1:-1:-1;;;15087:18:1;;;15080:44;15141:18;;8435:65:0;14827:338:1;8435:65:0;8525:18;8546:39;8560:6;8568:8;8578:6;8546:13;:39::i;:::-;8525:60;-1:-1:-1;8596:23:0;8622:19;8525:60;8622:6;:19;:::i;:::-;-1:-1:-1;;;;;8652:17:0;;;;;;:9;:17;;;;;:27;;8596:45;;-1:-1:-1;8673:6:0;;8652:17;;;:27;;8673:6;;8652:27;:::i;:::-;;;;;;;;8705:10;8690:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8726:19:0;;;;;;:9;:19;;;;;:38;;8749:15;;8726:19;:38;;8749:15;;8726:38;:::i;:::-;;;;;;;;8797:8;-1:-1:-1;;;;;8780:34:0;8789:6;-1:-1:-1;;;;;8780:34:0;;8807:6;8780:34;;;;1487:25:1;;1475:2;1460:18;;1341:177;8780:34:0;;;;;;;;-1:-1:-1;8832:4:0;;7510:1334;-1:-1:-1;;;;;7510:1334:0:o;6336:255::-;6424:28;6439:12;6424:14;:28::i;:::-;6463:18;;6557:7;;6463:120;;-1:-1:-1;;;6463:120:0;;6530:4;6463:120;;;15534:34:1;15584:18;;;15577:34;;;6463:18:0;15627::1;;;15620:34;;;15670:18;;;15663:34;-1:-1:-1;;;;;6557:7:0;;;15713:19:1;;;15706:44;6566:15:0;15766:19:1;;;15759:35;6463:18:0;;;:34;;6505:13;;15445:19:1;;6463:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6599:257::-;6678:3;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;;:10;:28;:::i;:::-;6659:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6643:9;:38;6728:3;1824:13;1762:1;1824:2;:13;:::i;:::-;1810:28;;:10;:28;:::i;:::-;6709:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6693:13;:38;6755:12;6742:10;:25;;;-1:-1:-1;6793:12:0;:25;;6755:12;6793:25;:::i;:::-;6778:12;:40;6829:12;:19;;-1:-1:-1;;6829:19:0;6844:4;6829:19;;;6599:257::o;6864:636::-;6919:4;6936:11;6977:1;6962:12;;:16;6958:465;;;7022:10;;-1:-1:-1;;;;;7022:10:0;;;6996:13;7012:21;;;:9;:21;;;;;;;7065:34;;-1:-1:-1;;;7065:34:0;;;;;4240:74:1;;;;7012:21:0;6996:13;;7072:4;7065:22;;;;;;4213:18:1;;7065:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7048:51;-1:-1:-1;7115:16:0;7156:5;7135:17;7048:51;7135:8;:17;:::i;:::-;7134:27;;;;:::i;:::-;7115:46;;7192:12;;7180:8;:24;7176:208;;7241:12;7230:24;;;;:10;:24;;;;;;7257:1;7230:24;;;;:28;7226:143;;;7331:12;7320:24;;;;:10;:24;;;;;:29;;7292:4;;-1:-1:-1;7292:4:0;;7320:24;:29;;7292:4;;7320:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7226:143;6980:419;;;6958:465;;;-1:-1:-1;7416:4:0;6958:465;7448:12;7437:24;;:10;:24;;7486:6;6864:636;-1:-1:-1;;6864:636:0:o;12524:738::-;3248:7;:14;;-1:-1:-1;;3248:14:0;;;;;12614:11:::1;::::0;12663:8:::1;::::0;12641:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;12675:12:0::1;::::0;::::1;;12641:46;12636:619;;;12732:8;;12710:18;:30;12705:72;;-1:-1:-1::0;12766:8:0::1;::::0;12705:72:::1;12830:18:::0;12889:13:::1;1762:1;12889:2;:13;:::i;:::-;12885:17;::::0;:1:::1;:17;:::i;:::-;12868:14;:34;12864:229;;;12942:4;12924:24;::::0;;;:9:::1;:24;::::0;;;;:46;;12952:18;;12924:24;:46:::1;::::0;12952:18;;12924:46:::1;:::i;:::-;::::0;;;-1:-1:-1;12989:36:0::1;::::0;-1:-1:-1;13010:14:0;12989:20:::1;:36::i;:::-;13059:18;13044:11;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12864:229:0::1;13137:21;13176:23:::0;;13173:71:::1;;13203:38;13221:19;13203:17;:38::i;:::-;12690:565;;12636:619;-1:-1:-1::0;3277:7:0;:15;;-1:-1:-1;;3277:15:0;;;12524:738::o;8852:559::-;9020:12;;8959:4;;9000;;9020:12;;:37;;;;-1:-1:-1;;;;;;9037:20:0;;;;;;:8;:20;;;;;;;;9036:21;9020:37;:60;;;;-1:-1:-1;;;;;;9062:18:0;;;;;;:8;:18;;;;;;;;9061:19;9020:60;9015:355;;;9120:9;;9103:14;:26;9098:261;;;-1:-1:-1;9171:5:0;9098:261;;;-1:-1:-1;;;;;9236:15:0;;;;;;:5;:15;;;;;;;;9235:16;:74;;;;-1:-1:-1;9295:13:0;;-1:-1:-1;;;;;9256:19:0;;;;;;:9;:19;;;;;;:36;;9278:14;;9256:36;:::i;:::-;:52;9235:74;9212:147;;;-1:-1:-1;9351:5:0;9387:16;8852:559;-1:-1:-1;;;;8852:559:0:o;9716:498::-;9881:12;;9817:7;;;;9881:12;;9880:13;;:35;;-1:-1:-1;;;;;;9897:18:0;;;;;;:6;:18;;;;;;;;9880:35;:56;;;-1:-1:-1;;;;;;9919:17:0;;;;;;:6;:17;;;;;;;;9880:56;9875:303;;;-1:-1:-1;9967:1:0;9875:303;;;-1:-1:-1;;;;;9992:17:0;;;;;;:5;:17;;;;;;;;9987:191;;;10049:11;;10063:3;;10040:20;;10049:11;;;;;10040:6;:20;:::i;:::-;:26;;;;:::i;:::-;10028:38;;9987:191;;;-1:-1:-1;;;;;10091:16:0;;;;;;:5;:16;;;;;;;;10086:92;;;10147:12;;10162:3;;10138:21;;10147:12;;10138:6;:21;:::i;:::-;:27;;;;:::i;:::-;10126:39;9716:498;-1:-1:-1;;;;;9716:498:0:o;5306:317::-;5397:4;5377:26;;;;:11;:26;;;;;;;;2878:42;5377:46;;;;;;;;:61;-1:-1:-1;5372:244:0;;;5476:4;5456:26;;;;:11;:26;;;;;;;;2878:42;5456:46;;;;;;;;;;-1:-1:-1;;5456:66:0;;;;5542:62;;1487:25:1;;;2878:42:0;;5476:4;5542:62;;1460:18:1;5542:62:0;;;;;;;5372:244;5306:317;:::o;13270:348::-;13340:27;13355:11;13340:14;:27::i;:::-;13402:16;;;13416:1;13402:16;;;;;;;;13378:21;;13402:16;;;;;;;;;;-1:-1:-1;13402:16:0;13378:40;;13448:4;13429;13434:1;13429:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;13429:25:0;;;-1:-1:-1;;;;;13429:25:0;;;;;13475:4;13465;13470:1;13465:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13465:14:0;;;:7;;;;;;;;;:14;13491:18;;:119;;-1:-1:-1;;;13491:119:0;;:18;;;:69;;:119;;13561:11;;13491:18;;13575:4;;13588;;13594:15;;13491:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13329:289;13270:348;:::o;13626:103::-;13688:16;;:33;;-1:-1:-1;;;;;13688:16:0;;;;:33;;;;;13714:6;;13688:16;:33;:16;:33;13714:6;13688:16;:33;;;;;;;;;;;;;;;;;;;;;13626:103;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:154::-;-1:-1:-1;;;;;749:5:1;745:54;738:5;735:65;725:93;;814:1;811;804:12;829:315;897:6;905;958:2;946:9;937:7;933:23;929:32;926:52;;;974:1;971;964:12;926:52;1013:9;1000:23;1032:31;1057:5;1032:31;:::i;:::-;1082:5;1134:2;1119:18;;;;1106:32;;-1:-1:-1;;;829:315:1:o;1523:160::-;1588:20;;1644:13;;1637:21;1627:32;;1617:60;;1673:1;1670;1663:12;1617:60;1523:160;;;:::o;1688:383::-;1759:6;1767;1775;1828:2;1816:9;1807:7;1803:23;1799:32;1796:52;;;1844:1;1841;1834:12;1796:52;1883:9;1870:23;1902:31;1927:5;1902:31;:::i;:::-;1952:5;-1:-1:-1;1976:35:1;2007:2;1992:18;;1976:35;:::i;:::-;1966:45;;2030:35;2061:2;2050:9;2046:18;2030:35;:::i;:::-;2020:45;;1688:383;;;;;:::o;2076:456::-;2153:6;2161;2169;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;2277:9;2264:23;2296:31;2321:5;2296:31;:::i;:::-;2346:5;-1:-1:-1;2403:2:1;2388:18;;2375:32;2416:33;2375:32;2416:33;:::i;:::-;2076:456;;2468:7;;-1:-1:-1;;;2522:2:1;2507:18;;;;2494:32;;2076:456::o;2726:247::-;2785:6;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;2893:9;2880:23;2912:31;2937:5;2912:31;:::i;3251:159::-;3318:20;;3378:6;3367:18;;3357:29;;3347:57;;3400:1;3397;3390:12;3415:256;3481:6;3489;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;3581:28;3599:9;3581:28;:::i;:::-;3571:38;;3628:37;3661:2;3650:9;3646:18;3628:37;:::i;:::-;3618:47;;3415:256;;;;;:::o;3676:156::-;3742:20;;3802:4;3791:16;;3781:27;;3771:55;;3822:1;3819;3812:12;3837:252;3901:6;3909;3962:2;3950:9;3941:7;3937:23;3933:32;3930:52;;;3978:1;3975;3968:12;3930:52;4001:27;4018:9;4001:27;:::i;:::-;3991:37;;4047:36;4079:2;4068:9;4064:18;4047:36;:::i;4325:388::-;4393:6;4401;4454:2;4442:9;4433:7;4429:23;4425:32;4422:52;;;4470:1;4467;4460:12;4422:52;4509:9;4496:23;4528:31;4553:5;4528:31;:::i;:::-;4578:5;-1:-1:-1;4635:2:1;4620:18;;4607:32;4648:33;4607:32;4648:33;:::i;:::-;4700:7;4690:17;;;4325:388;;;;;:::o;4718:163::-;4785:20;;4845:10;4834:22;;4824:33;;4814:61;;4871:1;4868;4861:12;4886:474;4976:6;4984;4992;5000;5008;5061:3;5049:9;5040:7;5036:23;5032:33;5029:53;;;5078:1;5075;5068:12;5029:53;5101:28;5119:9;5101:28;:::i;:::-;5091:38;;5148:37;5181:2;5170:9;5166:18;5148:37;:::i;:::-;5138:47;;5204:37;5237:2;5226:9;5222:18;5204:37;:::i;:::-;5194:47;;5260:37;5293:2;5282:9;5278:18;5260:37;:::i;:::-;5250:47;;5316:38;5349:3;5338:9;5334:19;5316:38;:::i;:::-;5306:48;;4886:474;;;;;;;;:::o;5625:127::-;5686:10;5681:3;5677:20;5674:1;5667:31;5717:4;5714:1;5707:15;5741:4;5738:1;5731:15;5757:416;5846:1;5883:5;5846:1;5897:270;5918:7;5908:8;5905:21;5897:270;;;5977:4;5973:1;5969:6;5965:17;5959:4;5956:27;5953:53;;;5986:18;;:::i;:::-;6036:7;6026:8;6022:22;6019:55;;;6056:16;;;;6019:55;6135:22;;;;6095:15;;;;5897:270;;;5901:3;5757:416;;;;;:::o;6178:806::-;6227:5;6257:8;6247:80;;-1:-1:-1;6298:1:1;6312:5;;6247:80;6346:4;6336:76;;-1:-1:-1;6383:1:1;6397:5;;6336:76;6428:4;6446:1;6441:59;;;;6514:1;6509:130;;;;6421:218;;6441:59;6471:1;6462:10;;6485:5;;;6509:130;6546:3;6536:8;6533:17;6530:43;;;6553:18;;:::i;:::-;-1:-1:-1;;6609:1:1;6595:16;;6624:5;;6421:218;;6723:2;6713:8;6710:16;6704:3;6698:4;6695:13;6691:36;6685:2;6675:8;6672:16;6667:2;6661:4;6658:12;6654:35;6651:77;6648:159;;;-1:-1:-1;6760:19:1;;;6792:5;;6648:159;6839:34;6864:8;6858:4;6839:34;:::i;:::-;6909:6;6905:1;6901:6;6897:19;6888:7;6885:32;6882:58;;;6920:18;;:::i;:::-;6958:20;;6178:806;-1:-1:-1;;;6178:806:1:o;6989:140::-;7047:5;7076:47;7117:4;7107:8;7103:19;7097:4;7076:47;:::i;7134:168::-;7207:9;;;7238;;7255:15;;;7249:22;;7235:37;7225:71;;7276:18;;:::i;8350:128::-;8417:9;;;8438:11;;;8435:37;;;8452:18;;:::i;8483:217::-;8523:1;8549;8539:132;;8593:10;8588:3;8584:20;8581:1;8574:31;8628:4;8625:1;8618:15;8656:4;8653:1;8646:15;8539:132;-1:-1:-1;8685:9:1;;8483:217::o;8705:125::-;8770:9;;;8791:10;;;8788:36;;;8804:18;;:::i;9517:148::-;9605:4;9584:12;;;9598;;;9580:31;;9623:13;;9620:39;;;9639:18;;:::i;10369:255::-;10440:16;10488:10;;;10500;;;10484:27;10531:20;;;;10440:16;10570:24;;;10560:58;;10598:18;;:::i;:::-;10560:58;;10369:255;;;;:::o;12322:251::-;12392:6;12445:2;12433:9;12424:7;12420:23;12416:32;12413:52;;;12461:1;12458;12451:12;12413:52;12493:9;12487:16;12512:31;12537:5;12512:31;:::i;12910:287::-;13039:3;13077:6;13071:13;13093:66;13152:6;13147:3;13140:4;13132:6;13128:17;13093:66;:::i;:::-;13175:16;;;;;12910:287;-1:-1:-1;;12910:287:1:o;15805:306::-;15893:6;15901;15909;15962:2;15950:9;15941:7;15937:23;15933:32;15930:52;;;15978:1;15975;15968:12;15930:52;16007:9;16001:16;15991:26;;16057:2;16046:9;16042:18;16036:25;16026:35;;16101:2;16090:9;16086:18;16080:25;16070:35;;15805:306;;;;;:::o;16116:184::-;16186:6;16239:2;16227:9;16218:7;16214:23;16210:32;16207:52;;;16255:1;16252;16245:12;16207:52;-1:-1:-1;16278:16:1;;16116:184;-1:-1:-1;16116:184:1:o;16437:127::-;16498:10;16493:3;16489:20;16486:1;16479:31;16529:4;16526:1;16519:15;16553:4;16550:1;16543:15;16569:1026;16831:4;16879:3;16868:9;16864:19;16910:6;16899:9;16892:25;16936:2;16974:6;16969:2;16958:9;16954:18;16947:34;17017:3;17012:2;17001:9;16997:18;16990:31;17041:6;17076;17070:13;17107:6;17099;17092:22;17145:3;17134:9;17130:19;17123:26;;17184:2;17176:6;17172:15;17158:29;;17205:1;17215:218;17229:6;17226:1;17223:13;17215:218;;;17294:13;;-1:-1:-1;;;;;17290:62:1;17278:75;;17408:15;;;;17373:12;;;;17251:1;17244:9;17215:218;;;-1:-1:-1;;;;;;;17489:55:1;;;;17484:2;17469:18;;17462:83;-1:-1:-1;;;17576:3:1;17561:19;17554:35;17450:3;16569:1026;-1:-1:-1;;;16569:1026:1:o

Swarm Source

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