ETH Price: $3,238.74 (-0.61%)
Gas: 2 Gwei

Token

Space Cats (SPCATS)
 

Overview

Max Total Supply

100,000,000 SPCATS

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: SPCATS
Balance
73,200,620.790256727954569233 SPCATS

Value
$0.00
0xa18a1558e3c360ff27d5b4d377c55615e90ca8a5
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:
SPCATS

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-24
*/

//SPDX-License-Identifier: MIT

/*

 Introducing Space Cats : A Galactic Adventure in Crypto 🚀 Space Cats is a purr-fect investment opportunity!

 📱 https://SpaceCatsErc.xyz
 📱 https://t.me/SpaceCatsErc20
 📱 https://twitter.com/SpaceCatsErc20

*/
pragma solidity ^0.8.12;

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);
}

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 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);
}

contract SPCATS is IERC20, Auth {
    string private constant tokenSymbol = "SPCATS";
    string private constant tknName = "Space Cats";
    uint8 private constant token_decimals = 18;
    uint256 private constant _tSupply = 100000000 * (10**token_decimals);
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    address payable private taxWallet = payable(0x664ed76E9Bec44f8833042Dc38c3113Be05423E3);
    
    uint256 private _MEVBlock = 2;
    uint8 private _sellTaxRate = 2;
    uint8 private buyTaxRate = 0;
    
    uint256 private launchBlock;
    uint256 private maxTxVal = _tSupply; 
    uint256 private _maxWalletVal = _tSupply;
    uint256 private swapMinAmount = _tSupply * 10 / 100000;
    uint256 private swapMaxAmt = _tSupply * 899 / 100000;
    uint256 private swapMinVal = 2 * (10**16);
    uint256 private tokens = swapMinAmount * 45 * 100;

    mapping (uint256 => mapping (address => uint8)) private _blockSells;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private _nolimits;

    address private constant routerAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private uni_router = IUniswapV2Router02(routerAddress);
    
    address private primaryLP; 
    mapping (address => bool) private _isLP;

    bool private _tradingEnabled;

    bool private isSwapping = false;

    modifier swapLocked { 
        isSwapping = true; 
        _; 
        isSwapping = false; 
    }

    constructor() Auth(msg.sender) {
        _balances[msg.sender] = _tSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  

        _noFee[_owner] = true;
        _noFee[address(this)] = true;
        _noFee[taxWallet] = true;
        _noFee[routerAddress] = true;
        _nolimits[_owner] = true;
        _nolimits[address(this)] = true;
        _nolimits[taxWallet] = true;
        _nolimits[routerAddress] = true;
    }

    receive() external payable {}

    function decimals() external pure override returns (uint8) { return token_decimals; }
    function totalSupply() external pure override returns (uint256) { return _tSupply; }
    function name() external pure override returns (string memory) { return tknName; }
    function symbol() external pure override returns (string memory) { return tokenSymbol; }
    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 transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_isTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); 
	}

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

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

    function updateFees(uint8 buyFeePercent, uint8 sellFeePercent) external onlyOwner {
        require(buyFeePercent + sellFeePercent <= 0, "Roundtrip too high");
        buyTaxRate = buyFeePercent;
        _sellTaxRate = sellFeePercent;
    }

    function exemption(address wallet) external view returns (bool fees, bool limits) {
        return (_noFee[wallet], _nolimits[wallet]); 
	}

    function swapTax() private swapLocked {
        uint256 _taxTokenAvailable = tokens;
        if ( _taxTokenAvailable >= swapMinAmount && _tradingEnabled ) {
            if ( _taxTokenAvailable >= swapMaxAmt ) { _taxTokenAvailable = swapMaxAmt; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**token_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTokensForETH(_tokensForSwap);
                tokens -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { distributeEth(_contractETHBalance); }
        }
    }

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingEnabled) { require(_noFee[sender] && _nolimits[sender], "Trading not yet open"); }
        if ( !isSwapping && _isLP[toWallet] && swapCheck(amount) ) { swapTax(); }

        if ( block.number >= launchBlock ) {
            if (block.number < _MEVBlock && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < _MEVBlock + 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 = getTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        tokens += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function marketing() external view returns (address) { 
        return taxWallet; 
	}

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

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

    function distributeEth(uint256 amount) private {
        taxWallet.transfer(amount);
    }

    function buyTax() external view returns(uint8) { return buyTaxRate; }
    function sellFee() external view returns(uint8) { return _sellTaxRate; }

    function swapCheck(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (swapMinVal > 0) { 
            uint256 lpTkn = _balances[primaryLP];
            uint256 lpWeth = IERC20(uni_router.WETH()).balanceOf(primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= swapMinVal) { result = true; }    
        } else { result = true; }
        return result;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        swapMinAmount = _tSupply * minVal / minDiv;
        swapMaxAmt = _tSupply * maxVal / maxDiv;
        swapMinVal = trigger * 10**15;
        require(swapMaxAmt>=swapMinAmount, "Min-Max error");
    }

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

    function setExempt(address wlt, bool isNoFees, bool isNoLimits) external onlyOwner {
        if (isNoLimits || isNoFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _noFee[ wlt ] = isNoFees;
        _nolimits[ wlt ] = isNoLimits;
    }

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

    function getTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingEnabled || _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 _enableTrading() internal {
        maxTxVal = 20 * _tSupply / 1000;
        _maxWalletVal = 20 * _tSupply / 1000;
        _balances[primaryLP] -= tokens;
        (_isLP[primaryLP],) = primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[primaryLP], "Failed bootstrap");
        launchBlock = block.number;
        _MEVBlock = _MEVBlock + launchBlock;
        _tradingEnabled = true;
    }

    function addLiquidity() external payable onlyOwner swapLocked {
        require(primaryLP == address(0), "LP created");
        require(!_tradingEnabled, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        primaryLP = IUniswapV2Factory(uni_router.factory()).createPair(address(this), uni_router.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance);
    }

    function setMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        taxWallet = payable(marketingWlt);
        _noFee[marketingWlt] = true;
        _nolimits[marketingWlt] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        approveRouter(_tokenAmount);
        uni_router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp );
    }

    function openTrading() external onlyOwner {
        require(!_tradingEnabled, "trading open");
        _enableTrading();
    }

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

    function swapMin() external view returns (uint256) { 
        return swapMinAmount; 
	}
    function swapMax() external view returns (uint256) { 
        return swapMaxAmt; 
	}

    function _isTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingEnabled ) { checkResult = true; } 
        else if (_noFee[fromWallet] && _nolimits[fromWallet]) { checkResult = true; } 

        return checkResult;
    }
}

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":"buyTax","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":"exemption","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"isNoFees","type":"bool"},{"internalType":"bool","name":"isNoLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"setMarketingWallet","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":"uint8","name":"buyFeePercent","type":"uint8"},{"internalType":"uint8","name":"sellFeePercent","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b03191673664ed76e9bec44f8833042dc38c3113be05423e3179055600260048190556005805461ffff1916909117905561004b6012600a6103a2565b610059906305f5e1006103b7565b6007556100686012600a6103a2565b610076906305f5e1006103b7565b600855620186a06100896012600a6103a2565b610097906305f5e1006103b7565b6100a290600a6103b7565b6100ac91906103ce565b600955620186a06100bf6012600a6103a2565b6100cd906305f5e1006103b7565b6100d9906103836103b7565b6100e391906103ce565b600a5566470de4df820000600b556009546100ff90602d6103b7565b61010a9060646103b7565b600c55601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556013805461ff0019169055348015610149575f80fd5b505f80546001600160a01b031916331790556101676012600a6103a2565b610175906305f5e1006103b7565b335f81815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600e602090815260408084208054600160ff199182168117909255308087528387208054831684179055600380548716885284882080548416851790557f37836a7135fae77e265e35732c70286035736c8b57b12590769780e067ead81c8054841685179055875487168852600f9095528387208054831684179055865282862080548216831790559254909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880549092161790556103ed565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156102fa57815f19048211156102e0576102e06102ac565b808516156102ed57918102915b93841c93908002906102c5565b509250929050565b5f826103105750600161039c565b8161031c57505f61039c565b8160018114610332576002811461033c57610358565b600191505061039c565b60ff84111561034d5761034d6102ac565b50506001821b61039c565b5060208310610133831016604e8410600b841016171561037b575081810a61039c565b61038583836102c0565b805f1904821115610398576103986102ac565b0290505b92915050565b5f6103b060ff841683610302565b9392505050565b808202811582820484141761039c5761039c6102ac565b5f826103e857634e487b7160e01b5f52601260045260245ffd5b500490565b6121a1806103fa5f395ff3fe608060405260043610610198575f3560e01c8063715018a6116100e7578063c9567bf911610087578063e537a83411610062578063e537a834146104fe578063e8078d941461051d578063f2fde38b14610525578063f8b45b0514610544575f80fd5b8063c9567bf914610487578063d55400c91461049b578063dd62ed3e146104ba575f80fd5b8063a5e992bb116100c2578063a5e992bb1461042c578063a9059cbb14610440578063b3de9b5d1461045f578063c3f70b5214610473575f80fd5b8063715018a6146103ce5780638da5cb5b146103e257806395d89b41146103fe575f80fd5b80632d3e474a1161015257806357ff135a1161012d57806357ff135a1461033b5780635d098b381461035c578063683ad2ec1461037b57806370a082311461039a575f80fd5b80632d3e474a146102db578063313ce5671461030c5780634f7041a51461031f575f80fd5b806306fdde03146101a3578063095ea7b3146101e757806318160ddd1461021657806323b872dd1461023857806326ac17c6146102575780632b14ca56146102b6575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600a8152695370616365204361747360b01b60208201525b6040516101de9190611c53565b60405180910390f35b3480156101f2575f80fd5b50610206610201366004611c9c565b610558565b60405190151581526020016101de565b348015610221575f80fd5b5061022a6105c4565b6040519081526020016101de565b348015610243575f80fd5b50610206610252366004611cc6565b6105e4565b348015610262575f80fd5b5061029f610271366004611d04565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101de565b3480156102c1575f80fd5b5060055460ff165b60405160ff90911681526020016101de565b3480156102e6575f80fd5b506003546001600160a01b03165b6040516001600160a01b0390911681526020016101de565b348015610317575f80fd5b5060126102c9565b34801561032a575f80fd5b50600554610100900460ff166102c9565b348015610346575f80fd5b5061035a610355366004611d33565b61067d565b005b348015610367575f80fd5b5061035a610376366004611d04565b610750565b348015610386575f80fd5b5061035a610395366004611d85565b610833565b3480156103a5575f80fd5b5061022a6103b4366004611d04565b6001600160a01b03165f9081526001602052604090205490565b3480156103d9575f80fd5b5061035a6108cd565b3480156103ed575f80fd5b505f546001600160a01b03166102f4565b348015610409575f80fd5b5060408051808201909152600681526553504341545360d01b60208201526101d1565b348015610437575f80fd5b50600a5461022a565b34801561044b575f80fd5b5061020661045a366004611c9c565b61093a565b34801561046a575f80fd5b5060095461022a565b34801561047e575f80fd5b5060075461022a565b348015610492575f80fd5b5061035a610995565b3480156104a6575f80fd5b5061035a6104b5366004611dc7565b610a0a565b3480156104c5575f80fd5b5061022a6104d4366004611def565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610509575f80fd5b5061035a610518366004611e39565b610b4a565b61035a610c59565b348015610530575f80fd5b5061035a61053f366004611d04565b610f4d565b34801561054f575f80fd5b5060085461022a565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b29086815260200190565b60405180910390a35060015b92915050565b5f6105d16012600a611f8e565b6105df906305f5e100611f9c565b905090565b5f6105ee84610fc9565b6106325760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610664908490611fb3565b90915550610675905084848461102c565b949350505050565b5f546001600160a01b031633146106a65760405162461bcd60e51b815260040161062990611fc6565b80806106af5750815b1561070f576001600160a01b0383165f9081526012602052604090205460ff161561070f5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610629565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f546001600160a01b031633146107795760405162461bcd60e51b815260040161062990611fc6565b6001600160a01b0381165f9081526012602052604090205460ff16156107e15760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610629565b600380546001600160a01b039092166001600160a01b0319909216821790555f908152600e60209081526040808320805460ff199081166001908117909255600f909352922080549091169091179055565b5f546001600160a01b0316331461085c5760405162461bcd60e51b815260040161062990611fc6565b5f6108678284611ffd565b60ff1611156108ad5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610629565b6005805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146108f65760405162461bcd60e51b815260040161062990611fc6565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61094433610fc9565b6109835760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610629565b61098e33848461102c565b9392505050565b5f546001600160a01b031633146109be5760405162461bcd60e51b815260040161062990611fc6565b60135460ff1615610a005760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610629565b610a08611446565b565b5f546001600160a01b03163314610a335760405162461bcd60e51b815260040161062990611fc6565b5f6103e861ffff8416610a486012600a611f8e565b610a56906305f5e100611f9c565b610a609190611f9c565b610a6a9190612016565b610a75906001612035565b9050600754811015610ab65760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610629565b60078190555f6103e861ffff8416610ad06012600a611f8e565b610ade906305f5e100611f9c565b610ae89190611f9c565b610af29190612016565b610afd906001612035565b9050600854811015610b425760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610629565b600855505050565b5f546001600160a01b03163314610b735760405162461bcd60e51b815260040161062990611fc6565b63ffffffff808516908616610b8a6012600a611f8e565b610b98906305f5e100611f9c565b610ba29190611f9c565b610bac9190612016565b60095563ffffffff808316908416610bc66012600a611f8e565b610bd4906305f5e100611f9c565b610bde9190611f9c565b610be89190612016565b600a55610c0263ffffffff821666038d7ea4c68000612048565b66ffffffffffffff16600b55600954600a541015610c525760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610629565b5050505050565b5f546001600160a01b03163314610c825760405162461bcd60e51b815260040161062990611fc6565b6013805461ff0019166101001790556011546001600160a01b031615610cd75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610629565b60135460ff1615610d195760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610629565b5f341180610d2657505f47115b610d5b5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610629565b305f90815260016020526040902054610da25760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610629565b60105f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190612073565b6001600160a01b031663c9c653963060105f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e999190612073565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ee3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190612073565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f409047611602565b6013805461ff0019169055565b5f546001600160a01b03163314610f765760405162461bcd60e51b815260040161062990611fc6565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6013545f90819060ff1615610fe0575060016105be565b6001600160a01b0383165f908152600e602052604090205460ff16801561101e57506001600160a01b0383165f908152600f602052604090205460ff165b156105be5750600192915050565b5f6001600160a01b0384166110835760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610629565b60135460ff1661110e576001600160a01b0384165f908152600e602052604090205460ff1680156110cb57506001600160a01b0384165f908152600f602052604090205460ff165b61110e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610629565b601354610100900460ff1615801561113d57506001600160a01b0383165f9081526012602052604090205460ff165b801561114d575061114d826116a0565b1561115a5761115a6117cc565b60065443106112d5576004544310801561118b57506001600160a01b0384165f9081526012602052604090205460ff165b156111d4576001600160a01b03831632146111d45760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610629565b6004546111e390610258612035565b4310801561120857506001600160a01b0383165f9081526012602052604090205460ff165b801561121d57506001600160a01b0384163014155b156112d557435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061125890849060ff16611ffd565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506112d55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610629565b6001600160a01b03841630148015906112f757506001600160a01b0383163014155b801561131057505f546001600160a01b03858116911614155b1561135d57611320848484611889565b61135d5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610629565b5f61136985858561194c565b90505f6113768285611fb3565b6001600160a01b0387165f908152600160205260408120805492935086929091906113a2908490611fb3565b9250508190555081600c5f8282546113ba9190612035565b90915550506001600160a01b0385165f90815260016020526040812080548392906113e6908490612035565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161143291815260200190565b60405180910390a350600195945050505050565b6103e86114556012600a611f8e565b611463906305f5e100611f9c565b61146e906014611f9c565b6114789190612016565b6007556103e861148a6012600a611f8e565b611498906305f5e100611f9c565b6114a3906014611f9c565b6114ad9190612016565b600855600c546011546001600160a01b03165f90815260016020526040812080549091906114dc908490611fb3565b909155505060115460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b0390921691611527919061208e565b5f604051808303815f865af19150503d805f8114611560576040519150601f19603f3d011682016040523d82523d5f602084013e611565565b606091505b5050601180546001600160a01b039081165f90815260126020526040808220805460ff1916951515959095179094559154168152205460ff166115dd5760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610629565b4360068190556004546115f09190612035565b6004556013805460ff19166001179055565b61160b82611a36565b6010545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561167b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c5291906120a4565b5f805f600b5411156117c3576011546001600160a01b039081165f9081526001602090815260408083205460105482516315ab88c960e31b815292519195169263ad5c464892600480820193918290030181865afa158015611704573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117289190612073565b6011546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561176f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179391906120cf565b90505f826117a18388611f9c565b6117ab9190612016565b9050600b5481106117bb57600193505b5050506105be565b50600192915050565b6013805461ff001916610100179055600c5460095481108015906117f2575060135460ff165b1561187b57600a5481106118055750600a545b806118126012600a611f8e565b61181d906001611f9c565b81111561186857305f9081526001602052604081208054849290611842908490612035565b90915550611851905081611ad8565b81600c5f8282546118629190611fb3565b90915550505b4780156118785761187881611c18565b50505b506013805461ff0019169055565b6013545f9060019060ff1680156118b857506001600160a01b0385165f908152600f602052604090205460ff16155b80156118dc57506001600160a01b0384165f908152600f602052604090205460ff16155b15610675576007548311156118f257505f610675565b6001600160a01b0384165f9081526012602052604090205460ff1615801561193d57506008546001600160a01b0385165f9081526001602052604090205461193b908590612035565b115b1561067557505f949350505050565b6013545f90819060ff16158061197957506001600160a01b0385165f908152600e602052604090205460ff165b8061199b57506001600160a01b0384165f908152600e602052604090205460ff165b156119a757505f610675565b6001600160a01b0385165f9081526012602052604090205460ff16156119f0576005546064906119df90610100900460ff1685611f9c565b6119e99190612016565b9050610675565b6001600160a01b0384165f9081526012602052604090205460ff161561067557600554606490611a239060ff1685611f9c565b611a2d9190612016565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ad557305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611ae181611a36565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b1457611b146120e6565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8f9190612073565b81600181518110611ba257611ba26120e6565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790611be79085905f908690309042906004016120fa565b5f604051808303815f87803b158015611bfe575f80fd5b505af1158015611c10573d5f803e3d5ffd5b505050505050565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c4f573d5f803e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ad5575f80fd5b5f8060408385031215611cad575f80fd5b8235611cb881611c88565b946020939093013593505050565b5f805f60608486031215611cd8575f80fd5b8335611ce381611c88565b92506020840135611cf381611c88565b929592945050506040919091013590565b5f60208284031215611d14575f80fd5b813561098e81611c88565b80358015158114611d2e575f80fd5b919050565b5f805f60608486031215611d45575f80fd5b8335611d5081611c88565b9250611d5e60208501611d1f565b9150611d6c60408501611d1f565b90509250925092565b803560ff81168114611d2e575f80fd5b5f8060408385031215611d96575f80fd5b611d9f83611d75565b9150611dad60208401611d75565b90509250929050565b803561ffff81168114611d2e575f80fd5b5f8060408385031215611dd8575f80fd5b611de183611db6565b9150611dad60208401611db6565b5f8060408385031215611e00575f80fd5b8235611e0b81611c88565b91506020830135611e1b81611c88565b809150509250929050565b803563ffffffff81168114611d2e575f80fd5b5f805f805f60a08688031215611e4d575f80fd5b611e5686611e26565b9450611e6460208701611e26565b9350611e7260408701611e26565b9250611e8060608701611e26565b9150611e8e60808701611e26565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ee857815f1904821115611ece57611ece611e9a565b80851615611edb57918102915b93841c9390800290611eb3565b509250929050565b5f82611efe575060016105be565b81611f0a57505f6105be565b8160018114611f205760028114611f2a57611f46565b60019150506105be565b60ff841115611f3b57611f3b611e9a565b50506001821b6105be565b5060208310610133831016604e8410600b8410161715611f69575081810a6105be565b611f738383611eae565b805f1904821115611f8657611f86611e9a565b029392505050565b5f61098e60ff841683611ef0565b80820281158282048414176105be576105be611e9a565b818103818111156105be576105be611e9a565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60ff81811683821601908111156105be576105be611e9a565b5f8261203057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105be576105be611e9a565b66ffffffffffffff81811683821602808216919082811461206b5761206b611e9a565b505092915050565b5f60208284031215612083575f80fd5b815161098e81611c88565b5f82518060208501845e5f920191825250919050565b5f805f606084860312156120b6575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156120df575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561214a5784516001600160a01b031683529383019391830191600101612125565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e6f43ed1c63755c415f96429aabeb7610a721ec10f0be90e103b2ab003c50f4364736f6c63430008190033

Deployed Bytecode

0x608060405260043610610198575f3560e01c8063715018a6116100e7578063c9567bf911610087578063e537a83411610062578063e537a834146104fe578063e8078d941461051d578063f2fde38b14610525578063f8b45b0514610544575f80fd5b8063c9567bf914610487578063d55400c91461049b578063dd62ed3e146104ba575f80fd5b8063a5e992bb116100c2578063a5e992bb1461042c578063a9059cbb14610440578063b3de9b5d1461045f578063c3f70b5214610473575f80fd5b8063715018a6146103ce5780638da5cb5b146103e257806395d89b41146103fe575f80fd5b80632d3e474a1161015257806357ff135a1161012d57806357ff135a1461033b5780635d098b381461035c578063683ad2ec1461037b57806370a082311461039a575f80fd5b80632d3e474a146102db578063313ce5671461030c5780634f7041a51461031f575f80fd5b806306fdde03146101a3578063095ea7b3146101e757806318160ddd1461021657806323b872dd1461023857806326ac17c6146102575780632b14ca56146102b6575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600a8152695370616365204361747360b01b60208201525b6040516101de9190611c53565b60405180910390f35b3480156101f2575f80fd5b50610206610201366004611c9c565b610558565b60405190151581526020016101de565b348015610221575f80fd5b5061022a6105c4565b6040519081526020016101de565b348015610243575f80fd5b50610206610252366004611cc6565b6105e4565b348015610262575f80fd5b5061029f610271366004611d04565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101de565b3480156102c1575f80fd5b5060055460ff165b60405160ff90911681526020016101de565b3480156102e6575f80fd5b506003546001600160a01b03165b6040516001600160a01b0390911681526020016101de565b348015610317575f80fd5b5060126102c9565b34801561032a575f80fd5b50600554610100900460ff166102c9565b348015610346575f80fd5b5061035a610355366004611d33565b61067d565b005b348015610367575f80fd5b5061035a610376366004611d04565b610750565b348015610386575f80fd5b5061035a610395366004611d85565b610833565b3480156103a5575f80fd5b5061022a6103b4366004611d04565b6001600160a01b03165f9081526001602052604090205490565b3480156103d9575f80fd5b5061035a6108cd565b3480156103ed575f80fd5b505f546001600160a01b03166102f4565b348015610409575f80fd5b5060408051808201909152600681526553504341545360d01b60208201526101d1565b348015610437575f80fd5b50600a5461022a565b34801561044b575f80fd5b5061020661045a366004611c9c565b61093a565b34801561046a575f80fd5b5060095461022a565b34801561047e575f80fd5b5060075461022a565b348015610492575f80fd5b5061035a610995565b3480156104a6575f80fd5b5061035a6104b5366004611dc7565b610a0a565b3480156104c5575f80fd5b5061022a6104d4366004611def565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610509575f80fd5b5061035a610518366004611e39565b610b4a565b61035a610c59565b348015610530575f80fd5b5061035a61053f366004611d04565b610f4d565b34801561054f575f80fd5b5060085461022a565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b29086815260200190565b60405180910390a35060015b92915050565b5f6105d16012600a611f8e565b6105df906305f5e100611f9c565b905090565b5f6105ee84610fc9565b6106325760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610664908490611fb3565b90915550610675905084848461102c565b949350505050565b5f546001600160a01b031633146106a65760405162461bcd60e51b815260040161062990611fc6565b80806106af5750815b1561070f576001600160a01b0383165f9081526012602052604090205460ff161561070f5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610629565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f546001600160a01b031633146107795760405162461bcd60e51b815260040161062990611fc6565b6001600160a01b0381165f9081526012602052604090205460ff16156107e15760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610629565b600380546001600160a01b039092166001600160a01b0319909216821790555f908152600e60209081526040808320805460ff199081166001908117909255600f909352922080549091169091179055565b5f546001600160a01b0316331461085c5760405162461bcd60e51b815260040161062990611fc6565b5f6108678284611ffd565b60ff1611156108ad5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610629565b6005805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146108f65760405162461bcd60e51b815260040161062990611fc6565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61094433610fc9565b6109835760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610629565b61098e33848461102c565b9392505050565b5f546001600160a01b031633146109be5760405162461bcd60e51b815260040161062990611fc6565b60135460ff1615610a005760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610629565b610a08611446565b565b5f546001600160a01b03163314610a335760405162461bcd60e51b815260040161062990611fc6565b5f6103e861ffff8416610a486012600a611f8e565b610a56906305f5e100611f9c565b610a609190611f9c565b610a6a9190612016565b610a75906001612035565b9050600754811015610ab65760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610629565b60078190555f6103e861ffff8416610ad06012600a611f8e565b610ade906305f5e100611f9c565b610ae89190611f9c565b610af29190612016565b610afd906001612035565b9050600854811015610b425760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610629565b600855505050565b5f546001600160a01b03163314610b735760405162461bcd60e51b815260040161062990611fc6565b63ffffffff808516908616610b8a6012600a611f8e565b610b98906305f5e100611f9c565b610ba29190611f9c565b610bac9190612016565b60095563ffffffff808316908416610bc66012600a611f8e565b610bd4906305f5e100611f9c565b610bde9190611f9c565b610be89190612016565b600a55610c0263ffffffff821666038d7ea4c68000612048565b66ffffffffffffff16600b55600954600a541015610c525760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610629565b5050505050565b5f546001600160a01b03163314610c825760405162461bcd60e51b815260040161062990611fc6565b6013805461ff0019166101001790556011546001600160a01b031615610cd75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610629565b60135460ff1615610d195760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610629565b5f341180610d2657505f47115b610d5b5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610629565b305f90815260016020526040902054610da25760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610629565b60105f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e169190612073565b6001600160a01b031663c9c653963060105f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e999190612073565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ee3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190612073565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f409047611602565b6013805461ff0019169055565b5f546001600160a01b03163314610f765760405162461bcd60e51b815260040161062990611fc6565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6013545f90819060ff1615610fe0575060016105be565b6001600160a01b0383165f908152600e602052604090205460ff16801561101e57506001600160a01b0383165f908152600f602052604090205460ff165b156105be5750600192915050565b5f6001600160a01b0384166110835760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610629565b60135460ff1661110e576001600160a01b0384165f908152600e602052604090205460ff1680156110cb57506001600160a01b0384165f908152600f602052604090205460ff165b61110e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610629565b601354610100900460ff1615801561113d57506001600160a01b0383165f9081526012602052604090205460ff165b801561114d575061114d826116a0565b1561115a5761115a6117cc565b60065443106112d5576004544310801561118b57506001600160a01b0384165f9081526012602052604090205460ff165b156111d4576001600160a01b03831632146111d45760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610629565b6004546111e390610258612035565b4310801561120857506001600160a01b0383165f9081526012602052604090205460ff165b801561121d57506001600160a01b0384163014155b156112d557435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061125890849060ff16611ffd565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506112d55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610629565b6001600160a01b03841630148015906112f757506001600160a01b0383163014155b801561131057505f546001600160a01b03858116911614155b1561135d57611320848484611889565b61135d5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610629565b5f61136985858561194c565b90505f6113768285611fb3565b6001600160a01b0387165f908152600160205260408120805492935086929091906113a2908490611fb3565b9250508190555081600c5f8282546113ba9190612035565b90915550506001600160a01b0385165f90815260016020526040812080548392906113e6908490612035565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161143291815260200190565b60405180910390a350600195945050505050565b6103e86114556012600a611f8e565b611463906305f5e100611f9c565b61146e906014611f9c565b6114789190612016565b6007556103e861148a6012600a611f8e565b611498906305f5e100611f9c565b6114a3906014611f9c565b6114ad9190612016565b600855600c546011546001600160a01b03165f90815260016020526040812080549091906114dc908490611fb3565b909155505060115460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b0390921691611527919061208e565b5f604051808303815f865af19150503d805f8114611560576040519150601f19603f3d011682016040523d82523d5f602084013e611565565b606091505b5050601180546001600160a01b039081165f90815260126020526040808220805460ff1916951515959095179094559154168152205460ff166115dd5760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610629565b4360068190556004546115f09190612035565b6004556013805460ff19166001179055565b61160b82611a36565b6010545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561167b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c5291906120a4565b5f805f600b5411156117c3576011546001600160a01b039081165f9081526001602090815260408083205460105482516315ab88c960e31b815292519195169263ad5c464892600480820193918290030181865afa158015611704573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117289190612073565b6011546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561176f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179391906120cf565b90505f826117a18388611f9c565b6117ab9190612016565b9050600b5481106117bb57600193505b5050506105be565b50600192915050565b6013805461ff001916610100179055600c5460095481108015906117f2575060135460ff165b1561187b57600a5481106118055750600a545b806118126012600a611f8e565b61181d906001611f9c565b81111561186857305f9081526001602052604081208054849290611842908490612035565b90915550611851905081611ad8565b81600c5f8282546118629190611fb3565b90915550505b4780156118785761187881611c18565b50505b506013805461ff0019169055565b6013545f9060019060ff1680156118b857506001600160a01b0385165f908152600f602052604090205460ff16155b80156118dc57506001600160a01b0384165f908152600f602052604090205460ff16155b15610675576007548311156118f257505f610675565b6001600160a01b0384165f9081526012602052604090205460ff1615801561193d57506008546001600160a01b0385165f9081526001602052604090205461193b908590612035565b115b1561067557505f949350505050565b6013545f90819060ff16158061197957506001600160a01b0385165f908152600e602052604090205460ff165b8061199b57506001600160a01b0384165f908152600e602052604090205460ff165b156119a757505f610675565b6001600160a01b0385165f9081526012602052604090205460ff16156119f0576005546064906119df90610100900460ff1685611f9c565b6119e99190612016565b9050610675565b6001600160a01b0384165f9081526012602052604090205460ff161561067557600554606490611a239060ff1685611f9c565b611a2d9190612016565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ad557305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611ae181611a36565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b1457611b146120e6565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8f9190612073565b81600181518110611ba257611ba26120e6565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790611be79085905f908690309042906004016120fa565b5f604051808303815f87803b158015611bfe575f80fd5b505af1158015611c10573d5f803e3d5ffd5b505050505050565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c4f573d5f803e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ad5575f80fd5b5f8060408385031215611cad575f80fd5b8235611cb881611c88565b946020939093013593505050565b5f805f60608486031215611cd8575f80fd5b8335611ce381611c88565b92506020840135611cf381611c88565b929592945050506040919091013590565b5f60208284031215611d14575f80fd5b813561098e81611c88565b80358015158114611d2e575f80fd5b919050565b5f805f60608486031215611d45575f80fd5b8335611d5081611c88565b9250611d5e60208501611d1f565b9150611d6c60408501611d1f565b90509250925092565b803560ff81168114611d2e575f80fd5b5f8060408385031215611d96575f80fd5b611d9f83611d75565b9150611dad60208401611d75565b90509250929050565b803561ffff81168114611d2e575f80fd5b5f8060408385031215611dd8575f80fd5b611de183611db6565b9150611dad60208401611db6565b5f8060408385031215611e00575f80fd5b8235611e0b81611c88565b91506020830135611e1b81611c88565b809150509250929050565b803563ffffffff81168114611d2e575f80fd5b5f805f805f60a08688031215611e4d575f80fd5b611e5686611e26565b9450611e6460208701611e26565b9350611e7260408701611e26565b9250611e8060608701611e26565b9150611e8e60808701611e26565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ee857815f1904821115611ece57611ece611e9a565b80851615611edb57918102915b93841c9390800290611eb3565b509250929050565b5f82611efe575060016105be565b81611f0a57505f6105be565b8160018114611f205760028114611f2a57611f46565b60019150506105be565b60ff841115611f3b57611f3b611e9a565b50506001821b6105be565b5060208310610133831016604e8410600b8410161715611f69575081810a6105be565b611f738383611eae565b805f1904821115611f8657611f86611e9a565b029392505050565b5f61098e60ff841683611ef0565b80820281158282048414176105be576105be611e9a565b818103818111156105be576105be611e9a565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60ff81811683821601908111156105be576105be611e9a565b5f8261203057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105be576105be611e9a565b66ffffffffffffff81811683821602808216919082811461206b5761206b611e9a565b505092915050565b5f60208284031215612083575f80fd5b815161098e81611c88565b5f82518060208501845e5f920191825250919050565b5f805f606084860312156120b6575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156120df575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561214a5784516001600160a01b031683529383019391830191600101612125565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e6f43ed1c63755c415f96429aabeb7610a721ec10f0be90e103b2ab003c50f4364736f6c63430008190033

Deployed Bytecode Sourcemap

2381:11743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4655:82;;;;;;;;;;-1:-1:-1;4727:7:0;;;;;;;;;;;;-1:-1:-1;;;4727:7:0;;;;4655:82;;;;;;;:::i;:::-;;;;;;;;5315:214;;;;;;;;;;-1:-1:-1;5315:214:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;5315:214:0;893:187:1;4565:84:0;;;;;;;;;;;;;:::i;:::-;;;1231:25:1;;;1219:2;1204:18;4565:84:0;1085:177:1;5537:298:0;;;;;;;;;;-1:-1:-1;5537:298:0;;;;;:::i;:::-;;:::i;6095:141::-;;;;;;;;;;-1:-1:-1;6095:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;6196:14:0;6153:9;6196:14;;;:6;:14;;;;;;;;;6212:9;:17;;;;;;;6196:14;;;;;6212:17;;;6095:141;;;;;2167:14:1;;2160:22;2142:41;;2226:14;;2219:22;2214:2;2199:18;;2192:50;2115:18;6095:141:0;1980:268:1;9335:72:0;;;;;;;;;;-1:-1:-1;9392:12:0;;;;9335:72;;;2425:4:1;2413:17;;;2395:36;;2383:2;2368:18;9335:72:0;2253:184:1;8299:87:0;;;;;;;;;;-1:-1:-1;8371:9:0;;-1:-1:-1;;;;;8371:9:0;8299:87;;;-1:-1:-1;;;;;2606:32:1;;;2588:51;;2576:2;2561:18;8299:87:0;2442:203:1;4474:85:0;;;;;;;;;;-1:-1:-1;2566:2:0;4474:85;;9260:69;;;;;;;;;;-1:-1:-1;9316:10:0;;;;;;;9260:69;;10557:249;;;;;;;;;;-1:-1:-1;10557:249:0;;;;;:::i;:::-;;:::i;:::-;;12668:267;;;;;;;;;;-1:-1:-1;12668:267:0;;;;;:::i;:::-;;:::i;5843:244::-;;;;;;;;;;-1:-1:-1;5843:244:0;;;;;:::i;:::-;;:::i;4837:105::-;;;;;;;;;;-1:-1:-1;4837:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;4921:18:0;4903:7;4921:18;;;:9;:18;;;;;;;4837:105;1691:130;;;;;;;;;;;;;:::i;1463:65::-;;;;;;;;;;-1:-1:-1;1501:7:0;1519:6;-1:-1:-1;;;;;1519:6:0;1463:65;;4743:88;;;;;;;;;;-1:-1:-1;4817:11:0;;;;;;;;;;;;-1:-1:-1;;;4817:11:0;;;;4743:88;;13737:86;;;;;;;;;;-1:-1:-1;13807:10:0;;13737:86;;5089:218;;;;;;;;;;-1:-1:-1;5089:218:0;;;;;:::i;:::-;;:::i;13642:89::-;;;;;;;;;;-1:-1:-1;13712:13:0;;13642:89;;9061:91;;;;;;;;;;-1:-1:-1;9138:8:0;;9061:91;;13196:129;;;;;;;;;;;;;:::i;10814:425::-;;;;;;;;;;-1:-1:-1;10814:425:0;;;;;:::i;:::-;;:::i;4948:133::-;;;;;;;;;;-1:-1:-1;4948:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5050:19:0;;;5032:7;5050:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4948:133;9864:329;;;;;;;;;;-1:-1:-1;9864:329:0;;;;;:::i;:::-;;:::i;12172:488::-;;;:::i;1534:151::-;;;;;;;;;;-1:-1:-1;1534:151:0;;;;;:::i;:::-;;:::i;8964:91::-;;;;;;;;;;-1:-1:-1;9036:13:0;;8964:91;;5315:214;5419:10;5390:4;5407:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5407:32:0;;;;;;;;;;:41;;;5464:37;5390:4;;5407:32;;5464:37;;;;5442:6;1231:25:1;;1219:2;1204:18;;1085:177;5464:37:0;;;;;;;;-1:-1:-1;5519:4:0;5315:214;;;;;:::o;4565:84::-;4620:7;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;;:9;:32;:::i;:::-;4631:15;;4565:84;:::o;5537:298::-;5640:4;5665:26;5680:10;5665:14;:26::i;:::-;5657:55;;;;-1:-1:-1;;;5657:55:0;;7230:2:1;5657:55:0;;;7212:21:1;7269:2;7249:18;;;7242:30;-1:-1:-1;;;7288:18:1;;;7281:46;7344:18;;5657:55:0;;;;;;;;;-1:-1:-1;;;;;5723:23:0;;;;;;:11;:23;;;;;;;;5747:10;5723:35;;;;;;;:45;;5762:6;;5723:23;:45;;5762:6;;5723:45;:::i;:::-;;;;-1:-1:-1;5786:43:0;;-1:-1:-1;5800:10:0;5812:8;5822:6;5786:13;:43::i;:::-;5779:50;5537:298;-1:-1:-1;;;;5537:298:0:o;10557:249::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;10655:10:::1;:22;;;;10669:8;10655:22;10651:73;;;-1:-1:-1::0;;;;;10690:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;10689:11;10681:40;;;::::0;-1:-1:-1;;;10681:40:0;;8061:2:1;10681:40:0::1;::::0;::::1;8043:21:1::0;8100:2;8080:18;;;8073:30;-1:-1:-1;;;8119:18:1;;;8112:46;8175:18;;10681:40:0::1;7859:340:1::0;10681:40:0::1;-1:-1:-1::0;;;;;10734:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:24;;;::::1;;-1:-1:-1::0;;10734:24:0;;::::1;;::::0;;10769:9:::1;:16:::0;;;;;:29;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10557:249::o;12668:267::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12757:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;12756:20;12748:56;;;::::0;-1:-1:-1;;;12748:56:0;;8406:2:1;12748:56:0::1;::::0;::::1;8388:21:1::0;8445:2;8425:18;;;8418:30;8484:25;8464:18;;;8457:53;8527:18;;12748:56:0::1;8204:347:1::0;12748:56:0::1;12815:9;:33:::0;;-1:-1:-1;;;;;12815:33:0;;::::1;-1:-1:-1::0;;;;;;12815:33:0;;::::1;::::0;::::1;::::0;;:9:::1;12859:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;12859:27:0;;::::1;12815:33:::0;12859:27;;::::1;::::0;;;12897:9:::1;:23:::0;;;;;:30;;;;::::1;::::0;;::::1;::::0;;12668:267::o;5843:244::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;5978:1:::1;5944:30;5960:14:::0;5944:13;:30:::1;:::i;:::-;:35;;;;5936:66;;;::::0;-1:-1:-1;;;5936:66:0;;8911:2:1;5936:66:0::1;::::0;::::1;8893:21:1::0;8950:2;8930:18;;;8923:30;-1:-1:-1;;;8969:18:1;;;8962:48;9027:18;;5936:66:0::1;8709:342:1::0;5936:66:0::1;6013:10;:26:::0;;-1:-1:-1;;6050:29:0;6013:26:::1;;::::0;;::::1;;-1:-1:-1::0;;6050:29:0;;;;;::::1;;::::0;;5843:244::o;1691:130::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;1768:1:::1;1751:19:::0;;-1:-1:-1;;;;;;1751:19:0::1;::::0;;1786:32:::1;::::0;2588:51:1;;;1786:32:0::1;::::0;2576:2:1;2561:18;1786:32:0::1;;;;;;;1691:130::o:0;5089:218::-;5168:4;5193:26;5208:10;5193:14;:26::i;:::-;5185:55;;;;-1:-1:-1;;;5185:55:0;;7230:2:1;5185:55:0;;;7212:21:1;7269:2;7249:18;;;7242:30;-1:-1:-1;;;7288:18:1;;;7281:46;7344:18;;5185:55:0;7028:340:1;5185:55:0;5258:43;5272:10;5284:8;5294:6;5258:13;:43::i;:::-;5251:50;5089:218;-1:-1:-1;;;5089:218:0:o;13196:129::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;13258:15:::1;::::0;::::1;;13257:16;13249:41;;;::::0;-1:-1:-1;;;13249:41:0;;9258:2:1;13249:41:0::1;::::0;::::1;9240:21:1::0;9297:2;9277:18;;;9270:30;-1:-1:-1;;;9316:18:1;;;9309:42;9368:18;;13249:41:0::1;9056:336:1::0;13249:41:0::1;13301:16;:14;:16::i;:::-;13196:129::o:0;10814:425::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;10912:16:::1;10961:4;10931:27;::::0;::::1;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;::::0;:9:::1;:32;:::i;:::-;10931:27;;;;:::i;:::-;:34;;;;:::i;:::-;:38;::::0;10968:1:::1;10931:38;:::i;:::-;10912:57;;11000:8;;10988;:20;;10980:43;;;::::0;-1:-1:-1;;;10980:43:0;;9951:2:1;10980:43:0::1;::::0;::::1;9933:21:1::0;9990:2;9970:18;;;9963:30;-1:-1:-1;;;10009:18:1;;;10002:40;10059:18;;10980:43:0::1;9749:334:1::0;10980:43:0::1;11034:8;:19:::0;;;11064:20:::1;11117:4;11087:27;::::0;::::1;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;::::0;:9:::1;:32;:::i;:::-;11087:27;;;;:::i;:::-;:34;;;;:::i;:::-;:38;::::0;11124:1:::1;11087:38;:::i;:::-;11064:61;;11160:13;;11144:12;:29;;11136:56;;;::::0;-1:-1:-1;;;11136:56:0;;10290:2:1;11136:56:0::1;::::0;::::1;10272:21:1::0;10329:2;10309:18;;;10302:30;-1:-1:-1;;;10348:18:1;;;10341:44;10402:18;;11136:56:0::1;10088:338:1::0;11136:56:0::1;11203:13;:28:::0;-1:-1:-1;;;10814:425:0:o;9864:329::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;10007:26:::1;::::0;;::::1;::::0;:17;::::1;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;::::0;:9:::1;:32;:::i;:::-;10007:17;;;;:::i;:::-;:26;;;;:::i;:::-;9991:13;:42:::0;10057:26:::1;::::0;;::::1;::::0;:17;::::1;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;::::0;:9:::1;:32;:::i;:::-;10057:17;;;;:::i;:::-;:26;;;;:::i;:::-;10044:10;:39:::0;10107:16:::1;;::::0;::::1;10117:6;10107:16;:::i;:::-;10094:29;;:10;:29:::0;10154:13:::1;::::0;10142:10:::1;::::0;:25:::1;;10134:51;;;::::0;-1:-1:-1;;;10134:51:0;;10893:2:1;10134:51:0::1;::::0;::::1;10875:21:1::0;10932:2;10912:18;;;10905:30;-1:-1:-1;;;10951:18:1;;;10944:43;11004:18;;10134:51:0::1;10691:337:1::0;10134:51:0::1;9864:329:::0;;;;;:::o;12172:488::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;3893:10:::1;:17:::0;;-1:-1:-1;;3893:17:0::1;;;::::0;;12253:9:::2;::::0;-1:-1:-1;;;;;12253:9:0::2;:23:::0;12245:46:::2;;;::::0;-1:-1:-1;;;12245:46:0;;11235:2:1;12245:46:0::2;::::0;::::2;11217:21:1::0;11274:2;11254:18;;;11247:30;-1:-1:-1;;;11293:18:1;;;11286:40;11343:18;;12245:46:0::2;11033:334:1::0;12245:46:0::2;12311:15;::::0;::::2;;12310:16;12302:41;;;::::0;-1:-1:-1;;;12302:41:0;;9258:2:1;12302:41:0::2;::::0;::::2;9240:21:1::0;9297:2;9277:18;;;9270:30;-1:-1:-1;;;9316:18:1;;;9309:42;9368:18;;12302:41:0::2;9056:336:1::0;12302:41:0::2;12374:1;12362:9;:13;:40;;;;12401:1;12379:21;:23;12362:40;12354:59;;;::::0;-1:-1:-1;;;12354:59:0;;11574:2:1;12354:59:0::2;::::0;::::2;11556:21:1::0;11613:1;11593:18;;;11586:29;-1:-1:-1;;;11631:18:1;;;11624:36;11677:18;;12354:59:0::2;11372:329:1::0;12354:59:0::2;12450:4;12457:1;12432:24:::0;;;:9:::2;:24;::::0;;;;;12424:48:::2;;;::::0;-1:-1:-1;;;12424:48:0;;11908:2:1;12424:48:0::2;::::0;::::2;11890:21:1::0;11947:1;11927:18;;;11920:29;-1:-1:-1;;;11965:18:1;;;11958:39;12014:18;;12424:48:0::2;11706:332:1::0;12424:48:0::2;12513:10;;;;;;;;;-1:-1:-1::0;;;;;12513:10:0::2;-1:-1:-1::0;;;;;12513:18:0::2;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12495:50:0::2;;12554:4;12561:10;;;;;;;;;-1:-1:-1::0;;;;;12561:10:0::2;-1:-1:-1::0;;;;;12561:15:0::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12495:84;::::0;-1:-1:-1;;;;;;12495:84:0::2;::::0;;;;;;-1:-1:-1;;;;;12529:15:1;;;12495:84:0::2;::::0;::::2;12511:34:1::0;12581:15;;12561:18;;;12554:43;12446:18;;12495:84:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12483:9;:96:::0;;-1:-1:-1;;;;;;12483:96:0::2;-1:-1:-1::0;;;;;12483:96:0;;;::::2;::::0;;;::::2;::::0;;12622:4:::2;-1:-1:-1::0;12604:24:0;;;-1:-1:-1;12604:24:0::2;::::0;;;;;12590:62:::2;::::0;12630:21:::2;12590:13;:62::i;:::-;3935:10:::1;:18:::0;;-1:-1:-1;;3935:18:0::1;::::0;;12172:488::o;1534:151::-;1318:6;;-1:-1:-1;;;;;1318:6:0;1304:10;:20;1296:57;;;;-1:-1:-1;;;1296:57:0;;;;;;;:::i;:::-;1618:6:::1;:17:::0;;-1:-1:-1;;;;;;1618:17:0::1;-1:-1:-1::0;;;;;1618:17:0;::::1;::::0;;::::1;::::0;;;1652:30:::1;::::0;2588:51:1;;;1652:30:0::1;::::0;2576:2:1;2561:18;1652:30:0::1;;;;;;;1534:151:::0;:::o;13831:290::-;13953:15;;13897:4;;;;13953:15;;13948:134;;;-1:-1:-1;13987:4:0;13948:134;;;-1:-1:-1;;;;;14014:18:0;;;;;;:6;:18;;;;;;;;:43;;;;-1:-1:-1;;;;;;14036:21:0;;;;;;:9;:21;;;;;;;;14014:43;14010:72;;;-1:-1:-1;14075:4:0;14102:11;13831:290;-1:-1:-1;;13831:290:0:o;6978:1313::-;7069:4;-1:-1:-1;;;;;7094:20:0;;7086:59;;;;-1:-1:-1;;;7086:59:0;;13026:2:1;7086:59:0;;;13008:21:1;13065:2;13045:18;;;13038:30;13104:28;13084:18;;;13077:56;13150:18;;7086:59:0;12824:350:1;7086:59:0;7161:15;;;;7156:95;;-1:-1:-1;;;;;7188:14:0;;;;;;:6;:14;;;;;;;;:35;;;;-1:-1:-1;;;;;;7206:17:0;;;;;;:9;:17;;;;;;;;7188:35;7180:68;;;;-1:-1:-1;;;7180:68:0;;13381:2:1;7180:68:0;;;13363:21:1;13420:2;13400:18;;;13393:30;-1:-1:-1;;;13439:18:1;;;13432:50;13499:18;;7180:68:0;13179:344:1;7180:68:0;7267:10;;;;;;;7266:11;:30;;;;-1:-1:-1;;;;;;7281:15:0;;;;;;:5;:15;;;;;;;;7266:30;:51;;;;;7300:17;7310:6;7300:9;:17::i;:::-;7261:73;;;7322:9;:7;:9::i;:::-;7367:11;;7351:12;:27;7346:441;;7415:9;;7400:12;:24;:41;;;;-1:-1:-1;;;;;;7428:13:0;;;;;;:5;:13;;;;;;;;7400:41;7396:127;;;-1:-1:-1;;;;;7471:21:0;;7483:9;7471:21;7463:43;;;;-1:-1:-1;;;7463:43:0;;13730:2:1;7463:43:0;;;13712:21:1;13769:1;13749:18;;;13742:29;-1:-1:-1;;;13787:18:1;;;13780:39;13836:18;;7463:43:0;13528:332:1;7463:43:0;7556:9;;:15;;7568:3;7556:15;:::i;:::-;7541:12;:30;:49;;;;-1:-1:-1;;;;;;7575:15:0;;;;;;:5;:15;;;;;;;;7541:49;:76;;;;-1:-1:-1;;;;;;7594:23:0;;7612:4;7594:23;;7541:76;7537:239;;;7651:12;7639:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7639:35:0;;;;;;;;;:40;;7678:1;;7639:25;:40;;7678:1;;7639:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;7718:12;-1:-1:-1;7706:25:0;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7706:35:0;;;;;;;;;;7745:1;7706:35;;:40;;;-1:-1:-1;7698:62:0;;;;-1:-1:-1;;;7698:62:0;;13730:2:1;7698:62:0;;;13712:21:1;13769:1;13749:18;;;13742:29;-1:-1:-1;;;13787:18:1;;;13780:39;13836:18;;7698:62:0;13528:332:1;7698:62:0;-1:-1:-1;;;;;7804:23:0;;7822:4;7804:23;;;;:52;;-1:-1:-1;;;;;;7831:25:0;;7851:4;7831:25;;7804:52;:72;;;;-1:-1:-1;7870:6:0;;-1:-1:-1;;;;;7860:16:0;;;7870:6;;7860:16;;7804:72;7799:173;;;7903:37;7915:6;7923:8;7933:6;7903:11;:37::i;:::-;7895:64;;;;-1:-1:-1;;;7895:64:0;;14067:2:1;7895:64:0;;;14049:21:1;14106:2;14086:18;;;14079:30;-1:-1:-1;;;14125:18:1;;;14118:44;14179:18;;7895:64:0;13865:338:1;7895:64:0;7984:18;8005:32;8012:6;8020:8;8030:6;8005;:32::i;:::-;7984:53;-1:-1:-1;8048:23:0;8074:19;7984:53;8074:6;:19;:::i;:::-;-1:-1:-1;;;;;8104:17:0;;;;;;:9;:17;;;;;:27;;8048:45;;-1:-1:-1;8125:6:0;;8104:17;;;:27;;8125:6;;8104:27;:::i;:::-;;;;;;;;8152:10;8142:6;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8173:19:0;;;;;;:9;:19;;;;;:38;;8196:15;;8173:19;:38;;8196:15;;8173:38;:::i;:::-;;;;;;;;8244:8;-1:-1:-1;;;;;8227:34:0;8236:6;-1:-1:-1;;;;;8227:34:0;;8254:6;8227:34;;;;1231:25:1;;1219:2;1204:18;;1085:177;8227:34:0;;;;;;;;-1:-1:-1;8279:4:0;;6978:1313;-1:-1:-1;;;;;6978:1313:0:o;11736:428::-;11809:4;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;;:9;:32;:::i;:::-;11793:13;;:2;:13;:::i;:::-;:20;;;;:::i;:::-;11782:8;:31;11856:4;2624:18;2566:2;2624;:18;:::i;:::-;2611:32;;:9;:32;:::i;:::-;11840:13;;:2;:13;:::i;:::-;:20;;;;:::i;:::-;11824:13;:36;11895:6;;11881:9;;-1:-1:-1;;;;;11881:9:0;11871:20;;;;:9;:20;;;;;:30;;:20;;;:30;;11895:6;;11871:30;:::i;:::-;;;;-1:-1:-1;;11934:9:0;;11949:33;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11949:33:0;-1:-1:-1;;;;;;11949:33:0;;;11934:50;;-1:-1:-1;;;;;11934:9:0;;;;:50;;11949:33;11934:50;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11919:9:0;;;-1:-1:-1;;;;;11919:9:0;;;11913:16;;;;:5;:16;;;;;;11912:72;;-1:-1:-1;;11912:72:0;;;;;;;;;;;12009:9;;;12003:16;;;;11912:72;12003:16;11995:45;;;;-1:-1:-1;;;11995:45:0;;14716:2:1;11995:45:0;;;14698:21:1;14755:2;14735:18;;;14728:30;-1:-1:-1;;;14774:18:1;;;14767:46;14830:18;;11995:45:0;14514:340:1;11995:45:0;12065:12;12051:11;:26;;;12100:9;;:23;;12065:12;12100:23;:::i;:::-;12088:9;:35;12134:15;:22;;-1:-1:-1;;12134:22:0;12152:4;12134:22;;;11736:428::o;12943:245::-;13031:27;13045:12;13031:13;:27::i;:::-;13069:10;;;13155:6;;13069:111;;-1:-1:-1;;;13069:111:0;;13128:4;13069:111;;;15200:34:1;15250:18;;;15243:34;;;15293:18;;;15286:34;;;15336:18;;;15329:34;;;;-1:-1:-1;;;;;13155:6:0;;;15379:19:1;;;15372:44;13163:15:0;15432:19:1;;;15425:35;13069:10:0;;;;:26;;13103:13;;15134:19:1;;13069:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9415:441::-;9474:4;9491:11;9530:1;9517:10;;:14;9513:312;;;9575:9;;-1:-1:-1;;;;;9575:9:0;;;9549:13;9565:20;;;:9;:20;;;;;;;;;9624:10;;:17;;-1:-1:-1;;;9624:17:0;;;;9565:20;;9624:10;;:15;;:17;;;;;;;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9653:9;;9617:46;;-1:-1:-1;;;9617:46:0;;-1:-1:-1;;;;;9653:9:0;;;9617:46;;;2588:51:1;9617:35:0;;;;;2561:18:1;;9617:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9600:63;-1:-1:-1;9679:16:0;9720:5;9699:17;9600:63;9699:8;:17;:::i;:::-;9698:27;;;;:::i;:::-;9679:46;;9756:10;;9744:8;:22;9740:46;;9779:4;9770:13;;9740:46;9533:268;;;9513:312;;;-1:-1:-1;9818:4:0;9842:6;9415:441;-1:-1:-1;;9415:441:0:o;6244:726::-;3893:10;:17;;-1:-1:-1;;3893:17:0;;;;;6322:6:::1;::::0;6366:13:::1;::::0;6344:35;::::1;::::0;::::1;::::0;:54:::1;;-1:-1:-1::0;6383:15:0::1;::::0;::::1;;6344:54;6339:624;;;6443:10;;6421:18;:32;6416:76;;-1:-1:-1::0;6479:10:0::1;::::0;6416:76:::1;6545:18:::0;6604::::1;2566:2;6604;:18;:::i;:::-;6600:22;::::0;:1:::1;:22;:::i;:::-;6583:14;:39;6579:226;;;6662:4;6644:24;::::0;;;:9:::1;:24;::::0;;;;:46;;6672:18;;6644:24;:46:::1;::::0;6672:18;;6644:46:::1;:::i;:::-;::::0;;;-1:-1:-1;6709:33:0::1;::::0;-1:-1:-1;6727:14:0;6709:17:::1;:33::i;:::-;6771:18;6761:6;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6579:226:0::1;6849:21;6888:23:::0;;6885:67:::1;;6915:34;6929:19;6915:13;:34::i;:::-;6401:562;;6339:624;-1:-1:-1::0;3935:10:0;:18;;-1:-1:-1;;3935:18:0;;;6244:726::o;8394:562::-;8561:15;;8500:4;;8541;;8561:15;;:41;;;;-1:-1:-1;;;;;;8581:21:0;;;;;;:9;:21;;;;;;;;8580:22;8561:41;:65;;;;-1:-1:-1;;;;;;8607:19:0;;;;;;:9;:19;;;;;;;;8606:20;8561:65;8556:359;;;8666:8;;8649:14;:25;8644:260;;;-1:-1:-1;8716:5:0;8644:260;;;-1:-1:-1;;;;;8781:15:0;;;;;;:5;:15;;;;;;;;8780:16;:74;;;;-1:-1:-1;8840:13:0;;-1:-1:-1;;;;;8801:19:0;;;;;;:9;:19;;;;;;:36;;8823:14;;8801:36;:::i;:::-;:52;8780:74;8757:147;;;-1:-1:-1;8896:5:0;8932:16;8394:562;-1:-1:-1;;;;8394:562:0:o;11247:481::-;11395:15;;11341:7;;;;11395:15;;11394:16;;:38;;-1:-1:-1;;;;;;11414:18:0;;;;;;:6;:18;;;;;;;;11394:38;:59;;;-1:-1:-1;;;;;;11436:17:0;;;;;;:6;:17;;;;;;;;11394:59;11389:305;;;-1:-1:-1;11484:1:0;11389:305;;;-1:-1:-1;;;;;11509:17:0;;;;;;:5;:17;;;;;;;;11504:190;;;11566:10;;11579:3;;11557:19;;11566:10;;;;;11557:6;:19;:::i;:::-;:25;;;;:::i;:::-;11545:37;;11504:190;;;-1:-1:-1;;;;;11607:16:0;;;;;;:5;:16;;;;;;;;11602:92;;;11663:12;;11678:3;;11654:21;;11663:12;;11654:6;:21;:::i;:::-;:27;;;;:::i;:::-;11642:39;11247:481;-1:-1:-1;;;;;11247:481:0:o;13333:301::-;13423:4;13403:26;;;;:11;:26;;;;;;;;3567:42;13403:41;;;;;;;;:56;-1:-1:-1;13398:229:0;;;13497:4;13477:26;;;;:11;:26;;;;;;;;3567:42;13477:41;;;;;;;;;;-1:-1:-1;;13477:61:0;;;;13558:57;;1231:25:1;;;3567:42:0;;13497:4;13558:57;;1204:18:1;13558:57:0;;;;;;;13398:229;13333:301;:::o;10201:348::-;10268:26;10282:11;10268:13;:26::i;:::-;10329:16;;;10343:1;10329:16;;;;;;;;10305:21;;10329:16;;;;;;;;;;-1:-1:-1;10329:16:0;10305:40;;10375:4;10356;10361:1;10356:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10356:25:0;;;:7;;;;;;;;;;:25;;;;10402:10;;:17;;;-1:-1:-1;;;10402:17:0;;;;:10;;;;;:15;;:17;;;;;10356:7;;10402:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10392:4;10397:1;10392:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10392:27:0;;;:7;;;;;;;;;:27;10430:10;;:111;;-1:-1:-1;;;10430:111:0;;:10;;;:61;;:111;;10492:11;;10430:10;;10506:4;;10519;;10525:15;;10430:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:292;10201:348;:::o;9160:92::-;9218:9;;:26;;-1:-1:-1;;;;;9218:9:0;;;;:26;;;;;9237:6;;9218:9;:26;:9;:26;9237:6;9218:9;:26;;;;;;;;;;;;;;;;;;;;;9160:92;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1267:456::-;1344:6;1352;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;-1:-1:-1;1594:2:1;1579:18;;1566:32;1607:33;1566:32;1607:33;:::i;:::-;1267:456;;1659:7;;-1:-1:-1;;;1713:2:1;1698:18;;;;1685:32;;1267:456::o;1728:247::-;1787:6;1840:2;1828:9;1819:7;1815:23;1811:32;1808:52;;;1856:1;1853;1846:12;1808:52;1895:9;1882:23;1914:31;1939:5;1914:31;:::i;2650:160::-;2715:20;;2771:13;;2764:21;2754:32;;2744:60;;2800:1;2797;2790:12;2744:60;2650:160;;;:::o;2815:383::-;2886:6;2894;2902;2955:2;2943:9;2934:7;2930:23;2926:32;2923:52;;;2971:1;2968;2961:12;2923:52;3010:9;2997:23;3029:31;3054:5;3029:31;:::i;:::-;3079:5;-1:-1:-1;3103:35:1;3134:2;3119:18;;3103:35;:::i;:::-;3093:45;;3157:35;3188:2;3177:9;3173:18;3157:35;:::i;:::-;3147:45;;2815:383;;;;;:::o;3203:156::-;3269:20;;3329:4;3318:16;;3308:27;;3298:55;;3349:1;3346;3339:12;3364:252;3428:6;3436;3489:2;3477:9;3468:7;3464:23;3460:32;3457:52;;;3505:1;3502;3495:12;3457:52;3528:27;3545:9;3528:27;:::i;:::-;3518:37;;3574:36;3606:2;3595:9;3591:18;3574:36;:::i;:::-;3564:46;;3364:252;;;;;:::o;3621:159::-;3688:20;;3748:6;3737:18;;3727:29;;3717:57;;3770:1;3767;3760:12;3785:256;3851:6;3859;3912:2;3900:9;3891:7;3887:23;3883:32;3880:52;;;3928:1;3925;3918:12;3880:52;3951:28;3969:9;3951:28;:::i;:::-;3941:38;;3998:37;4031:2;4020:9;4016:18;3998:37;:::i;4046:388::-;4114:6;4122;4175:2;4163:9;4154:7;4150:23;4146:32;4143:52;;;4191:1;4188;4181:12;4143:52;4230:9;4217:23;4249:31;4274:5;4249:31;:::i;:::-;4299:5;-1:-1:-1;4356:2:1;4341:18;;4328:32;4369:33;4328:32;4369:33;:::i;:::-;4421:7;4411:17;;;4046:388;;;;;:::o;4439:163::-;4506:20;;4566:10;4555:22;;4545:33;;4535:61;;4592:1;4589;4582:12;4607:474;4697:6;4705;4713;4721;4729;4782:3;4770:9;4761:7;4757:23;4753:33;4750:53;;;4799:1;4796;4789:12;4750:53;4822:28;4840:9;4822:28;:::i;:::-;4812:38;;4869:37;4902:2;4891:9;4887:18;4869:37;:::i;:::-;4859:47;;4925:37;4958:2;4947:9;4943:18;4925:37;:::i;:::-;4915:47;;4981:37;5014:2;5003:9;4999:18;4981:37;:::i;:::-;4971:47;;5037:38;5070:3;5059:9;5055:19;5037:38;:::i;:::-;5027:48;;4607:474;;;;;;;;:::o;5346:127::-;5407:10;5402:3;5398:20;5395:1;5388:31;5438:4;5435:1;5428:15;5462:4;5459:1;5452:15;5478:416;5567:1;5604:5;5567:1;5618:270;5639:7;5629:8;5626:21;5618:270;;;5698:4;5694:1;5690:6;5686:17;5680:4;5677:27;5674:53;;;5707:18;;:::i;:::-;5757:7;5747:8;5743:22;5740:55;;;5777:16;;;;5740:55;5856:22;;;;5816:15;;;;5618:270;;;5622:3;5478:416;;;;;:::o;5899:806::-;5948:5;5978:8;5968:80;;-1:-1:-1;6019:1:1;6033:5;;5968:80;6067:4;6057:76;;-1:-1:-1;6104:1:1;6118:5;;6057:76;6149:4;6167:1;6162:59;;;;6235:1;6230:130;;;;6142:218;;6162:59;6192:1;6183:10;;6206:5;;;6230:130;6267:3;6257:8;6254:17;6251:43;;;6274:18;;:::i;:::-;-1:-1:-1;;6330:1:1;6316:16;;6345:5;;6142:218;;6444:2;6434:8;6431:16;6425:3;6419:4;6416:13;6412:36;6406:2;6396:8;6393:16;6388:2;6382:4;6379:12;6375:35;6372:77;6369:159;;;-1:-1:-1;6481:19:1;;;6513:5;;6369:159;6560:34;6585:8;6579:4;6560:34;:::i;:::-;6630:6;6626:1;6622:6;6618:19;6609:7;6606:32;6603:58;;;6641:18;;:::i;:::-;6679:20;;5899:806;-1:-1:-1;;;5899:806:1:o;6710:140::-;6768:5;6797:47;6838:4;6828:8;6824:19;6818:4;6797:47;:::i;6855:168::-;6928:9;;;6959;;6976:15;;;6970:22;;6956:37;6946:71;;6997:18;;:::i;7373:128::-;7440:9;;;7461:11;;;7458:37;;;7475:18;;:::i;7506:348::-;7708:2;7690:21;;;7747:2;7727:18;;;7720:30;7786:26;7781:2;7766:18;;7759:54;7845:2;7830:18;;7506:348::o;8556:148::-;8644:4;8623:12;;;8637;;;8619:31;;8662:13;;8659:39;;;8678:18;;:::i;9397:217::-;9437:1;9463;9453:132;;9507:10;9502:3;9498:20;9495:1;9488:31;9542:4;9539:1;9532:15;9570:4;9567:1;9560:15;9453:132;-1:-1:-1;9599:9:1;;9397:217::o;9619:125::-;9684:9;;;9705:10;;;9702:36;;;9718:18;;:::i;10431:255::-;10502:16;10550:10;;;10562;;;10546:27;10593:20;;;;10502:16;10632:24;;;10622:58;;10660:18;;:::i;:::-;10622:58;;10431:255;;;;:::o;12043:251::-;12113:6;12166:2;12154:9;12145:7;12141:23;12137:32;12134:52;;;12182:1;12179;12172:12;12134:52;12214:9;12208:16;12233:31;12258:5;12233:31;:::i;14208:301::-;14337:3;14375:6;14369:13;14421:6;14414:4;14406:6;14402:17;14397:3;14391:37;14483:1;14447:16;;14472:13;;;-1:-1:-1;14447:16:1;14208:301;-1:-1:-1;14208:301:1:o;15471:306::-;15559:6;15567;15575;15628:2;15616:9;15607:7;15603:23;15599:32;15596:52;;;15644:1;15641;15634:12;15596:52;15673:9;15667:16;15657:26;;15723:2;15712:9;15708:18;15702:25;15692:35;;15767:2;15756:9;15752:18;15746:25;15736:35;;15471:306;;;;;:::o;15782:184::-;15852:6;15905:2;15893:9;15884:7;15880:23;15876:32;15873:52;;;15921:1;15918;15911:12;15873:52;-1:-1:-1;15944:16:1;;15782:184;-1:-1:-1;15782:184:1:o;16103:127::-;16164:10;16159:3;16155:20;16152:1;16145:31;16195:4;16192:1;16185:15;16219:4;16216:1;16209:15;16235:980;16497:4;16545:3;16534:9;16530:19;16576:6;16565:9;16558:25;16602:2;16640:6;16635:2;16624:9;16620:18;16613:34;16683:3;16678:2;16667:9;16663:18;16656:31;16707:6;16742;16736:13;16773:6;16765;16758:22;16811:3;16800:9;16796:19;16789:26;;16850:2;16842:6;16838:15;16824:29;;16871:1;16881:195;16895:6;16892:1;16889:13;16881:195;;;16960:13;;-1:-1:-1;;;;;16956:39:1;16944:52;;17051:15;;;;17016:12;;;;16992:1;16910:9;16881:195;;;-1:-1:-1;;;;;;;17132:32:1;;;;17127:2;17112:18;;17105:60;-1:-1:-1;;;17196:3:1;17181:19;17174:35;17093:3;16235:980;-1:-1:-1;;;16235:980:1:o

Swarm Source

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