ETH Price: $3,440.79 (-1.15%)
Gas: 9 Gwei

Token

Lucia (LUCIA)
 

Overview

Max Total Supply

1,000,000,000 LUCIA

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
18,269,912.255604643 LUCIA

Value
$0.00
0x777662ac7a43df42b1e88d545ed0e70c2165f6a8
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:
LUCIA

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//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 LUCIA is IERC20, Auth {
    string private constant _symbol       = "LUCIA";
    string private constant _name         = "Lucia";
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 1_000_000_000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0xE633205C8fDdC16c3eae2A193b1BA2cC30812976);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 2;
    uint8 private _buyTaxrate  = 2;
    
    uint256 private launchBlock;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 150 / 100000;
    uint256 private _swapTrigger = 20 * (10**15);
    uint256 private _swapBalance; 

    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 / 10;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  
        _balances[address(this)] = _totalSupply - _balances[msg.sender];
        emit Transfer(address(0), msg.sender, _balances[address(this)]);  

        _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 recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount); }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        _allowances[sender][msg.sender] -= amount;
        return _transferFrom(sender, recipient, 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);
        _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;
        launchBlock = block.number;
        antiMevBlock = antiMevBlock + launchBlock;
        _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; }
        return result;
    }


    function _transferFrom(address sender, address recipient, 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[recipient] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

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

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

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

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

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

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _nofee[sender] || _nofee[recipient] ) { 
            taxAmount = 0;
        } else if (launchBlock > 0 && block.number > launchBlock + 5) {
            if ( _isLP[sender] ) { 
                taxAmount = amount * _buyTaxrate / 100; 
            } else if ( _isLP[recipient] ) { 
                taxAmount = amount * _sellTaxrate / 100; 
            }
        } else if (launchBlock > 0 && block.number <= launchBlock + 5) {
            taxAmount = amount * 99 / 100; //99% sniper tax for 5 blocks after launch
        }
        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 <= 10, "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 = _swapBalance;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapBalance -= _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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"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"}]

