Token GDRTOKEN

Overview CRC20

Price
$0.00 @ 0.000000 CRO (-5.04%)
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 GDRT

Holders:
479 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

A token and application that will incentivize safe driving and help create a more safe road for people around the world. People can earn $GDRT rewards to drive the speed limit.

Market

Volume (24H):$6.19
Market Capitalization:$0.00
Circulating Supply:0.00 GDRT
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
1
Crodex
0XEC0D0F2D7DDF5E6F1ED18711FE5DD5C790E1C4D6-0X5C7F8A570D578ED84E63FDFA7B1EE72DEAE1AE23$0.00
0.0000000 Btc
$6.19
7,235,521,821.397 0XEC0D0F2D7DDF5E6F1ED18711FE5DD5C790E1C4D6
100.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
GDRTOKEN

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-06-28
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 2500000000 * (10**18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (IDEXRouter _router) {
        router = _router;
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        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 deposit() external payable override onlyToken
    {
        totalDividends = totalDividends.add(msg.value);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(msg.value).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        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 shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            (bool success, ) = payable(shareholder).call{value: amount, gas: 30000}("");
            success = false;
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

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

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

contract GDRTOKEN is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "GDRTOKEN";
    string constant _symbol = "GDRT";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals);

    bool public tradingIsEnabled = false; 

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) private _reducedFeesFor;
	mapping (address => bool) public isVested;

    uint256 public CroRewardsFee = 30;
    uint256 public developmentFee    = 10; 
    uint256 public liquidityFee  = 30;
    uint256 public totalFees     = CroRewardsFee + developmentFee + liquidityFee;
    uint256 public feeDenominator = 1000;
    uint256 public reducedFeePercentage = 0;

    address public devWallet = 0xc0f774b82dC60dD096E5414fd3797D5e7cD4cD36;

    IDEXRouter public router;
    address public pair;
	
	uint256 public launchedAt;
    uint256 public blocksSinceStart;
	uint256 public lockdays = 180 days;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    // max wallet tools
    mapping(address => bool) private _isExcludedFromMaxWallet;
    bool private enableMaxWallet = true;
    uint256 private maxWalletRate = 20;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply / 1000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        dividendDistributor = new DividendDistributor(router);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // exclude from max wallet limit
        _isExcludedFromMaxWallet[msg.sender] = true;
        _isExcludedFromMaxWallet[address(0)] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[DEAD] = true;

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function enableTrading() external onlyOwner {
        require(!tradingIsEnabled, "Trading is already enabled");
        tradingIsEnabled = true;
    }
	
	function setNewLockDays(uint256 newLockDays) external authorized {
        lockdays = newLockDays * 1 days;
	}
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function setFeeRates(uint256 _CroRewardsFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _feeDenominator) public onlyOwner {
            CroRewardsFee = _CroRewardsFee;
            liquidityFee = _liquidityFee;
            developmentFee = _developmentFee;
            totalFees = _CroRewardsFee + _liquidityFee + _developmentFee;
            feeDenominator = _feeDenominator;
            require(totalFees <= _feeDenominator / 4, "max 25%");
    }
	
	function sendAirDropsAndIncludeAutomatically(address[] calldata accounts, uint256[] calldata amount) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _balances[msg.sender] -=amount[i] * 10 ** _decimals;
            _balances[accounts[i]] += amount[i] * 10 ** _decimals;
            emit Transfer(msg.sender, accounts[i], amount[i] * 10 ** _decimals);
            dividendDistributor.setShare(accounts[i], amount[i] * 10 ** _decimals);
            isVested[accounts[i]] = true;
        }
    }

    function setDevWallet(address payable wallet) external onlyOwner{
        devWallet = wallet;
    }

    function reduceFeesFor(address account, bool reduce) public onlyOwner {
        require(_reducedFeesFor[account] != reduce, "Account already has reduced fees");
        _reducedFeesFor[account] = reduce;
    }

    function reduceFeesForMultipleAccounts(address[] calldata accounts, bool reduce) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _reducedFeesFor[accounts[i]] = reduce;
        }
    }

    function setReducedFeePercentage(uint256 percentage) public onlyOwner{
        require(percentage < 100);
        reducedFeePercentage = percentage;
    }

    function isReducedFeesFor(address account) public view returns(bool) {
        return _reducedFeesFor[account];
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWallet[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return getCirculatingSupply().mul(maxWalletRate).div(1000);
    }

    function setmaxWalletAmountRateDenominator1000(uint256 _val) public onlyOwner {
        require(_val > 9, "Max wallet percentage cannot be lower than 1%");
        maxWalletRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
          _isExcludedFromMaxWallet[account] = exclude;
    }

    function setenableMaxWallet(bool _val) public onlyOwner {
        enableMaxWallet = _val;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(tradingIsEnabled || (isFeeExempt[sender] || isFeeExempt[recipient]), "Trading is disabled");
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if (enableMaxWallet && maxWalletAmount() > 0) {
            if (
                _isExcludedFromMaxWallet[sender] == false
                && _isExcludedFromMaxWallet[recipient] == false &&
                recipient != pair
            ) {
                uint balance  = balanceOf(recipient);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

		blocksSinceStart = block.number - launchedAt;
		if(isVested[sender] && blocksSinceStart < lockdays){
                revert("Vested wallets cannot send for 180 days");
            }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ 
			swapBack();
		}

        bool takeFee = !inSwapAndLiquify;

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        if(isFeeExempt[sender] || isFeeExempt[recipient]) {
            takeFee = false;
        }
        // no fee for wallet to wallet transfers
        if(sender != pair && recipient != pair) {
            takeFee = false;
        }
        
        uint256 finalAmount = amount;

        if(takeFee) {
            finalAmount = takeFees(sender, recipient, amount);
        }

        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (recipient == pair) {
            totalFees;
        }

    	uint256 feeAmount = amount.mul(totalFees).div(feeDenominator);

        if (_reducedFeesFor[sender] || 
            _reducedFeesFor[recipient]) {
                feeAmount -= feeAmount.div(100).mul(reducedFeePercentage);
        } 

        if (recipient == pair) {
            totalFees;
        }

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFees).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountCRO = address(this).balance;

        uint256 totalCroFee = totalFees.sub(liquidityFee.div(2));
        
        uint256 amountCroLiquidity = amountCRO.mul(liquidityFee).div(totalCroFee).div(2);
        uint256 amountCroReflection = amountCRO.mul(CroRewardsFee).div(totalCroFee);
        uint256 amountCroTeam = amountCRO.sub(amountCroLiquidity).sub(amountCroReflection);

        try dividendDistributor.deposit{value: amountCroReflection}() {} catch {}
                
        if(developmentFee > 0){
            payable(devWallet).transfer(amountCroTeam);
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountCroLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(amountCroLiquidity, amountToLiquify);
        }
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CroRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksSinceStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"account","type":"address"}],"name":"isExcludedFromMaxWallet","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":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReducedFeesFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isVested","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockdays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesForMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reducedFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"sendAirDropsAndIncludeAutomatically","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_CroRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFeeRates","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":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockDays","type":"uint256"}],"name":"setNewLockDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setReducedFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setenableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setmaxWalletAmountRateDenominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216905560048054821673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be1790556d314dc6448d9338c15b0a000000006005556006805460ff19908116909155601e600d819055600a600e55600f81905560466010556103e860115560006012556013805490931673c0f774b82dc60dd096e5414fd3797d5e7cd4cd361790925562ed4e006018556207a120601a55601c805490911660011790556014601d55805462ff00001961ff0019909116610100171690556c0c9f2c9cd04674edea40000000601f55348015620000f357600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601480549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b1580156200017357600080fd5b505afa15801562000188573d6000803e3d6000fd5b505050506040513d60208110156200019f57600080fd5b5051601454604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620001ee57600080fd5b505afa15801562000203573d6000803e3d6000fd5b505050506040513d60208110156200021a57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200026a57600080fd5b505af11580156200027f573d6000803e3d6000fd5b505050506040513d60208110156200029657600080fd5b5051601580546001600160a01b0319166001600160a01b0392831617905530600090815260086020908152604080832060148054861685529252918290206000199055549051911690620002ea9062000463565b6001600160a01b03909116815260405190819003602001906000f08015801562000318573d6000803e3d6000fd5b50601980546001600160a01b0319166001600160a01b03928316179055336000818152600960209081526040808320805460ff19908116600190811790925530808652838620805483168417905560155488168652600a855283862080548316841790558686528386208054831684179055808652838620805483168417905560028054891687528487208054841685179055600354891687528487208054841685179055878752601b865284872080548416851790557f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea805484168517905590865283862080548316841790555490961684528184208054909616179094556005548383526007825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362000471565b610c65806200304a83390190565b612bc980620004816000396000f3fe60806040526004361061036f5760003560e01c8063760a2e8a116101c6578063af43396c116100f7578063dd62ed3e11610095578063f5e0b2711161006f578063f5e0b27114610cf2578063f708a64f14610d07578063f887ea4014610d42578063fe9fbb8014610d5757610376565b8063dd62ed3e14610c51578063f0b37c0414610c8c578063f2fde38b14610cbf57610376565b8063bad3ea6a116100d1578063bad3ea6a14610bfd578063bf56b37114610c12578063da00097d14610c27578063da391b7a14610c3c57610376565b8063af43396c14610b74578063b2061c5b14610ba0578063b6a5d7de14610bca57610376565b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610ac3578063a9f7864b14610afc578063aa4bde2814610b2c578063aa7cc1f114610b4157610376565b806398118cb414610a84578063a5f3d00314610a99578063a8aa1b3114610aae57610376565b80638a8c523c116101a05780638a8c523c14610a0a5780638ea5220f14610a1f578063929f136014610a3457806395d89b4114610a6f57610376565b8063760a2e8a1461097c57806382972f92146109af578063893d20e8146109d957610376565b8063313ce567116102a0578063479f66d81161023e57806364d42da31161021857806364d42da3146108a0578063658d4b7f146108db5780636dd3d39f1461091657806370a082311461094957610376565b8063479f66d81461082e5780634a74bb0214610858578063571ac8b01461086d57610376565b80633dab52691161027a5780633dab5269146107175780633f4218e0146107495780634355855a1461077c57806346a19c6d146107af57610376565b8063313ce5671461060857806336c41d671461063357806339234e391461070257610376565b80631b0f53271161030d57806327c4ca6d116102e757806327c4ca6d1461055a5780632b112e49146105845780632f54bf6e1461059957806330d2361e146105cc57610376565b80631b0f5327146104cd5780631f53ac02146104e257806323b872dd1461051757610376565b806309c58fcd1161034957806309c58fcd1461047957806313114a9d1461048e578063180b0d7e146104a357806318160ddd146104b857610376565b80630445b6671461037b57806306fdde03146103a2578063095ea7b31461042c57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d8a565b60408051918252519081900360200190f35b3480156103ae57600080fd5b506103b7610d90565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610db2565b604080519115158252519081900360200190f35b34801561048557600080fd5b50610465610e19565b34801561049a57600080fd5b50610390610e22565b3480156104af57600080fd5b50610390610e28565b3480156104c457600080fd5b50610390610e2e565b3480156104d957600080fd5b50610390610e34565b3480156104ee57600080fd5b506105156004803603602081101561050557600080fd5b50356001600160a01b0316610e3a565b005b34801561052357600080fd5b506104656004803603606081101561053a57600080fd5b506001600160a01b03813581169160208101359091169060400135610e9f565b34801561056657600080fd5b506105156004803603602081101561057d57600080fd5b5035610f61565b34801561059057600080fd5b50610390610fe8565b3480156105a557600080fd5b50610465600480360360208110156105bc57600080fd5b50356001600160a01b0316611031565b3480156105d857600080fd5b50610515600480360360808110156105ef57600080fd5b5080359060208101359060408101359060600135611045565b34801561061457600080fd5b5061061d6110ee565b6040805160ff9092168252519081900360200190f35b34801561063f57600080fd5b506105156004803603604081101561065657600080fd5b81019060208101813564010000000081111561067157600080fd5b82018360208201111561068357600080fd5b803590602001918460208302840111640100000000831117156106a557600080fd5b9193909290916020810190356401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111640100000000831117156106f757600080fd5b5090925090506110f3565b34801561070e57600080fd5b5061039061133c565b34801561072357600080fd5b506105156004803603604081101561073a57600080fd5b50803515159060200135611342565b34801561075557600080fd5b506104656004803603602081101561076c57600080fd5b50356001600160a01b03166113a8565b34801561078857600080fd5b506104656004803603602081101561079f57600080fd5b50356001600160a01b03166113bd565b3480156107bb57600080fd5b50610515600480360360408110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184602083028401116401000000008311171561082157600080fd5b91935091503515156113d2565b34801561083a57600080fd5b506105156004803603602081101561085157600080fd5b503561146a565b34801561086457600080fd5b506104656114c6565b34801561087957600080fd5b506104656004803603602081101561089057600080fd5b50356001600160a01b03166114d4565b3480156108ac57600080fd5b50610515600480360360408110156108c357600080fd5b506001600160a01b03813516906020013515156114e2565b3480156108e757600080fd5b50610515600480360360408110156108fe57600080fd5b506001600160a01b03813516906020013515156115c4565b34801561092257600080fd5b506104656004803603602081101561093957600080fd5b50356001600160a01b0316611637565b34801561095557600080fd5b506103906004803603602081101561096c57600080fd5b50356001600160a01b0316611655565b34801561098857600080fd5b506104656004803603602081101561099f57600080fd5b50356001600160a01b0316611670565b3480156109bb57600080fd5b50610515600480360360208110156109d257600080fd5b5035611685565b3480156109e557600080fd5b506109ee6116da565b604080516001600160a01b039092168252519081900360200190f35b348015610a1657600080fd5b506105156116e9565b348015610a2b57600080fd5b506109ee611793565b348015610a4057600080fd5b5061051560048036036040811015610a5757600080fd5b506001600160a01b03813516906020013515156117a2565b348015610a7b57600080fd5b506103b7611810565b348015610a9057600080fd5b5061039061182e565b348015610aa557600080fd5b50610390611834565b348015610aba57600080fd5b506109ee61183a565b348015610acf57600080fd5b5061046560048036036040811015610ae657600080fd5b506001600160a01b038135169060200135611849565b348015610b0857600080fd5b5061051560048036036040811015610b1f57600080fd5b5080359060200135611856565b348015610b3857600080fd5b5061039061190e565b348015610b4d57600080fd5b5061046560048036036020811015610b6457600080fd5b50356001600160a01b0316611930565b348015610b8057600080fd5b5061051560048036036020811015610b9757600080fd5b5035151561194e565b348015610bac57600080fd5b5061051560048036036020811015610bc357600080fd5b50356119a4565b348015610bd657600080fd5b5061051560048036036020811015610bed57600080fd5b50356001600160a01b03166119f6565b348015610c0957600080fd5b506109ee611a60565b348015610c1e57600080fd5b50610390611a6f565b348015610c3357600080fd5b50610465611a75565b348015610c4857600080fd5b50610390611a84565b348015610c5d57600080fd5b5061039060048036036040811015610c7457600080fd5b506001600160a01b0381358116916020013516611a8a565b348015610c9857600080fd5b5061051560048036036020811015610caf57600080fd5b50356001600160a01b0316611ab5565b348015610ccb57600080fd5b5061051560048036036020811015610ce257600080fd5b50356001600160a01b0316611b19565b348015610cfe57600080fd5b50610390611bca565b348015610d1357600080fd5b5061051560048036036040811015610d2a57600080fd5b506001600160a01b0381351690602001351515611bd0565b348015610d4e57600080fd5b506109ee611d47565b348015610d6357600080fd5b5061046560048036036020811015610d7a57600080fd5b50356001600160a01b0316611d56565b601f5481565b60408051808201909152600881526723a2292a27a5a2a760c11b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60065460ff1681565b60105481565b60115481565b60055490565b600d5481565b610e4333611031565b610e7d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610f27918490611d74565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f57848484611e0b565b90505b9392505050565b610f6a33611031565b610fa4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fe35760405162461bcd60e51b815260040180806020018281038252602d815260200180612ac9602d913960400191505060405180910390fd5b601d55565b60035460009061102c90611004906001600160a01b0316611655565b6002546110269061101d906001600160a01b0316611655565b60055490612359565b90612359565b905090565b6000546001600160a01b0390811691161490565b61104e33611031565b611088576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d849055600f839055600e829055828401820160105560118190556004810460105411156110e8576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050565b601290565b6110fc33611031565b611136576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8381101561133557670de0b6b3a764000083838381811061115657fe5b336000908152600760209081526040909120805492909102939093013593909302909203905550670de0b6b3a764000083838381811061119257fe5b9050602002013502600760008787858181106111aa57fe5b602090810292909201356001600160a01b031683525081019190915260400160002080549190910190558484828181106111e057fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b0316600080516020612b17833981519152601260ff16600a0a86868681811061122657fe5b90506020020135026040518082815260200191505060405180910390a36019546001600160a01b03166314b6ca9686868481811061126057fe5b905060200201356001600160a01b0316601260ff16600a0a86868681811061128457fe5b90506020020135026040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506001600c60008787858181106112fc57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611139565b5050505050565b60185481565b61134b33611d56565b61138a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e80549215156101000261ff001990931692909217909155601f55565b60096020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6113db33611031565b611415576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156110e85781600b600086868581811061143157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611418565b61147333611d56565b6114b2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b081106114c157600080fd5b601a55565b601e54610100900460ff1681565b6000610e1382600019610db2565b6114eb33611031565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415611599576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6115cd33611d56565b61160c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601b602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b600c6020526000908152604090205460ff1681565b61168e33611031565b6116c8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481106116d557600080fd5b601255565b6000546001600160a01b031690565b6116f233611031565b61172c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60065460ff1615611784576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6013546001600160a01b031681565b6117ab33611031565b6117e5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b60408051808201909152600481526311d1149560e21b602082015290565b600f5481565b600e5481565b6015546001600160a01b031681565b6000610f5a338484611e0b565b61185f33611d56565b61189e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b600061102c6103e861192a601d54611924610fe8565b9061239b565b906123f4565b6001600160a01b03166000908152600b602052604090205460ff1690565b61195733611031565b611991576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b6119ad33611d56565b6119ec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6201518002601855565b6119ff33611031565b611a39576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6019546001600160a01b031681565b60165481565b601e5462010000900460ff1681565b60125481565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611abe33611031565b611af8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611b2233611031565b611b5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b60175481565b611bd933611d56565b611c18576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611c3f57506015546001600160a01b03838116911614155b611c4857600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155611ce55760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b50505050611d43565b6019546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156118f257600080fd5b5050565b6014546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611e035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc8578181015183820152602001611db0565b50505050905090810190601f168015611df55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60065460009060ff1680611e5957506001600160a01b03841660009081526009602052604090205460ff1680611e5957506001600160a01b03831660009081526009602052604090205460ff165b611ea0576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b601e5460ff1615611ebd57611eb6848484612436565b9050610f5a565b601c5460ff168015611ed657506000611ed461190e565b115b15611f93576001600160a01b0384166000908152601b602052604090205460ff16158015611f1d57506001600160a01b0383166000908152601b602052604090205460ff16155b8015611f3757506015546001600160a01b03848116911614155b15611f93576000611f4784611655565b9050611f5161190e565b8382011115611f915760405162461bcd60e51b8152600401808060200182810382526036815260200180612b376036913960400191505060405180910390fd5b505b60165443036017556001600160a01b0384166000908152600c602052604090205460ff168015611fc65750601854601754105b156120025760405162461bcd60e51b8152600401808060200182810382526027815260200180612b6d6027913960400191505060405180910390fd5b6015546001600160a01b031633148015906120205750601e5460ff16155b80156120335750601e54610100900460ff165b80156120505750601f543060009081526007602052604090205410155b1561205d5761205d612505565b601e546040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526007909152919091205460ff90921615916120b9918590611d74565b6001600160a01b03861660009081526007602090815260408083209390935560099052205460ff168061210457506001600160a01b03841660009081526009602052604090205460ff165b1561210d575060005b6015546001600160a01b0386811691161480159061213957506015546001600160a01b03858116911614155b15612142575060005b8281156121575761215486868661291f565b90505b6001600160a01b03851660009081526007602052604090205461217a9082612a09565b6001600160a01b038087166000908152600760209081526040808320949094559189168152600a909152205460ff1661221e576019546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561220b57600080fd5b505af192505050801561221c575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166122af576019546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561229c57600080fd5b505af19250505080156122ad575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561230257600080fd5b505af1925050508015612313575060015b50846001600160a01b0316866001600160a01b0316600080516020612b17833981519152836040518082815260200191505060405180910390a350600195945050505050565b6000610f5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d74565b6000826123aa57506000610e13565b828202828482816123b757fe5b0414610f5a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612af66021913960400191505060405180910390fd5b6000610f5a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a63565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612487918490611d74565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546124b69083612a09565b6001600160a01b038085166000818152600760209081526040918290209490945580518681529051919392881692600080516020612b1783398151915292918290030190a35060019392505050565b601e805460ff1916600117905530600090815260076020526040812054601054600f549192916125409160029161192a91908290879061239b565b9050600061254e8383612359565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061258257fe5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d602081101561260057600080fd5b505181518290600190811061261157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601460009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126cb5781810151838201526020016126b3565b505050509050019650505050505050600060405180830381600087803b1580156126f457600080fd5b505af1158015612708573d6000803e3d6000fd5b5050600f544792506000915061272c906127239060026123f4565b60105490612359565b9050600061274e600261192a8461192a600f548861239b90919063ffffffff16565b9050600061276b8361192a600d548761239b90919063ffffffff16565b9050600061277d826110268786612359565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127cf57600080fd5b505af1935050505080156127e1575060015b50600e5415612826576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b505b871561290a576014546002546040805163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b50505050506040513d60608110156128cc57600080fd5b505060408051848152602081018a905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601e805460ff1916905550505050505050565b60008061293d60115461192a6010548661239b90919063ffffffff16565b6001600160a01b0386166000908152600b602052604090205490915060ff168061297f57506001600160a01b0384166000908152600b602052604090205460ff165b1561299957601254612996906119248360646123f4565b90035b306000908152600760205260409020546129b39082612a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612b178339815191529281900390910190a3612a008382612359565b95945050505050565b600082820183811015610f5a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612ab25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc8578181015183820152602001611db0565b506000838581612abe57fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e745665737465642077616c6c6574732063616e6e6f742073656e6420666f72203138302064617973a2646970667358221220ff09978fbc7bc37818a8857349057711a233964e1ac795fa9141ccdc9aa9afa364736f6c6343000706003360806040526ec097ce7bc90715b34b9f1000000000600a55610e10600b556b0813f3978f89409844000000600c5534801561003957600080fd5b50604051610c65380380610c658339818101604052602081101561005c57600080fd5b5051600180546001600160a01b039092166001600160a01b03199283161790556000805490911633179055610bcf806100966000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f761051c565b34801561026057600080fd5b506100f7610522565b34801561027557600080fd5b50610142610528565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b503561058d565b3480156102b457600080fd5b506100f7610672565b600a5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260056020526040902054156103015761030182610678565b60008111801561032757506001600160a01b038216600090815260056020526040902054155b1561033a5761033582610795565b61036d565b8015801561035f57506001600160a01b03821660009081526005602052604090205415155b1561036d5761036d826107f6565b6001600160a01b03821660009081526005602052604090205460065461039e918391610398916108e3565b9061092e565b6006556001600160a01b03821660009081526005602052604090208190556103c581610988565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6001600160a01b03811660009081526005602052604081205461040d5750600061046f565b6001600160a01b03821660009081526005602052604081205461042f90610988565b6001600160a01b0384166000908152600560205260409020600101549091508082116104605760009250505061046f565b61046a82826108e3565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600b91909155600c55565b60065481565b600c5481565b60075481565b60056020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b6007546104ed903461092e565b600755600654600a546105179161050e9161050890346109a5565b906109fe565b6009549061092e565b600955565b60095481565b60085481565b61053133610a40565b610582576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b61058b33610678565b565b6000546001600160a01b031633146105a457600080fd5b600254806105b2575061066f565b60008060005a90505b84821080156105c957508383105b1561066a5783600d54106105dd576000600d555b6106096002600d54815481106105ef57fe5b6000918252602090912001546001600160a01b0316610a40565b1561063a5761063a6002600d548154811061062057fe5b6000918252602090912001546001600160a01b0316610678565b61064f6106485a83906108e3565b839061092e565b91505a600d80546001908101909155939093019290506105bb565b505050505b50565b600b5481565b6001600160a01b03811660009081526005602052604090205461069a5761066f565b60006106a5826103e8565b90508015610791576008546106ba908261092e565b6008556040516000906001600160a01b0384169061753090849084818181858888f193505050503d806000811461070d576040519150601f19603f3d011682016040523d82523d6000602084013e610712565b606091505b505050506001600160a01b03821660009081526004602090815260408083204290556005909152812060020154610749908361092e565b6001600160a01b038416600090815260056020526040902060028101919091555461077390610988565b6001600160a01b038416600090815260056020526040902060010155505b5050565b600280546001600160a01b039092166000818152600360205260408120849055600184018355919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b0319169091179055565b60028054600019810190811061080857fe5b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061084057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260039182905260408120546002805491939291600019810190811061088e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806108be57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061092583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a7c565b90505b92915050565b600082820183811015610925576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610928600a54610508600954856109a590919063ffffffff16565b6000826109b457506000610928565b828202828482816109c157fe5b04146109255760405162461bcd60e51b8152600401808060200182810382526021815260200180610b796021913960400191505060405180910390fd5b600061092583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b13565b600b546001600160a01b03821660009081526004602052604081205490914291011080156109285750600c54610a75836103e8565b1192915050565b60008184841115610b0b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ad0578181015183820152602001610ab8565b50505050905090810190601f168015610afd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610b625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ad0578181015183820152602001610ab8565b506000838581610b6e57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a726e8724530d71e645a9c1c59f148431433d2ffde8ad3bea4944d43a59423f964736f6c63430007060033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063760a2e8a116101c6578063af43396c116100f7578063dd62ed3e11610095578063f5e0b2711161006f578063f5e0b27114610cf2578063f708a64f14610d07578063f887ea4014610d42578063fe9fbb8014610d5757610376565b8063dd62ed3e14610c51578063f0b37c0414610c8c578063f2fde38b14610cbf57610376565b8063bad3ea6a116100d1578063bad3ea6a14610bfd578063bf56b37114610c12578063da00097d14610c27578063da391b7a14610c3c57610376565b8063af43396c14610b74578063b2061c5b14610ba0578063b6a5d7de14610bca57610376565b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610ac3578063a9f7864b14610afc578063aa4bde2814610b2c578063aa7cc1f114610b4157610376565b806398118cb414610a84578063a5f3d00314610a99578063a8aa1b3114610aae57610376565b80638a8c523c116101a05780638a8c523c14610a0a5780638ea5220f14610a1f578063929f136014610a3457806395d89b4114610a6f57610376565b8063760a2e8a1461097c57806382972f92146109af578063893d20e8146109d957610376565b8063313ce567116102a0578063479f66d81161023e57806364d42da31161021857806364d42da3146108a0578063658d4b7f146108db5780636dd3d39f1461091657806370a082311461094957610376565b8063479f66d81461082e5780634a74bb0214610858578063571ac8b01461086d57610376565b80633dab52691161027a5780633dab5269146107175780633f4218e0146107495780634355855a1461077c57806346a19c6d146107af57610376565b8063313ce5671461060857806336c41d671461063357806339234e391461070257610376565b80631b0f53271161030d57806327c4ca6d116102e757806327c4ca6d1461055a5780632b112e49146105845780632f54bf6e1461059957806330d2361e146105cc57610376565b80631b0f5327146104cd5780631f53ac02146104e257806323b872dd1461051757610376565b806309c58fcd1161034957806309c58fcd1461047957806313114a9d1461048e578063180b0d7e146104a357806318160ddd146104b857610376565b80630445b6671461037b57806306fdde03146103a2578063095ea7b31461042c57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d8a565b60408051918252519081900360200190f35b3480156103ae57600080fd5b506103b7610d90565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610db2565b604080519115158252519081900360200190f35b34801561048557600080fd5b50610465610e19565b34801561049a57600080fd5b50610390610e22565b3480156104af57600080fd5b50610390610e28565b3480156104c457600080fd5b50610390610e2e565b3480156104d957600080fd5b50610390610e34565b3480156104ee57600080fd5b506105156004803603602081101561050557600080fd5b50356001600160a01b0316610e3a565b005b34801561052357600080fd5b506104656004803603606081101561053a57600080fd5b506001600160a01b03813581169160208101359091169060400135610e9f565b34801561056657600080fd5b506105156004803603602081101561057d57600080fd5b5035610f61565b34801561059057600080fd5b50610390610fe8565b3480156105a557600080fd5b50610465600480360360208110156105bc57600080fd5b50356001600160a01b0316611031565b3480156105d857600080fd5b50610515600480360360808110156105ef57600080fd5b5080359060208101359060408101359060600135611045565b34801561061457600080fd5b5061061d6110ee565b6040805160ff9092168252519081900360200190f35b34801561063f57600080fd5b506105156004803603604081101561065657600080fd5b81019060208101813564010000000081111561067157600080fd5b82018360208201111561068357600080fd5b803590602001918460208302840111640100000000831117156106a557600080fd5b9193909290916020810190356401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111640100000000831117156106f757600080fd5b5090925090506110f3565b34801561070e57600080fd5b5061039061133c565b34801561072357600080fd5b506105156004803603604081101561073a57600080fd5b50803515159060200135611342565b34801561075557600080fd5b506104656004803603602081101561076c57600080fd5b50356001600160a01b03166113a8565b34801561078857600080fd5b506104656004803603602081101561079f57600080fd5b50356001600160a01b03166113bd565b3480156107bb57600080fd5b50610515600480360360408110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184602083028401116401000000008311171561082157600080fd5b91935091503515156113d2565b34801561083a57600080fd5b506105156004803603602081101561085157600080fd5b503561146a565b34801561086457600080fd5b506104656114c6565b34801561087957600080fd5b506104656004803603602081101561089057600080fd5b50356001600160a01b03166114d4565b3480156108ac57600080fd5b50610515600480360360408110156108c357600080fd5b506001600160a01b03813516906020013515156114e2565b3480156108e757600080fd5b50610515600480360360408110156108fe57600080fd5b506001600160a01b03813516906020013515156115c4565b34801561092257600080fd5b506104656004803603602081101561093957600080fd5b50356001600160a01b0316611637565b34801561095557600080fd5b506103906004803603602081101561096c57600080fd5b50356001600160a01b0316611655565b34801561098857600080fd5b506104656004803603602081101561099f57600080fd5b50356001600160a01b0316611670565b3480156109bb57600080fd5b50610515600480360360208110156109d257600080fd5b5035611685565b3480156109e557600080fd5b506109ee6116da565b604080516001600160a01b039092168252519081900360200190f35b348015610a1657600080fd5b506105156116e9565b348015610a2b57600080fd5b506109ee611793565b348015610a4057600080fd5b5061051560048036036040811015610a5757600080fd5b506001600160a01b03813516906020013515156117a2565b348015610a7b57600080fd5b506103b7611810565b348015610a9057600080fd5b5061039061182e565b348015610aa557600080fd5b50610390611834565b348015610aba57600080fd5b506109ee61183a565b348015610acf57600080fd5b5061046560048036036040811015610ae657600080fd5b506001600160a01b038135169060200135611849565b348015610b0857600080fd5b5061051560048036036040811015610b1f57600080fd5b5080359060200135611856565b348015610b3857600080fd5b5061039061190e565b348015610b4d57600080fd5b5061046560048036036020811015610b6457600080fd5b50356001600160a01b0316611930565b348015610b8057600080fd5b5061051560048036036020811015610b9757600080fd5b5035151561194e565b348015610bac57600080fd5b5061051560048036036020811015610bc357600080fd5b50356119a4565b348015610bd657600080fd5b5061051560048036036020811015610bed57600080fd5b50356001600160a01b03166119f6565b348015610c0957600080fd5b506109ee611a60565b348015610c1e57600080fd5b50610390611a6f565b348015610c3357600080fd5b50610465611a75565b348015610c4857600080fd5b50610390611a84565b348015610c5d57600080fd5b5061039060048036036040811015610c7457600080fd5b506001600160a01b0381358116916020013516611a8a565b348015610c9857600080fd5b5061051560048036036020811015610caf57600080fd5b50356001600160a01b0316611ab5565b348015610ccb57600080fd5b5061051560048036036020811015610ce257600080fd5b50356001600160a01b0316611b19565b348015610cfe57600080fd5b50610390611bca565b348015610d1357600080fd5b5061051560048036036040811015610d2a57600080fd5b506001600160a01b0381351690602001351515611bd0565b348015610d4e57600080fd5b506109ee611d47565b348015610d6357600080fd5b5061046560048036036020811015610d7a57600080fd5b50356001600160a01b0316611d56565b601f5481565b60408051808201909152600881526723a2292a27a5a2a760c11b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60065460ff1681565b60105481565b60115481565b60055490565b600d5481565b610e4333611031565b610e7d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610f27918490611d74565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f57848484611e0b565b90505b9392505050565b610f6a33611031565b610fa4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fe35760405162461bcd60e51b815260040180806020018281038252602d815260200180612ac9602d913960400191505060405180910390fd5b601d55565b60035460009061102c90611004906001600160a01b0316611655565b6002546110269061101d906001600160a01b0316611655565b60055490612359565b90612359565b905090565b6000546001600160a01b0390811691161490565b61104e33611031565b611088576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d849055600f839055600e829055828401820160105560118190556004810460105411156110e8576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050565b601290565b6110fc33611031565b611136576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8381101561133557670de0b6b3a764000083838381811061115657fe5b336000908152600760209081526040909120805492909102939093013593909302909203905550670de0b6b3a764000083838381811061119257fe5b9050602002013502600760008787858181106111aa57fe5b602090810292909201356001600160a01b031683525081019190915260400160002080549190910190558484828181106111e057fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b0316600080516020612b17833981519152601260ff16600a0a86868681811061122657fe5b90506020020135026040518082815260200191505060405180910390a36019546001600160a01b03166314b6ca9686868481811061126057fe5b905060200201356001600160a01b0316601260ff16600a0a86868681811061128457fe5b90506020020135026040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506001600c60008787858181106112fc57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611139565b5050505050565b60185481565b61134b33611d56565b61138a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e80549215156101000261ff001990931692909217909155601f55565b60096020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6113db33611031565b611415576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156110e85781600b600086868581811061143157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611418565b61147333611d56565b6114b2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b081106114c157600080fd5b601a55565b601e54610100900460ff1681565b6000610e1382600019610db2565b6114eb33611031565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415611599576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6115cd33611d56565b61160c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601b602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b600c6020526000908152604090205460ff1681565b61168e33611031565b6116c8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481106116d557600080fd5b601255565b6000546001600160a01b031690565b6116f233611031565b61172c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60065460ff1615611784576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6013546001600160a01b031681565b6117ab33611031565b6117e5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b60408051808201909152600481526311d1149560e21b602082015290565b600f5481565b600e5481565b6015546001600160a01b031681565b6000610f5a338484611e0b565b61185f33611d56565b61189e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b600061102c6103e861192a601d54611924610fe8565b9061239b565b906123f4565b6001600160a01b03166000908152600b602052604090205460ff1690565b61195733611031565b611991576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b6119ad33611d56565b6119ec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6201518002601855565b6119ff33611031565b611a39576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6019546001600160a01b031681565b60165481565b601e5462010000900460ff1681565b60125481565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611abe33611031565b611af8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611b2233611031565b611b5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b60175481565b611bd933611d56565b611c18576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611c3f57506015546001600160a01b03838116911614155b611c4857600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155611ce55760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b50505050611d43565b6019546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156118f257600080fd5b5050565b6014546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611e035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc8578181015183820152602001611db0565b50505050905090810190601f168015611df55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60065460009060ff1680611e5957506001600160a01b03841660009081526009602052604090205460ff1680611e5957506001600160a01b03831660009081526009602052604090205460ff165b611ea0576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b601e5460ff1615611ebd57611eb6848484612436565b9050610f5a565b601c5460ff168015611ed657506000611ed461190e565b115b15611f93576001600160a01b0384166000908152601b602052604090205460ff16158015611f1d57506001600160a01b0383166000908152601b602052604090205460ff16155b8015611f3757506015546001600160a01b03848116911614155b15611f93576000611f4784611655565b9050611f5161190e565b8382011115611f915760405162461bcd60e51b8152600401808060200182810382526036815260200180612b376036913960400191505060405180910390fd5b505b60165443036017556001600160a01b0384166000908152600c602052604090205460ff168015611fc65750601854601754105b156120025760405162461bcd60e51b8152600401808060200182810382526027815260200180612b6d6027913960400191505060405180910390fd5b6015546001600160a01b031633148015906120205750601e5460ff16155b80156120335750601e54610100900460ff165b80156120505750601f543060009081526007602052604090205410155b1561205d5761205d612505565b601e546040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526007909152919091205460ff90921615916120b9918590611d74565b6001600160a01b03861660009081526007602090815260408083209390935560099052205460ff168061210457506001600160a01b03841660009081526009602052604090205460ff165b1561210d575060005b6015546001600160a01b0386811691161480159061213957506015546001600160a01b03858116911614155b15612142575060005b8281156121575761215486868661291f565b90505b6001600160a01b03851660009081526007602052604090205461217a9082612a09565b6001600160a01b038087166000908152600760209081526040808320949094559189168152600a909152205460ff1661221e576019546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561220b57600080fd5b505af192505050801561221c575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166122af576019546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561229c57600080fd5b505af19250505080156122ad575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561230257600080fd5b505af1925050508015612313575060015b50846001600160a01b0316866001600160a01b0316600080516020612b17833981519152836040518082815260200191505060405180910390a350600195945050505050565b6000610f5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d74565b6000826123aa57506000610e13565b828202828482816123b757fe5b0414610f5a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612af66021913960400191505060405180910390fd5b6000610f5a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a63565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612487918490611d74565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546124b69083612a09565b6001600160a01b038085166000818152600760209081526040918290209490945580518681529051919392881692600080516020612b1783398151915292918290030190a35060019392505050565b601e805460ff1916600117905530600090815260076020526040812054601054600f549192916125409160029161192a91908290879061239b565b9050600061254e8383612359565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061258257fe5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d602081101561260057600080fd5b505181518290600190811061261157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601460009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126cb5781810151838201526020016126b3565b505050509050019650505050505050600060405180830381600087803b1580156126f457600080fd5b505af1158015612708573d6000803e3d6000fd5b5050600f544792506000915061272c906127239060026123f4565b60105490612359565b9050600061274e600261192a8461192a600f548861239b90919063ffffffff16565b9050600061276b8361192a600d548761239b90919063ffffffff16565b9050600061277d826110268786612359565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127cf57600080fd5b505af1935050505080156127e1575060015b50600e5415612826576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b505b871561290a576014546002546040805163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b50505050506040513d60608110156128cc57600080fd5b505060408051848152602081018a905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601e805460ff1916905550505050505050565b60008061293d60115461192a6010548661239b90919063ffffffff16565b6001600160a01b0386166000908152600b602052604090205490915060ff168061297f57506001600160a01b0384166000908152600b602052604090205460ff165b1561299957601254612996906119248360646123f4565b90035b306000908152600760205260409020546129b39082612a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612b178339815191529281900390910190a3612a008382612359565b95945050505050565b600082820183811015610f5a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612ab25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc8578181015183820152602001611db0565b506000838581612abe57fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e745665737465642077616c6c6574732063616e6e6f742073656e6420666f72203138302064617973a2646970667358221220ff09978fbc7bc37818a8857349057711a233964e1ac795fa9141ccdc9aa9afa364736f6c63430007060033

