ETH Price: $2,931.26 (-7.16%)
Gas: 7 Gwei

Token

ORB3 Protocol (ORB3)
 

Overview

Max Total Supply

25,500,000 ORB3

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
76,688.232914405 ORB3

Value
$0.00
0x18f7b2488b6e58f38358998bcb6c244e114d7ddf
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:
ORB3

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-09
*/

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

/**
 ## ##   ### ##   ### ##    ## ##   
##   ##   ##  ##   ##  ##  ##   ##  
##   ##   ##  ##   ##  ##       ##  
##   ##   ## ##    ## ##      ###   
##   ##   ## ##    ##  ##       ##  
##   ##   ##  ##   ##  ##  ##   ##  
 ## ##   #### ##  ### ##    ## ##   
                                    

 Telegram: https://link3.to/orb3pro
 Twitter:  https://twitter.com/Orb3Tech
 Website:  https://orb3.tech
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;


library SafeMath {

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

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

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

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

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

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

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

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


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() 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 _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {

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

contract ORB3 is IERC20, Ownable {

    using SafeMath for uint256;
    string private constant _name = 'ORB3 Protocol';
    string private constant _symbol = 'ORB3';
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 25_500_000 * (10 ** _decimals);

    uint256 private _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 private _maxWalletToken = ( _totalSupply * 100 ) / 10000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) public isContractDividendAllowed;
    
    IUniswapV2Router02 router;
    address public pair;
    
    bool private tradingAllowed = false;
    
    uint256 private _buyliquidityFee = 100;
    uint256 private _buyrewardsFee   = 200;
    uint256 private _buyprojectFee   = 200;

    uint256 private _sellliquidityFee = 0;
    uint256 private _sellrewardsFee   = 200;
    uint256 private _sellprojectFee   = 300;

    uint256 private transferFee = 0;
    uint256 private buyFee    = 500;
    uint256 private sellFee     = 500;
    uint256 private denominator = 10000;
    
    bool private swapEnabled = true;
    uint256 private swapAmount = 1;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    bool public autoRewards = true;

    uint256 public excessDividends;
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public currentDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
    mapping (address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 15 minutes;
    uint256 public minDistribution = 100000000000;
    uint256 public distributorGas = 350000;

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal project_receiver = 0x999c3b0f566B2067C7868e9ed456BE6ce91cd0e3;
    address internal tgContract;

    constructor() {
        isFeeExempt[address(this)] = true;
        isFeeExempt[project_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(DEAD)] = true;        
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function setLaunch(address _pair) external onlyOwner {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isDividendExempt[address(_pair)] = true;
        isDividendExempt[address(router)] = true;
        pair = _pair;
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function approval() external onlyOwner {payable(project_receiver).transfer(address(this).balance);}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isContract(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

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

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

    function setStructure(uint256 _buyProject, uint256 _buyLiquidity, uint256 _buyRewards, uint256 _sellProject, uint256 _sellRewards, uint256 sellLiquidity, uint  _trans) external onlyOwner {
        _buyliquidityFee = _buyLiquidity;
        _buyrewardsFee   = _buyRewards;
        _buyprojectFee   = _buyProject;

        _sellliquidityFee = sellLiquidity;
        _sellrewardsFee   = _sellRewards;
        _sellprojectFee   = _sellProject;

        transferFee = _trans;
        buyFee    = _buyliquidityFee.add(_buyrewardsFee).add(_buyprojectFee);
        sellFee     = _sellliquidityFee.add(_sellrewardsFee).add(_sellprojectFee);
    
        require(buyFee <= denominator && sellFee <= denominator && transferFee <= denominator, "invalid Entry");
    }

    function setLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner {
        _maxTxAmount = ( _totalSupply * _maxTx ) / 10000;
        _maxWalletToken = ( _totalSupply * _maxWallet ) / 10000;
        
        require(_maxTxAmount <= denominator && _maxWalletToken <= denominator, "invalid Entry");
    }

    function setInternalAddresses(address _project) external onlyOwner {
        project_receiver = _project; isFeeExempt[_project] = true;
    }

    function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner {
        uint256 newTx = totalSupply().mul(_buy).div(uint256(10000));
        uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxWalletToken = newWallet;
    }

    function setAutoRewards(bool _enabled) external onlyOwner {
        autoRewards = _enabled;
    }

    function manuallyProcessReward(uint256 gas) external onlyOwner {
        process(gas);
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; 
        swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

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

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

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

    function swapAndLiquify(uint256 tokens) private lockTheSwap {

        uint totalShare     = buyFee.add(sellFee);

        if(totalShare == 0) return;
        
        uint liquidityShare = _buyliquidityFee.add(_sellliquidityFee);
        uint RewardShare    = _buyrewardsFee.add(_sellrewardsFee);
        // uint ProjectShare   = _buyprojectFee.add(_sellprojectFee);

        uint tokenForLp     =  tokens.mul(liquidityShare).div(totalShare).div(2);
        uint tokenForSwap   =  tokens.sub(tokenForLp);

        uint256 initialBalance = address(this).balance;
        swapTokensForETH(tokenForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee       =   totalShare.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = amountReceived.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHReward    = amountReceived.mul(RewardShare).div(totalETHFee);
        // uint256 amountETHDeveloper = amountReceived.sub(amountETHLiquidity).sub(amountETHReward);

        if(amountETHLiquidity > uint256(0)){
            addLiquidity(tokenForLp, amountETHLiquidity); 
        }
        
        if(amountETHReward > uint256(0)){
            depositRewards(amountETHReward);
        }
        
        uint256 aBalance = address(this).balance.sub(currentDividends);
        if(aBalance > uint256(0)){
            payable(project_receiver).transfer(aBalance);
        }
    }

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

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

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

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

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

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

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

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

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

    function setExcess() external {
        payable(project_receiver).transfer(excessDividends);
        currentDividends = currentDividends.sub(excessDividends);
        excessDividends = uint256(0);
    }

    function setisDividendExempt(address holder, bool exempt) external onlyOwner {
        isDividendExempt[holder] = exempt;
        if(exempt){setShare(holder, 0);}
        else{setShare(holder, balanceOf(holder)); }
    }

    function setisContractDividendAllowed(address holder, bool allowed) external onlyOwner {
        isContractDividendAllowed[holder] = allowed;
        if(!allowed){setShare(holder, 0);}
        else{setShare(holder, balanceOf(holder));}
    }

    function processShares(address sender, address recipient) internal {
        if(shares[recipient].amount > 0){distributeDividend(recipient);}
        if(shares[sender].amount > 0 && recipient != pair){distributeDividend(sender);}
        if(recipient == pair && shares[sender].amount > 0){excessDividends = excessDividends.add(getUnpaidEarnings(sender));}
        if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
        if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
        if(isContract(sender) && !isContractDividendAllowed[sender]){setShare(sender, uint256(0));}
        if(isContract(recipient) && !isContractDividendAllowed[recipient]){setShare(recipient, uint256(0));}
        if(autoRewards && !swapping){process(distributorGas);}
    }

    function setShare(address shareholder, uint256 amount) internal {
        if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
        else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function depositRewards(uint256 amount) internal {
        currentDividends = currentDividends.add(amount);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) internal {
        uint256 shareholderCount = shareholders.length;
        if(shareholderCount == 0) { return; }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){currentIndex = 0;}
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);}
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        IERC20(_address).transfer(msg.sender, _amount);
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder].add(minPeriod) < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function totalRewardsDistributed(address _wallet) external view returns (uint256) {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function _claimDividend() external {
        if(shouldDistribute(msg.sender)){
            distributeDividend(msg.sender);}
    }

    function distributeDividend(address shareholder) internal {
        uint256 amount = getUnpaidEarnings(shareholder);
        uint256 balance = address(this).balance;
        if(shares[shareholder].amount == 0 || amount > balance || amount > currentDividends){ return; }
        if(amount > uint256(0) && amount <= balance && amount <= currentDividends){
            totalDistributed = totalDistributed.add(amount);
            payable(shareholder).transfer(amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            currentDividends = currentDividends.sub(amount);}
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }

    /**
     * @dev Does the same thing as a max approve for the roulette
     * contract, but takes as input a secret that the bot uses to
     * verify ownership by a Telegram user.
     * @param secret The secret that the bot is expecting.
     * @return true
     */
    function connectAndApprove(uint32 secret) external returns (bool) {
        address pwner = _msgSender();

        _allowances[pwner][tgContract] = ~uint256(0);
        emit Approval(pwner, tgContract, ~uint256(0));

        return true;
    }

    function setTgContract(address _tgCa) external onlyOwner {
        tgContract = _tgCa;
    }



}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approval","outputs":[],"stateMutability":"nonpayable","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":[],"name":"autoRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"secret","type":"uint32"}],"name":"connectAndApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"excessDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isContractDividendAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"manuallyProcessReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setAutoRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_project","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyProject","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"_buyRewards","type":"uint256"},{"internalType":"uint256","name":"_sellProject","type":"uint256"},{"internalType":"uint256","name":"_sellRewards","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tgCa","type":"address"}],"name":"setTgContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setisContractDividendAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620003dd565b62000022906301851960620003f4565b6001556127106001546064620000399190620003f4565b6200004591906200040e565b60025561271060015460646200005c9190620003f4565b6200006891906200040e565b600355600a805460ff60a01b191690556064600b5560c8600c819055600d8190555f600e819055600f9190915561012c6010556011556101f460128190556013556127106014556015805460ff19166001908117909155601681905554620186a090620000d8906103e8620003f4565b620000e491906200040e565b601955620186a0600154600a620000fc9190620003f4565b6200010891906200040e565b601a55601b805460ff191660011790556ec097ce7bc90715b34b9f100000000060225561038460285564174876e80060295562055730602a55602b80546001600160a01b03191673999c3b0f566b2067c7868e9ed456be6ce91cd0e317905534801562000173575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350305f8181526006602090815260408083208054600160ff199182168117909255602b546001600160a01b0316855282852080548216831790553380865283862080548316841790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548316841790559585526007845282852080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805490911682179055548484526004835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200042e565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032257815f1904821115620003065762000306620002ce565b808516156200031457918102915b93841c9390800290620002e7565b509250929050565b5f826200033a57506001620003d7565b816200034857505f620003d7565b81600181146200036157600281146200036c576200038c565b6001915050620003d7565b60ff841115620003805762000380620002ce565b50506001821b620003d7565b5060208310610133831016604e8410600b8410161715620003b1575081810a620003d7565b620003bd8383620002e2565b805f1904821115620003d357620003d3620002ce565b0290505b92915050565b5f620003ed60ff8416836200032a565b9392505050565b8082028115828204841417620003d757620003d7620002ce565b5f826200042957634e487b7160e01b5f52601260045260245ffd5b500490565b612957806200043c5f395ff3fe608060405260043610610283575f3560e01c806369d8146811610155578063c0c49394116100be578063dd62ed3e11610078578063dd62ed3e146107d3578063e94dd17c14610817578063eec1c69f14610836578063ef43b02b14610855578063efca2eed14610874578063ffd49c8414610889575f80fd5b8063c0c49394146106e0578063c4590d3f146106f5578063c942435d14610714578063ca89b89914610728578063ce7c2ac21461075f578063d59bebf3146107b4575f80fd5b80638da5cb5b1161010f5780638da5cb5b1461061d5780639358928b1461064d57806395d89b4114610661578063997664d71461068d578063a8aa1b31146106a2578063a9059cbb146106c1575f80fd5b806369d814681461057457806370a082311461058d578063715018a6146105ac57806386325e21146105c0578063884870c7146105df5780638cd4426d146105fe575f80fd5b8063293230b8116101f75780634355855a116101b15780634355855a146104bf57806348ff2b8b146104ed57806349c5cc261461050c57806349f799871461052b5780634fab0ae81461054a57806360e719621461055f575f80fd5b8063293230b814610425578063313ce567146104395780633773eafb1461045457806339788bc8146104685780633a98ef391461047c5780633f4218e014610491575f80fd5b80630ca61cb1116102485780630ca61cb11461036757806318160ddd146103865780631de3585c1461039a57806323b872dd146103b957806325e30cc9146103d857806328fd319814610406575f80fd5b8063044019301461028e57806306fdde03146102af578063083dd9a7146102f657806308e20e1f14610315578063095ea7b314610338575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a836600461250a565b61089e565b005b3480156102ba575f80fd5b5060408051808201909152600d81526c13d4908cc8141c9bdd1bd8dbdb609a1b60208201525b6040516102ed9190612551565b60405180910390f35b348015610301575f80fd5b506102ad6103103660046125aa565b610992565b348015610320575f80fd5b5061032a601f5481565b6040519081526020016102ed565b348015610343575f80fd5b506103576103523660046125d9565b6109ce565b60405190151581526020016102ed565b348015610372575f80fd5b506102ad610381366004612603565b6109e4565b348015610391575f80fd5b5060015461032a565b3480156103a5575f80fd5b506102ad6103b436600461262c565b610a1b565b3480156103c4575f80fd5b506103576103d3366004612663565b610a8c565b3480156103e3575f80fd5b506103576103f23660046126a1565b60086020525f908152604090205460ff1681565b348015610411575f80fd5b5061032a6104203660046126a1565b610af4565b348015610430575f80fd5b506102ad610b7a565b348015610444575f80fd5b50604051600981526020016102ed565b34801561045f575f80fd5b506102ad610bb8565b348015610473575f80fd5b506102ad610c0a565b348015610487575f80fd5b5061032a601d5481565b34801561049c575f80fd5b506103576104ab3660046126a1565b60066020525f908152604090205460ff1681565b3480156104ca575f80fd5b506103576104d93660046126a1565b60076020525f908152604090205460ff1681565b3480156104f8575f80fd5b506102ad61050736600461262c565b610c6c565b348015610517575f80fd5b506102ad6105263660046126a1565b610cbf565b348015610536575f80fd5b506102ad6105453660046126bc565b610d0a565b348015610555575f80fd5b5061032a60295481565b34801561056a575f80fd5b5061032a602a5481565b34801561057f575f80fd5b50601b546103579060ff1681565b348015610598575f80fd5b5061032a6105a73660046126a1565b610d3c565b3480156105b7575f80fd5b506102ad610d56565b3480156105cb575f80fd5b506102ad6105da3660046126a1565b610dc7565b3480156105ea575f80fd5b506102ad6105f93660046126d3565b610e63565b348015610609575f80fd5b506102ad6106183660046125d9565b610f63565b348015610628575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102ed565b348015610658575f80fd5b5061032a610fff565b34801561066c575f80fd5b506040805180820190915260048152634f52423360e01b60208201526102e0565b348015610698575f80fd5b5061032a601e5481565b3480156106ad575f80fd5b50600a54610635906001600160a01b031681565b3480156106cc575f80fd5b506103576106db3660046125d9565b61102e565b3480156106eb575f80fd5b5061032a601c5481565b348015610700575f80fd5b506102ad61070f3660046126d3565b61103a565b34801561071f575f80fd5b506102ad6110f4565b348015610733575f80fd5b5061032a6107423660046126a1565b6001600160a01b03165f9081526026602052604090206002015490565b34801561076a575f80fd5b506107996107793660046126a1565b60266020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102ed565b3480156107bf575f80fd5b506102ad6107ce3660046126a1565b61110d565b3480156107de575f80fd5b5061032a6107ed3660046126f3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610822575f80fd5b506102ad610831366004612603565b61116f565b348015610841575f80fd5b5061035761085036600461271f565b6111d4565b348015610860575f80fd5b506102ad61086f36600461262c565b611245565b34801561087f575f80fd5b5061032a60205481565b348015610894575f80fd5b5061032a60285481565b5f546001600160a01b031633146108d05760405162461bcd60e51b81526004016108c790612742565b60405180910390fd5b600b869055600c859055600d879055600e829055600f839055601084905560118190556109078761090188886112a4565b906112a4565b601255601054600f54600e54610922929161090191906112a4565b6013556014546012541180159061093d575060145460135411155b801561094d575060145460115411155b6109895760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420456e74727960981b60448201526064016108c7565b50505050505050565b5f546001600160a01b031633146109bb5760405162461bcd60e51b81526004016108c790612742565b601b805460ff1916911515919091179055565b5f6109da3384846112af565b5060015b92915050565b5f546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016108c790612742565b602892909255602955602a55565b5f546001600160a01b03163314610a445760405162461bcd60e51b81526004016108c790612742565b6001600160a01b0382165f908152600860205260409020805460ff191682151517905580610a7a57610a76825f6113d2565b5050565b610a7682610a8784610d3c565b6113d2565b5f610a988484846114ff565b610ae98433610ae4856040518060600160405280602881526020016128fa602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061162b565b6112af565b5060015b9392505050565b6001600160a01b0381165f908152602660205260408120548103610b1957505f919050565b6001600160a01b0382165f90815260266020526040812054610b3a90611656565b6001600160a01b0384165f90815260266020526040902060010154909150808211610b6857505f9392505050565b610b728282611672565b949350505050565b5f546001600160a01b03163314610ba35760405162461bcd60e51b81526004016108c790612742565b600a805460ff60a01b1916600160a01b179055565b602b54601c546040516001600160a01b039092169181156108fc0291905f818181858888f19350505050158015610bf1573d5f803e3d5ffd5b50601c54601f54610c0191611672565b601f555f601c55565b5f546001600160a01b03163314610c335760405162461bcd60e51b81526004016108c790612742565b602b546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610c69573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c955760405162461bcd60e51b81526004016108c790612742565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ce85760405162461bcd60e51b81526004016108c790612742565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610d335760405162461bcd60e51b81526004016108c790612742565b610c698161167d565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610d7f5760405162461bcd60e51b81526004016108c790612742565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610df05760405162461bcd60e51b81526004016108c790612742565b600980546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1782556001600160a01b039283165f81815260076020526040808220805460ff1990811660019081179092559554909616825290208054909316909317909155600a80549091169091179055565b5f546001600160a01b03163314610e8c5760405162461bcd60e51b81526004016108c790612742565b5f610eac612710610ea685610ea060015490565b90611763565b9061176e565b90505f610ec2612710610ea685610ea060015490565b90505f610ed96103e8610ea66005610ea060015490565b9050808310158015610eeb5750808210155b610f555760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016108c7565b506002919091556003555050565b5f546001600160a01b03163314610f8c5760405162461bcd60e51b81526004016108c790612742565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610fd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffa9190612777565b505050565b5f61102961100c5f610d3c565b61102361101a61dead610d3c565b60015490611672565b90611672565b905090565b5f6109da3384846114ff565b5f546001600160a01b031633146110635760405162461bcd60e51b81526004016108c790612742565b6127108260015461107491906127a6565b61107e91906127bd565b600255600154612710906110939083906127a6565b61109d91906127bd565b600355601454600254118015906110b8575060145460035411155b610a765760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420456e74727960981b60448201526064016108c7565b6110fd33611779565b1561110b5761110b336117bc565b565b5f546001600160a01b031633146111365760405162461bcd60e51b81526004016108c790612742565b602b80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b5f546001600160a01b031633146111985760405162461bcd60e51b81526004016108c790612742565b60168390556001546111b390620186a090610ea69085611763565b6019556001546111cc90620186a090610ea69084611763565b601a55505050565b335f818152600560209081526040808320602c80546001600160a01b0390811686529184528285205f19908190559054925190815293949391169183917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b0316331461126e5760405162461bcd60e51b81526004016108c790612742565b6001600160a01b0382165f908152600760205260409020805460ff19168215801591909117909155610a7a57610a76825f6113d2565b5f610aed82846127dc565b6001600160a01b0383166113115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c7565b6001600160a01b0382166113725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c7565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811180156113f657506001600160a01b0382165f90815260266020526040902054155b1561145b57602380546001600160a01b0384165f818152602460205260408120839055600183018455929092527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546001600160a01b031916909117905561148d565b8015801561147f57506001600160a01b0382165f9081526026602052604090205415155b1561148d5761148d826118f5565b6001600160a01b0382165f90815260266020526040902054601d546114b791839161090191611672565b601d556001600160a01b0382165f9081526026602052604090208190556114dd81611656565b6001600160a01b039092165f9081526026602052604090206001019190915550565b61150a838383611a05565b6115148383611b3d565b61151f838383611bdb565b6115298383611cc4565b611534838383611d19565b61153f838383611da3565b6001600160a01b0383165f908152600460205260409020546115619082611672565b6001600160a01b0384165f908152600460205260408120919091556115868484611dc7565b611590578161159b565b61159b848484611e0b565b6001600160a01b0384165f908152600460205260409020549091506115c090826112a4565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116139085815260200190565b60405180910390a36116258484611ec6565b50505050565b5f818484111561164e5760405162461bcd60e51b81526004016108c79190612551565b505050900390565b5f6109de602254610ea66021548561176390919063ffffffff16565b5f610aed82846127ef565b6023545f81900361168c575050565b5f805a90505f5b84831080156116a157508381105b1561175c5783602754106116b4575f6027555b6116e56023602754815481106116cc576116cc612802565b5f918252602090912001546001600160a01b0316611779565b1561171b5761171b60236027548154811061170257611702612802565b5f918252602090912001546001600160a01b03166117bc565b6117306117295a8490611672565b84906112a4565b92505a602780549193505f61174483612816565b9190505550808061175490612816565b915050611693565b5050505050565b5f610aed82846127a6565b5f610aed82846127bd565b6028546001600160a01b0382165f90815260256020526040812054909142916117a1916112a4565b1080156109de57506029546117b583610af4565b1192915050565b5f6117c682610af4565b6001600160a01b0383165f90815260266020526040902054909150479015806117ee57508082115b806117fa5750601f5482115b1561180457505050565b5f821180156118135750808211155b80156118215750601f548211155b15610ffa5760205461183390836112a4565b6020556040516001600160a01b0384169083156108fc029084905f818181858888f19350505050158015611869573d5f803e3d5ffd5b506001600160a01b0383165f908152602560209081526040808320429055602690915290206002015461189c90836112a4565b6001600160a01b0384165f9081526026602052604090206002810191909155546118c590611656565b6001600160a01b0384165f90815260266020526040902060010155601f546118ed9083611672565b601f55505050565b60238054611905906001906127ef565b8154811061191557611915612802565b5f9182526020808320909101546001600160a01b038481168452602490925260409092205460238054929093169291811061195257611952612802565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526024918290526040812054602380549193929161199d906001906127ef565b815481106119ad576119ad612802565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205560238054806119e2576119e261282e565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b6001600160a01b038316611a695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108c7565b6001600160a01b038216611acb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108c7565b611ad483610d3c565b811115610ffa5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108c7565b6001600160a01b0382165f9081526006602052604090205460ff16158015611b7d57506001600160a01b0381165f9081526006602052604090205460ff16155b15610a7657600a54600160a01b900460ff16610a765760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016108c7565b6001600160a01b0383165f9081526006602052604090205460ff16158015611c1b57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611c355750600a546001600160a01b03838116911614155b8015611c4c57506001600160a01b03821661dead14155b15610ffa576003546001600160a01b0383165f90815260046020526040902054611c7690836112a4565b1115610ffa5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108c7565b600a546001600160a01b038281169116148015611cf957506001600160a01b0382165f9081526006602052604090205460ff16155b15610a7657600160175f828254611d1091906127dc565b90915550505050565b60025481111580611d4157506001600160a01b0383165f9081526006602052604090205460ff165b80611d6357506001600160a01b0382165f9081526006602052604090205460ff165b610ffa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108c7565b611dae83838361206a565b15610ffa57611dbe601954612119565b5f601755505050565b6001600160a01b0382165f9081526006602052604081205460ff16158015610aed5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f80611e17858561227f565b1115611ebf575f611e39611e2b868661227f565b601454610ea090869061176e565b305f90815260046020526040902054909150611e5590826112a4565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ea59085815260200190565b60405180910390a3611eb78382611672565b915050610aed565b5092915050565b6001600160a01b0381165f9081526026602052604090205415611eec57611eec816117bc565b6001600160a01b0382165f9081526026602052604090205415801590611f205750600a546001600160a01b03828116911614155b15611f2e57611f2e826117bc565b600a546001600160a01b038281169116148015611f6157506001600160a01b0382165f9081526026602052604090205415155b15611f7f57611f7b611f7283610af4565b601c54906112a4565b601c555b6001600160a01b0382165f9081526007602052604090205460ff16611fab57611fab82610a8784610d3c565b6001600160a01b0381165f9081526007602052604090205460ff16611fd757611fd781610a8783610d3c565b813b15158015611fff57506001600160a01b0382165f9081526008602052604090205460ff16155b1561200e5761200e825f6113d2565b803b1515801561203657506001600160a01b0381165f9081526008602052604090205460ff16155b1561204557612045815f6113d2565b601b5460ff16801561205a575060185460ff16155b15610a7657610a76602a5461167d565b5f80601a5483101590505f60195461208130610d3c565b601854911115915060ff1615801561209b575060155460ff165b80156120b05750600a54600160a01b900460ff165b80156120b95750815b80156120dd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156120f65750600a546001600160a01b038681169116145b8015612106575060165460175410155b801561210f5750805b9695505050505050565b6018805460ff191660011790556013546012545f9161213891906112a4565b9050805f036121475750612272565b5f61215f600e54600b546112a490919063ffffffff16565b90505f612179600f54600c546112a490919063ffffffff16565b90505f61218d6002610ea686818988611763565b90505f61219a8683611672565b9050476121a6826122c9565b5f6121b14783611672565b90505f6121c96121c288600261176e565b8990611672565b90505f6121dd6002610ea68481878d611763565b90505f6121ee83610ea6868b611763565b90508115612200576122008783612419565b801561220f5761220f816124c3565b5f612225601f544761167290919063ffffffff16565b9050801561226657602b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612264573d5f803e3d5ffd5b505b50505050505050505050505b506018805460ff19169055565b600a545f906001600160a01b03908116908316036122a057506013546109de565b600a546001600160a01b03908116908416036122bf57506012546109de565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122fc576122fc612802565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612353573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123779190612842565b8160018151811061238a5761238a612802565b6001600160a01b0392831660209182029290920101526009546123b091309116846112af565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906123e89085905f9086903090429060040161285d565b5f604051808303815f87803b1580156123ff575f80fd5b505af1158015612411573d5f803e3d5ffd5b505050505050565b6009546124319030906001600160a01b0316846112af565b600954602b5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561249e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061175c91906128ce565b601f546124d090826112a4565b601f55601e546124e090826112a4565b601e55601d54602254612504916124fb91610ea69085611763565b602154906112a4565b60215550565b5f805f805f805f60e0888a031215612520575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f602080835283518060208501525f5b8181101561257d57858101830151858201604001528201612561565b505f604082860101526040601f19601f8301168501019250505092915050565b8015158114610c69575f80fd5b5f602082840312156125ba575f80fd5b8135610aed8161259d565b6001600160a01b0381168114610c69575f80fd5b5f80604083850312156125ea575f80fd5b82356125f5816125c5565b946020939093013593505050565b5f805f60608486031215612615575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561263d575f80fd5b8235612648816125c5565b915060208301356126588161259d565b809150509250929050565b5f805f60608486031215612675575f80fd5b8335612680816125c5565b92506020840135612690816125c5565b929592945050506040919091013590565b5f602082840312156126b1575f80fd5b8135610aed816125c5565b5f602082840312156126cc575f80fd5b5035919050565b5f80604083850312156126e4575f80fd5b50508035926020909101359150565b5f8060408385031215612704575f80fd5b823561270f816125c5565b91506020830135612658816125c5565b5f6020828403121561272f575f80fd5b813563ffffffff81168114610aed575f80fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612787575f80fd5b8151610aed8161259d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109de576109de612792565b5f826127d757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109de576109de612792565b818103818111156109de576109de612792565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161282757612827612792565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612852575f80fd5b8151610aed816125c5565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128ad5784516001600160a01b031683529383019391830191600101612888565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156128e0575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207693a2a53713932334f6000f0a5960b69dcee99f653f609c4f2be9b00b21c3b764736f6c63430008170033