60a0604052600180546001600160a01b03191673e633205c8fddc16c3eae2a193b1ba2cc30812976179055600280556003805461020261ffff199091161790556200004d6009600a620004b4565b6200005d90633b9aca00620004cb565b6005556200006e6009600a620004b4565b6200007e90633b9aca00620004cb565b600655620186a0620000936009600a620004b4565b620000a390633b9aca00620004cb565b620000b090600a620004cb565b620000bc9190620004e5565b600755620186a0620000d16009600a620004b4565b620000e190633b9aca00620004cb565b620000ee906096620004cb565b620000fa9190620004e5565b60085566470de4df820000600955601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015805461ff001916905534801562000145575f80fd5b505f8054336001600160a01b03199182168117909255601180549091169091179055601254604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa158015620001b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d6919062000505565b6001600160a01b0316608052600a620001f1600982620004b4565b6200020190633b9aca00620004cb565b6200020d9190620004e5565b335f818152600b6020908152604080832085905551938452919290915f8051602062002506833981519152910160405180910390a3335f908152600b60205260409020546200025f6009600a620004b4565b6200026f90633b9aca00620004cb565b6200027b91906200052d565b305f908152600b60205260408082208390555133925f805160206200250683398151915291620002ad91815260200190565b60405180910390a35f80546001600160a01b039081168252600f602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880548316841790558654861687526010909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df8805490921617905562000543565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f957815f1904821115620003dd57620003dd620003a5565b80851615620003eb57918102915b93841c9390800290620003be565b509250929050565b5f826200041157506001620004ae565b816200041f57505f620004ae565b8160018114620004385760028114620004435762000463565b6001915050620004ae565b60ff841115620004575762000457620003a5565b50506001821b620004ae565b5060208310610133831016604e8410600b841016171562000488575081810a620004ae565b620004948383620003b9565b805f1904821115620004aa57620004aa620003a5565b0290505b92915050565b5f620004c460ff84168362000401565b9392505050565b8082028115828204841417620004ae57620004ae620003a5565b5f826200050057634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000516575f80fd5b81516001600160a01b0381168114620004c4575f80fd5b81810381811115620004ae57620004ae620003a5565b608051611f9c6200056a5f395f8181610d8b015281816114b0015261196a0152611f9c5ff3fe60806040526004361061017e575f3560e01c806375f0a874116100cd578063b3de9b5d11610087578063e537a83411610062578063e537a834146104ca578063e8078d94146104e9578063f2fde38b146104f1578063f8b45b0514610510575f80fd5b8063b3de9b5d1461045e578063c3f70b5214610472578063dd62ed3e14610486575f80fd5b806375f0a874146103925780638da5cb5b146103c357806395d89b41146103df578063a5e992bb1461040c578063a9059cbb14610420578063aacebbe31461043f575f80fd5b806330449efd116101385780634706240211610113578063470624021461030f5780634fcd24461461032b57806370a082311461034a578063715018a61461037e575f80fd5b806330449efd1461027e578063313ce567146102dd578063368f4800146102f0575f80fd5b806306fdde0314610189578063095ea7b3146101c857806318160ddd146101f757806318839bc31461021957806323b872dd1461023a5780632b14ca5614610259575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506040805180820190915260058152644c7563696160d81b60208201525b6040516101bf9190611a4d565b60405180910390f35b3480156101d3575f80fd5b506101e76101e2366004611aad565b610524565b60405190151581526020016101bf565b348015610202575f80fd5b5061020b610590565b6040519081526020016101bf565b348015610224575f80fd5b50610238610233366004611aeb565b6105b0565b005b348015610245575f80fd5b506101e7610254366004611b2d565b61068c565b348015610264575f80fd5b5060035460ff165b60405160ff90911681526020016101bf565b348015610289575f80fd5b506102c6610298366004611b6b565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101bf565b3480156102e8575f80fd5b50600961026c565b3480156102fb575f80fd5b5061023861030a366004611b97565b610720565b34801561031a575f80fd5b50600354610100900460ff1661026c565b348015610336575f80fd5b50610238610345366004611bd8565b610860565b348015610355575f80fd5b5061020b610364366004611b6b565b6001600160a01b03165f908152600b602052604090205490565b348015610389575f80fd5b506102386108fb565b34801561039d575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101bf565b3480156103ce575f80fd5b505f546001600160a01b03166103ab565b3480156103ea575f80fd5b506040805180820190915260058152644c5543494160d81b60208201526101b2565b348015610417575f80fd5b5060085461020b565b34801561042b575f80fd5b506101e761043a366004611aad565b610968565b34801561044a575f80fd5b50610238610459366004611b6b565b6109c3565b348015610469575f80fd5b5060075461020b565b34801561047d575f80fd5b5060055461020b565b348015610491575f80fd5b5061020b6104a0366004611c00565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b3480156104d5575f80fd5b506102386104e4366004611c4a565b610aa2565b610238610bb1565b3480156104fc575f80fd5b5061023861050b366004611b6b565b610e4d565b34801561051b575f80fd5b5060065461020b565b335f818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061057e9086815260200190565b60405180910390a35060015b92915050565b5f61059d6009600a611d9f565b6105ab90633b9aca00611dad565b905090565b5f546001600160a01b031633146105e25760405162461bcd60e51b81526004016105d990611dc4565b60405180910390fd5b80806105eb5750815b1561064b576001600160a01b0383165f9081526014602052604090205460ff161561064b5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105d9565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f61069684610ec9565b6106d55760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105d9565b6001600160a01b0384165f908152600c6020908152604080832033845290915281208054849290610707908490611dfb565b909155506107189050848484610f2c565b949350505050565b5f546001600160a01b031633146107495760405162461bcd60e51b81526004016105d990611dc4565b5f6103e861ffff841661075e6009600a611d9f565b61076c90633b9aca00611dad565b6107769190611dad565b6107809190611e0e565b61078b906001611e2d565b90506005548110156107cc5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105d9565b60058190555f6103e861ffff84166107e66009600a611d9f565b6107f490633b9aca00611dad565b6107fe9190611dad565b6108089190611e0e565b610813906001611e2d565b90506006548110156108585760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105d9565b600655505050565b5f546001600160a01b031633146108895760405162461bcd60e51b81526004016105d990611dc4565b600a6108958284611e40565b60ff1611156108db5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105d9565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109245760405162461bcd60e51b81526004016105d990611dc4565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61097233610ec9565b6109b15760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105d9565b6109bc338484610f2c565b9392505050565b5f546001600160a01b031633146109ec5760405162461bcd60e51b81526004016105d990611dc4565b6001600160a01b0381165f9081526014602052604090205460ff1615610a545760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105d9565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610acb5760405162461bcd60e51b81526004016105d990611dc4565b63ffffffff808516908616610ae26009600a611d9f565b610af090633b9aca00611dad565b610afa9190611dad565b610b049190611e0e565b60075563ffffffff808316908416610b1e6009600a611d9f565b610b2c90633b9aca00611dad565b610b369190611dad565b610b409190611e0e565b600855610b5a63ffffffff821666038d7ea4c68000611e59565b66ffffffffffffff166009556007546008541015610baa5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016105d9565b5050505050565b5f546001600160a01b03163314610bda5760405162461bcd60e51b81526004016105d990611dc4565b6015805461ff0019166101001790556013546001600160a01b031615610c2f5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016105d9565b60155460ff1615610c715760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016105d9565b5f341180610c7e57505f47115b610cb35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016105d9565b305f908152600b6020526040902054610cfa5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016105d9565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611e84565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611e84565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f908152600b6020526040902054610e389047611346565b610e406113e1565b6015805461ff0019169055565b5f546001600160a01b03163314610e765760405162461bcd60e51b81526004016105d990611dc4565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6015545f90819060ff1615610ee05750600161058a565b6001600160a01b0383165f908152600f602052604090205460ff168015610f1e57506001600160a01b0383165f9081526010602052604090205460ff165b1561058a5750600192915050565b5f6001600160a01b038416610f835760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016105d9565b60155460ff1661100e576001600160a01b0384165f908152600f602052604090205460ff168015610fcb57506001600160a01b0384165f9081526010602052604090205460ff165b61100e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016105d9565b601554610100900460ff1615801561103d57506001600160a01b0383165f9081526014602052604090205460ff165b801561104d575061104d8261146e565b1561105a5761105a6115a9565b60045443106111d5576002544310801561108b57506001600160a01b0384165f9081526014602052604090205460ff165b156110d4576001600160a01b03831632146110d45760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b60448201526064016105d9565b6002546110e390610258611e2d565b4310801561110857506001600160a01b0383165f9081526014602052604090205460ff165b801561111d57506001600160a01b0384163014155b156111d557435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061115890849060ff16611e40565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506111d55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b60448201526064016105d9565b6001600160a01b03841630148015906111f757506001600160a01b0383163014155b801561121057505f546001600160a01b03858116911614155b1561125d57611220848484611666565b61125d5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016105d9565b5f611269858585611729565b90505f6112768285611dfb565b6001600160a01b0387165f908152600b60205260408120805492935086929091906112a2908490611dfb565b9250508190555081600a5f8282546112ba9190611e2d565b90915550506001600160a01b0385165f908152600b6020526040812080548392906112e6908490611e2d565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161133291815260200190565b60405180910390a350600195945050505050565b61134f8261186a565b60125460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113bc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610baa9190611e9f565b60646113ef6009600a611d9f565b6113fd90633b9aca00611dad565b611408906002611dad565b6114129190611e0e565b60055560646114236009600a611d9f565b61143190633b9aca00611dad565b61143c906002611dad565b6114469190611e0e565b60065543600481905560025461145c9190611e2d565b6002556015805460ff19166001179055565b5f805f60095411156115a0576013546001600160a01b039081165f818152600b60205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156114f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151b9190611eca565b90505f826115298388611dad565b6115339190611e0e565b9050600954811061159857435f908152600e6020526040902054600560ff909116101561159857435f908152600e6020526040812080546001965086929061157f90849060ff16611e40565b92506101000a81548160ff021916908360ff1602179055505b50505061058a565b50600192915050565b6015805461ff001916610100179055600a5460075481108015906115cf575060155460ff165b156116585760085481106115e257506008545b806115ef6009600a611d9f565b6115fa906001611dad565b81111561164557305f908152600b60205260408120805484929061161f908490611e2d565b9091555061162e90508161190c565b81600a5f82825461163f9190611dfb565b90915550505b4780156116555761165581611a12565b50505b506015805461ff0019169055565b6015545f9060019060ff16801561169557506001600160a01b0385165f9081526010602052604090205460ff16155b80156116b957506001600160a01b0384165f9081526010602052604090205460ff16155b15610718576005548311156116cf57505f610718565b6001600160a01b0384165f9081526014602052604090205460ff1615801561171a57506006546001600160a01b0385165f908152600b6020526040902054611718908590611e2d565b115b1561071857505f949350505050565b6015545f90819060ff16158061175657506001600160a01b0385165f908152600f602052604090205460ff165b8061177857506001600160a01b0384165f908152600f602052604090205460ff165b1561178457505f610718565b5f6004541180156117a1575060045461179e906005611e2d565b43115b15611827576001600160a01b0385165f9081526014602052604090205460ff16156117ef576003546064906117de90610100900460ff1685611dad565b6117e89190611e0e565b9050610718565b6001600160a01b0384165f9081526014602052604090205460ff1615611822576003546064906117de9060ff1685611dad565b610718565b5f6004541180156118455750600454611841906005611e2d565b4311155b15610718576064611857846063611dad565b6118619190611e0e565b95945050505050565b305f908152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561190957305f818152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6119158161186a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194857611948611ee1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061199c5761199c611ee1565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac947906119e19085905f90869030904290600401611ef5565b5f604051808303815f87803b1580156119f8575f80fd5b505af1158015611a0a573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a49573d5f803e3d5ffd5b5050565b5f602080835283518060208501525f5b81811015611a7957858101830151858201604001528201611a5d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611909575f80fd5b5f8060408385031215611abe575f80fd5b8235611ac981611a99565b946020939093013593505050565b80358015158114611ae6575f80fd5b919050565b5f805f60608486031215611afd575f80fd5b8335611b0881611a99565b9250611b1660208501611ad7565b9150611b2460408501611ad7565b90509250925092565b5f805f60608486031215611b3f575f80fd5b8335611b4a81611a99565b92506020840135611b5a81611a99565b929592945050506040919091013590565b5f60208284031215611b7b575f80fd5b81356109bc81611a99565b803561ffff81168114611ae6575f80fd5b5f8060408385031215611ba8575f80fd5b611bb183611b86565b9150611bbf60208401611b86565b90509250929050565b803560ff81168114611ae6575f80fd5b5f8060408385031215611be9575f80fd5b611bf283611bc8565b9150611bbf60208401611bc8565b5f8060408385031215611c11575f80fd5b8235611c1c81611a99565b91506020830135611c2c81611a99565b809150509250929050565b803563ffffffff81168114611ae6575f80fd5b5f805f805f60a08688031215611c5e575f80fd5b611c6786611c37565b9450611c7560208701611c37565b9350611c8360408701611c37565b9250611c9160608701611c37565b9150611c9f60808701611c37565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cf957815f1904821115611cdf57611cdf611cab565b80851615611cec57918102915b93841c9390800290611cc4565b509250929050565b5f82611d0f5750600161058a565b81611d1b57505f61058a565b8160018114611d315760028114611d3b57611d57565b600191505061058a565b60ff841115611d4c57611d4c611cab565b50506001821b61058a565b5060208310610133831016604e8410600b8410161715611d7a575081810a61058a565b611d848383611cbf565b805f1904821115611d9757611d97611cab565b029392505050565b5f6109bc60ff841683611d01565b808202811582820484141761058a5761058a611cab565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b8181038181111561058a5761058a611cab565b5f82611e2857634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561058a5761058a611cab565b60ff818116838216019081111561058a5761058a611cab565b66ffffffffffffff818116838216028082169190828114611e7c57611e7c611cab565b505092915050565b5f60208284031215611e94575f80fd5b81516109bc81611a99565b5f805f60608486031215611eb1575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611eda575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f455784516001600160a01b031683529383019391830191600101611f20565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203be9116d16a08bb5ba71d7ce7cd49406906e9ffbba9cabb4e12abf87cb174b7664736f6c63430008170033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061017e575f3560e01c806375f0a874116100cd578063b3de9b5d11610087578063e537a83411610062578063e537a834146104ca578063e8078d94146104e9578063f2fde38b146104f1578063f8b45b0514610510575f80fd5b8063b3de9b5d1461045e578063c3f70b5214610472578063dd62ed3e14610486575f80fd5b806375f0a874146103925780638da5cb5b146103c357806395d89b41146103df578063a5e992bb1461040c578063a9059cbb14610420578063aacebbe31461043f575f80fd5b806330449efd116101385780634706240211610113578063470624021461030f5780634fcd24461461032b57806370a082311461034a578063715018a61461037e575f80fd5b806330449efd1461027e578063313ce567146102dd578063368f4800146102f0575f80fd5b806306fdde0314610189578063095ea7b3146101c857806318160ddd146101f757806318839bc31461021957806323b872dd1461023a5780632b14ca5614610259575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506040805180820190915260058152644c7563696160d81b60208201525b6040516101bf9190611a4d565b60405180910390f35b3480156101d3575f80fd5b506101e76101e2366004611aad565b610524565b60405190151581526020016101bf565b348015610202575f80fd5b5061020b610590565b6040519081526020016101bf565b348015610224575f80fd5b50610238610233366004611aeb565b6105b0565b005b348015610245575f80fd5b506101e7610254366004611b2d565b61068c565b348015610264575f80fd5b5060035460ff165b60405160ff90911681526020016101bf565b348015610289575f80fd5b506102c6610298366004611b6b565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101bf565b3480156102e8575f80fd5b50600961026c565b3480156102fb575f80fd5b5061023861030a366004611b97565b610720565b34801561031a575f80fd5b50600354610100900460ff1661026c565b348015610336575f80fd5b50610238610345366004611bd8565b610860565b348015610355575f80fd5b5061020b610364366004611b6b565b6001600160a01b03165f908152600b602052604090205490565b348015610389575f80fd5b506102386108fb565b34801561039d575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101bf565b3480156103ce575f80fd5b505f546001600160a01b03166103ab565b3480156103ea575f80fd5b506040805180820190915260058152644c5543494160d81b60208201526101b2565b348015610417575f80fd5b5060085461020b565b34801561042b575f80fd5b506101e761043a366004611aad565b610968565b34801561044a575f80fd5b50610238610459366004611b6b565b6109c3565b348015610469575f80fd5b5060075461020b565b34801561047d575f80fd5b5060055461020b565b348015610491575f80fd5b5061020b6104a0366004611c00565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b3480156104d5575f80fd5b506102386104e4366004611c4a565b610aa2565b610238610bb1565b3480156104fc575f80fd5b5061023861050b366004611b6b565b610e4d565b34801561051b575f80fd5b5060065461020b565b335f818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061057e9086815260200190565b60405180910390a35060015b92915050565b5f61059d6009600a611d9f565b6105ab90633b9aca00611dad565b905090565b5f546001600160a01b031633146105e25760405162461bcd60e51b81526004016105d990611dc4565b60405180910390fd5b80806105eb5750815b1561064b576001600160a01b0383165f9081526014602052604090205460ff161561064b5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105d9565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f61069684610ec9565b6106d55760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105d9565b6001600160a01b0384165f908152600c6020908152604080832033845290915281208054849290610707908490611dfb565b909155506107189050848484610f2c565b949350505050565b5f546001600160a01b031633146107495760405162461bcd60e51b81526004016105d990611dc4565b5f6103e861ffff841661075e6009600a611d9f565b61076c90633b9aca00611dad565b6107769190611dad565b6107809190611e0e565b61078b906001611e2d565b90506005548110156107cc5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105d9565b60058190555f6103e861ffff84166107e66009600a611d9f565b6107f490633b9aca00611dad565b6107fe9190611dad565b6108089190611e0e565b610813906001611e2d565b90506006548110156108585760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105d9565b600655505050565b5f546001600160a01b031633146108895760405162461bcd60e51b81526004016105d990611dc4565b600a6108958284611e40565b60ff1611156108db5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105d9565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109245760405162461bcd60e51b81526004016105d990611dc4565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61097233610ec9565b6109b15760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105d9565b6109bc338484610f2c565b9392505050565b5f546001600160a01b031633146109ec5760405162461bcd60e51b81526004016105d990611dc4565b6001600160a01b0381165f9081526014602052604090205460ff1615610a545760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105d9565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610acb5760405162461bcd60e51b81526004016105d990611dc4565b63ffffffff808516908616610ae26009600a611d9f565b610af090633b9aca00611dad565b610afa9190611dad565b610b049190611e0e565b60075563ffffffff808316908416610b1e6009600a611d9f565b610b2c90633b9aca00611dad565b610b369190611dad565b610b409190611e0e565b600855610b5a63ffffffff821666038d7ea4c68000611e59565b66ffffffffffffff166009556007546008541015610baa5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016105d9565b5050505050565b5f546001600160a01b03163314610bda5760405162461bcd60e51b81526004016105d990611dc4565b6015805461ff0019166101001790556013546001600160a01b031615610c2f5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016105d9565b60155460ff1615610c715760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016105d9565b5f341180610c7e57505f47115b610cb35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016105d9565b305f908152600b6020526040902054610cfa5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016105d9565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611e84565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611e84565b601380546001600160a01b0319166001600160a01b0392909216919091179055305f908152600b6020526040902054610e389047611346565b610e406113e1565b6015805461ff0019169055565b5f546001600160a01b03163314610e765760405162461bcd60e51b81526004016105d990611dc4565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6015545f90819060ff1615610ee05750600161058a565b6001600160a01b0383165f908152600f602052604090205460ff168015610f1e57506001600160a01b0383165f9081526010602052604090205460ff165b1561058a5750600192915050565b5f6001600160a01b038416610f835760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016105d9565b60155460ff1661100e576001600160a01b0384165f908152600f602052604090205460ff168015610fcb57506001600160a01b0384165f9081526010602052604090205460ff165b61100e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016105d9565b601554610100900460ff1615801561103d57506001600160a01b0383165f9081526014602052604090205460ff165b801561104d575061104d8261146e565b1561105a5761105a6115a9565b60045443106111d5576002544310801561108b57506001600160a01b0384165f9081526014602052604090205460ff165b156110d4576001600160a01b03831632146110d45760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b60448201526064016105d9565b6002546110e390610258611e2d565b4310801561110857506001600160a01b0383165f9081526014602052604090205460ff165b801561111d57506001600160a01b0384163014155b156111d557435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061115890849060ff16611e40565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506111d55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b60448201526064016105d9565b6001600160a01b03841630148015906111f757506001600160a01b0383163014155b801561121057505f546001600160a01b03858116911614155b1561125d57611220848484611666565b61125d5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016105d9565b5f611269858585611729565b90505f6112768285611dfb565b6001600160a01b0387165f908152600b60205260408120805492935086929091906112a2908490611dfb565b9250508190555081600a5f8282546112ba9190611e2d565b90915550506001600160a01b0385165f908152600b6020526040812080548392906112e6908490611e2d565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161133291815260200190565b60405180910390a350600195945050505050565b61134f8261186a565b60125460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113bc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610baa9190611e9f565b60646113ef6009600a611d9f565b6113fd90633b9aca00611dad565b611408906002611dad565b6114129190611e0e565b60055560646114236009600a611d9f565b61143190633b9aca00611dad565b61143c906002611dad565b6114469190611e0e565b60065543600481905560025461145c9190611e2d565b6002556015805460ff19166001179055565b5f805f60095411156115a0576013546001600160a01b039081165f818152600b60205260408082205490516370a0823160e01b815260048101939093529290917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa1580156114f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151b9190611eca565b90505f826115298388611dad565b6115339190611e0e565b9050600954811061159857435f908152600e6020526040902054600560ff909116101561159857435f908152600e6020526040812080546001965086929061157f90849060ff16611e40565b92506101000a81548160ff021916908360ff1602179055505b50505061058a565b50600192915050565b6015805461ff001916610100179055600a5460075481108015906115cf575060155460ff165b156116585760085481106115e257506008545b806115ef6009600a611d9f565b6115fa906001611dad565b81111561164557305f908152600b60205260408120805484929061161f908490611e2d565b9091555061162e90508161190c565b81600a5f82825461163f9190611dfb565b90915550505b4780156116555761165581611a12565b50505b506015805461ff0019169055565b6015545f9060019060ff16801561169557506001600160a01b0385165f9081526010602052604090205460ff16155b80156116b957506001600160a01b0384165f9081526010602052604090205460ff16155b15610718576005548311156116cf57505f610718565b6001600160a01b0384165f9081526014602052604090205460ff1615801561171a57506006546001600160a01b0385165f908152600b6020526040902054611718908590611e2d565b115b1561071857505f949350505050565b6015545f90819060ff16158061175657506001600160a01b0385165f908152600f602052604090205460ff165b8061177857506001600160a01b0384165f908152600f602052604090205460ff165b1561178457505f610718565b5f6004541180156117a1575060045461179e906005611e2d565b43115b15611827576001600160a01b0385165f9081526014602052604090205460ff16156117ef576003546064906117de90610100900460ff1685611dad565b6117e89190611e0e565b9050610718565b6001600160a01b0384165f9081526014602052604090205460ff1615611822576003546064906117de9060ff1685611dad565b610718565b5f6004541180156118455750600454611841906005611e2d565b4311155b15610718576064611857846063611dad565b6118619190611e0e565b95945050505050565b305f908152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561190957305f818152600c60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6119158161186a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194857611948611ee1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061199c5761199c611ee1565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac947906119e19085905f90869030904290600401611ef5565b5f604051808303815f87803b1580156119f8575f80fd5b505af1158015611a0a573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a49573d5f803e3d5ffd5b5050565b5f602080835283518060208501525f5b81811015611a7957858101830151858201604001528201611a5d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611909575f80fd5b5f8060408385031215611abe575f80fd5b8235611ac981611a99565b946020939093013593505050565b80358015158114611ae6575f80fd5b919050565b5f805f60608486031215611afd575f80fd5b8335611b0881611a99565b9250611b1660208501611ad7565b9150611b2460408501611ad7565b90509250925092565b5f805f60608486031215611b3f575f80fd5b8335611b4a81611a99565b92506020840135611b5a81611a99565b929592945050506040919091013590565b5f60208284031215611b7b575f80fd5b81356109bc81611a99565b803561ffff81168114611ae6575f80fd5b5f8060408385031215611ba8575f80fd5b611bb183611b86565b9150611bbf60208401611b86565b90509250929050565b803560ff81168114611ae6575f80fd5b5f8060408385031215611be9575f80fd5b611bf283611bc8565b9150611bbf60208401611bc8565b5f8060408385031215611c11575f80fd5b8235611c1c81611a99565b91506020830135611c2c81611a99565b809150509250929050565b803563ffffffff81168114611ae6575f80fd5b5f805f805f60a08688031215611c5e575f80fd5b611c6786611c37565b9450611c7560208701611c37565b9350611c8360408701611c37565b9250611c9160608701611c37565b9150611c9f60808701611c37565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cf957815f1904821115611cdf57611cdf611cab565b80851615611cec57918102915b93841c9390800290611cc4565b509250929050565b5f82611d0f5750600161058a565b81611d1b57505f61058a565b8160018114611d315760028114611d3b57611d57565b600191505061058a565b60ff841115611d4c57611d4c611cab565b50506001821b61058a565b5060208310610133831016604e8410600b8410161715611d7a575081810a61058a565b611d848383611cbf565b805f1904821115611d9757611d97611cab565b029392505050565b5f6109bc60ff841683611d01565b808202811582820484141761058a5761058a611cab565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b8181038181111561058a5761058a611cab565b5f82611e2857634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561058a5761058a611cab565b60ff818116838216019081111561058a5761058a611cab565b66ffffffffffffff818116838216028082169190828114611e7c57611e7c611cab565b505092915050565b5f60208284031215611e94575f80fd5b81516109bc81611a99565b5f805f60608486031215611eb1575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611eda575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f455784516001600160a01b031683529383019391830191600101611f20565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203be9116d16a08bb5ba71d7ce7cd49406906e9ffbba9cabb4e12abf87cb174b7664736f6c63430008170033