Deployed ByteCode Sourcemap

10636:13758:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12434:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13650:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14494:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14494:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11123:36;;;;;;;;;;;;;:::i;11619:76::-;;;;;;;;;;;;;:::i;11702:36::-;;;;;;;;;;;;;:::i;13912:88::-;;;;;;;;;;;;;:::i;11494:33::-;;;;;;;;;;;;;:::i;16831:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16831:101:0;-1:-1:-1;;;;;16831:101:0;;:::i;:::-;;19161:372;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19161:372:0;;;;;;;;;;;;;;;;;:::i;17970:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17970:194:0;;:::i;14092:142::-;;;;;;;;;;;;;:::i;10006:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10006:103:0;-1:-1:-1;;;;;10006:103:0;;:::i;15811:467::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15811:467:0;;;;;;;;;;;;;;;;;:::i;13826:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16284:539;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16284:539:0;;-1:-1:-1;16284:539:0;-1:-1:-1;16284:539:0;:::i;11995:34::-;;;;;;;;;;;;;:::i;18430:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18430:200:0;;;;;;;;;:::i;11284:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11284:44:0;-1:-1:-1;;;;;11284:44:0;;:::i;11335:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11335:49:0;-1:-1:-1;;;;;11335:49:0;;:::i;17160:225::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17160:225:0;-1:-1:-1;17160:225:0;;;;:::i;18846:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18846:139:0;;:::i;12333:40::-;;;;;;;;;;;;;:::i;14718:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14718:116:0;-1:-1:-1;;;;;14718:116:0;;:::i;16940:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16940:212:0;;;;;;;;;;:::i;15302:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15302:120:0;;;;;;;;;;:::i;17685:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17685:135:0;-1:-1:-1;;;;;17685:135:0;;:::i;14242:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14242:105:0;-1:-1:-1;;;;;14242:105:0;;:::i;11444:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11444:41:0;-1:-1:-1;;;;;11444:41:0;;:::i;17393:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17393:157:0;;:::i;14006:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14006:78:0;;;;;;;;;;;;;;15019:153;;;;;;;;;;;;;:::i;11793:69::-;;;;;;;;;;;;;:::i;18172:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18172:145:0;;;;;;;;;;:::i;13736:84::-;;;;;;;;;;;;;:::i;11579:33::-;;;;;;;;;;;;;:::i;11534:37::-;;;;;;;;;;;;;:::i;11902:19::-;;;;;;;;;;;;;:::i;18997:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18997:156:0;;;;;;;;:::i;18638:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18638:200:0;;;;;;;:::i;17828:134::-;;;;;;;;;;;;;:::i;17558:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17558:119:0;-1:-1:-1;;;;;17558:119:0;;:::i;18325:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18325:97:0;;;;:::i;15178:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15178:112:0;;:::i;9679:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9679:94:0;-1:-1:-1;;;;;9679:94:0;;:::i;12038:46::-;;;;;;;;;;;;;:::i;11928:25::-;;;;;;;;;;;;;:::i;12380:45::-;;;;;;;;;;;;;:::i;11745:39::-;;;;;;;;;;;;;:::i;14353:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14353:133:0;;;;;;;;;;:::i;9849:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9849:97:0;-1:-1:-1;;;;;9849:97:0;;:::i;10406:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10406:173:0;-1:-1:-1;;;;;10406:173:0;;:::i;11960:31::-;;;;;;;;;;;;;:::i;15430:373::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15430:373:0;;;;;;;;;;:::i;11871:24::-;;;;;;;;;;;;;:::i;10180:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10180:107:0;-1:-1:-1;;;;;10180:107:0;;:::i;12434:50::-;;;;:::o;13650:80::-;13722:5;;;;;;;;;;;;-1:-1:-1;;;13722:5:0;;;;13650:80;:::o;14494:216::-;14598:10;14569:4;14586:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14586:32:0;;;;;;;;;;;:41;;;14643:37;;;;;;;14569:4;;14586:32;;14598:10;;14643:37;;;;;;;;-1:-1:-1;14698:4:0;14494:216;;;;;:::o;11123:36::-;;;;;;:::o;11619:76::-;;;;:::o;11702:36::-;;;;:::o;13912:88::-;13985:12;;13912:88;:::o;11494:33::-;;;;:::o;16831:101::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;16906:9:::1;:18:::0;;-1:-1:-1;;;;;;16906:18:0::1;-1:-1:-1::0;;;;;16906:18:0;;;::::1;::::0;;;::::1;::::0;;16831:101::o;19161:372::-;-1:-1:-1;;;;;19291:19:0;;19261:4;19291:19;;;:11;:19;;;;;;;;19311:10;19291:31;;;;;;;;-1:-1:-1;;19291:46:0;19288:180;;19387:69;;;;;;;;;;;-1:-1:-1;;;19387:69:0;;;;;;;;-1:-1:-1;;;;;19387:19:0;;-1:-1:-1;19387:19:0;;;:11;:19;;;;;19407:10;19387:31;;;;;;;;;;:69;;19423:6;;19387:35;:69::i;:::-;-1:-1:-1;;;;;19353:19:0;;;;;;:11;:19;;;;;;;;19373:10;19353:31;;;;;;;:103;19288:180;19485:40;19499:6;19507:9;19518:6;19485:13;:40::i;:::-;19478:47;;19161:372;;;;;;:::o;17970:194::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;18074:1:::1;18067:4;:8;18059:66;;;;-1:-1:-1::0;;;18059:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18136:13;:20:::0;17970:194::o;14092:142::-;14220:4;;14145:7;;14172:54;;14210:15;;-1:-1:-1;;;;;14220:4:0;14210:9;:15::i;:::-;14199:4;;14172:33;;14189:15;;-1:-1:-1;;;;;14199:4:0;14189:9;:15::i;:::-;14172:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;14165:61;;14092:142;:::o;10006:103::-;10061:4;10096:5;-1:-1:-1;;;;;10096:5:0;;;10085:16;;;;10006:103::o;15811:467::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;15961:13:::1;:30:::0;;;16006:12:::1;:28:::0;;;16049:14:::1;:32:::0;;;16108:30;;::::1;:48:::0;::::1;16096:9;:60:::0;16171:14:::1;:32:::0;;;16257:1:::1;16188:15:::0;16239:19:::1;16226:9;;:32;;16218:52;;;::::0;;-1:-1:-1;;;16218:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16218:52:0;;;;;;;;;;;;;::::1;;15811:467:::0;;;;:::o;13826:80::-;10825:2;13826:80;:::o;16284:539::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;16419:9:::1;16415:401;16434:19:::0;;::::1;16415:401;;;16511:15:::0;16499:6;;16506:1;16499:9;;::::1;;;;;16485:10;16475:21;::::0;;;:9:::1;16499;16475:21:::0;;;;;;;:51;;16499:9;;;::::1;::::0;;;::::1;;:27:::0;;;::::1;16475:51:::0;;::::1;::::0;;-1:-1:-1;16579:15:0;16567:6;;16574:1;16567:9;;::::1;;;;;;;;;;;:27;16541:9;:22;16551:8;;16560:1;16551:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;16551:11:0::1;16541:22:::0;;-1:-1:-1;16541:22:0;::::1;::::0;;;;;;-1:-1:-1;16541:22:0;:53;;;;;::::1;::::0;;16635:8;;16644:1;16635:11;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16635:11:0::1;-1:-1:-1::0;;;;;16614:62:0::1;16623:10;-1:-1:-1::0;;;;;16614:62:0::1;-1:-1:-1::0;;;;;;;;;;;10825:2:0::1;16660:15;;:2;:15;16648:6;;16655:1;16648:9;;;;;;;;;;;;;:27;16614:62;;;;;;;;;;;;;;;;;;16691:19;::::0;-1:-1:-1;;;;;16691:19:0::1;:28;16720:8:::0;;16729:1;16720:11;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16720:11:0::1;10825:2;16745:15;;:2;:15;16733:6;;16740:1;16733:9;;;;;;;;;;;;;:27;16691:70;;;;;;;;;;;;;-1:-1:-1::0;;;;;16691:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16800:4;16776:8;:21;16785:8;;16794:1;16785:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;16785:11:0::1;16776:21:::0;;-1:-1:-1;16776:21:0;::::1;::::0;;;;;;-1:-1:-1;16776:21:0;:28;;-1:-1:-1;;16776:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;16455:3:0::1;16415:401;;;;16284:539:::0;;;;:::o;11995:34::-;;;;:::o;18430:200::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18540:21:::1;:39:::0;;;::::1;;;;-1:-1:-1::0;;18540:39:0;;::::1;::::0;;;::::1;::::0;;;18590:13:::1;:32:::0;18430:200::o;11284:44::-;;;;;;;;;;;;;;;:::o;11335:49::-;;;;;;;;;;;;;;;:::o;17160:225::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;17273:9:::1;17269:109;17288:19:::0;;::::1;17269:109;;;17360:6;17329:15;:28;17345:8;;17354:1;17345:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;17345:11:0::1;17329:28:::0;;-1:-1:-1;17329:28:0;::::1;::::0;;;;;;-1:-1:-1;17329:28:0;:37;;-1:-1:-1;;17329:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17309:3:0::1;17269:109;;18846:139:::0;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18939:6:::1;18933:3;:12;18925:21;;;::::0;::::1;;18957:14;:20:::0;18846:139::o;12333:40::-;;;;;;;;;:::o;14718:116::-;14773:4;14797:29;14805:7;-1:-1:-1;;14797:7:0;:29::i;16940:212::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17029:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:34;;::::0;::::1;;;;17021:79;;;::::0;;-1:-1:-1;;;17021:79:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;17111:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:33;;-1:-1:-1;;17111:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16940:212::o;15302:120::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15386:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15386:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15302:120::o;17685:135::-;-1:-1:-1;;;;;17779:33:0;17755:4;17779:33;;;:24;:33;;;;;;;;;17685:135::o;14242:105::-;-1:-1:-1;;;;;14326:18:0;14308:7;14326:18;;;:9;:18;;;;;;;14242:105::o;11444:41::-;;;;;;;;;;;;;;;:::o;17393:157::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;17494:3:::1;17481:10;:16;17473:25;;;::::0;::::1;;17509:20;:33:::0;17393:157::o;14006:78::-;14058:7;14076:5;-1:-1:-1;;;;;14076:5:0;14006:78;:::o;15019:153::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;15083:16:::1;::::0;::::1;;15082:17;15074:56;;;::::0;;-1:-1:-1;;;15074:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15141:16;:23:::0;;-1:-1:-1;;15141:23:0::1;15160:4;15141:23;::::0;;15019:153::o;11793:69::-;;;-1:-1:-1;;;;;11793:69:0;;:::o;18172:145::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18266:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;18266:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18172:145::o;13736:84::-;13810:7;;;;;;;;;;;;-1:-1:-1;;;13810:7:0;;;;13736:84;:::o;11579:33::-;;;;:::o;11534:37::-;;;;:::o;11902:19::-;;;-1:-1:-1;;;;;11902:19:0;;:::o;18997:156::-;19077:4;19101:44;19115:10;19127:9;19138:6;19101:13;:44::i;18638:200::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18754:19:::1;::::0;:76:::1;::::0;;-1:-1:-1;;;18754:76:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;18754:19:0;;::::1;::::0;:43:::1;::::0;:76;;;;;:19:::1;::::0;:76;;;;;;;;:19;;:76;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18638:200:::0;;:::o;17828:134::-;17876:7;17903:51;17949:4;17903:41;17930:13;;17903:22;:20;:22::i;:::-;:26;;:41::i;:::-;:45;;:51::i;17558:119::-;-1:-1:-1;;;;;17645:24:0;17621:4;17645:24;;;:15;:24;;;;;;;;;17558:119::o;18325:97::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;18392:15:::1;:22:::0;;-1:-1:-1;;18392:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18325:97::o;15178:112::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;15279:6:::1;15265:20;15254:8;:31:::0;15178:112::o;9679:94::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9739:19:0::1;;::::0;;;9761:4:::1;9739:19;::::0;;;;;;;:26;;-1:-1:-1;;9739:26:0::1;::::0;;::::1;::::0;;9679:94::o;12038:46::-;;;-1:-1:-1;;;;;12038:46:0;;:::o;11928:25::-;;;;:::o;12380:45::-;;;;;;;;;:::o;11745:39::-;;;;:::o;14353:133::-;-1:-1:-1;;;;;14455:19:0;;;14437:7;14455:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14353:133::o;9849:97::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9911:19:0::1;9933:5;9911:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;9911:27:0::1;::::0;;9849:97::o;10406:173::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;10482:5:::1;:11:::0;;-1:-1:-1;;;;;;10482:11:0::1;-1:-1:-1::0;;;;;10482:11:0;::::1;::::0;;::::1;::::0;;10504:19;;;-1:-1:-1;10504:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;10504:26:0::1;::::0;;::::1;::::0;;;10546:25;;;;;;;::::1;::::0;;;;;;;;;::::1;10406:173:::0;:::o;11960:31::-;;;;:::o;15430:373::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15527:23:0;::::1;15545:4;15527:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;15564:4:0::1;::::0;-1:-1:-1;;;;;15554:14:0;;::::1;15564:4:::0;::::1;15554:14;;15527:41;15519:50;;;::::0;::::1;;-1:-1:-1::0;;;;;15580:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;15580:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15634:162:::1;;15659:19;::::0;:39:::1;::::0;;-1:-1:-1;;;15659:39:0;;-1:-1:-1;;;;;15659:39:0;;::::1;;::::0;::::1;::::0;:19:::1;:39:::0;;;;;;;;:19;::::1;::::0;:28:::1;::::0;:39;;;;;:19;;:39;;;;;;:19;;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15634:162;;;15729:19;::::0;-1:-1:-1;;;;;15766:17:0;;::::1;15729:19;15766:17:::0;;;:9:::1;:17;::::0;;;;;;15729:55;;-1:-1:-1;;;15729:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19;;;::::1;::::0;:28:::1;::::0;:55;;;;;;;;;;:19;;:55;::::1;;::::0;::::1;;;;::::0;::::1;15634:162;15430:373:::0;;:::o;11871:24::-;;;-1:-1:-1;;;;;11871:24:0;;:::o;10180:107::-;-1:-1:-1;;;;;10260:19:0;10236:4;10260:19;;;:14;:19;;;;;;;;;10180:107::o;425:190::-;511:7;547:12;539:6;;;;531:29;;;;-1:-1:-1;;;531:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:5:0;;;425:190::o;19541:2191::-;19658:16;;19633:4;;19658:16;;;:67;;-1:-1:-1;;;;;;19679:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;19702:22:0;;;;;;:11;:22;;;;;;;;19679:45;19650:99;;;;;-1:-1:-1;;;19650:99:0;;;;;;;;;;;;-1:-1:-1;;;19650:99:0;;;;;;;;;;;;;;;19763:16;;;;19760:73;;;19789:41;19804:6;19812:9;19823:6;19789:14;:41::i;:::-;19782:48;;;;19760:73;19849:15;;;;:40;;;;;19888:1;19868:17;:15;:17::i;:::-;:21;19849:40;19845:448;;;-1:-1:-1;;;;;19928:32:0;;;;;;:24;:32;;;;;;;;:41;;;:106;;-1:-1:-1;;;;;;19990:35:0;;;;;;:24;:35;;;;;;;;:44;19928:106;:144;;;;-1:-1:-1;20068:4:0;;-1:-1:-1;;;;;20055:17:0;;;20068:4;;20055:17;;19928:144;19906:376;;;20107:12;20123:20;20133:9;20123;:20::i;:::-;20107:36;;20190:17;:15;:17::i;:::-;20180:6;20170:7;:16;:37;;20162:104;;;;-1:-1:-1;;;20162:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19906:376;;20333:10;;20318:12;:25;20299:16;:44;-1:-1:-1;;;;;20351:16:0;;-1:-1:-1;20351:16:0;;;:8;:16;;;;;;;;:47;;;;;20390:8;;20371:16;;:27;20351:47;20348:135;;;20418:49;;-1:-1:-1;;;20418:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20348:135;20512:4;;-1:-1:-1;;;;;20512:4:0;20498:10;:18;;;;:39;;-1:-1:-1;20521:16:0;;;;20520:17;20498:39;:64;;;;-1:-1:-1;20541:21:0;;;;;;;20498:64;:109;;;;-1:-1:-1;20594:13:0;;20584:4;20566:24;;;;:9;:24;;;;;;:41;;20498:109;20495:136;;;20615:10;:8;:10::i;:::-;20659:16;;20735:53;;;;;;;;;;;-1:-1:-1;;;20735:53:0;;;;;;;;-1:-1:-1;;;;;20735:17:0;;20643:12;20735:17;;;:9;:17;;;;;;;;20659:16;;;;20658:17;;20735:53;;20757:6;;20735:21;:53::i;:::-;-1:-1:-1;;;;;20715:17:0;;;;;;:9;:17;;;;;;;;:73;;;;20804:11;:19;;;;;;;:45;;-1:-1:-1;;;;;;20827:22:0;;;;;;:11;:22;;;;;;;;20804:45;20801:92;;;-1:-1:-1;20876:5:0;20801:92;20966:4;;-1:-1:-1;;;;;20956:14:0;;;20966:4;;20956:14;;;;:35;;-1:-1:-1;20987:4:0;;-1:-1:-1;;;;;20974:17:0;;;20987:4;;20974:17;;20956:35;20953:82;;;-1:-1:-1;21018:5:0;20953:82;21077:6;21096:88;;;;21137:35;21146:6;21154:9;21165:6;21137:8;:35::i;:::-;21123:49;;21096:88;-1:-1:-1;;;;;21219:20:0;;;;;;:9;:20;;;;;;:37;;21244:11;21219:24;:37::i;:::-;-1:-1:-1;;;;;21196:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;21302:24;;;;;:16;:24;;;;;;;21298:127;;21347:19;;-1:-1:-1;;;;;21384:17:0;;;21347:19;21384:17;;;:9;:17;;;;;;;21347:55;;-1:-1:-1;;;21347:55:0;;;;;;;;;;;;;;:19;;;;;:28;;:55;;;;;;;;;;:19;;:55;;;;;;;;;;;;;;;;;;;;;;;;;21343:71;;-1:-1:-1;;;;;21441:27:0;;;;;;:16;:27;;;;;;;;21437:137;;21489:19;;-1:-1:-1;;;;;21529:20:0;;;21489:19;21529:20;;;:9;:20;;;;;;;21489:61;;-1:-1:-1;;;21489:61:0;;;;;;;;;;;;;;:19;;;;;:28;;:61;;;;;;;;;;:19;;:61;;;;;;;;;;;;;;;;;;;;;;;;;21485:77;;21590:19;;21618:14;;21590:43;;;-1:-1:-1;;;;;;21590:43:0;;;;;;;;;;-1:-1:-1;;;;;21590:19:0;;;;:27;;:43;;;;;:19;;:43;;;;;;;;:19;;:43;;;;;;;;;;;;;;;;;;;;;;;;;21586:59;21679:9;-1:-1:-1;;;;;21662:40:0;21671:6;-1:-1:-1;;;;;21662:40:0;-1:-1:-1;;;;;;;;;;;21690:11:0;21662:40;;;;;;;;;;;;;;;;;;-1:-1:-1;21720:4:0;;19541:2191;-1:-1:-1;;;;;19541:2191:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;623:224::-;681:7;705:6;701:25;;-1:-1:-1;722:1:0;715:8;;701:25;748:5;;;752:1;748;:5;:1;772:5;;;;;:10;764:56;;;;-1:-1:-1;;;764:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:132;913:7;940:39;944:1;947;940:39;;;;;;;;;;;;;;;;;:3;:39::i;21744:330::-;21874:53;;;;;;;;;;;-1:-1:-1;;;21874:53:0;;;;;;;;-1:-1:-1;;;;;21874:17:0;;21837:4;21874:17;;;:9;:17;;;;;;;:53;;21896:6;;21874:21;:53::i;:::-;-1:-1:-1;;;;;21854:17:0;;;;;;;:9;:17;;;;;;:73;;;;21961:20;;;;;;;:32;;21986:6;21961:24;:32::i;:::-;-1:-1:-1;;;;;21938:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;22009:35;;;;;;;21938:20;;22009:35;;;;-1:-1:-1;;;;;;;;;;;22009:35:0;;;;;;;;-1:-1:-1;22062:4:0;21744:330;;;;;:::o;22757:1568::-;12529:16;:23;;-1:-1:-1;;12529:23:0;12548:4;12529:23;;;22863:4:::1;12529:16:::0;22845:24;;;:9:::1;:24;::::0;;;;;22944:9:::1;::::0;22926:12:::1;::::0;22845:24;;12529:16;22906:55:::1;::::0;22959:1:::1;::::0;22906:48:::1;::::0;22944:9;22906:48;;22845:24;;22906:19:::1;:33::i;:55::-;22880:81:::0;-1:-1:-1;22972:20:0::1;22995:36;:15:::0;22880:81;22995:19:::1;:36::i;:::-;23068:16;::::0;;23082:1:::1;23068:16:::0;;;;;::::1;::::0;;22972:59;;-1:-1:-1;23044:21:0::1;::::0;23068:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23068:16:0::1;23044:40;;23113:4;23095;23100:1;23095:7;;;;;;;;-1:-1:-1::0;;;;;23095:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23139:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23139:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23095:7;;23139:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23139:13:0;23129:7;;:4;;23134:1:::1;::::0;23129:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;23129:23:0::1;;;-1:-1:-1::0;;;;;23129:23:0::1;;;::::0;::::1;23165:6;;;;;;;;;-1:-1:-1::0;;;;;23165:6:0::1;-1:-1:-1::0;;;;;23165:57:0::1;;23237:12;23264:1;23280:4;23307;23327:15;23165:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23165:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23456:12:0::1;::::0;23386:21:::1;::::0;-1:-1:-1;23366:17:0::1;::::0;-1:-1:-1;23442:34:0::1;::::0;23456:19:::1;::::0;23473:1:::1;23456:16;:19::i;:::-;23442:9;::::0;;:13:::1;:34::i;:::-;23420:56;;23497:26;23526:51;23575:1;23526:44;23558:11;23526:27;23540:12;;23526:9;:13;;:27;;;;:::i;:51::-;23497:80;;23588:27;23618:45;23651:11;23618:28;23632:13;;23618:9;:13;;:28;;;;:::i;:45::-;23588:75:::0;-1:-1:-1;23674:21:0::1;23698:58;23588:75:::0;23698:33:::1;:9:::0;23712:18;23698:13:::1;:33::i;:58::-;23674:82;;23773:19;;;;;;;;;-1:-1:-1::0;;;;;23773:19:0::1;-1:-1:-1::0;;;;;23773:27:0::1;;23808:19;23773:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23769:73:::0;23873:14:::1;::::0;:18;23870:91:::1;;23915:9;::::0;23907:42:::1;::::0;-1:-1:-1;;;;;23915:9:0;;::::1;::::0;23907:42;::::1;;;::::0;23935:13;;23915:9:::1;23907:42:::0;23915:9;23907:42;23935:13;23915:9;23907:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23870:91;23976:19:::0;;23973:345:::1;;24011:6;::::0;24185:4:::1;::::0;24011:227:::1;::::0;;-1:-1:-1;;;24011:227:0;;24087:4:::1;24011:227;::::0;::::1;::::0;;;;;;;:6:::1;:227:::0;;;;;;;;;;-1:-1:-1;;;;;24185:4:0;;::::1;24011:227:::0;;;;24208:15:::1;24011:227:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;24041:18;;24011:227;;;;;::::1;::::0;;;;;;;;;24041:18;24011:6;:227;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;24011:227:0;24258:48;;;;;24011:227:::1;24258:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23973:345;-1:-1:-1::0;;12575:16:0;:24;;-1:-1:-1;;12575:24:0;;;-1:-1:-1;;;;;;;22757:1568:0:o;22082:667::-;22169:7;22257:17;22277:41;22303:14;;22277:21;22288:9;;22277:6;:10;;:21;;;;:::i;:41::-;-1:-1:-1;;;;;22335:23:0;;;;;;:15;:23;;;;;;22257:61;;-1:-1:-1;22335:23:0;;;:67;;-1:-1:-1;;;;;;22376:26:0;;;;;;:15;:26;;;;;;;;22335:67;22331:161;;;22459:20;;22436:44;;:18;:9;22450:3;22436:13;:18::i;:44::-;22423:57;;22331:161;22621:4;22603:24;;;;:9;:24;;;;;;:39;;22632:9;22603:28;:39::i;:::-;22594:4;22576:24;;;;:9;:24;;;;;;;;;:66;;;;22658:42;;;;;;;22594:4;;-1:-1:-1;;;;;22658:42:0;;;-1:-1:-1;;;;;;;;;;;22658:42:0;;;;;;;;;22720:21;:6;22731:9;22720:10;:21::i;:::-;22713:28;22082:667;-1:-1:-1;;;;;22082:667:0:o;94:179::-;152:7;184:5;;;208:6;;;;200:46;;;;;-1:-1:-1;;;200:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;995:189;1081:7;1116:12;1109:5;1101:28;;;;-1:-1:-1;;;1101:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:9;1156:1;1152;:5;;;;;;;995:189;-1:-1:-1;;;;;995:189:0:o

Swarm Source

ipfs://a726e8724530d71e645a9c1c59f148431433d2ffde8ad3bea4944d43a59423f9
Loading