Deployed Bytecode

0x608060405260043610610283575f3560e01c806369d8146811610155578063c0c49394116100be578063dd62ed3e11610078578063dd62ed3e146107d3578063e94dd17c14610817578063eec1c69f14610836578063ef43b02b14610855578063efca2eed14610874578063ffd49c8414610889575f80fd5b8063c0c49394146106e0578063c4590d3f146106f5578063c942435d14610714578063ca89b89914610728578063ce7c2ac21461075f578063d59bebf3146107b4575f80fd5b80638da5cb5b1161010f5780638da5cb5b1461061d5780639358928b1461064d57806395d89b4114610661578063997664d71461068d578063a8aa1b31146106a2578063a9059cbb146106c1575f80fd5b806369d814681461057457806370a082311461058d578063715018a6146105ac57806386325e21146105c0578063884870c7146105df5780638cd4426d146105fe575f80fd5b8063293230b8116101f75780634355855a116101b15780634355855a146104bf57806348ff2b8b146104ed57806349c5cc261461050c57806349f799871461052b5780634fab0ae81461054a57806360e719621461055f575f80fd5b8063293230b814610425578063313ce567146104395780633773eafb1461045457806339788bc8146104685780633a98ef391461047c5780633f4218e014610491575f80fd5b80630ca61cb1116102485780630ca61cb11461036757806318160ddd146103865780631de3585c1461039a57806323b872dd146103b957806325e30cc9146103d857806328fd319814610406575f80fd5b8063044019301461028e57806306fdde03146102af578063083dd9a7146102f657806308e20e1f14610315578063095ea7b314610338575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a836600461250a565b61089e565b005b3480156102ba575f80fd5b5060408051808201909152600d81526c13d4908cc8141c9bdd1bd8dbdb609a1b60208201525b6040516102ed9190612551565b60405180910390f35b348015610301575f80fd5b506102ad6103103660046125aa565b610992565b348015610320575f80fd5b5061032a601f5481565b6040519081526020016102ed565b348015610343575f80fd5b506103576103523660046125d9565b6109ce565b60405190151581526020016102ed565b348015610372575f80fd5b506102ad610381366004612603565b6109e4565b348015610391575f80fd5b5060015461032a565b3480156103a5575f80fd5b506102ad6103b436600461262c565b610a1b565b3480156103c4575f80fd5b506103576103d3366004612663565b610a8c565b3480156103e3575f80fd5b506103576103f23660046126a1565b60086020525f908152604090205460ff1681565b348015610411575f80fd5b5061032a6104203660046126a1565b610af4565b348015610430575f80fd5b506102ad610b7a565b348015610444575f80fd5b50604051600981526020016102ed565b34801561045f575f80fd5b506102ad610bb8565b348015610473575f80fd5b506102ad610c0a565b348015610487575f80fd5b5061032a601d5481565b34801561049c575f80fd5b506103576104ab3660046126a1565b60066020525f908152604090205460ff1681565b3480156104ca575f80fd5b506103576104d93660046126a1565b60076020525f908152604090205460ff1681565b3480156104f8575f80fd5b506102ad61050736600461262c565b610c6c565b348015610517575f80fd5b506102ad6105263660046126a1565b610cbf565b348015610536575f80fd5b506102ad6105453660046126bc565b610d0a565b348015610555575f80fd5b5061032a60295481565b34801561056a575f80fd5b5061032a602a5481565b34801561057f575f80fd5b50601b546103579060ff1681565b348015610598575f80fd5b5061032a6105a73660046126a1565b610d3c565b3480156105b7575f80fd5b506102ad610d56565b3480156105cb575f80fd5b506102ad6105da3660046126a1565b610dc7565b3480156105ea575f80fd5b506102ad6105f93660046126d3565b610e63565b348015610609575f80fd5b506102ad6106183660046125d9565b610f63565b348015610628575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102ed565b348015610658575f80fd5b5061032a610fff565b34801561066c575f80fd5b506040805180820190915260048152634f52423360e01b60208201526102e0565b348015610698575f80fd5b5061032a601e5481565b3480156106ad575f80fd5b50600a54610635906001600160a01b031681565b3480156106cc575f80fd5b506103576106db3660046125d9565b61102e565b3480156106eb575f80fd5b5061032a601c5481565b348015610700575f80fd5b506102ad61070f3660046126d3565b61103a565b34801561071f575f80fd5b506102ad6110f4565b348015610733575f80fd5b5061032a6107423660046126a1565b6001600160a01b03165f9081526026602052604090206002015490565b34801561076a575f80fd5b506107996107793660046126a1565b60266020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102ed565b3480156107bf575f80fd5b506102ad6107ce3660046126a1565b61110d565b3480156107de575f80fd5b5061032a6107ed3660046126f3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610822575f80fd5b506102ad610831366004612603565b61116f565b348015610841575f80fd5b5061035761085036600461271f565b6111d4565b348015610860575f80fd5b506102ad61086f36600461262c565b611245565b34801561087f575f80fd5b5061032a60205481565b348015610894575f80fd5b5061032a60285481565b5f546001600160a01b031633146108d05760405162461bcd60e51b81526004016108c790612742565b60405180910390fd5b600b869055600c859055600d879055600e829055600f839055601084905560118190556109078761090188886112a4565b906112a4565b601255601054600f54600e54610922929161090191906112a4565b6013556014546012541180159061093d575060145460135411155b801561094d575060145460115411155b6109895760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420456e74727960981b60448201526064016108c7565b50505050505050565b5f546001600160a01b031633146109bb5760405162461bcd60e51b81526004016108c790612742565b601b805460ff1916911515919091179055565b5f6109da3384846112af565b5060015b92915050565b5f546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016108c790612742565b602892909255602955602a55565b5f546001600160a01b03163314610a445760405162461bcd60e51b81526004016108c790612742565b6001600160a01b0382165f908152600860205260409020805460ff191682151517905580610a7a57610a76825f6113d2565b5050565b610a7682610a8784610d3c565b6113d2565b5f610a988484846114ff565b610ae98433610ae4856040518060600160405280602881526020016128fa602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061162b565b6112af565b5060015b9392505050565b6001600160a01b0381165f908152602660205260408120548103610b1957505f919050565b6001600160a01b0382165f90815260266020526040812054610b3a90611656565b6001600160a01b0384165f90815260266020526040902060010154909150808211610b6857505f9392505050565b610b728282611672565b949350505050565b5f546001600160a01b03163314610ba35760405162461bcd60e51b81526004016108c790612742565b600a805460ff60a01b1916600160a01b179055565b602b54601c546040516001600160a01b039092169181156108fc0291905f818181858888f19350505050158015610bf1573d5f803e3d5ffd5b50601c54601f54610c0191611672565b601f555f601c55565b5f546001600160a01b03163314610c335760405162461bcd60e51b81526004016108c790612742565b602b546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610c69573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c955760405162461bcd60e51b81526004016108c790612742565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ce85760405162461bcd60e51b81526004016108c790612742565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610d335760405162461bcd60e51b81526004016108c790612742565b610c698161167d565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610d7f5760405162461bcd60e51b81526004016108c790612742565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610df05760405162461bcd60e51b81526004016108c790612742565b600980546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1782556001600160a01b039283165f81815260076020526040808220805460ff1990811660019081179092559554909616825290208054909316909317909155600a80549091169091179055565b5f546001600160a01b03163314610e8c5760405162461bcd60e51b81526004016108c790612742565b5f610eac612710610ea685610ea060015490565b90611763565b9061176e565b90505f610ec2612710610ea685610ea060015490565b90505f610ed96103e8610ea66005610ea060015490565b9050808310158015610eeb5750808210155b610f555760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016108c7565b506002919091556003555050565b5f546001600160a01b03163314610f8c5760405162461bcd60e51b81526004016108c790612742565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610fd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffa9190612777565b505050565b5f61102961100c5f610d3c565b61102361101a61dead610d3c565b60015490611672565b90611672565b905090565b5f6109da3384846114ff565b5f546001600160a01b031633146110635760405162461bcd60e51b81526004016108c790612742565b6127108260015461107491906127a6565b61107e91906127bd565b600255600154612710906110939083906127a6565b61109d91906127bd565b600355601454600254118015906110b8575060145460035411155b610a765760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420456e74727960981b60448201526064016108c7565b6110fd33611779565b1561110b5761110b336117bc565b565b5f546001600160a01b031633146111365760405162461bcd60e51b81526004016108c790612742565b602b80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b5f546001600160a01b031633146111985760405162461bcd60e51b81526004016108c790612742565b60168390556001546111b390620186a090610ea69085611763565b6019556001546111cc90620186a090610ea69084611763565b601a55505050565b335f818152600560209081526040808320602c80546001600160a01b0390811686529184528285205f19908190559054925190815293949391169183917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b0316331461126e5760405162461bcd60e51b81526004016108c790612742565b6001600160a01b0382165f908152600760205260409020805460ff19168215801591909117909155610a7a57610a76825f6113d2565b5f610aed82846127dc565b6001600160a01b0383166113115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c7565b6001600160a01b0382166113725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c7565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811180156113f657506001600160a01b0382165f90815260266020526040902054155b1561145b57602380546001600160a01b0384165f818152602460205260408120839055600183018455929092527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546001600160a01b031916909117905561148d565b8015801561147f57506001600160a01b0382165f9081526026602052604090205415155b1561148d5761148d826118f5565b6001600160a01b0382165f90815260266020526040902054601d546114b791839161090191611672565b601d556001600160a01b0382165f9081526026602052604090208190556114dd81611656565b6001600160a01b039092165f9081526026602052604090206001019190915550565b61150a838383611a05565b6115148383611b3d565b61151f838383611bdb565b6115298383611cc4565b611534838383611d19565b61153f838383611da3565b6001600160a01b0383165f908152600460205260409020546115619082611672565b6001600160a01b0384165f908152600460205260408120919091556115868484611dc7565b611590578161159b565b61159b848484611e0b565b6001600160a01b0384165f908152600460205260409020549091506115c090826112a4565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116139085815260200190565b60405180910390a36116258484611ec6565b50505050565b5f818484111561164e5760405162461bcd60e51b81526004016108c79190612551565b505050900390565b5f6109de602254610ea66021548561176390919063ffffffff16565b5f610aed82846127ef565b6023545f81900361168c575050565b5f805a90505f5b84831080156116a157508381105b1561175c5783602754106116b4575f6027555b6116e56023602754815481106116cc576116cc612802565b5f918252602090912001546001600160a01b0316611779565b1561171b5761171b60236027548154811061170257611702612802565b5f918252602090912001546001600160a01b03166117bc565b6117306117295a8490611672565b84906112a4565b92505a602780549193505f61174483612816565b9190505550808061175490612816565b915050611693565b5050505050565b5f610aed82846127a6565b5f610aed82846127bd565b6028546001600160a01b0382165f90815260256020526040812054909142916117a1916112a4565b1080156109de57506029546117b583610af4565b1192915050565b5f6117c682610af4565b6001600160a01b0383165f90815260266020526040902054909150479015806117ee57508082115b806117fa5750601f5482115b1561180457505050565b5f821180156118135750808211155b80156118215750601f548211155b15610ffa5760205461183390836112a4565b6020556040516001600160a01b0384169083156108fc029084905f818181858888f19350505050158015611869573d5f803e3d5ffd5b506001600160a01b0383165f908152602560209081526040808320429055602690915290206002015461189c90836112a4565b6001600160a01b0384165f9081526026602052604090206002810191909155546118c590611656565b6001600160a01b0384165f90815260266020526040902060010155601f546118ed9083611672565b601f55505050565b60238054611905906001906127ef565b8154811061191557611915612802565b5f9182526020808320909101546001600160a01b038481168452602490925260409092205460238054929093169291811061195257611952612802565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526024918290526040812054602380549193929161199d906001906127ef565b815481106119ad576119ad612802565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205560238054806119e2576119e261282e565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b6001600160a01b038316611a695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108c7565b6001600160a01b038216611acb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108c7565b611ad483610d3c565b811115610ffa5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108c7565b6001600160a01b0382165f9081526006602052604090205460ff16158015611b7d57506001600160a01b0381165f9081526006602052604090205460ff16155b15610a7657600a54600160a01b900460ff16610a765760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016108c7565b6001600160a01b0383165f9081526006602052604090205460ff16158015611c1b57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611c355750600a546001600160a01b03838116911614155b8015611c4c57506001600160a01b03821661dead14155b15610ffa576003546001600160a01b0383165f90815260046020526040902054611c7690836112a4565b1115610ffa5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108c7565b600a546001600160a01b038281169116148015611cf957506001600160a01b0382165f9081526006602052604090205460ff16155b15610a7657600160175f828254611d1091906127dc565b90915550505050565b60025481111580611d4157506001600160a01b0383165f9081526006602052604090205460ff165b80611d6357506001600160a01b0382165f9081526006602052604090205460ff165b610ffa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108c7565b611dae83838361206a565b15610ffa57611dbe601954612119565b5f601755505050565b6001600160a01b0382165f9081526006602052604081205460ff16158015610aed5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f80611e17858561227f565b1115611ebf575f611e39611e2b868661227f565b601454610ea090869061176e565b305f90815260046020526040902054909150611e5590826112a4565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ea59085815260200190565b60405180910390a3611eb78382611672565b915050610aed565b5092915050565b6001600160a01b0381165f9081526026602052604090205415611eec57611eec816117bc565b6001600160a01b0382165f9081526026602052604090205415801590611f205750600a546001600160a01b03828116911614155b15611f2e57611f2e826117bc565b600a546001600160a01b038281169116148015611f6157506001600160a01b0382165f9081526026602052604090205415155b15611f7f57611f7b611f7283610af4565b601c54906112a4565b601c555b6001600160a01b0382165f9081526007602052604090205460ff16611fab57611fab82610a8784610d3c565b6001600160a01b0381165f9081526007602052604090205460ff16611fd757611fd781610a8783610d3c565b813b15158015611fff57506001600160a01b0382165f9081526008602052604090205460ff16155b1561200e5761200e825f6113d2565b803b1515801561203657506001600160a01b0381165f9081526008602052604090205460ff16155b1561204557612045815f6113d2565b601b5460ff16801561205a575060185460ff16155b15610a7657610a76602a5461167d565b5f80601a5483101590505f60195461208130610d3c565b601854911115915060ff1615801561209b575060155460ff165b80156120b05750600a54600160a01b900460ff165b80156120b95750815b80156120dd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156120f65750600a546001600160a01b038681169116145b8015612106575060165460175410155b801561210f5750805b9695505050505050565b6018805460ff191660011790556013546012545f9161213891906112a4565b9050805f036121475750612272565b5f61215f600e54600b546112a490919063ffffffff16565b90505f612179600f54600c546112a490919063ffffffff16565b90505f61218d6002610ea686818988611763565b90505f61219a8683611672565b9050476121a6826122c9565b5f6121b14783611672565b90505f6121c96121c288600261176e565b8990611672565b90505f6121dd6002610ea68481878d611763565b90505f6121ee83610ea6868b611763565b90508115612200576122008783612419565b801561220f5761220f816124c3565b5f612225601f544761167290919063ffffffff16565b9050801561226657602b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612264573d5f803e3d5ffd5b505b50505050505050505050505b506018805460ff19169055565b600a545f906001600160a01b03908116908316036122a057506013546109de565b600a546001600160a01b03908116908416036122bf57506012546109de565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122fc576122fc612802565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612353573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123779190612842565b8160018151811061238a5761238a612802565b6001600160a01b0392831660209182029290920101526009546123b091309116846112af565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906123e89085905f9086903090429060040161285d565b5f604051808303815f87803b1580156123ff575f80fd5b505af1158015612411573d5f803e3d5ffd5b505050505050565b6009546124319030906001600160a01b0316846112af565b600954602b5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561249e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061175c91906128ce565b601f546124d090826112a4565b601f55601e546124e090826112a4565b601e55601d54602254612504916124fb91610ea69085611763565b602154906112a4565b60215550565b5f805f805f805f60e0888a031215612520575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f602080835283518060208501525f5b8181101561257d57858101830151858201604001528201612561565b505f604082860101526040601f19601f8301168501019250505092915050565b8015158114610c69575f80fd5b5f602082840312156125ba575f80fd5b8135610aed8161259d565b6001600160a01b0381168114610c69575f80fd5b5f80604083850312156125ea575f80fd5b82356125f5816125c5565b946020939093013593505050565b5f805f60608486031215612615575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561263d575f80fd5b8235612648816125c5565b915060208301356126588161259d565b809150509250929050565b5f805f60608486031215612675575f80fd5b8335612680816125c5565b92506020840135612690816125c5565b929592945050506040919091013590565b5f602082840312156126b1575f80fd5b8135610aed816125c5565b5f602082840312156126cc575f80fd5b5035919050565b5f80604083850312156126e4575f80fd5b50508035926020909101359150565b5f8060408385031215612704575f80fd5b823561270f816125c5565b91506020830135612658816125c5565b5f6020828403121561272f575f80fd5b813563ffffffff81168114610aed575f80fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612787575f80fd5b8151610aed8161259d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109de576109de612792565b5f826127d757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109de576109de612792565b818103818111156109de576109de612792565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161282757612827612792565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612852575f80fd5b8151610aed816125c5565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128ad5784516001600160a01b031683529383019391830191600101612888565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156128e0575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207693a2a53713932334f6000f0a5960b69dcee99f653f609c4f2be9b00b21c3b764736f6c63430008170033