Deployed Bytecode Sourcemap

1584:12278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4251:80;;;;;;;;;;-1:-1:-1;4323:5:0;;;;;;;;;;;;-1:-1:-1;;;4323:5:0;;;;4251:80;;;;;;;:::i;:::-;;;;;;;;4699:211;;;;;;;;;;-1:-1:-1;4699:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4699:211:0;1023:187:1;4157:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;4157:88:0;1215:177:1;10496:240:0;;;;;;;;;;-1:-1:-1;10496:240:0;;;;;:::i;:::-;;:::i;:::-;;5146:284;;;;;;;;;;-1:-1:-1;5146:284:0;;;;;:::i;:::-;;:::i;10820:72::-;;;;;;;;;;-1:-1:-1;10877:12:0;;;;10820:72;;;2583:4:1;2571:17;;;2553:36;;2541:2;2526:18;10820:72:0;2411:184:1;10350:138:0;;;;;;;;;;-1:-1:-1;10350:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;10452:14:0;10409:9;10452:14;;;:6;:14;;;;;;;;;10468:8;:16;;;;;;;10452:14;;;;;10468:16;;;10350:138;;;;;3039:14:1;;3032:22;3014:41;;3098:14;;3091:22;3086:2;3071:18;;3064:50;2987:18;10350:138:0;2852:268:1;4071:80:0;;;;;;;;;;-1:-1:-1;1770:1:0;4071:80;;11873:436;;;;;;;;;;-1:-1:-1;11873:436:0;;;;;:::i;:::-;;:::i;10744:70::-;;;;;;;;;;-1:-1:-1;10800:11:0;;;;;;;10744:70;;10900:207;;;;;;;;;;-1:-1:-1;10900:207:0;;;;;:::i;:::-;;:::i;4427:115::-;;;;;;;;;;-1:-1:-1;4427:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4521:18:0;4493:7;4521:18;;;:9;:18;;;;;;;4427:115;588:130;;;;;;;;;;;;;:::i;11117:97::-;;;;;;;;;;-1:-1:-1;11195:16:0;;-1:-1:-1;;;;;11195:16:0;11117:97;;;-1:-1:-1;;;;;4132:32:1;;;4114:51;;4102:2;4087:18;11117:97:0;3968:203:1;360:65:0;;;;;;;;;;-1:-1:-1;398:7:0;416:6;-1:-1:-1;;;;;416:6:0;360:65;;4337:84;;;;;;;;;;-1:-1:-1;4411:7:0;;;;;;;;;;;;-1:-1:-1;;;4411:7:0;;;;4337:84;;11784:81;;;;;;;;;;-1:-1:-1;11854:8:0;;11784:81;;4918:220;;;;;;;;;;-1:-1:-1;4918:220:0;;;;;:::i;:::-;;:::i;11222:276::-;;;;;;;;;;-1:-1:-1;11222:276:0;;;;;:::i;:::-;;:::i;11697:81::-;;;;;;;;;;-1:-1:-1;11767:8:0;;11697:81;;11600:89;;;;;;;;;;-1:-1:-1;11677:9:0;;11600:89;;4548:143;;;;;;;;;;-1:-1:-1;4548:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4660:19:0;;;4632:7;4660:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4548:143;12317:325;;;;;;;;;;-1:-1:-1;12317:325:0;;;;;:::i;:::-;;:::i;5763:508::-;;;:::i;431:151::-;;;;;;;;;;-1:-1:-1;431:151:0;;;;;:::i;:::-;;:::i;11506:88::-;;;;;;;;;;-1:-1:-1;11578:13:0;;11506:88;;4699:211;4803:10;4774:4;4791:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4791:32:0;;;;;;;;;;:41;;;4848:37;4774:4;;4791:32;;4848:37;;;;4826:6;1361:25:1;;1349:2;1334:18;;1215:177;4848:37:0;;;;;;;;-1:-1:-1;4903:4:0;4699:211;;;;;:::o;4157:88::-;4212:7;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;;:13;:31;:::i;:::-;4223:19;;4157:88;:::o;10496:240::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;;;;;;;;;10594:8:::1;:18;;;;10606:6;10594:18;10590:69;;;-1:-1:-1::0;;;;;10625:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;10624:11;10616:40;;;::::0;-1:-1:-1;;;10616:40:0;;7713:2:1;10616:40:0::1;::::0;::::1;7695:21:1::0;7752:2;7732:18;;;7725:30;-1:-1:-1;;;7771:18:1;;;7764:46;7827:18;;10616:40:0::1;7511:340:1::0;10616:40:0::1;-1:-1:-1::0;;;;;10669:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;10669:22:0;;::::1;;::::0;;10702:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10496:240::o;5146:284::-;5246:4;5271:25;5289:6;5271:17;:25::i;:::-;5263:54;;;;-1:-1:-1;;;5263:54:0;;8058:2:1;5263:54:0;;;8040:21:1;8097:2;8077:18;;;8070:30;-1:-1:-1;;;8116:18:1;;;8109:46;8172:18;;5263:54:0;7856:340:1;5263:54:0;-1:-1:-1;;;;;5328:19:0;;;;;;:11;:19;;;;;;;;5348:10;5328:31;;;;;;;:41;;5363:6;;5328:19;:41;;5363:6;;5328:41;:::i;:::-;;;;-1:-1:-1;5387:40:0;;-1:-1:-1;5401:6:0;5409:9;5420:6;5387:13;:40::i;:::-;5380:47;5146:284;-1:-1:-1;;;;5146:284:0:o;11873:436::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;11972:16:::1;12025:4;11991:31;::::0;::::1;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;::::0;:13:::1;:31;:::i;:::-;11991;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;12032:1:::1;11991:42;:::i;:::-;11972:61;;12064:9;;12052:8;:21;;12044:44;;;::::0;-1:-1:-1;;;12044:44:0;;8888:2:1;12044:44:0::1;::::0;::::1;8870:21:1::0;8927:2;8907:18;;;8900:30;-1:-1:-1;;;8946:18:1;;;8939:40;8996:18;;12044:44:0::1;8686:334:1::0;12044:44:0::1;12099:9;:20:::0;;;12130::::1;12187:4;12153:31;::::0;::::1;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;::::0;:13:::1;:31;:::i;:::-;12153;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;12194:1:::1;12153:42;:::i;:::-;12130:65;;12230:13;;12214:12;:29;;12206:56;;;::::0;-1:-1:-1;;;12206:56:0;;9227:2:1;12206:56:0::1;::::0;::::1;9209:21:1::0;9266:2;9246:18;;;9239:30;-1:-1:-1;;;9285:18:1;;;9278:44;9339:18;;12206:56:0::1;9025:338:1::0;12206:56:0::1;12273:13;:28:::0;-1:-1:-1;;;11873:436:0:o;10900:207::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;11008:2:::1;10986:18;10996:8:::0;10986:7;:18:::1;:::i;:::-;:24;;;;10978:55;;;::::0;-1:-1:-1;;;10978:55:0;;9723:2:1;10978:55:0::1;::::0;::::1;9705:21:1::0;9762:2;9742:18;;;9735:30;-1:-1:-1;;;9781:18:1;;;9774:48;9839:18;;10978:55:0::1;9521:342:1::0;10978:55:0::1;11044:11;:21:::0;;-1:-1:-1;;11076:23:0;11044:21:::1;;::::0;;::::1;;-1:-1:-1::0;;11076:23:0;;;;;::::1;;::::0;;10900:207::o;588:130::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;665:1:::1;648:19:::0;;-1:-1:-1;;;;;;648:19:0::1;::::0;;683:32:::1;::::0;4114:51:1;;;683:32:0::1;::::0;4102:2:1;4087:18;683:32:0::1;;;;;;;588:130::o:0;4918:220::-;4998:4;5023:29;5041:10;5023:17;:29::i;:::-;5015:58;;;;-1:-1:-1;;;5015:58:0;;8058:2:1;5015:58:0;;;8040:21:1;8097:2;8077:18;;;8070:30;-1:-1:-1;;;8116:18:1;;;8109:46;8172:18;;5015:58:0;7856:340:1;5015:58:0;5091:44;5105:10;5117:9;5128:6;5091:13;:44::i;:::-;5084:51;4918:220;-1:-1:-1;;;4918:220:0:o;11222:276::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11314:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;11313:20;11305:56;;;::::0;-1:-1:-1;;;11305:56:0;;10070:2:1;11305:56:0::1;::::0;::::1;10052:21:1::0;10109:2;10089:18;;;10082:30;10148:25;10128:18;;;10121:53;10191:18;;11305:56:0::1;9868:347:1::0;11305:56:0::1;11372:16;:40:::0;;-1:-1:-1;;;;;11372:40:0;;::::1;-1:-1:-1::0;;;;;;11372:40:0;;::::1;::::0;::::1;::::0;;:16:::1;11423:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;11423:27:0;;::::1;::::0;::::1;::::0;;;11461:8:::1;:22:::0;;;;;;:29;;;;::::1;;::::0;;11222:276::o;12317:325::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;12455:30:::1;::::0;;::::1;::::0;:21;::::1;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;::::0;:13:::1;:31;:::i;:::-;12455:21;;;;:::i;:::-;:30;;;;:::i;:::-;12444:8;:41:::0;12507:30:::1;::::0;;::::1;::::0;:21;::::1;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;::::0;:13:::1;:31;:::i;:::-;12507:21;;;;:::i;:::-;:30;;;;:::i;:::-;12496:8;:41:::0;12563:16:::1;;::::0;::::1;12573:6;12563:16;:::i;:::-;12548:31;;:12;:31:::0;12608:8:::1;::::0;12598::::1;::::0;:18:::1;;12590:44;;;::::0;-1:-1:-1;;;12590:44:0;;10682:2:1;12590:44:0::1;::::0;::::1;10664:21:1::0;10721:2;10701:18;;;10694:30;-1:-1:-1;;;10740:18:1;;;10733:43;10793:18;;12590:44:0::1;10480:337:1::0;12590:44:0::1;12317:325:::0;;;;;:::o;5763:508::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;3237:7:::1;:14:::0;;-1:-1:-1;;3237:14:0::1;;;::::0;;5845:10:::2;::::0;-1:-1:-1;;;;;5845:10:0::2;:24:::0;5837:47:::2;;;::::0;-1:-1:-1;;;5837:47:0;;11024:2:1;5837:47:0::2;::::0;::::2;11006:21:1::0;11063:2;11043:18;;;11036:30;-1:-1:-1;;;11082:18:1;;;11075:40;11132:18;;5837:47:0::2;10822:334:1::0;5837:47:0::2;5904:12;::::0;::::2;;5903:13;5895:38;;;::::0;-1:-1:-1;;;5895:38:0;;11363:2:1;5895:38:0::2;::::0;::::2;11345:21:1::0;11402:2;11382:18;;;11375:30;-1:-1:-1;;;11421:18:1;;;11414:42;11473:18;;5895:38:0::2;11161:336:1::0;5895:38:0::2;5964:1;5952:9;:13;:40;;;;5991:1;5969:21;:23;5952:40;5944:59;;;::::0;-1:-1:-1;;;5944:59:0;;11704:2:1;5944:59:0::2;::::0;::::2;11686:21:1::0;11743:1;11723:18;;;11716:29;-1:-1:-1;;;11761:18:1;;;11754:36;11807:18;;5944:59:0::2;11502:329:1::0;5944:59:0::2;6040:4;6047:1;6022:24:::0;;;:9:::2;:24;::::0;;;;;6014:48:::2;;;::::0;-1:-1:-1;;;6014:48:0;;12038:2:1;6014:48:0::2;::::0;::::2;12020:21:1::0;12077:1;12057:18;;;12050:29;-1:-1:-1;;;12095:18:1;;;12088:39;12144:18;;6014:48:0::2;11836:332:1::0;6014:48:0::2;6104:18;;;;;;;;;-1:-1:-1::0;;;;;6104:18:0::2;-1:-1:-1::0;;;;;6104:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6086:79;::::0;-1:-1:-1;;;6086:79:0;;6153:4:::2;6086:79;::::0;::::2;12641:34:1::0;-1:-1:-1;;;;;6160:4:0::2;12711:15:1::0;;12691:18;;;12684:43;6086:58:0;;;::::2;::::0;::::2;::::0;12576:18:1;;6086:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6073:10;:92:::0;;-1:-1:-1;;;;;;6073:92:0::2;-1:-1:-1::0;;;;;6073:92:0;;;::::2;::::0;;;::::2;::::0;;6208:4:::2;-1:-1:-1::0;6190:24:0;;;:9:::2;:24;::::0;;;;;6176:62:::2;::::0;6216:21:::2;6176:13;:62::i;:::-;6249:14;:12;:14::i;:::-;3266:7:::1;:15:::0;;-1:-1:-1;;3266:15:0::1;::::0;;5763:508::o;431:151::-;225:6;;-1:-1:-1;;;;;225:6:0;211:10;:20;203:57;;;;-1:-1:-1;;;203:57:0;;;;;;;:::i;:::-;515:6:::1;:17:::0;;-1:-1:-1;;;;;;515:17:0::1;-1:-1:-1::0;;;;;515:17:0;::::1;::::0;;::::1;::::0;;;549:30:::1;::::0;4114:51:1;;;549:30:0::1;::::0;4102:2:1;4087:18;549:30:0::1;;;;;;;431:151:::0;:::o;9327:277::-;9448:12;;9392:4;;;;9448:12;;9443:122;;;-1:-1:-1;9479:4:0;9443:122;;;-1:-1:-1;;;;;9506:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;9524:16:0;;;;;;:8;:16;;;;;;;;9506:34;9502:63;;;-1:-1:-1;9558:4:0;9585:11;9327:277;-1:-1:-1;;9327:277:0:o;7409:1347::-;7501:4;-1:-1:-1;;;;;7526:20:0;;7518:59;;;;-1:-1:-1;;;7518:59:0;;13156:2:1;7518:59:0;;;13138:21:1;13195:2;13175:18;;;13168:30;13234:28;13214:18;;;13207:56;13280:18;;7518:59:0;12954:350:1;7518:59:0;7593:12;;;;7588:91;;-1:-1:-1;;;;;7617:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;7635:16:0;;;;;;:8;:16;;;;;;;;7617:34;7609:67;;;;-1:-1:-1;;;7609:67:0;;13511:2:1;7609:67:0;;;13493:21:1;13550:2;13530:18;;;13523:30;-1:-1:-1;;;13569:18:1;;;13562:50;13629:18;;7609:67:0;13309:344:1;7609:67:0;7695:7;;;;;;;7694:8;:28;;;;-1:-1:-1;;;;;;7706:16:0;;;;;;:5;:16;;;;;;;;7694:28;:50;;;;;7726:18;7737:6;7726:10;:18::i;:::-;7689:83;;;7749:20;:18;:20::i;:::-;7805:11;;7789:12;:27;7784:449;;7853:12;;7838;:27;:44;;;;-1:-1:-1;;;;;;7869:13:0;;;;;;:5;:13;;;;;;;;7838:44;7834:131;;;-1:-1:-1;;;;;7912:22:0;;7925:9;7912:22;7904:44;;;;-1:-1:-1;;;7904:44:0;;13860:2:1;7904:44:0;;;13842:21:1;13899:1;13879:18;;;13872:29;-1:-1:-1;;;13917:18:1;;;13910:39;13966:18;;7904:44:0;13658:332:1;7904:44:0;7998:12;;:18;;8013:3;7998:18;:::i;:::-;7983:12;:33;:53;;;;-1:-1:-1;;;;;;8020:16:0;;;;;;:5;:16;;;;;;;;7983:53;:80;;;;-1:-1:-1;;;;;;8040:23:0;;8058:4;8040:23;;7983:80;7979:243;;;8096:12;8085:24;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8085:35:0;;;;;;;;;:40;;8124:1;;8085:24;:40;;8124:1;;8085:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8163:12;-1:-1:-1;8152:24:0;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8152:35:0;;;;;;;;;;8191:1;8152:35;;:40;;;-1:-1:-1;8144:62:0;;;;-1:-1:-1;;;8144:62:0;;13860:2:1;8144:62:0;;;13842:21:1;13899:1;13879:18;;;13872:29;-1:-1:-1;;;13917:18:1;;;13910:39;13966:18;;8144:62:0;13658:332:1;8144:62:0;-1:-1:-1;;;;;8250:23:0;;8268:4;8250:23;;;;:53;;-1:-1:-1;;;;;;8277:26:0;;8298:4;8277:26;;8250:53;:73;;;;-1:-1:-1;8317:6:0;;-1:-1:-1;;;;;8307:16:0;;;8317:6;;8307:16;;8250:73;8245:176;;;8350:39;8363:6;8371:9;8382:6;8350:12;:39::i;:::-;8342:66;;;;-1:-1:-1;;;8342:66:0;;14197:2:1;8342:66:0;;;14179:21:1;14236:2;14216:18;;;14209:30;-1:-1:-1;;;14255:18:1;;;14248:44;14309:18;;8342:66:0;13995:338:1;8342:66:0;8433:18;8454:40;8468:6;8476:9;8487:6;8454:13;:40::i;:::-;8433:61;-1:-1:-1;8505:23:0;8531:19;8433:61;8531:6;:19;:::i;:::-;-1:-1:-1;;;;;8561:17:0;;;;;;:9;:17;;;;;:27;;8505:45;;-1:-1:-1;8582:6:0;;8561:17;;;:27;;8582:6;;8561:27;:::i;:::-;;;;;;;;8615:10;8599:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8636:20:0;;;;;;:9;:20;;;;;:39;;8660:15;;8636:20;:39;;8660:15;;8636:39;:::i;:::-;;;;;;;;8708:9;-1:-1:-1;;;;;8691:35:0;8700:6;-1:-1:-1;;;;;8691:35:0;;8719:6;8691:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;8691:35:0;;;;;;;;-1:-1:-1;8744:4:0;;7409:1347;-1:-1:-1;;;;;7409:1347:0:o;6279:255::-;6367:28;6382:12;6367:14;:28::i;:::-;6406:18;;6500:7;;6406:120;;-1:-1:-1;;;6406:120:0;;6473:4;6406:120;;;14679:34:1;14729:18;;;14722:34;;;6406:18:0;14772::1;;;14765:34;;;14815:18;;;14808:34;-1:-1:-1;;;;;6500:7:0;;;14858:19:1;;;14851:44;6509:15:0;14911:19:1;;;14904:35;6406:18:0;;;:34;;6448:13;;14613:19:1;;6406:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6542:259::-;6621:3;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;;:13;:31;:::i;:::-;6602:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6586:9;:38;6671:3;1835:13;1770:1;1835:2;:13;:::i;:::-;1818:31;;:13;:31;:::i;:::-;6652:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6636:13;:38;6699:12;6685:11;:26;;;-1:-1:-1;6737:12:0;:26;;6699:12;6737:26;:::i;:::-;6722:12;:41;6774:12;:19;;-1:-1:-1;;6774:19:0;6789:4;6774:19;;;6542:259::o;6809:590::-;6864:4;6881:11;6922:1;6907:12;;:16;6903:465;;;6967:10;;-1:-1:-1;;;;;6967:10:0;;;6941:13;6957:21;;;:9;:21;;;;;;;7010:34;;-1:-1:-1;;;7010:34:0;;;;;4114:51:1;;;;6957:21:0;6941:13;;7017:4;7010:22;;;;;;4087:18:1;;7010:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6993:51;-1:-1:-1;7060:16:0;7101:5;7080:17;6993:51;7080:8;:17;:::i;:::-;7079:27;;;;:::i;:::-;7060:46;;7137:12;;7125:8;:24;7121:208;;7186:12;7175:24;;;;:10;:24;;;;;;7202:1;7175:24;;;;:28;7171:143;;;7276:12;7265:24;;;;:10;:24;;;;;:29;;7237:4;;-1:-1:-1;7237:4:0;;7265:24;:29;;7237:4;;7265:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7171:143;6925:419;;;6903:465;;;-1:-1:-1;7361:4:0;7385:6;6809:590;-1:-1:-1;;6809:590:0:o;12652:740::-;3237:7;:14;;-1:-1:-1;;3237:14:0;;;;;12742:12:::1;::::0;12792:8:::1;::::0;12770:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;12804:12:0::1;::::0;::::1;;12770:46;12765:620;;;12861:8;;12839:18;:30;12834:72;;-1:-1:-1::0;12895:8:0::1;::::0;12834:72:::1;12959:18:::0;13018:13:::1;1770:1;13018:2;:13;:::i;:::-;13014:17;::::0;:1:::1;:17;:::i;:::-;12997:14;:34;12993:230;;;13071:4;13053:24;::::0;;;:9:::1;:24;::::0;;;;:46;;13081:18;;13053:24;:46:::1;::::0;13081:18;;13053:46:::1;:::i;:::-;::::0;;;-1:-1:-1;13118:36:0::1;::::0;-1:-1:-1;13139:14:0;13118:20:::1;:36::i;:::-;13189:18;13173:12;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12993:230:0::1;13267:21;13306:23:::0;;13303:71:::1;;13333:38;13351:19;13333:17;:38::i;:::-;12819:566;;12765:620;-1:-1:-1::0;3266:7:0;:15;;-1:-1:-1;;3266:15:0;;;12652:740::o;8764:555::-;8929:12;;8868:4;;8909;;8929:12;;:33;;;;-1:-1:-1;;;;;;8946:16:0;;;;;;:8;:16;;;;;;;;8945:17;8929:33;:57;;;;-1:-1:-1;;;;;;8967:19:0;;;;;;:8;:19;;;;;;;;8966:20;8929:57;8924:354;;;9026:9;;9009:14;:26;9004:263;;;-1:-1:-1;9077:5:0;9004:263;;;-1:-1:-1;;;;;9142:16:0;;;;;;:5;:16;;;;;;;;9141:17;:76;;;;-1:-1:-1;9203:13:0;;-1:-1:-1;;;;;9163:20:0;;;;;;:9;:20;;;;;;:37;;9186:14;;9163:37;:::i;:::-;:53;9141:76;9118:149;;;-1:-1:-1;9259:5:0;9295:16;8764:555;-1:-1:-1;;;;8764:555:0:o;9612:730::-;9763:12;;9709:7;;;;9763:12;;9762:13;;:31;;-1:-1:-1;;;;;;9779:14:0;;;;;;:6;:14;;;;;;;;9762:31;:52;;;-1:-1:-1;;;;;;9797:17:0;;;;;;:6;:17;;;;;;;;9762:52;9757:551;;;-1:-1:-1;9845:1:0;9757:551;;;9882:1;9868:11;;:15;:49;;;;-1:-1:-1;9902:11:0;;:15;;9916:1;9902:15;:::i;:::-;9887:12;:30;9868:49;9864:444;;;-1:-1:-1;;;;;9939:13:0;;;;;;:5;:13;;;;;;;;9934:202;;;9996:11;;10010:3;;9987:20;;9996:11;;;;;9987:6;:20;:::i;:::-;:26;;;;:::i;:::-;9975:38;;9864:444;;9934:202;-1:-1:-1;;;;;10041:16:0;;;;;;:5;:16;;;;;;;;10036:100;;;10101:12;;10116:3;;10092:21;;10101:12;;10092:6;:21;:::i;10036:100::-;9864:444;;;10171:1;10157:11;;:15;:50;;;;-1:-1:-1;10192:11:0;;:15;;10206:1;10192:15;:::i;:::-;10176:12;:31;;10157:50;10153:155;;;10250:3;10236:11;:6;10245:2;10236:11;:::i;:::-;:17;;;;:::i;:::-;10224:29;9612:730;-1:-1:-1;;;;;9612:730:0:o;5438:317::-;5529:4;5509:26;;;;:11;:26;;;;;;;;2867:42;5509:46;;;;;;;;:61;-1:-1:-1;5504:244:0;;;5608:4;5588:26;;;;:11;:26;;;;;;;;2867:42;5588:46;;;;;;;;;;-1:-1:-1;;5588:66:0;;;;5674:62;;1361:25:1;;;2867:42:0;;5608:4;5674:62;;1334:18:1;5674:62:0;;;;;;;5504:244;5438:317;:::o;13400:348::-;13470:27;13485:11;13470:14;:27::i;:::-;13532:16;;;13546:1;13532:16;;;;;;;;13508:21;;13532:16;;;;;;;;;;-1:-1:-1;13532:16:0;13508:40;;13578:4;13559;13564:1;13559:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;13559:25:0;;;-1:-1:-1;;;;;13559:25:0;;;;;13605:4;13595;13600:1;13595:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13595:14:0;;;:7;;;;;;;;;:14;13621:18;;:119;;-1:-1:-1;;;13621:119:0;;:18;;;:69;;:119;;13691:11;;13621:18;;13705:4;;13718;;13724:15;;13621:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13459:289;13400:348;:::o;13756:103::-;13818:16;;:33;;-1:-1:-1;;;;;13818:16:0;;;;:33;;;;;13844:6;;13818:16;:33;:16;:33;13844:6;13818:16;:33;;;;;;;;;;;;;;;;;;;;;13756:103;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:160::-;1462:20;;1518:13;;1511:21;1501:32;;1491:60;;1547:1;1544;1537:12;1491:60;1397:160;;;:::o;1562:383::-;1633:6;1641;1649;1702:2;1690:9;1681:7;1677:23;1673:32;1670:52;;;1718:1;1715;1708:12;1670:52;1757:9;1744:23;1776:31;1801:5;1776:31;:::i;:::-;1826:5;-1:-1:-1;1850:35:1;1881:2;1866:18;;1850:35;:::i;:::-;1840:45;;1904:35;1935:2;1924:9;1920:18;1904:35;:::i;:::-;1894:45;;1562:383;;;;;:::o;1950:456::-;2027:6;2035;2043;2096:2;2084:9;2075:7;2071:23;2067:32;2064:52;;;2112:1;2109;2102:12;2064:52;2151:9;2138:23;2170:31;2195:5;2170:31;:::i;:::-;2220:5;-1:-1:-1;2277:2:1;2262:18;;2249:32;2290:33;2249:32;2290:33;:::i;:::-;1950:456;;2342:7;;-1:-1:-1;;;2396:2:1;2381:18;;;;2368:32;;1950:456::o;2600:247::-;2659:6;2712:2;2700:9;2691:7;2687:23;2683:32;2680:52;;;2728:1;2725;2718:12;2680:52;2767:9;2754:23;2786:31;2811:5;2786:31;:::i;3125:159::-;3192:20;;3252:6;3241:18;;3231:29;;3221:57;;3274:1;3271;3264:12;3289:256;3355:6;3363;3416:2;3404:9;3395:7;3391:23;3387:32;3384:52;;;3432:1;3429;3422:12;3384:52;3455:28;3473:9;3455:28;:::i;:::-;3445:38;;3502:37;3535:2;3524:9;3520:18;3502:37;:::i;:::-;3492:47;;3289:256;;;;;:::o;3550:156::-;3616:20;;3676:4;3665:16;;3655:27;;3645:55;;3696:1;3693;3686:12;3711:252;3775:6;3783;3836:2;3824:9;3815:7;3811:23;3807:32;3804:52;;;3852:1;3849;3842:12;3804:52;3875:27;3892:9;3875:27;:::i;:::-;3865:37;;3921:36;3953:2;3942:9;3938:18;3921:36;:::i;4176:388::-;4244:6;4252;4305:2;4293:9;4284:7;4280:23;4276:32;4273:52;;;4321:1;4318;4311:12;4273:52;4360:9;4347:23;4379:31;4404:5;4379:31;:::i;:::-;4429:5;-1:-1:-1;4486:2:1;4471:18;;4458:32;4499:33;4458:32;4499:33;:::i;:::-;4551:7;4541:17;;;4176:388;;;;;:::o;4569:163::-;4636:20;;4696:10;4685:22;;4675:33;;4665:61;;4722:1;4719;4712:12;4737:474;4827:6;4835;4843;4851;4859;4912:3;4900:9;4891:7;4887:23;4883:33;4880:53;;;4929:1;4926;4919:12;4880:53;4952:28;4970:9;4952:28;:::i;:::-;4942:38;;4999:37;5032:2;5021:9;5017:18;4999:37;:::i;:::-;4989:47;;5055:37;5088:2;5077:9;5073:18;5055:37;:::i;:::-;5045:47;;5111:37;5144:2;5133:9;5129:18;5111:37;:::i;:::-;5101:47;;5167:38;5200:3;5189:9;5185:19;5167:38;:::i;:::-;5157:48;;4737:474;;;;;;;;:::o;5476:127::-;5537:10;5532:3;5528:20;5525:1;5518:31;5568:4;5565:1;5558:15;5592:4;5589:1;5582:15;5608:416;5697:1;5734:5;5697:1;5748:270;5769:7;5759:8;5756:21;5748:270;;;5828:4;5824:1;5820:6;5816:17;5810:4;5807:27;5804:53;;;5837:18;;:::i;:::-;5887:7;5877:8;5873:22;5870:55;;;5907:16;;;;5870:55;5986:22;;;;5946:15;;;;5748:270;;;5752:3;5608:416;;;;;:::o;6029:806::-;6078:5;6108:8;6098:80;;-1:-1:-1;6149:1:1;6163:5;;6098:80;6197:4;6187:76;;-1:-1:-1;6234:1:1;6248:5;;6187:76;6279:4;6297:1;6292:59;;;;6365:1;6360:130;;;;6272:218;;6292:59;6322:1;6313:10;;6336:5;;;6360:130;6397:3;6387:8;6384:17;6381:43;;;6404:18;;:::i;:::-;-1:-1:-1;;6460:1:1;6446:16;;6475:5;;6272:218;;6574:2;6564:8;6561:16;6555:3;6549:4;6546:13;6542:36;6536:2;6526:8;6523:16;6518:2;6512:4;6509:12;6505:35;6502:77;6499:159;;;-1:-1:-1;6611:19:1;;;6643:5;;6499:159;6690:34;6715:8;6709:4;6690:34;:::i;:::-;6760:6;6756:1;6752:6;6748:19;6739:7;6736:32;6733:58;;;6771:18;;:::i;:::-;6809:20;;6029:806;-1:-1:-1;;;6029:806:1:o;6840:140::-;6898:5;6927:47;6968:4;6958:8;6954:19;6948:4;6927:47;:::i;6985:168::-;7058:9;;;7089;;7106:15;;;7100:22;;7086:37;7076:71;;7127:18;;:::i;7158:348::-;7360:2;7342:21;;;7399:2;7379:18;;;7372:30;7438:26;7433:2;7418:18;;7411:54;7497:2;7482:18;;7158:348::o;8201:128::-;8268:9;;;8289:11;;;8286:37;;;8303:18;;:::i;8334:217::-;8374:1;8400;8390:132;;8444:10;8439:3;8435:20;8432:1;8425:31;8479:4;8476:1;8469:15;8507:4;8504:1;8497:15;8390:132;-1:-1:-1;8536:9:1;;8334:217::o;8556:125::-;8621:9;;;8642:10;;;8639:36;;;8655:18;;:::i;9368:148::-;9456:4;9435:12;;;9449;;;9431:31;;9474:13;;9471:39;;;9490:18;;:::i;10220:255::-;10291:16;10339:10;;;10351;;;10335:27;10382:20;;;;10291:16;10421:24;;;10411:58;;10449:18;;:::i;:::-;10411:58;;10220:255;;;;:::o;12173:251::-;12243:6;12296:2;12284:9;12275:7;12271:23;12267:32;12264:52;;;12312:1;12309;12302:12;12264:52;12344:9;12338:16;12363:31;12388:5;12363:31;:::i;14950:306::-;15038:6;15046;15054;15107:2;15095:9;15086:7;15082:23;15078:32;15075:52;;;15123:1;15120;15113:12;15075:52;15152:9;15146:16;15136:26;;15202:2;15191:9;15187:18;15181:25;15171:35;;15246:2;15235:9;15231:18;15225:25;15215:35;;14950:306;;;;;:::o;15261:184::-;15331:6;15384:2;15372:9;15363:7;15359:23;15355:32;15352:52;;;15400:1;15397;15390:12;15352:52;-1:-1:-1;15423:16:1;;15261:184;-1:-1:-1;15261:184:1:o;15582:127::-;15643:10;15638:3;15634:20;15631:1;15624:31;15674:4;15671:1;15664:15;15698:4;15695:1;15688:15;15714:980;15976:4;16024:3;16013:9;16009:19;16055:6;16044:9;16037:25;16081:2;16119:6;16114:2;16103:9;16099:18;16092:34;16162:3;16157:2;16146:9;16142:18;16135:31;16186:6;16221;16215:13;16252:6;16244;16237:22;16290:3;16279:9;16275:19;16268:26;;16329:2;16321:6;16317:15;16303:29;;16350:1;16360:195;16374:6;16371:1;16368:13;16360:195;;;16439:13;;-1:-1:-1;;;;;16435:39:1;16423:52;;16530:15;;;;16495:12;;;;16471:1;16389:9;16360:195;;;-1:-1:-1;;;;;;;16611:32:1;;;;16606:2;16591:18;;16584:60;-1:-1:-1;;;16675:3:1;16660:19;16653:35;16572:3;15714:980;-1:-1:-1;;;15714:980:1:o

Swarm Source

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