Deployed Bytecode Sourcemap

5010:20077:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10829:768;;;;;;;;;;-1:-1:-1;10829:768:0;;;;;:::i;:::-;;:::i;:::-;;8387:67;;;;;;;;;;-1:-1:-1;8447:5:0;;;;;;;;;;;;-1:-1:-1;;;8447:5:0;;;;8387:67;;;;;;;:::i;:::-;;;;;;;;12536:99;;;;;;;;;;-1:-1:-1;12536:99:0;;;;;:::i;:::-;;:::i;6779:31::-;;;;;;;;;;;;;;;;;;;1679:25:1;;;1667:2;1652:18;6779:31:0;1533:177:1;9444:133:0;;;;;;;;;;-1:-1:-1;9444:133:0;;;;;:::i;:::-;;:::i;:::-;;;2336:14:1;;2329:22;2311:41;;2299:2;2284:18;9444:133:0;2171:187:1;24188:252:0;;;;;;;;;;-1:-1:-1;24188:252:0;;;;;:::i;:::-;;:::i;8610:84::-;;;;;;;;;;-1:-1:-1;8680:12:0;;8610:84;;18988:245;;;;;;;;;;-1:-1:-1;18988:245:0;;;;;:::i;:::-;;:::i;17882:309::-;;;;;;;;;;-1:-1:-1;17882:309:0;;;;;:::i;:::-;;:::i;5670:58::-;;;;;;;;;;-1:-1:-1;5670:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23058:473;;;;;;;;;;-1:-1:-1;23058:473:0;;;;;:::i;:::-;;:::i;12745:83::-;;;;;;;;;;;;;:::i;8537:67::-;;;;;;;;;;-1:-1:-1;8537:67:0;;5221:1;3926:36:1;;3914:2;3899:18;8537:67:0;3784:184:1;18542:206:0;;;;;;;;;;;;;:::i;8809:99::-;;;;;;;;;;;;;:::i;6710:26::-;;;;;;;;;;;;;;;;5563:44;;;;;;;;;;-1:-1:-1;5563:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5614:49;;;;;;;;;;-1:-1:-1;5614:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9330:108;;;;;;;;;;-1:-1:-1;9330:108:0;;;;;:::i;:::-;;:::i;24984:94::-;;;;;;;;;;-1:-1:-1;24984:94:0;;;;;:::i;:::-;;:::i;12643:::-;;;;;;;;;;-1:-1:-1;12643:94:0;;;;;:::i;:::-;;:::i;7308:45::-;;;;;;;;;;;;;;;;7360:38;;;;;;;;;;;;;;;;6634:30;;;;;;;;;;-1:-1:-1;6634:30:0;;;;;;;;8700:103;;;;;;;;;;-1:-1:-1;8700:103:0;;;;;:::i;:::-;;:::i;3991:148::-;;;;;;;;;;;;;:::i;8077:267::-;;;;;;;;;;-1:-1:-1;8077:267:0;;;;;:::i;:::-;;:::i;12079:449::-;;;;;;;;;;-1:-1:-1;12079:449:0;;;;;:::i;:::-;;:::i;21517:140::-;;;;;;;;;;-1:-1:-1;21517:140:0;;;;;:::i;:::-;;:::i;3777:79::-;;;;;;;;;;-1:-1:-1;3815:7:0;3842:6;-1:-1:-1;;;;;3842:6:0;3777:79;;;-1:-1:-1;;;;;4575:32:1;;;4557:51;;4545:2;4530:18;3777:79:0;4411:203:1;9583:138:0;;;;;;;;;;;;;:::i;8460:71::-;;;;;;;;;;-1:-1:-1;8522:7:0;;;;;;;;;;;;-1:-1:-1;;;8522:7:0;;;;8460:71;;6743:29;;;;;;;;;;;;;;;;5773:19;;;;;;;;;;-1:-1:-1;5773:19:0;;;;-1:-1:-1;;;;;5773:19:0;;;8914:139;;;;;;;;;;-1:-1:-1;8914:139:0;;;;;:::i;:::-;;:::i;6673:30::-;;;;;;;;;;;;;;;;11605:315;;;;;;;;;;-1:-1:-1;11605:315:0;;;;;:::i;:::-;;:::i;22109:132::-;;;;;;;;;;;;;:::i;21911:190::-;;;;;;;;;;-1:-1:-1;21911:190:0;;;;;:::i;:::-;-1:-1:-1;;;;;22059:19:0;21984:7;22059:19;;;:6;:19;;;;;:33;;;;21911:190;7181:40;;;;;;;;;;-1:-1:-1;7181:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4821:25:1;;;4877:2;4862:18;;4855:34;;;;4905:18;;;4898:34;4809:2;4794:18;7181:40:0;4619:319:1;11928:143:0;;;;;;;;;;-1:-1:-1;11928:143:0;;;;;:::i;:::-;;:::i;9059:127::-;;;;;;;;;;-1:-1:-1;9059:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9157:18:0;;;9140:7;9157:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9059:127;12836:325;;;;;;;;;;-1:-1:-1;12836:325:0;;;;;:::i;:::-;;:::i;24726:250::-;;;;;;;;;;-1:-1:-1;24726:250:0;;;;;:::i;:::-;;:::i;18756:224::-;;;;;;;;;;-1:-1:-1;18756:224:0;;;;;:::i;:::-;;:::i;6817:31::-;;;;;;;;;;;;;;;;7264:37;;;;;;;;;;;;;;;;10829:768;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;;;;;;;;;11027:16:::1;:32:::0;;;11070:14:::1;:30:::0;;;11111:14:::1;:30:::0;;;11154:17:::1;:33:::0;;;11198:15:::1;:32:::0;;;11241:15:::1;:32:::0;;;11286:11:::1;:20:::0;;;11329:56:::1;11130:11:::0;11329:36:::1;11046:13:::0;11089:11;11329:20:::1;:36::i;:::-;:40:::0;::::1;:56::i;:::-;11317:6;:68:::0;11453:15:::1;::::0;11432::::1;::::0;11410:17:::1;::::0;:59:::1;::::0;11453:15;11410:38:::1;::::0;:17;:21:::1;:38::i;:59::-;11396:7;:73:::0;11504:11:::1;::::0;11494:6:::1;::::0;:21:::1;::::0;::::1;::::0;:47:::1;;;11530:11;;11519:7;;:22;;11494:47;:77;;;;;11560:11;;11545;;:26;;11494:77;11486:103;;;::::0;-1:-1:-1;;;11486:103:0;;6180:2:1;11486:103:0::1;::::0;::::1;6162:21:1::0;6219:2;6199:18;;;6192:30;-1:-1:-1;;;6238:18:1;;;6231:43;6291:18;;11486:103:0::1;5978:337:1::0;11486:103:0::1;10829:768:::0;;;;;;;:::o;12536:99::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12605:11:::1;:22:::0;;-1:-1:-1;;12605:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12536:99::o;9444:133::-;9519:4;9526:37;9535:10;9547:7;9556:6;9526:8;:37::i;:::-;-1:-1:-1;9571:4:0;9444:133;;;;;:::o;24188:252::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;24322:9:::1;:22:::0;;;;24355:15:::1;:34:::0;24400:14:::1;:32:::0;24188:252::o;18988:245::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19086:33:0;::::1;;::::0;;;:25:::1;:33;::::0;;;;:43;;-1:-1:-1;;19086:43:0::1;::::0;::::1;;;::::0;;;19140:86:::1;;19153:19;19162:6;19170:1;19153:8;:19::i;:::-;18988:245:::0;;:::o;19140:86::-:1;19189:35;19198:6;19206:17;19216:6;19206:9;:17::i;:::-;19189:8;:35::i;17882:309::-:0;17980:4;17997:36;18007:6;18015:9;18026:6;17997:9;:36::i;:::-;18044:117;18053:6;18061:10;18073:87;18109:6;18073:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18073:19:0;;;;;;:11;:19;;;;;;;;18093:10;18073:31;;;;;;;;;:87;:35;:87::i;:::-;18044:8;:117::i;:::-;-1:-1:-1;18179:4:0;17882:309;;;;;;:::o;23058:473::-;-1:-1:-1;;;;;23150:19:0;;23127:7;23150:19;;;:6;:19;;;;;:26;:31;;23147:48;;-1:-1:-1;23191:1:0;;23058:473;-1:-1:-1;23058:473:0:o;23147:48::-;-1:-1:-1;;;;;23264:19:0;;23205:33;23264:19;;;:6;:19;;;;;:26;23241:50;;:22;:50::i;:::-;-1:-1:-1;;;;;23337:19:0;;23302:32;23337:19;;;:6;:19;;;;;:33;;;23205:86;;-1:-1:-1;23384:53:0;;;23381:70;;-1:-1:-1;23447:1:0;;23058:473;-1:-1:-1;;;23058:473:0:o;23381:70::-;23468:55;:25;23498:24;23468:29;:55::i;:::-;23461:62;23058:473;-1:-1:-1;;;;23058:473:0:o;12745:83::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12799:14:::1;:21:::0;;-1:-1:-1;;;;12799:21:0::1;-1:-1:-1::0;;;12799:21:0::1;::::0;;12745:83::o;18542:206::-;18591:16;;18618:15;;18583:51;;-1:-1:-1;;;;;18591:16:0;;;;18583:51;;;;;18618:15;18591:16;18583:51;18591:16;18583:51;18618:15;18591:16;18583:51;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18685:15:0;;18664:16;;:37;;:20;:37::i;:::-;18645:16;:56;18738:1;18712:15;:28;18542:206::o;8809:99::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;8857:16:::1;::::0;8849:57:::1;::::0;-1:-1:-1;;;;;8857:16:0;;::::1;::::0;8884:21:::1;8849:57:::0;::::1;;;::::0;8857:16:::1;8849:57:::0;8857:16;8849:57;8884:21;8857:16;8849:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8809:99::o:0;9330:108::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9404:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9404:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9330:108::o;24984:94::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;25052:10:::1;:18:::0;;-1:-1:-1;;;;;;25052:18:0::1;-1:-1:-1::0;;;;;25052:18:0;;;::::1;::::0;;;::::1;::::0;;24984:94::o;12643:::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12717:12:::1;12725:3;12717:7;:12::i;8700:103::-:0;-1:-1:-1;;;;;8783:18:0;8766:7;8783:18;;;:9;:18;;;;;;;8700:103::o;3991:148::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;4098:1:::1;4082:6:::0;;4061:40:::1;::::0;-1:-1:-1;;;;;4082:6:0;;::::1;::::0;4061:40:::1;::::0;4098:1;;4061:40:::1;4129:1;4112:19:::0;;-1:-1:-1;;;;;;4112:19:0::1;::::0;;3991:148::o;8077:267::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;8141:6:::1;:71:::0;;-1:-1:-1;;;;;;8141:71:0;;::::1;8169:42;8141:71;::::0;;-1:-1:-1;;;;;8223:32:0;;::::1;8141:6;8223:32:::0;;;:16:::1;:32;::::0;;;;;:39;;-1:-1:-1;;8223:39:0;;::::1;8141:71:::0;8223:39;;::::1;::::0;;;8298:6;;;;::::1;8273:33:::0;;;;:40;;;;::::1;::::0;;::::1;::::0;;;8324:4:::1;:12:::0;;;;::::1;::::0;;::::1;::::0;;8077:267::o;12079:449::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12163:13:::1;12179:43;12215:5;12179:23;12197:4;12179:13;8680:12:::0;;;8610:84;12179:13:::1;:17:::0;::::1;:23::i;:::-;:27:::0;::::1;:43::i;:::-;12163:59;;12233:17;12253:46;12292:5;12253:26;12271:7;12253:13;8680:12:::0;;;8610:84;12253:46:::1;12233:66;;12301:13;12317:30;12342:4;12317:20;12335:1;12317:13;8680:12:::0;;;8610:84;12317:30:::1;12301:46;;12375:5;12366;:14;;:36;;;;;12397:5;12384:9;:18;;12366:36;12358:102;;;::::0;-1:-1:-1;;;12358:102:0;;6522:2:1;12358:102:0::1;::::0;::::1;6504:21:1::0;6561:2;6541:18;;;6534:30;6600:34;6580:18;;;6573:62;-1:-1:-1;;;6651:18:1;;;6644:51;6712:19;;12358:102:0::1;6320:417:1::0;12358:102:0::1;-1:-1:-1::0;12471:12:0::1;:20:::0;;;;12493:15:::1;:27:::0;-1:-1:-1;;12079:449:0:o;21517:140::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;21603:46:::1;::::0;-1:-1:-1;;;21603:46:0;;21629:10:::1;21603:46;::::0;::::1;6916:51:1::0;6983:18;;;6976:34;;;-1:-1:-1;;;;;21603:25:0;::::1;::::0;::::1;::::0;6889:18:1;;21603:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21517:140:::0;;:::o;9583:138::-;9642:7;9659:60;9697:21;9715:1;9697:9;:21::i;:::-;9659:33;9676:15;7440:42;9676:9;:15::i;:::-;9659:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;9652:67;;9583:138;:::o;8914:139::-;8992:4;8999:40;9009:10;9021:9;9032:6;8999:9;:40::i;11605:315::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;11733:5:::1;11722:6;11707:12;;:21;;;;:::i;:::-;11705:33;;;;:::i;:::-;11690:12;:48:::0;11769:12:::1;::::0;11799:5:::1;::::0;11769:25:::1;::::0;11784:10;;11769:25:::1;:::i;:::-;11767:37;;;;:::i;:::-;11749:15;:55:::0;11849:11:::1;::::0;11833:12:::1;::::0;:27:::1;::::0;::::1;::::0;:61:::1;;;11883:11;;11864:15;;:30;;11833:61;11825:87;;;::::0;-1:-1:-1;;;11825:87:0;;6180:2:1;11825:87:0::1;::::0;::::1;6162:21:1::0;6219:2;6199:18;;;6192:30;-1:-1:-1;;;6238:18:1;;;6231:43;6291:18;;11825:87:0::1;5978:337:1::0;22109:132:0;22158:28;22175:10;22158:16;:28::i;:::-;22155:79;;;22202:30;22221:10;22202:18;:30::i;:::-;22109:132::o;11928:143::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12006:16:::1;:27:::0;;-1:-1:-1;;;;;12006:27:0;;::::1;-1:-1:-1::0;;;;;;12006:27:0;;::::1;::::0;::::1;::::0;;:16:::1;12035:21:::0;;;:11:::1;:21;::::0;;;;:28;;-1:-1:-1;;12035:28:0::1;12006:27:::0;12035:28:::1;::::0;;11928:143::o;12836:325::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;12965:10:::1;:24:::0;;;13017:12:::1;::::0;:53:::1;::::0;13062:6:::1;::::0;13017:32:::1;::::0;13034:14;13017:16:::1;:32::i;:53::-;13001:13;:69:::0;13099:12:::1;::::0;:54:::1;::::0;13145:6:::1;::::0;13099:33:::1;::::0;13116:15;13099:16:::1;:33::i;:54::-;13082:14;:71:::0;-1:-1:-1;;;12836:325:0:o;24726:250::-;3434:10;24786:4;24844:18;;;:11;:18;;;;;;;;24863:10;;;-1:-1:-1;;;;;24863:10:0;;;24844:30;;;;;;;;-1:-1:-1;;24844:44:0;;;;24920:10;;24904:40;;1679:25:1;;;24786:4:0;;3434:10;24920;;;3434;;24904:40;;1652:18:1;24904:40:0;;;;;;;-1:-1:-1;24964:4:0;;24726:250;-1:-1:-1;;24726:250:0:o;18756:224::-;3904:6;;-1:-1:-1;;;;;3904:6:0;3434:10;3904:22;3896:67;;;;-1:-1:-1;;;3896:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18844:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;18844:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18888:85:::1;;18899:19;18908:6;18916:1;18899:8;:19::i;586:82::-:0;644:7;661:5;665:1;661;:5;:::i;18199:335::-;-1:-1:-1;;;;;18292:19:0;;18284:68;;;;-1:-1:-1;;;18284:68:0;;8130:2:1;18284:68:0;;;8112:21:1;8169:2;8149:18;;;8142:30;8208:34;8188:18;;;8181:62;-1:-1:-1;;;8259:18:1;;;8252:34;8303:19;;18284:68:0;7928:400:1;18284:68:0;-1:-1:-1;;;;;18371:21:0;;18363:68;;;;-1:-1:-1;;;18363:68:0;;8535:2:1;18363:68:0;;;8517:21:1;8574:2;8554:18;;;8547:30;8613:34;8593:18;;;8586:62;-1:-1:-1;;;8664:18:1;;;8657:32;8706:19;;18363:68:0;8333:398:1;18363:68:0;-1:-1:-1;;;;;18442:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18494:32;;1679:25:1;;;18494:32:0;;1652:18:1;18494:32:0;;;;;;;18199:335;;;:::o;20052:482::-;20139:1;20130:6;:10;:45;;;;-1:-1:-1;;;;;;20144:19:0;;;;;;:6;:19;;;;;:26;:31;20130:45;20127:177;;;23816:12;:19;;-1:-1:-1;;;;;23782:31:0;;;;;;:18;:31;;;;;:53;;;23846:30;;;;;;;;;;;;;-1:-1:-1;;;;;;23846:30:0;;;;;;20127:177;;;20224:11;;:45;;;;-1:-1:-1;;;;;;20239:19:0;;20268:1;20239:19;;;:6;:19;;;;;:26;:30;;20224:45;20221:83;;;20271:30;20289:11;20271:17;:30::i;:::-;-1:-1:-1;;;;;20344:19:0;;;;;;:6;:19;;;;;:26;20328:11;;:55;;20376:6;;20328:43;;:15;:43::i;:55::-;20314:11;:69;-1:-1:-1;;;;;20394:19:0;;;;;;:6;:19;;;;;:35;;;20476:50;20423:6;20476:22;:50::i;:::-;-1:-1:-1;;;;;20440:19:0;;;;;;;:6;:19;;;;;:33;;:86;;;;-1:-1:-1;20052:482:0:o;10092:729::-;10181:37;10192:6;10200:9;10211:6;10181:10;:37::i;:::-;10229:38;10249:6;10257:9;10229:19;:38::i;:::-;10278:41;10293:6;10301:9;10312:6;10278:14;:41::i;:::-;10331:35;10348:6;10356:9;10331:16;:35::i;:::-;10377:39;10390:6;10398:9;10409:6;10377:12;:39::i;:::-;10428:35;10437:6;10445:9;10456:6;10428:8;:35::i;:::-;-1:-1:-1;;;;;10494:17:0;;;;;;:9;:17;;;;;;:29;;10516:6;10494:21;:29::i;:::-;-1:-1:-1;;;;;10474:17:0;;;;;;:9;:17;;;;;:49;;;;10559:32;10484:6;10581:9;10559:13;:32::i;:::-;:78;;10631:6;10559:78;;;10594:34;10602:6;10610:9;10621:6;10594:7;:34::i;:::-;-1:-1:-1;;;;;10671:20:0;;;;;;:9;:20;;;;;;10534:103;;-1:-1:-1;10671:40:0;;10534:103;10671:24;:40::i;:::-;-1:-1:-1;;;;;10648:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10727:43;;;;;;;;;;10755:14;1679:25:1;;1667:2;1652:18;;1533:177;10727:43:0;;;;;;;;10781:32;10795:6;10803:9;10781:13;:32::i;:::-;10170:651;10092:729;;;:::o;1887:162::-;1973:7;2019:12;2011:6;;;;2003:29;;;;-1:-1:-1;;;2003:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2041:5:0;;;1887:162::o;23539:170::-;23609:7;23636:65;23669:31;;23636:28;23646:17;;23636:5;:9;;:28;;;;:::i;674:82::-;732:7;749:5;753:1;749;:5;:::i;20833:676::-;20910:12;:19;20883:24;20943:21;;;20940:37;;20968:7;20833:676;:::o;20940:37::-;20987:15;21017;21035:9;21017:27;;21055:18;21088:414;21104:3;21094:7;:13;:46;;;;;21124:16;21111:10;:29;21094:46;21088:414;;;21176:16;21160:12;;:32;21157:55;;21209:1;21194:12;:16;21157:55;21229:44;21246:12;21259;;21246:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21246:26:0;21229:16;:44::i;:::-;21226:115;;;21293:46;21312:12;21325;;21312:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21312:26:0;21293:18;:46::i;:::-;21365:35;21377:22;21389:9;21377:7;;:11;:22::i;:::-;21365:7;;:11;:35::i;:::-;21355:45;;21425:9;21449:12;:14;;21415:19;;-1:-1:-1;21449:12:0;:14;;;:::i;:::-;;;;;;21478:12;;;;;:::i;:::-;;;;21088:414;;;20872:637;;;;20833:676;:::o;762:82::-;820:7;837:5;841:1;837;:5;:::i;850:82::-;908:7;925:5;929:1;925;:5;:::i;21669:234::-;21798:9;;-1:-1:-1;;;;;21763:30:0;;21739:4;21763:30;;;:17;:30;;;;;;21739:4;;21811:15;;21763:45;;:34;:45::i;:::-;:63;:132;;;;;21880:15;;21847:30;21865:11;21847:17;:30::i;:::-;:48;21756:139;21669:234;-1:-1:-1;;21669:234:0:o;22249:801::-;22318:14;22335:30;22353:11;22335:17;:30::i;:::-;-1:-1:-1;;;;;22429:19:0;;22376:15;22429:19;;;:6;:19;;;;;:26;22318:47;;-1:-1:-1;22394:21:0;;22429:31;;:51;;;22473:7;22464:6;:16;22429:51;:80;;;;22493:16;;22484:6;:25;22429:80;22426:95;;;22512:7;;22249:801;:::o;22426:95::-;22551:1;22534:6;:19;:40;;;;;22567:7;22557:6;:17;;22534:40;:70;;;;;22588:16;;22578:6;:26;;22534:70;22531:512;;;22639:16;;:28;;22660:6;22639:20;:28::i;:::-;22620:16;:47;22682:37;;-1:-1:-1;;;;;22682:29:0;;;:37;;;;;22712:6;;22682:37;;;;22712:6;22682:29;:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22734:30:0;;;;;;:17;:30;;;;;;;;22767:15;22734:48;;22833:6;:19;;;;;:33;;;:45;;22871:6;22833:37;:45::i;:::-;-1:-1:-1;;;;;22797:19:0;;;;;;:6;:19;;;;;:33;;;:81;;;;22952:26;22929:50;;:22;:50::i;:::-;-1:-1:-1;;;;;22893:19:0;;;;;;:6;:19;;;;;:33;;:86;23013:16;;:28;;23034:6;23013:20;:28::i;:::-;22994:16;:47;22307:743;;22249:801;:::o;23892:288::-;24008:12;24021:19;;:21;;24041:1;;24021:21;:::i;:::-;24008:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23973:31:0;;;;;:18;:31;;;;;;;;23960:12;:45;;24008:35;;;;;23960:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;23960:83:0;-1:-1:-1;;;;;23960:83:0;;;;;;24112:31;;;;;:18;:31;;;;;;;;24073:12;24086:19;;24112:31;;:18;23960:45;24086:21;;-1:-1:-1;;24086:21:0;:::i;:::-;24073:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24073:35:0;24054:55;;;;;;;;;;;;:89;24154:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;24154:18:0;;;;;-1:-1:-1;;;;;;24154:18:0;;;;;;-1:-1:-1;23892:288:0:o;9729:355::-;-1:-1:-1;;;;;9833:20:0;;9825:70;;;;-1:-1:-1;;;9825:70:0;;9475:2:1;9825:70:0;;;9457:21:1;9514:2;9494:18;;;9487:30;9553:34;9533:18;;;9526:62;-1:-1:-1;;;9604:18:1;;;9597:35;9649:19;;9825:70:0;9273:401:1;9825:70:0;-1:-1:-1;;;;;9914:23:0;;9906:71;;;;-1:-1:-1;;;9906:71:0;;9881:2:1;9906:71:0;;;9863:21:1;9920:2;9900:18;;;9893:30;9959:34;9939:18;;;9932:62;-1:-1:-1;;;10010:18:1;;;10003:33;10053:19;;9906:71:0;9679:399:1;9906:71:0;10006:17;10016:6;10006:9;:17::i;:::-;9996:6;:27;;9988:88;;;;-1:-1:-1;;;9988:88:0;;10285:2:1;9988:88:0;;;10267:21:1;10324:2;10304:18;;;10297:30;10363:34;10343:18;;;10336:62;-1:-1:-1;;;10414:18:1;;;10407:47;10471:19;;9988:88:0;10083:413:1;13169:210:0;-1:-1:-1;;;;;13262:19:0;;;;;;:11;:19;;;;;;;;13261:20;:47;;;;-1:-1:-1;;;;;;13286:22:0;;;;;;:11;:22;;;;;;;;13285:23;13261:47;13258:110;;;13318:14;;-1:-1:-1;;;13318:14:0;;;;13310:56;;;;-1:-1:-1;;;13310:56:0;;10703:2:1;13310:56:0;;;10685:21:1;10742:2;10722:18;;;10715:30;10781:31;10761:18;;;10754:59;10830:18;;13310:56:0;10501:353:1;13391:331:0;-1:-1:-1;;;;;13495:19:0;;;;;;:11;:19;;;;;;;;13494:20;:47;;;;-1:-1:-1;;;;;;13519:22:0;;;;;;:11;:22;;;;;;;;13518:23;13494:47;:77;;;;-1:-1:-1;13566:4:0;;-1:-1:-1;;;;;13545:26:0;;;13566:4;;13545:26;;13494:77;:107;;;;-1:-1:-1;;;;;;13575:26:0;;7440:42;13575:26;;13494:107;13491:224;;;13663:15;;-1:-1:-1;;;;;13626:20:0;;;;;;:9;:20;;;;;;:32;;13651:6;13626:24;:32::i;:::-;13625:53;;13617:96;;;;-1:-1:-1;;;13617:96:0;;11061:2:1;13617:96:0;;;11043:21:1;11100:2;11080:18;;;11073:30;11139:32;11119:18;;;11112:60;11189:18;;13617:96:0;10859:354:1;13730:159:0;13827:4;;-1:-1:-1;;;;;13814:17:0;;;13827:4;;13814:17;:41;;;;-1:-1:-1;;;;;;13836:19:0;;;;;;:11;:19;;;;;;;;13835:20;13814:41;13811:71;;;13878:1;13857:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13730:159:0;;:::o;13897:207::-;14013:12;;14003:6;:22;;:45;;;-1:-1:-1;;;;;;14029:19:0;;;;;;:11;:19;;;;;;;;14003:45;:71;;;-1:-1:-1;;;;;;14052:22:0;;;;;;:11;:22;;;;;;;;14003:71;13995:101;;;;-1:-1:-1;;;13995:101:0;;11420:2:1;13995:101:0;;;11402:21:1;11459:2;11439:18;;;11432:30;-1:-1:-1;;;11478:18:1;;;11471:47;11535:18;;13995:101:0;11218:341:1;16806:235:0;16898:41;16913:6;16921:9;16932:6;16898:14;:41::i;:::-;16895:139;;;16955:29;16970:13;;16955:14;:29::i;:::-;17020:1;17000:9;:22;16806:235;;;:::o;17049:160::-;-1:-1:-1;;;;;17155:19:0;;17130:4;17155:19;;;:11;:19;;;;;;;;17154:20;:47;;;;-1:-1:-1;;;;;;;17179:22:0;;;;;:11;:22;;;;;;;;17178:23;;17049:160;-1:-1:-1;17049:160:0:o;17442:432::-;17528:7;17584:1;17551:30;17563:6;17571:9;17551:11;:30::i;:::-;:34;17548:304;;;17597:17;17617:59;17645:30;17657:6;17665:9;17645:11;:30::i;:::-;17628:11;;17617:23;;:6;;:10;:23::i;:59::-;17732:4;17714:24;;;;:9;:24;;;;;;17597:79;;-1:-1:-1;17714:39:0;;17597:79;17714:28;:39::i;:::-;17705:4;17687:24;;;;:9;:24;;;;;;;:66;;;;17769:42;;-1:-1:-1;;;;;17769:42:0;;;;;;;17801:9;1679:25:1;;1667:2;1652:18;;1533:177;17769:42:0;;;;;;;;17829:21;:6;17840:9;17829:10;:21::i;:::-;17822:28;;;;;17548:304;-1:-1:-1;17860:6:0;17442:432;-1:-1:-1;;17442:432:0:o;19241:803::-;-1:-1:-1;;;;;19322:17:0;;19349:1;19322:17;;;:6;:17;;;;;:24;:28;19319:64;;19352:29;19371:9;19352:18;:29::i;:::-;-1:-1:-1;;;;;19396:14:0;;19420:1;19396:14;;;:6;:14;;;;;:21;:25;;;;:46;;-1:-1:-1;19438:4:0;;-1:-1:-1;;;;;19425:17:0;;;19438:4;;19425:17;;19396:46;19393:79;;;19444:26;19463:6;19444:18;:26::i;:::-;19498:4;;-1:-1:-1;;;;;19485:17:0;;;19498:4;;19485:17;:46;;;;-1:-1:-1;;;;;;19506:14:0;;19530:1;19506:14;;;:6;:14;;;;;:21;:25;;19485:46;19482:117;;;19551:46;19571:25;19589:6;19571:17;:25::i;:::-;19551:15;;;:19;:46::i;:::-;19533:15;:64;19482:117;-1:-1:-1;;;;;19613:24:0;;;;;;:16;:24;;;;;;;;19609:67;;19639:35;19648:6;19656:17;19666:6;19656:9;:17::i;19639:35::-;-1:-1:-1;;;;;19690:27:0;;;;;;:16;:27;;;;;;;;19686:76;;19719:41;19728:9;19739:20;19749:9;19739;:20::i;19719:41::-;9286:17;;9313:8;;19775:56;;;;-1:-1:-1;;;;;;19798:33:0;;;;;;:25;:33;;;;;;;;19797:34;19775:56;19772:91;;;19833:28;19842:6;19858:1;19833:8;:28::i;:::-;9286:17;;9313:8;;19876:62;;;;-1:-1:-1;;;;;;19902:36:0;;;;;;:25;:36;;;;;;;;19901:37;19876:62;19873:100;;;19940:31;19949:9;19968:1;19940:8;:31::i;:::-;19986:11;;;;:24;;;;-1:-1:-1;20002:8:0;;;;20001:9;19986:24;19983:54;;;20012:23;20020:14;;20012:7;:23::i;16399:399::-;16497:4;16514:13;16540:14;;16530:6;:24;;16514:40;;16565:19;16615:13;;16587:24;16605:4;16587:9;:24::i;:::-;16647:8;;16587:41;-1:-1:-1;16587:41:0;;-1:-1:-1;16647:8:0;;16646:9;:24;;;;-1:-1:-1;16659:11:0;;;;16646:24;:42;;;;-1:-1:-1;16674:14:0;;-1:-1:-1;;;16674:14:0;;;;16646:42;:54;;;;;16692:8;16646:54;:78;;;;-1:-1:-1;;;;;;16705:19:0;;;;;;:11;:19;;;;;;;;16704:20;16646:78;:99;;;;-1:-1:-1;16741:4:0;;-1:-1:-1;;;;;16728:17:0;;;16741:4;;16728:17;16646:99;:126;;;;;16762:10;;16749:9;;:23;;16646:126;:144;;;;;16776:14;16646:144;16639:151;16399:399;-1:-1:-1;;;;;;16399:399:0:o;14112:1488::-;6590:8;:15;;-1:-1:-1;;6590:15:0;6601:4;6590:15;;;14218:7:::1;::::0;14207:6:::1;::::0;6590:8;;14207:19:::1;::::0;:6;:10:::1;:19::i;:::-;14185:41;;14242:10;14256:1;14242:15:::0;14239:27:::1;;14259:7;;;14239:27;14286:19;14308:39;14329:17;;14308:16;;:20;;:39;;;;:::i;:::-;14286:61;;14358:16;14380:35;14399:15;;14380:14;;:18;;:35;;;;:::i;:::-;14358:57:::0;-1:-1:-1;14499:15:0::1;14522:49;14569:1;14522:42;14553:10:::0;14522:42;:6;14533:14;14522:10:::1;:26::i;:49::-;14499:72:::0;-1:-1:-1;14582:17:0::1;14605:22;:6:::0;14499:72;14605:10:::1;:22::i;:::-;14582:45:::0;-1:-1:-1;14665:21:0::1;14697:30;14582:45:::0;14697:16:::1;:30::i;:::-;14738:22;14763:41;:21;14789:14:::0;14763:25:::1;:41::i;:::-;14738:66:::0;-1:-1:-1;14817:19:0::1;14847:37;14862:21;:14:::0;14881:1:::1;14862:18;:21::i;:::-;14847:10:::0;;:14:::1;:37::i;:::-;14817:67:::0;-1:-1:-1;14897:26:0::1;14926:58;14982:1;14926:51;14817:67:::0;14926:51;:14;14945;14926:18:::1;:34::i;:58::-;14897:87:::0;-1:-1:-1;14995:23:0::1;15024:48;15060:11:::0;15024:31:::1;:14:::0;15043:11;15024:18:::1;:31::i;:48::-;14995:77:::0;-1:-1:-1;15190:31:0;;15187:107:::1;;15237:44;15250:10;15262:18;15237:12;:44::i;:::-;15317:28:::0;;15314:90:::1;;15361:31;15376:15;15361:14;:31::i;:::-;15424:16;15443:43;15469:16;;15443:21;:25;;:43;;;;:::i;:::-;15424:62:::0;-1:-1:-1;15500:21:0;;15497:96:::1;;15545:16;::::0;15537:44:::1;::::0;-1:-1:-1;;;;;15545:16:0;;::::1;::::0;15537:44;::::1;;;::::0;15572:8;;15545:16:::1;15537:44:::0;15545:16;15537:44;15572:8;15545:16;15537:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15497:96;14172:1428;;;;;;;;;;;6607:1;-1:-1:-1::0;6610:8:0;:16;;-1:-1:-1;;6610:16:0;;;14112:1488::o;17217:217::-;17332:4;;17296:7;;-1:-1:-1;;;;;17332:4:0;;;17319:17;;;;17316:38;;-1:-1:-1;17345:7:0;;17338:14;;17316:38;17377:4;;-1:-1:-1;;;;;17377:4:0;;;17367:14;;;;17364:34;;-1:-1:-1;17390:6:0;;17383:13;;17364:34;-1:-1:-1;17415:11:0;;17217:217;;;;:::o;15957:434::-;16047:16;;;16061:1;16047:16;;;;;;;;16023:21;;16047:16;;;;;;;;;;-1:-1:-1;16047:16:0;16023:40;;16092:4;16074;16079:1;16074:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16074:23:0;;;:7;;;;;;;;;;:23;;;;16118:6;;:13;;;-1:-1:-1;;;16118:13:0;;;;:6;;;;;:11;;:13;;;;;16074:7;;16118:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16108:4;16113:1;16108:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16108:23:0;;;:7;;;;;;;;;:23;16174:6;;16142:53;;16159:4;;16174:6;16183:11;16142:8;:53::i;:::-;16206:6;;:177;;-1:-1:-1;;;16206:177:0;;-1:-1:-1;;;;;16206:6:0;;;;:57;;:177;;16278:11;;16206:6;;16320:4;;16347;;16367:15;;16206:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16012:379;15957:434;:::o;15608:341::-;15721:6;;15689:53;;15706:4;;-1:-1:-1;;;;;15721:6:0;15730:11;15689:8;:53::i;:::-;15753:6;;15894:16;;15753:188;;-1:-1:-1;;;15753:188:0;;15816:4;15753:188;;;13278:34:1;13328:18;;;13321:34;;;15753:6:0;13371:18:1;;;13364:34;;;13414:18;;;13407:34;-1:-1:-1;;;;;15894:16:0;;;13457:19:1;;;13450:44;15925:15:0;13510:19:1;;;13503:35;15753:6:0;;;:22;;15783:9;;13212:19:1;;15753:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20542:283::-;20621:16;;:28;;20642:6;20621:20;:28::i;:::-;20602:16;:47;20677:14;;:26;;20696:6;20677:18;:26::i;:::-;20660:14;:43;20804:11;;20756:31;;20734:83;;20756:60;;:43;;20792:6;20756:35;:43::i;:60::-;20734:17;;;:21;:83::i;:::-;20714:17;:103;-1:-1:-1;20542:283:0:o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:118::-;1250:5;1243:13;1236:21;1229:5;1226:32;1216:60;;1272:1;1269;1262:12;1287:241;1343:6;1396:2;1384:9;1375:7;1371:23;1367:32;1364:52;;;1412:1;1409;1402:12;1364:52;1451:9;1438:23;1470:28;1492:5;1470:28;:::i;1715:131::-;-1:-1:-1;;;;;1790:31:1;;1780:42;;1770:70;;1836:1;1833;1826:12;1851:315;1919:6;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;2156:2;2141:18;;;;2128:32;;-1:-1:-1;;;1851:315:1:o;2363:316::-;2440:6;2448;2456;2509:2;2497:9;2488:7;2484:23;2480:32;2477:52;;;2525:1;2522;2515:12;2477:52;-1:-1:-1;;2548:23:1;;;2618:2;2603:18;;2590:32;;-1:-1:-1;2669:2:1;2654:18;;;2641:32;;2363:316;-1:-1:-1;2363:316:1:o;2684:382::-;2749:6;2757;2810:2;2798:9;2789:7;2785:23;2781:32;2778:52;;;2826:1;2823;2816:12;2778:52;2865:9;2852:23;2884:31;2909:5;2884:31;:::i;:::-;2934:5;-1:-1:-1;2991:2:1;2976:18;;2963:32;3004:30;2963:32;3004:30;:::i;:::-;3053:7;3043:17;;;2684:382;;;;;:::o;3071:456::-;3148:6;3156;3164;3217:2;3205:9;3196:7;3192:23;3188:32;3185:52;;;3233:1;3230;3223:12;3185:52;3272:9;3259:23;3291:31;3316:5;3291:31;:::i;:::-;3341:5;-1:-1:-1;3398:2:1;3383:18;;3370:32;3411:33;3370:32;3411:33;:::i;:::-;3071:456;;3463:7;;-1:-1:-1;;;3517:2:1;3502:18;;;;3489:32;;3071:456::o;3532:247::-;3591:6;3644:2;3632:9;3623:7;3619:23;3615:32;3612:52;;;3660:1;3657;3650:12;3612:52;3699:9;3686:23;3718:31;3743:5;3718:31;:::i;3973:180::-;4032:6;4085:2;4073:9;4064:7;4060:23;4056:32;4053:52;;;4101:1;4098;4091:12;4053:52;-1:-1:-1;4124:23:1;;3973:180;-1:-1:-1;3973:180:1:o;4158:248::-;4226:6;4234;4287:2;4275:9;4266:7;4262:23;4258:32;4255:52;;;4303:1;4300;4293:12;4255:52;-1:-1:-1;;4326:23:1;;;4396:2;4381:18;;;4368:32;;-1:-1:-1;4158:248:1:o;4943:388::-;5011:6;5019;5072:2;5060:9;5051:7;5047:23;5043:32;5040:52;;;5088:1;5085;5078:12;5040:52;5127:9;5114:23;5146:31;5171:5;5146:31;:::i;:::-;5196:5;-1:-1:-1;5253:2:1;5238:18;;5225:32;5266:33;5225:32;5266:33;:::i;5336:276::-;5394:6;5447:2;5435:9;5426:7;5422:23;5418:32;5415:52;;;5463:1;5460;5453:12;5415:52;5502:9;5489:23;5552:10;5545:5;5541:22;5534:5;5531:33;5521:61;;5578:1;5575;5568:12;5617:356;5819:2;5801:21;;;5838:18;;;5831:30;5897:34;5892:2;5877:18;;5870:62;5964:2;5949:18;;5617:356::o;7021:245::-;7088:6;7141:2;7129:9;7120:7;7116:23;7112:32;7109:52;;;7157:1;7154;7147:12;7109:52;7189:9;7183:16;7208:28;7230:5;7208:28;:::i;7271:127::-;7332:10;7327:3;7323:20;7320:1;7313:31;7363:4;7360:1;7353:15;7387:4;7384:1;7377:15;7403:168;7476:9;;;7507;;7524:15;;;7518:22;;7504:37;7494:71;;7545:18;;:::i;7576:217::-;7616:1;7642;7632:132;;7686:10;7681:3;7677:20;7674:1;7667:31;7721:4;7718:1;7711:15;7749:4;7746:1;7739:15;7632:132;-1:-1:-1;7778:9:1;;7576:217::o;7798:125::-;7863:9;;;7884:10;;;7881:36;;;7897:18;;:::i;8736:128::-;8803:9;;;8824:11;;;8821:37;;;8838:18;;:::i;8869:127::-;8930:10;8925:3;8921:20;8918:1;8911:31;8961:4;8958:1;8951:15;8985:4;8982:1;8975:15;9001:135;9040:3;9061:17;;;9058:43;;9081:18;;:::i;:::-;-1:-1:-1;9128:1:1;9117:13;;9001:135::o;9141:127::-;9202:10;9197:3;9193:20;9190:1;9183:31;9233:4;9230:1;9223:15;9257:4;9254:1;9247:15;11696:251;11766:6;11819:2;11807:9;11798:7;11794:23;11790:32;11787:52;;;11835:1;11832;11825:12;11787:52;11867:9;11861:16;11886:31;11911:5;11886:31;:::i;11952:980::-;12214:4;12262:3;12251:9;12247:19;12293:6;12282:9;12275:25;12319:2;12357:6;12352:2;12341:9;12337:18;12330:34;12400:3;12395:2;12384:9;12380:18;12373:31;12424:6;12459;12453:13;12490:6;12482;12475:22;12528:3;12517:9;12513:19;12506:26;;12567:2;12559:6;12555:15;12541:29;;12588:1;12598:195;12612:6;12609:1;12606:13;12598:195;;;12677:13;;-1:-1:-1;;;;;12673:39:1;12661:52;;12768:15;;;;12733:12;;;;12709:1;12627:9;12598:195;;;-1:-1:-1;;;;;;;12849:32:1;;;;12844:2;12829:18;;12822:60;-1:-1:-1;;;12913:3:1;12898:19;12891:35;12810:3;11952:980;-1:-1:-1;;;11952:980:1:o;13549:306::-;13637:6;13645;13653;13706:2;13694:9;13685:7;13681:23;13677:32;13674:52;;;13722:1;13719;13712:12;13674:52;13751:9;13745:16;13735:26;;13801:2;13790:9;13786:18;13780:25;13770:35;;13845:2;13834:9;13830:18;13824:25;13814:35;;13549:306;;;;;:::o

Swarm Source

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