ETH Price: $2,980.78 (+2.08%)
Gas: 1 Gwei

Token

ShibaFlip ($FLIP)
 

Overview

Max Total Supply

1,000,000,000 $FLIP

Holders

68

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ShibaFlip

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-27
*/

/**
 * 
 ShibaFlip Casino 
 https://t.me/shibafliperc

*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }
    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ShibaFlip is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "ShibaFlip";
    string constant _symbol = "$FLIP";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 2) / 200;
    uint256 _maxSellTxAmount = (_totalSupply * 2) / 200;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public liquidityCreator;

    uint256 marketingFee = 700;
    uint256 marketingSellFee = 800;
    uint256 liquidityFee = 700;
    uint256 liquiditySellFee = 800;
    uint256 totalBuyFee = marketingFee + liquidityFee;
    uint256 totalSellFee = marketingSellFee + liquiditySellFee;
    uint256 feeDenominator = 10000;
    bool public transferTax = false;

    address payable public liquidityFeeReceiver = payable(0x3b835BbFa9Baa0AcC3839C631C9C532EB732C782);
    address payable public marketingFeeReceiver = payable(0x3b835BbFa9Baa0AcC3839C631C9C532EB732C782);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    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, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;

        if(amountETH > 0) {
            (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
            require(sent,"Failed to transfer funds");
        }
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    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] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = amount;

        if(shouldTakeFee(sender, recipient)) {
            amountReceived = takeFee(recipient, amount);
            if(shouldSwapBack(recipient) && amount > 0) swapBack(amount);
        }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;
        require(amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender, recipient)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender, address recipient) public view returns (bool) {
        if(!transferTax && !liquidityPools[recipient] && !liquidityPools[sender]) return false;
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalSellFee;
        return totalBuyFee;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum 
        && totalBuyFee + totalSellFee > 0;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 totalFee = totalBuyFee + totalSellFee;
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 totalLiquidityFee = liquidityFee + liquiditySellFee;
        uint256 amountToLiquify = (amountToSwap * totalLiquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

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

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

        uint256 amountETH = address(this).balance - balanceBefore;
        uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

        uint256 amountETHLiquidity = (amountETH * totalLiquidityFee / 2) / totalETHFee;
        uint256 amountETHMarketing = amountETH - amountETHLiquidity;
        
        if (amountETHMarketing > 0) {
            (bool sentMarketing, ) = marketingFeeReceiver.call{value: amountETHMarketing}("");
            if(!sentMarketing) {
                //Failed to transfer to marketing wallet
            }
        }
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountETHMarketing, amountETHLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _liquiditySellFee, uint256 _marketingFee, uint256 _marketingSellFee, uint256 _feeDenominator) external onlyOwner {
        require(((_liquidityFee + _liquiditySellFee) / 2) * 2 == (_liquidityFee + _liquiditySellFee), "Liquidity fee must be an even number due to rounding");
        liquidityFee = _liquidityFee;
        liquiditySellFee = _liquiditySellFee;
        marketingFee = _marketingFee;
        marketingSellFee = _marketingSellFee;
        totalBuyFee = _liquidityFee + _marketingFee;
        totalSellFee = _liquiditySellFee + _marketingSellFee;
        feeDenominator = _feeDenominator;
        require(totalBuyFee + totalSellFee <= feeDenominator / 2, "Fees too high");
        emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
    }

    function toggleTransferTax() external onlyOwner {
        transferTax = !transferTax;
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

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

    event FundsDistributed(uint256 marketingETH, uint256 liquidityETH, uint256 liquidityTokens);
    event FeesSet(uint256 totalBuyFees, uint256 totalSellFees, uint256 denominator);
}

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":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","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":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a6200061a565b6200004290633b9aca0062000632565b60035560c8600354600262000058919062000632565b6200006491906200064c565b60045560c860035460026200007a919062000632565b6200008691906200064c565b600555606460035460026200009c919062000632565b620000a891906200064c565b6006556102bc600e55610320600f556102bc601055610320601155601054600e54620000d591906200066f565b601255601154600f54620000ea91906200066f565b60135561271060145560158054743b835bbfa9baa0acc3839c631c9c532eb732c782006001600160a81b0319909116179055601680546001600160a01b0319908116733b835bbfa9baa0acc3839c631c9c532eb732c7821790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601b805461ffff1990811660011790915560238054909116905560026024556025805460ff191690556003546200019f906103e8906200064c565b602655612710600354620001b491906200064c565b602755348015620001c457600080fd5b50620001d033620004b5565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000685565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db919062000685565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e919062000685565b601f80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff1916600117905560001990600890620003a06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055c57816000190482111562000540576200054062000505565b808516156200054e57918102915b93841c939080029062000520565b509250929050565b600082620005755750600162000614565b81620005845750600062000614565b81600181146200059d5760028114620005a857620005c8565b600191505062000614565b60ff841115620005bc57620005bc62000505565b50506001821b62000614565b5060208310610133831016604e8410600b8410161715620005ed575081810a62000614565b620005f983836200051b565b806000190482111562000610576200061062000505565b0290505b92915050565b60006200062b60ff84168362000564565b9392505050565b808202811582820484141762000614576200061462000505565b6000826200066a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000614576200061462000505565b6000602082840312156200069857600080fd5b81516001600160a01b03811681146200062b57600080fd5b612c3980620006c06000396000f3fe60806040526004361061037a5760003560e01c806370a08231116101d1578063bfa21d6a11610102578063dd62ed3e116100a0578063f84ba65d1161006f578063f84ba65d14610a6c578063f8821a6214610a8c578063f887ea4014610aa2578063fabb0b4f14610ac257600080fd5b8063dd62ed3e146109c6578063e96fada214610a0c578063f1f3bca314610a2c578063f2fde38b14610a4c57600080fd5b8063d0889358116100dc578063d088935814610941578063d686014214610961578063d912b2ce14610981578063dae39f921461099657600080fd5b8063bfa21d6a146108cf578063c1adf7bc146108f4578063c287184e1461092157600080fd5b80639b02c4021161016f578063a9059cbb11610149578063a9059cbb14610864578063abe57e7014610884578063bafe446b146108a4578063bf56b371146108b957600080fd5b80639b02c4021461080e578063a4b45c0014610824578063a8aa1b311461084457600080fd5b8063893d20e8116101ab578063893d20e8146107605780638b42507f146107925780638da5cb5b146107c257806395d89b41146107e057600080fd5b806370a08231146106fb578063715018a6146107315780638124f7ac1461074657600080fd5b8063421dd7c7116102ab578063584f969a1161024957806363a803e11161022357806363a803e11461067f578063658d4b7f146106945780636ddd1713146106b45780636f4ce428146106ce57600080fd5b8063584f969a1461063457806360bba03d1461064957806361e08e721461066957600080fd5b8063507139351161028557806350713935146105be57806356a227f2146105de578063571ac8b0146105fe5780635804f1e41461061e57600080fd5b8063421dd7c71461055c57806346d7edaa14610571578063492a937b1461059e57600080fd5b8063234e949411610318578063313ce567116102f2578063313ce567146104d0578063332402f8146104ec57806334848b9a1461050c5780633f4218e01461052c57600080fd5b8063234e94941461048657806323b872dd1461049b5780632b112e49146104bb57600080fd5b8063095db78f11610354578063095db78f1461040c578063095ea7b31461042c5780631031e36e1461045c57806318160ddd1461047157600080fd5b80630445b6671461038657806304a66b48146103af57806306fdde03146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60265481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103cf6103ca366004612612565b610ad8565b005b3480156103dd57600080fd5b5060408051808201909152600981526805368696261466c69760bc1b60208201525b6040516103a6919061264d565b34801561041857600080fd5b506103cf6104273660046126b0565b610c54565b34801561043857600080fd5b5061044c610447366004612749565b610e07565b60405190151581526020016103a6565b34801561046857600080fd5b506103cf610e74565b34801561047d57600080fd5b5060035461039c565b34801561049257600080fd5b5061039c610ed9565b3480156104a757600080fd5b5061044c6104b6366004612775565b610ef9565b3480156104c757600080fd5b5061039c610f8e565b3480156104dc57600080fd5b50604051600981526020016103a6565b3480156104f857600080fd5b5061044c6105073660046127b6565b610fcf565b34801561051857600080fd5b506103cf6105273660046127ef565b611076565b34801561053857600080fd5b5061044c61054736600461281b565b600b6020526000908152604090205460ff1681565b34801561056857600080fd5b506103cf611117565b34801561057d57600080fd5b5061039c61058c36600461281b565b601a6020526000908152604090205481565b3480156105aa57600080fd5b506103cf6105b9366004612838565b61116c565b3480156105ca57600080fd5b506103cf6105d93660046127ef565b611208565b3480156105ea57600080fd5b506103cf6105f936600461286d565b611281565b34801561060a57600080fd5b5061044c61061936600461281b565b611385565b34801561062a57600080fd5b5061039c60215481565b34801561064057600080fd5b506103cf611393565b34801561065557600080fd5b506103cf610664366004612838565b6113e8565b34801561067557600080fd5b5061039c60245481565b34801561068b57600080fd5b5061039c61141b565b3480156106a057600080fd5b506103cf6106af366004612838565b611436565b3480156106c057600080fd5b5060255461044c9060ff1681565b3480156106da57600080fd5b5061039c6106e936600461281b565b60096020526000908152604090205481565b34801561070757600080fd5b5061039c61071636600461281b565b6001600160a01b031660009081526007602052604090205490565b34801561073d57600080fd5b506103cf611469565b34801561075257600080fd5b5060155461044c9060ff1681565b34801561076c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a6565b34801561079e57600080fd5b5061044c6107ad36600461281b565b600c6020526000908152604090205460ff1681565b3480156107ce57600080fd5b506000546001600160a01b031661077a565b3480156107ec57600080fd5b50604080518082019091526005815264024464c49560dc1b60208201526103ff565b34801561081a57600080fd5b5061039c601d5481565b34801561083057600080fd5b506103cf61083f3660046127b6565b61147d565b34801561085057600080fd5b50601f5461077a906001600160a01b031681565b34801561087057600080fd5b5061044c61087f366004612749565b6114bd565b34801561089057600080fd5b506103cf61089f366004612892565b6114ca565b3480156108b057600080fd5b5061039c611519565b3480156108c557600080fd5b5061039c60205481565b3480156108db57600080fd5b5060155461077a9061010090046001600160a01b031681565b34801561090057600080fd5b5061039c61090f36600461281b565b600a6020526000908152604090205481565b34801561092d57600080fd5b506103cf61093c3660046128b4565b611534565b34801561094d57600080fd5b506103cf61095c3660046128cd565b61154f565b34801561096d57600080fd5b506103cf61097c366004612900565b6115a1565b34801561098d57600080fd5b506103cf611632565b3480156109a257600080fd5b5061044c6109b136600461281b565b600d6020526000908152604090205460ff1681565b3480156109d257600080fd5b5061039c6109e13660046127b6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a1857600080fd5b5060165461077a906001600160a01b031681565b348015610a3857600080fd5b5061039c610a4736600461291c565b61164e565b348015610a5857600080fd5b506103cf610a6736600461281b565b61168b565b348015610a7857600080fd5b506103cf610a87366004612838565b611704565b348015610a9857600080fd5b5061039c60275481565b348015610aae57600080fd5b5060175461077a906001600160a01b031681565b348015610ace57600080fd5b5061039c60225481565b610ae0611737565b610aea848661294d565b6002610af6868861294d565b610b009190612960565b610b0b906002612982565b14610b7a5760405162461bcd60e51b815260206004820152603460248201527f4c697175696469747920666565206d75737420626520616e206576656e206e756044820152736d6265722064756520746f20726f756e64696e6760601b60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610b98838661294d565b601255610ba5828561294d565b6013556014819055610bb8600282612960565b601354601254610bc8919061294d565b1115610c065760405162461bcd60e51b815260206004820152600d60248201526c08ccacae640e8dede40d0d2ced609b1b6044820152606401610b71565b60125460135460145460408051938452602084019290925282820152517f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459181900360600190a15050505050565b3360009081526029602052604090205460ff1680610c7c57506000546001600160a01b031633145b610c985760405162461bcd60e51b8152600401610b7190612999565b8015610cad57601b5460ff16610cad57600080fd5b60005b82811015610e01578115610d3c57601d8054906000610cce836129d0565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610d0757610d076129e9565b9050602002016020810190610d1c919061281b565b436002604051610d2f94939291906129ff565b60405180910390a1610d9c565b601a6000858584818110610d5257610d526129e9565b9050602002016020810190610d67919061281b565b6001600160a01b0316815260208101919091526040016000205415610d9c57601d8054906000610d9683612a2a565b91905055505b81610da8576000610daa565b435b601a6000868685818110610dc057610dc06129e9565b9050602002016020810190610dd5919061281b565b6001600160a01b0316815260208101919091526040016000205580610df9816129d0565b915050610cb0565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e629086815260200190565b60405180910390a35060015b92915050565b3360009081526029602052604090205460ff1680610e9c57506000546001600160a01b031633145b610eb85760405162461bcd60e51b8152600401610b7190612999565b602354610100900460ff1615610ecd57600080fd5b6023805460ff19169055565b6000610ee76009600a612b25565b600554610ef49190612960565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f79576001600160a01b0384166000908152600860209081526040808320338452909152902054610f54908390612b34565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f84848484611791565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610fc29161294d565b600354610ef49190612b34565b60155460009060ff16158015610ffe57506001600160a01b03821660009081526019602052604090205460ff16155b801561102357506001600160a01b03831660009081526019602052604090205460ff16155b1561103057506000610e6e565b6001600160a01b0383166000908152600b602052604090205460ff16158015610f875750506001600160a01b03166000908152600b602052604090205460ff1615919050565b3360009081526029602052604090205460ff168061109e57506000546001600160a01b031633145b6110ba5760405162461bcd60e51b8152600401610b7190612999565b60235460ff161580156110cd5750600a83105b6110d657600080fd5b60228390556023805460ff19166001179055436020556110f6824261294d565b601e556111056009600a612b25565b61110f9082612982565b601c55505050565b3360009081526029602052604090205460ff168061113f57506000546001600160a01b031633145b61115b5760405162461bcd60e51b8152600401610b7190612999565b601b805461ffff1916610100179055565b611174611737565b601f546001600160a01b03908116908316036111dd5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610b71565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b611210611737565b6000831180156112205750600082115b801561122c5750600081115b801561123a57506127108111155b61124357600080fd5b80836003546112529190612982565b61125c9190612960565b600455600354819061126f908490612982565b6112799190612960565b600555505050565b3360009081526029602052604090205460ff16806112a957506000546001600160a01b031633145b6112c55760405162461bcd60e51b8152600401610b7190612999565b4780156113805760006001600160a01b03831660646112e48685612982565b6112ee9190612960565b604051600081818185875af1925050503d806000811461132a576040519150601f19603f3d011682016040523d82523d6000602084013e61132f565b606091505b5050905080610e015760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610b71565b505050565b6000610e6e82600019610e07565b3360009081526029602052604090205460ff16806113bb57506000546001600160a01b031633145b6113d75760405162461bcd60e51b8152600401610b7190612999565b6023805461ffff1916610101179055565b6113f0611737565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b60006114296009600a612b25565b600654610ef49190612960565b61143e611737565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611471611737565b61147b6000611c8d565b565b611485611737565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610f87338484611791565b6114d2611737565b6000821180156114e25750600081115b80156114f057506127108111155b6114f957600080fd5b80826003546115089190612982565b6115129190612960565b6006555050565b60006115276009600a612b25565b600454610ef49190612960565b61153c611737565b603c81111561154a57600080fd5b602455565b611557611737565b6000821161156457600080fd5b6025805460ff1916841515179055600354611580908390612960565b60265561158f6009600a612b25565b6115999082612982565b602755505050565b3360009081526029602052604090205460ff16806115c957506000546001600160a01b031633145b6115e55760405162461bcd60e51b8152600401610b7190612999565b601b54610100900460ff16156115fa57600080fd5b601b805460ff191683151517905562015180811061161757600080fd5b80601e6000828254611629919061294d565b90915550505050565b61163a611737565b6015805460ff19811660ff90911615179055565b600043602254602054611661919061294d565b10611675576001601454610e6e9190612b34565b811561168357505060135490565b505060125490565b611693611737565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b71565b61170181611c8d565b50565b61170c611737565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461147b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b71565b60006001600160a01b0384166117e95760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610b71565b6001600160a01b0383166118385760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610b71565b600082116118805760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610b71565b6001600160a01b0384166000908152600760205260409020548211156118df5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b71565b60205415801561190757506001600160a01b03831660009081526019602052604090205460ff165b1561198e576001600160a01b0384166000908152600d602052604090205460ff166119745760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610b71565b61198e43602055426021556025805460ff19166001179055565b60235460ff16611a1b576001600160a01b0384166000908152600d602052604090205460ff16806119d757506001600160a01b0383166000908152600d602052604090205460ff165b611a1b5760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610b71565b611a26848484611cdd565b6001600160a01b03831660009081526019602052604090205460ff16158015611a5d57506001546001600160a01b03848116911614155b15611a8c576001600160a01b0383166000908152600c602052604090205460ff16611a8c57611a8c8383612023565b601b5460ff168015611a9f575042601e54115b15611b69576001600160a01b03841660009081526019602052604090205460ff168015611ad55750326001600160a01b03841614155b8015611af757506001600160a01b0383166000908152601a6020526040902054155b15611b69576001600160a01b0383166000908152601a60205260408120439055601d805491611b25836129d0565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b6094939291906129ff565b60405180910390a15b60285460ff1615611b8657611b7f8484846120a8565b9050610f87565b6001600160a01b038416600090815260076020526040902054611baa908390612b34565b6001600160a01b03851660009081526007602052604090205581611bce8585610fcf565b15611c0257611bdd8484612162565b9050611be8846121e0565b8015611bf45750600083115b15611c0257611c0283612272565b6001600160a01b038416600090815260076020526040902054611c2690829061294d565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c7a9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d1c57506001600160a01b0382166000908152600c602052604090205460ff165b15611d2657505050565b6001600160a01b03831660009081526019602052604090205460ff16611d4e57600554611d52565b6004545b811115611d955760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b71565b6024546001600160a01b0383166000908152600a60205260409020544391611dbc9161294d565b1115611e0a5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610b71565b6001600160a01b0383166000908152601a602052604090205415611eed57611e346009600a612b25565b601c54611e419190612982565b8111158015611e6657506001600160a01b038316600090815260096020526040902054155b8015611e73575042601e54115b611ed15760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610b71565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526019602052604090205460ff1615611f2c5750506001600160a01b03166000908152600960205260409020439055565b611f368383610fcf565b1561138057601b5460ff168015611f4e575042601e54115b8015611f685750326000908152600a602052604090205443145b8015611f8a57506001600160a01b0382166000908152601a6020526040902054155b15611feb576001600160a01b0382166000908152601a602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611fe291329186916001906129ff565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461138057326000908152600a60205260409020439055505050565b6006546001600160a01b038316600090815260076020526040902054819061204c90849061294d565b11156113805760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b71565b6001600160a01b0383166000908152600760205260408120546120cc908390612b34565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546120fc90839061294d565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121509086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526019602052604081205460145460ff90911690829061218f8361164e565b6121999086612982565b6121a39190612960565b306000908152600760205260408120805492935083929091906121c790849061294d565b909155506121d790508185612b34565b95945050505050565b3360009081526019602052604081205460ff16158015612203575060285460ff16155b8015612211575060255460ff165b801561223557506001600160a01b03821660009081526019602052604090205460ff165b801561225257506027543060009081526007602052604090205410155b8015610e6e5750600060135460125461226b919061294d565b1192915050565b6028805460ff191660011790556013546012546000916122919161294d565b9050600060265483106122a6576026546122a8565b825b306000908152600760205260409020549091508111156122d45750306000908152600760205260409020545b60006011546010546122e6919061294d565b905060008360026122f78486612982565b6123019190612960565b61230b9190612960565b90506123178184612b34565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110612351576123516129e9565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612b47565b816001815181106123e1576123e16129e9565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac9479061242b908890600090879030904290600401612b64565b600060405180830381600087803b15801561244557600080fd5b505af1158015612459573d6000803e3d6000fd5b505050506000814761246b9190612b34565b9050600061247a600287612960565b6124849089612b34565b905060008160026124958986612982565b61249f9190612960565b6124a99190612960565b905060006124b78285612b34565b90508015612516576016546040516000916001600160a01b03169083908381818185875af1925050503d806000811461250c576040519150601f19603f3d011682016040523d82523d6000602084013e612511565b606091505b505050505b86156125ba5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015612591573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125b69190612bd5565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506028805460ff19169055505050505050505050565b600080600080600060a0868803121561262a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561267a5785810183015185820160400152820161265e565b506000604082860101526040601f19601f8301168501019250505092915050565b803580151581146126ab57600080fd5b919050565b6000806000604084860312156126c557600080fd5b833567ffffffffffffffff808211156126dd57600080fd5b818601915086601f8301126126f157600080fd5b81358181111561270057600080fd5b8760208260051b850101111561271557600080fd5b60209283019550935061272b918601905061269b565b90509250925092565b6001600160a01b038116811461170157600080fd5b6000806040838503121561275c57600080fd5b823561276781612734565b946020939093013593505050565b60008060006060848603121561278a57600080fd5b833561279581612734565b925060208401356127a581612734565b929592945050506040919091013590565b600080604083850312156127c957600080fd5b82356127d481612734565b915060208301356127e481612734565b809150509250929050565b60008060006060848603121561280457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561282d57600080fd5b8135610f8781612734565b6000806040838503121561284b57600080fd5b823561285681612734565b91506128646020840161269b565b90509250929050565b6000806040838503121561288057600080fd5b8235915060208301356127e481612734565b600080604083850312156128a557600080fd5b50508035926020909101359150565b6000602082840312156128c657600080fd5b5035919050565b6000806000606084860312156128e257600080fd5b6128eb8461269b565b95602085013595506040909401359392505050565b6000806040838503121561291357600080fd5b6127678361269b565b60006020828403121561292e57600080fd5b610f878261269b565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e6e57610e6e612937565b60008261297d57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e6e57610e6e612937565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6000600182016129e2576129e2612937565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612a3957612a39612937565b506000190190565b600181815b80851115612a7c578160001904821115612a6257612a62612937565b80851615612a6f57918102915b93841c9390800290612a46565b509250929050565b600082612a9357506001610e6e565b81612aa057506000610e6e565b8160018114612ab65760028114612ac057612adc565b6001915050610e6e565b60ff841115612ad157612ad1612937565b50506001821b610e6e565b5060208310610133831016604e8410600b8410161715612aff575081810a610e6e565b612b098383612a41565b8060001904821115612b1d57612b1d612937565b029392505050565b6000610f8760ff841683612a84565b81810381811115610e6e57610e6e612937565b600060208284031215612b5957600080fd5b8151610f8781612734565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bb45784516001600160a01b031683529383019391830191600101612b8f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612bea57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022ba0d3a2f99aad9792d3f58983cd6f8ed1f46cce22096a5e4923722c22d531e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806370a08231116101d1578063bfa21d6a11610102578063dd62ed3e116100a0578063f84ba65d1161006f578063f84ba65d14610a6c578063f8821a6214610a8c578063f887ea4014610aa2578063fabb0b4f14610ac257600080fd5b8063dd62ed3e146109c6578063e96fada214610a0c578063f1f3bca314610a2c578063f2fde38b14610a4c57600080fd5b8063d0889358116100dc578063d088935814610941578063d686014214610961578063d912b2ce14610981578063dae39f921461099657600080fd5b8063bfa21d6a146108cf578063c1adf7bc146108f4578063c287184e1461092157600080fd5b80639b02c4021161016f578063a9059cbb11610149578063a9059cbb14610864578063abe57e7014610884578063bafe446b146108a4578063bf56b371146108b957600080fd5b80639b02c4021461080e578063a4b45c0014610824578063a8aa1b311461084457600080fd5b8063893d20e8116101ab578063893d20e8146107605780638b42507f146107925780638da5cb5b146107c257806395d89b41146107e057600080fd5b806370a08231146106fb578063715018a6146107315780638124f7ac1461074657600080fd5b8063421dd7c7116102ab578063584f969a1161024957806363a803e11161022357806363a803e11461067f578063658d4b7f146106945780636ddd1713146106b45780636f4ce428146106ce57600080fd5b8063584f969a1461063457806360bba03d1461064957806361e08e721461066957600080fd5b8063507139351161028557806350713935146105be57806356a227f2146105de578063571ac8b0146105fe5780635804f1e41461061e57600080fd5b8063421dd7c71461055c57806346d7edaa14610571578063492a937b1461059e57600080fd5b8063234e949411610318578063313ce567116102f2578063313ce567146104d0578063332402f8146104ec57806334848b9a1461050c5780633f4218e01461052c57600080fd5b8063234e94941461048657806323b872dd1461049b5780632b112e49146104bb57600080fd5b8063095db78f11610354578063095db78f1461040c578063095ea7b31461042c5780631031e36e1461045c57806318160ddd1461047157600080fd5b80630445b6671461038657806304a66b48146103af57806306fdde03146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60265481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103cf6103ca366004612612565b610ad8565b005b3480156103dd57600080fd5b5060408051808201909152600981526805368696261466c69760bc1b60208201525b6040516103a6919061264d565b34801561041857600080fd5b506103cf6104273660046126b0565b610c54565b34801561043857600080fd5b5061044c610447366004612749565b610e07565b60405190151581526020016103a6565b34801561046857600080fd5b506103cf610e74565b34801561047d57600080fd5b5060035461039c565b34801561049257600080fd5b5061039c610ed9565b3480156104a757600080fd5b5061044c6104b6366004612775565b610ef9565b3480156104c757600080fd5b5061039c610f8e565b3480156104dc57600080fd5b50604051600981526020016103a6565b3480156104f857600080fd5b5061044c6105073660046127b6565b610fcf565b34801561051857600080fd5b506103cf6105273660046127ef565b611076565b34801561053857600080fd5b5061044c61054736600461281b565b600b6020526000908152604090205460ff1681565b34801561056857600080fd5b506103cf611117565b34801561057d57600080fd5b5061039c61058c36600461281b565b601a6020526000908152604090205481565b3480156105aa57600080fd5b506103cf6105b9366004612838565b61116c565b3480156105ca57600080fd5b506103cf6105d93660046127ef565b611208565b3480156105ea57600080fd5b506103cf6105f936600461286d565b611281565b34801561060a57600080fd5b5061044c61061936600461281b565b611385565b34801561062a57600080fd5b5061039c60215481565b34801561064057600080fd5b506103cf611393565b34801561065557600080fd5b506103cf610664366004612838565b6113e8565b34801561067557600080fd5b5061039c60245481565b34801561068b57600080fd5b5061039c61141b565b3480156106a057600080fd5b506103cf6106af366004612838565b611436565b3480156106c057600080fd5b5060255461044c9060ff1681565b3480156106da57600080fd5b5061039c6106e936600461281b565b60096020526000908152604090205481565b34801561070757600080fd5b5061039c61071636600461281b565b6001600160a01b031660009081526007602052604090205490565b34801561073d57600080fd5b506103cf611469565b34801561075257600080fd5b5060155461044c9060ff1681565b34801561076c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a6565b34801561079e57600080fd5b5061044c6107ad36600461281b565b600c6020526000908152604090205460ff1681565b3480156107ce57600080fd5b506000546001600160a01b031661077a565b3480156107ec57600080fd5b50604080518082019091526005815264024464c49560dc1b60208201526103ff565b34801561081a57600080fd5b5061039c601d5481565b34801561083057600080fd5b506103cf61083f3660046127b6565b61147d565b34801561085057600080fd5b50601f5461077a906001600160a01b031681565b34801561087057600080fd5b5061044c61087f366004612749565b6114bd565b34801561089057600080fd5b506103cf61089f366004612892565b6114ca565b3480156108b057600080fd5b5061039c611519565b3480156108c557600080fd5b5061039c60205481565b3480156108db57600080fd5b5060155461077a9061010090046001600160a01b031681565b34801561090057600080fd5b5061039c61090f36600461281b565b600a6020526000908152604090205481565b34801561092d57600080fd5b506103cf61093c3660046128b4565b611534565b34801561094d57600080fd5b506103cf61095c3660046128cd565b61154f565b34801561096d57600080fd5b506103cf61097c366004612900565b6115a1565b34801561098d57600080fd5b506103cf611632565b3480156109a257600080fd5b5061044c6109b136600461281b565b600d6020526000908152604090205460ff1681565b3480156109d257600080fd5b5061039c6109e13660046127b6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a1857600080fd5b5060165461077a906001600160a01b031681565b348015610a3857600080fd5b5061039c610a4736600461291c565b61164e565b348015610a5857600080fd5b506103cf610a6736600461281b565b61168b565b348015610a7857600080fd5b506103cf610a87366004612838565b611704565b348015610a9857600080fd5b5061039c60275481565b348015610aae57600080fd5b5060175461077a906001600160a01b031681565b348015610ace57600080fd5b5061039c60225481565b610ae0611737565b610aea848661294d565b6002610af6868861294d565b610b009190612960565b610b0b906002612982565b14610b7a5760405162461bcd60e51b815260206004820152603460248201527f4c697175696469747920666565206d75737420626520616e206576656e206e756044820152736d6265722064756520746f20726f756e64696e6760601b60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610b98838661294d565b601255610ba5828561294d565b6013556014819055610bb8600282612960565b601354601254610bc8919061294d565b1115610c065760405162461bcd60e51b815260206004820152600d60248201526c08ccacae640e8dede40d0d2ced609b1b6044820152606401610b71565b60125460135460145460408051938452602084019290925282820152517f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459181900360600190a15050505050565b3360009081526029602052604090205460ff1680610c7c57506000546001600160a01b031633145b610c985760405162461bcd60e51b8152600401610b7190612999565b8015610cad57601b5460ff16610cad57600080fd5b60005b82811015610e01578115610d3c57601d8054906000610cce836129d0565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610d0757610d076129e9565b9050602002016020810190610d1c919061281b565b436002604051610d2f94939291906129ff565b60405180910390a1610d9c565b601a6000858584818110610d5257610d526129e9565b9050602002016020810190610d67919061281b565b6001600160a01b0316815260208101919091526040016000205415610d9c57601d8054906000610d9683612a2a565b91905055505b81610da8576000610daa565b435b601a6000868685818110610dc057610dc06129e9565b9050602002016020810190610dd5919061281b565b6001600160a01b0316815260208101919091526040016000205580610df9816129d0565b915050610cb0565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e629086815260200190565b60405180910390a35060015b92915050565b3360009081526029602052604090205460ff1680610e9c57506000546001600160a01b031633145b610eb85760405162461bcd60e51b8152600401610b7190612999565b602354610100900460ff1615610ecd57600080fd5b6023805460ff19169055565b6000610ee76009600a612b25565b600554610ef49190612960565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f79576001600160a01b0384166000908152600860209081526040808320338452909152902054610f54908390612b34565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f84848484611791565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610fc29161294d565b600354610ef49190612b34565b60155460009060ff16158015610ffe57506001600160a01b03821660009081526019602052604090205460ff16155b801561102357506001600160a01b03831660009081526019602052604090205460ff16155b1561103057506000610e6e565b6001600160a01b0383166000908152600b602052604090205460ff16158015610f875750506001600160a01b03166000908152600b602052604090205460ff1615919050565b3360009081526029602052604090205460ff168061109e57506000546001600160a01b031633145b6110ba5760405162461bcd60e51b8152600401610b7190612999565b60235460ff161580156110cd5750600a83105b6110d657600080fd5b60228390556023805460ff19166001179055436020556110f6824261294d565b601e556111056009600a612b25565b61110f9082612982565b601c55505050565b3360009081526029602052604090205460ff168061113f57506000546001600160a01b031633145b61115b5760405162461bcd60e51b8152600401610b7190612999565b601b805461ffff1916610100179055565b611174611737565b601f546001600160a01b03908116908316036111dd5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610b71565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b611210611737565b6000831180156112205750600082115b801561122c5750600081115b801561123a57506127108111155b61124357600080fd5b80836003546112529190612982565b61125c9190612960565b600455600354819061126f908490612982565b6112799190612960565b600555505050565b3360009081526029602052604090205460ff16806112a957506000546001600160a01b031633145b6112c55760405162461bcd60e51b8152600401610b7190612999565b4780156113805760006001600160a01b03831660646112e48685612982565b6112ee9190612960565b604051600081818185875af1925050503d806000811461132a576040519150601f19603f3d011682016040523d82523d6000602084013e61132f565b606091505b5050905080610e015760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610b71565b505050565b6000610e6e82600019610e07565b3360009081526029602052604090205460ff16806113bb57506000546001600160a01b031633145b6113d75760405162461bcd60e51b8152600401610b7190612999565b6023805461ffff1916610101179055565b6113f0611737565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b60006114296009600a612b25565b600654610ef49190612960565b61143e611737565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611471611737565b61147b6000611c8d565b565b611485611737565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610f87338484611791565b6114d2611737565b6000821180156114e25750600081115b80156114f057506127108111155b6114f957600080fd5b80826003546115089190612982565b6115129190612960565b6006555050565b60006115276009600a612b25565b600454610ef49190612960565b61153c611737565b603c81111561154a57600080fd5b602455565b611557611737565b6000821161156457600080fd5b6025805460ff1916841515179055600354611580908390612960565b60265561158f6009600a612b25565b6115999082612982565b602755505050565b3360009081526029602052604090205460ff16806115c957506000546001600160a01b031633145b6115e55760405162461bcd60e51b8152600401610b7190612999565b601b54610100900460ff16156115fa57600080fd5b601b805460ff191683151517905562015180811061161757600080fd5b80601e6000828254611629919061294d565b90915550505050565b61163a611737565b6015805460ff19811660ff90911615179055565b600043602254602054611661919061294d565b10611675576001601454610e6e9190612b34565b811561168357505060135490565b505060125490565b611693611737565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b71565b61170181611c8d565b50565b61170c611737565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461147b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b71565b60006001600160a01b0384166117e95760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610b71565b6001600160a01b0383166118385760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610b71565b600082116118805760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610b71565b6001600160a01b0384166000908152600760205260409020548211156118df5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b71565b60205415801561190757506001600160a01b03831660009081526019602052604090205460ff165b1561198e576001600160a01b0384166000908152600d602052604090205460ff166119745760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610b71565b61198e43602055426021556025805460ff19166001179055565b60235460ff16611a1b576001600160a01b0384166000908152600d602052604090205460ff16806119d757506001600160a01b0383166000908152600d602052604090205460ff165b611a1b5760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610b71565b611a26848484611cdd565b6001600160a01b03831660009081526019602052604090205460ff16158015611a5d57506001546001600160a01b03848116911614155b15611a8c576001600160a01b0383166000908152600c602052604090205460ff16611a8c57611a8c8383612023565b601b5460ff168015611a9f575042601e54115b15611b69576001600160a01b03841660009081526019602052604090205460ff168015611ad55750326001600160a01b03841614155b8015611af757506001600160a01b0383166000908152601a6020526040902054155b15611b69576001600160a01b0383166000908152601a60205260408120439055601d805491611b25836129d0565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b6094939291906129ff565b60405180910390a15b60285460ff1615611b8657611b7f8484846120a8565b9050610f87565b6001600160a01b038416600090815260076020526040902054611baa908390612b34565b6001600160a01b03851660009081526007602052604090205581611bce8585610fcf565b15611c0257611bdd8484612162565b9050611be8846121e0565b8015611bf45750600083115b15611c0257611c0283612272565b6001600160a01b038416600090815260076020526040902054611c2690829061294d565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c7a9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d1c57506001600160a01b0382166000908152600c602052604090205460ff165b15611d2657505050565b6001600160a01b03831660009081526019602052604090205460ff16611d4e57600554611d52565b6004545b811115611d955760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b71565b6024546001600160a01b0383166000908152600a60205260409020544391611dbc9161294d565b1115611e0a5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610b71565b6001600160a01b0383166000908152601a602052604090205415611eed57611e346009600a612b25565b601c54611e419190612982565b8111158015611e6657506001600160a01b038316600090815260096020526040902054155b8015611e73575042601e54115b611ed15760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610b71565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526019602052604090205460ff1615611f2c5750506001600160a01b03166000908152600960205260409020439055565b611f368383610fcf565b1561138057601b5460ff168015611f4e575042601e54115b8015611f685750326000908152600a602052604090205443145b8015611f8a57506001600160a01b0382166000908152601a6020526040902054155b15611feb576001600160a01b0382166000908152601a602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611fe291329186916001906129ff565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461138057326000908152600a60205260409020439055505050565b6006546001600160a01b038316600090815260076020526040902054819061204c90849061294d565b11156113805760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b71565b6001600160a01b0383166000908152600760205260408120546120cc908390612b34565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546120fc90839061294d565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121509086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526019602052604081205460145460ff90911690829061218f8361164e565b6121999086612982565b6121a39190612960565b306000908152600760205260408120805492935083929091906121c790849061294d565b909155506121d790508185612b34565b95945050505050565b3360009081526019602052604081205460ff16158015612203575060285460ff16155b8015612211575060255460ff165b801561223557506001600160a01b03821660009081526019602052604090205460ff165b801561225257506027543060009081526007602052604090205410155b8015610e6e5750600060135460125461226b919061294d565b1192915050565b6028805460ff191660011790556013546012546000916122919161294d565b9050600060265483106122a6576026546122a8565b825b306000908152600760205260409020549091508111156122d45750306000908152600760205260409020545b60006011546010546122e6919061294d565b905060008360026122f78486612982565b6123019190612960565b61230b9190612960565b90506123178184612b34565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110612351576123516129e9565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612b47565b816001815181106123e1576123e16129e9565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac9479061242b908890600090879030904290600401612b64565b600060405180830381600087803b15801561244557600080fd5b505af1158015612459573d6000803e3d6000fd5b505050506000814761246b9190612b34565b9050600061247a600287612960565b6124849089612b34565b905060008160026124958986612982565b61249f9190612960565b6124a99190612960565b905060006124b78285612b34565b90508015612516576016546040516000916001600160a01b03169083908381818185875af1925050503d806000811461250c576040519150601f19603f3d011682016040523d82523d6000602084013e612511565b606091505b505050505b86156125ba5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015612591573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125b69190612bd5565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506028805460ff19169055505050505050505050565b600080600080600060a0868803121561262a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561267a5785810183015185820160400152820161265e565b506000604082860101526040601f19601f8301168501019250505092915050565b803580151581146126ab57600080fd5b919050565b6000806000604084860312156126c557600080fd5b833567ffffffffffffffff808211156126dd57600080fd5b818601915086601f8301126126f157600080fd5b81358181111561270057600080fd5b8760208260051b850101111561271557600080fd5b60209283019550935061272b918601905061269b565b90509250925092565b6001600160a01b038116811461170157600080fd5b6000806040838503121561275c57600080fd5b823561276781612734565b946020939093013593505050565b60008060006060848603121561278a57600080fd5b833561279581612734565b925060208401356127a581612734565b929592945050506040919091013590565b600080604083850312156127c957600080fd5b82356127d481612734565b915060208301356127e481612734565b809150509250929050565b60008060006060848603121561280457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561282d57600080fd5b8135610f8781612734565b6000806040838503121561284b57600080fd5b823561285681612734565b91506128646020840161269b565b90509250929050565b6000806040838503121561288057600080fd5b8235915060208301356127e481612734565b600080604083850312156128a557600080fd5b50508035926020909101359150565b6000602082840312156128c657600080fd5b5035919050565b6000806000606084860312156128e257600080fd5b6128eb8461269b565b95602085013595506040909401359392505050565b6000806040838503121561291357600080fd5b6127678361269b565b60006020828403121561292e57600080fd5b610f878261269b565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e6e57610e6e612937565b60008261297d57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e6e57610e6e612937565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6000600182016129e2576129e2612937565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612a3957612a39612937565b506000190190565b600181815b80851115612a7c578160001904821115612a6257612a62612937565b80851615612a6f57918102915b93841c9390800290612a46565b509250929050565b600082612a9357506001610e6e565b81612aa057506000610e6e565b8160018114612ab65760028114612ac057612adc565b6001915050610e6e565b60ff841115612ad157612ad1612937565b50506001821b610e6e565b5060208310610133831016604e8410600b8410161715612aff575081810a610e6e565b612b098383612a41565b8060001904821115612b1d57612b1d612937565b029392505050565b6000610f8760ff841683612a84565b81810381811115610e6e57610e6e612937565b600060208284031215612b5957600080fd5b8151610f8781612734565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bb45784516001600160a01b031683529383019391830191600101612b8f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612bea57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022ba0d3a2f99aad9792d3f58983cd6f8ed1f46cce22096a5e4923722c22d531e64736f6c63430008110033

Deployed Bytecode Sourcemap

7084:17170:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9222:50:0;;;;;;;;22453:812;;;;;;;;;;-1:-1:-1;22453:812:0;;;;;:::i;:::-;;:::i;:::-;;10686:71;;;;;;;;;;-1:-1:-1;10749:5:0;;;;;;;;;;;;-1:-1:-1;;;10749:5:0;;;;10686:71;;;;;;;:::i;13283:617::-;;;;;;;;;;-1:-1:-1;13283:617:0;;;;;:::i;:::-;;:::i;11427:216::-;;;;;;;;;;-1:-1:-1;11427:216:0;;;;;:::i;:::-;;:::i;:::-;;;2688:14:1;;2681:22;2663:41;;2651:2;2636:18;11427:216:0;2523:187:1;12647:115:0;;;;;;;;;;;;;:::i;10434:88::-;;;;;;;;;;-1:-1:-1;10507:12:0;;10434:88;;10951:107;;;;;;;;;;;;;:::i;14072:341::-;;;;;;;;;;-1:-1:-1;14072:341:0;;;;;:::i;:::-;;:::i;23927:138::-;;;;;;;;;;;;;:::i;10528:71::-;;;;;;;;;;-1:-1:-1;10528:71:0;;7406:1;3318:36:1;;3306:2;3291:18;10528:71:0;3176:184:1;18285:255:0;;;;;;;;;;-1:-1:-1;18285:255:0;;;;;:::i;:::-;;:::i;12263:372::-;;;;;;;;;;-1:-1:-1;12263:372:0;;;;;:::i;:::-;;:::i;7868:44::-;;;;;;;;;;-1:-1:-1;7868:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13144:127;;;;;;;;;;;;;:::i;8731:45::-;;;;;;;;;;-1:-1:-1;8731:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;21285:184;;;;;;;;;;-1:-1:-1;21285:184:0;;;;;:::i;:::-;;:::i;21613:339::-;;;;;;;;;;-1:-1:-1;21613:339:0;;;;;:::i;:::-;;:::i;11922:329::-;;;;;;;;;;-1:-1:-1;11922:329:0;;;;;:::i;:::-;;:::i;11651:122::-;;;;;;;;;;-1:-1:-1;11651:122:0;;;;;:::i;:::-;;:::i;9016:27::-;;;;;;;;;;;;;;;;12774:111;;;;;;;;;;;;;:::i;11785:119::-;;;;;;;;;;-1:-1:-1;11785:119:0;;;;;:::i;:::-;;:::i;9147:28::-;;;;;;;;;;;;;;;;11064:105;;;;;;;;;;;;;:::i;22191:119::-;;;;;;;;;;-1:-1:-1;22191:119:0;;;;;:::i;:::-;;:::i;9184:31::-;;;;;;;;;;-1:-1:-1;9184:31:0;;;;;;;;7765:44;;;;;;;;;;-1:-1:-1;7765:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;11175:105;;;;;;;;;;-1:-1:-1;11175:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11259:18:0;11241:7;11259:18;;;:9;:18;;;;;;;11175:105;6570:103;;;;;;;;;;;;;:::i;8330:31::-;;;;;;;;;;-1:-1:-1;8330:31:0;;;;;;;;10763:71;;;;;;;;;;-1:-1:-1;10806:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;10763:71;;;-1:-1:-1;;;;;5135:32:1;;;5117:51;;5105:2;5090:18;10763:71:0;4971:203:1;7919:48:0;;;;;;;;;;-1:-1:-1;7919:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6339:87;;;;;;;;;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;6339:87;;10605:75;;;;;;;;;;-1:-1:-1;10670:7:0;;;;;;;;;;;;-1:-1:-1;;;10670:7:0;;;;10605:75;;8887:30;;;;;;;;;;;;;;;;23374:242;;;;;;;;;;-1:-1:-1;23374:242:0;;;;;:::i;:::-;;:::i;8956:19::-;;;;;;;;;;-1:-1:-1;8956:19:0;;;;-1:-1:-1;;;;;8956:19:0;;;13908:156;;;;;;;;;;-1:-1:-1;13908:156:0;;;;;:::i;:::-;;:::i;21964:219::-;;;;;;;;;;-1:-1:-1;21964:219:0;;;;;:::i;:::-;;:::i;10840:105::-;;;;;;;;;;;;;:::i;8984:25::-;;;;;;;;;;;;;;;;8370:97;;;;;;;;;;-1:-1:-1;8370:97:0;;;;;;;-1:-1:-1;;;;;8370:97:0;;;7816:43;;;;;;;;;;-1:-1:-1;7816:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;21477:128;;;;;;;;;;-1:-1:-1;21477:128:0;;;;;:::i;:::-;;:::i;23624:295::-;;;;;;;;;;-1:-1:-1;23624:295:0;;;;;:::i;:::-;;:::i;12897:235::-;;;;;;;;;;-1:-1:-1;12897:235:0;;;;;:::i;:::-;;:::i;23273:93::-;;;;;;;;;;;;;:::i;7974:49::-;;;;;;;;;;-1:-1:-1;7974:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11286:133;;;;;;;;;;-1:-1:-1;11286:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11388:19:0;;;11370:7;11388:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11286:133;8474:97;;;;;;;;;;-1:-1:-1;8474:97:0;;;;-1:-1:-1;;;;;8474:97:0;;;18548:228;;;;;;;;;;-1:-1:-1;18548:228:0;;;;;:::i;:::-;;:::i;6679:201::-;;;;;;;;;;-1:-1:-1;6679:201:0;;;;;:::i;:::-;;:::i;22318:127::-;;;;;;;;;;-1:-1:-1;22318:127:0;;;;;:::i;:::-;;:::i;9279:49::-;;;;;;;;;;;;;;;;8580:24;;;;;;;;;;-1:-1:-1;8580:24:0;;;;-1:-1:-1;;;;;8580:24:0;;;9050:25;;;;;;;;;;;;;;;;22453:812;6300:13;:11;:13::i;:::-;22683:33:::1;22699:17:::0;22683:13;:33:::1;:::i;:::-;22672:1;22635:33;22651:17:::0;22635:13;:33:::1;:::i;:::-;22634:39;;;;:::i;:::-;22633:45;::::0;22677:1:::1;22633:45;:::i;:::-;:84;22625:149;;;::::0;-1:-1:-1;;;22625:149:0;;7685:2:1;22625:149:0::1;::::0;::::1;7667:21:1::0;7724:2;7704:18;;;7697:30;7763:34;7743:18;;;7736:62;-1:-1:-1;;;7814:18:1;;;7807:50;7874:19;;22625:149:0::1;;;;;;;;;22785:12;:28:::0;;;22824:16:::1;:36:::0;;;22871:12:::1;:28:::0;;;22910:16:::1;:36:::0;;;22971:29:::1;22886:13:::0;22800;22971:29:::1;:::i;:::-;22957:11;:43:::0;23026:37:::1;23046:17:::0;23026;:37:::1;:::i;:::-;23011:12;:52:::0;23074:14:::1;:32:::0;;;23155:18:::1;23172:1;23091:15:::0;23155:18:::1;:::i;:::-;23139:12;;23125:11;;:26;;;;:::i;:::-;:48;;23117:74;;;::::0;-1:-1:-1;;;23117:74:0;;8106:2:1;23117:74:0::1;::::0;::::1;8088:21:1::0;8145:2;8125:18;;;8118:30;-1:-1:-1;;;8164:18:1;;;8157:43;8217:18;;23117:74:0::1;7904:337:1::0;23117:74:0::1;23215:11;::::0;23228:12:::1;::::0;23242:14:::1;::::0;23207:50:::1;::::0;;8448:25:1;;;8504:2;8489:18;;8482:34;;;;8532:18;;;8525:34;23207:50:0;::::1;::::0;;;;8436:2:1;23207:50:0;;::::1;22453:812:::0;;;;;:::o;13283:617::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;13383:8:::1;13379:67;;;13416:17;::::0;::::1;;13408:26;;;::::0;::::1;;13471:6;13466:427;13483:19:::0;;::::1;13466:427;;;13542:8;13538:277;;;13571:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;13612:56;13628:9;13639:8;;13648:1;13639:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13652:12;13666:1;13612:56;;;;;;;;;:::i;:::-;;;;;;;;13538:277;;;13726:9;:22;13736:8;;13745:1;13736:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13726:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13726:22:0;;:27;13722:71:::1;;13776:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;13722:71;13854:8;:27;;13880:1;13854:27;;;13865:12;13854:27;13829:9;:22;13839:8;;13848:1;13839:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13829:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13829:22:0;:52;13504:3;::::1;::::0;::::1;:::i;:::-;;;;13466:427;;;;13283:617:::0;;;:::o;11427:216::-;11531:10;11502:4;11519:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11519:32:0;;;;;;;;;;:41;;;11576:37;11502:4;;11519:32;;11576:37;;;;11554:6;160:25:1;;148:2;133:18;;14:177;11576:37:0;;;;;;;;-1:-1:-1;11631:4:0;11427:216;;;;;:::o;12647:115::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;12709:13:::1;::::0;::::1;::::0;::::1;;;12708:14;12700:23;;;::::0;::::1;;12734:12;:20:::0;;-1:-1:-1;;12734:20:0::1;::::0;;12647:115::o;10951:107::-;11001:7;11039:15;7406:1;11039:2;:15;:::i;:::-;11019:16;;:36;;;;:::i;:::-;11012:43;;10951:107;:::o;14072:341::-;-1:-1:-1;;;;;14192:19:0;;14172:4;14192:19;;;:11;:19;;;;;;;;14212:10;14192:31;;;;;;;;-1:-1:-1;;14192:52:0;14189:157;;-1:-1:-1;;;;;14294:19:0;;;;;;:11;:19;;;;;;;;14314:10;14294:31;;;;;;;;:40;;14328:6;;14294:40;:::i;:::-;-1:-1:-1;;;;;14260:19:0;;;;;;:11;:19;;;;;;;;14280:10;14260:31;;;;;;;:74;14189:157;14365:40;14379:6;14387:9;14398:6;14365:13;:40::i;:::-;14358:47;;14072:341;;;;;;:::o;23927:138::-;24051:4;;-1:-1:-1;;;;;24051:4:0;;;23980:7;11259:18;;;:9;:18;;;;;;;24033:4;;;;;11259:18;;;;;23980:7;;24023:33;;;:::i;:::-;24007:12;;:50;;;;:::i;18285:255::-;18385:11;;18364:4;;18385:11;;18384:12;:42;;;;-1:-1:-1;;;;;;18401:25:0;;;;;;:14;:25;;;;;;;;18400:26;18384:42;:69;;;;-1:-1:-1;;;;;;18431:22:0;;;;;;:14;:22;;;;;;;;18430:23;18384:69;18381:86;;;-1:-1:-1;18462:5:0;18455:12;;18381:86;-1:-1:-1;;;;;18486:19:0;;;;;;:11;:19;;;;;;;;18485:20;:47;;;;-1:-1:-1;;;;;;;18510:22:0;;;;;:11;:22;;;;;;;;18509:23;;18478:54;-1:-1:-1;18285:255:0:o;12263:372::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;12380:12:::1;::::0;::::1;;12379:13;:33:::0;::::1;;;;12410:2;12396:11;:16;12379:33;12371:42;;;::::0;::::1;;12424:10;:24:::0;;;12459:12:::1;:19:::0;;-1:-1:-1;;12459:19:0::1;12474:4;12459:19;::::0;;12502:12:::1;12489:10;:25:::0;12543:29:::1;12561:11:::0;12543:15:::1;:29;:::i;:::-;12525:15;:47:::0;12611:15:::1;7406:1;12611:2;:15;:::i;:::-;12601:26;::::0;:6;:26:::1;:::i;:::-;12583:15;:44:::0;-1:-1:-1;;;12263:372:0:o;13144:127::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;13202:18:::1;:25:::0;;-1:-1:-1;;13238:25:0;13202::::1;13238::::0;;;13144:127::o;21285:184::-;6300:13;:11;:13::i;:::-;21380:4:::1;::::0;-1:-1:-1;;;;;21380:4:0;;::::1;21374:10:::0;;::::1;::::0;21366:57:::1;;;::::0;-1:-1:-1;;;21366:57:0;;11526:2:1;21366:57:0::1;::::0;::::1;11508:21:1::0;11565:2;11545:18;;;11538:30;11604:34;11584:18;;;11577:62;-1:-1:-1;;;11655:18:1;;;11648:32;11697:19;;21366:57:0::1;11324:398:1::0;21366:57:0::1;-1:-1:-1::0;;;;;21434:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;21434:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21285:184::o;21613:339::-;6300:13;:11;:13::i;:::-;21748:1:::1;21733:12;:16;:37;;;;;21769:1;21753:13;:17;21733:37;:52;;;;;21784:1;21774:7;:11;21733:52;:72;;;;;21800:5;21789:7;:16;;21733:72;21725:81;;;::::0;::::1;;21867:7;21851:12;21836;;:27;;;;:::i;:::-;21835:39;;;;:::i;:::-;21817:15;:57:::0;21905:12:::1;::::0;21937:7;;21905:28:::1;::::0;21920:13;;21905:28:::1;:::i;:::-;21904:40;;;;:::i;:::-;21885:16;:59:::0;-1:-1:-1;;;21613:339:0:o;11922:329::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;12037:21:::1;12074:13:::0;;12071:173:::1;;12105:9;-1:-1:-1::0;;;;;12120:8:0;::::1;12169:3;12137:28;12149:16:::0;12137:9;:28:::1;:::i;:::-;12136:36;;;;:::i;:::-;12120:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12104:73;;;12200:4;12192:40;;;::::0;-1:-1:-1;;;12192:40:0;;12139:2:1;12192:40:0::1;::::0;::::1;12121:21:1::0;12178:2;12158:18;;;12151:30;12217:26;12197:18;;;12190:54;12261:18;;12192:40:0::1;11937:348:1::0;12071:173:0::1;12006:245;11922:329:::0;;:::o;11651:122::-;11706:4;11730:35;11738:7;-1:-1:-1;;11730:7:0;:35::i;12774:111::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;12827:13:::1;:20:::0;;-1:-1:-1;;12858:19:0;;;;;12774:111::o;11785:119::-;6300:13;:11;:13::i;:::-;-1:-1:-1;;;;;11868:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;11868:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11785:119::o;11064:105::-;11114:7;11150:15;7406:1;11150:2;:15;:::i;:::-;11132:14;;:34;;;;:::i;22191:119::-;6300:13;:11;:13::i;:::-;-1:-1:-1;;;;;22274:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22274:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22191:119::o;6570:103::-;6300:13;:11;:13::i;:::-;6635:30:::1;6662:1;6635:18;:30::i;:::-;6570:103::o:0;23374:242::-;6300:13;:11;:13::i;:::-;23491:20:::1;:53:::0;;-1:-1:-1;;;;;;23491:53:0::1;;-1:-1:-1::0;;;;;23491:53:0;;::::1;;;::::0;;23555:20:::1;:53:::0;;-1:-1:-1;;;;;;23555:53:0::1;::::0;;;::::1;;::::0;;23374:242::o;13908:156::-;13988:4;14012:44;14026:10;14038:9;14049:6;14012:13;:44::i;21964:219::-;6300:13;:11;:13::i;:::-;22074:1:::1;22062:9;:13;:28;;;;;22089:1;22079:7;:11;22062:28;:48;;;;;22105:5;22094:7;:16;;22062:48;22054:57;;;::::0;::::1;;22168:7;22155:9;22140:12;;:24;;;;:::i;:::-;22139:36;;;;:::i;:::-;22122:14;:53:::0;-1:-1:-1;;21964:219:0:o;10840:105::-;10889:7;10926:15;7406:1;10926:2;:15;:::i;:::-;10907;;:35;;;;:::i;21477:128::-;6300:13;:11;:13::i;:::-;21559:10:::1;21551:4;:18;;21543:27;;;::::0;::::1;;21581:9;:16:::0;21477:128::o;23624:295::-;6300:13;:11;:13::i;:::-;23765:1:::1;23750:12;:16;23742:25;;;::::0;::::1;;23778:11;:22:::0;;-1:-1:-1;;23778:22:0::1;::::0;::::1;;;::::0;;23827:12:::1;::::0;:27:::1;::::0;23842:12;;23827:27:::1;:::i;:::-;23811:13;:43:::0;23895:15:::1;7406:1;23895:2;:15;:::i;:::-;23879:32;::::0;:12;:32:::1;:::i;:::-;23865:11;:46:::0;-1:-1:-1;;;23624:295:0:o;12897:235::-;4469:10;9510:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6385:7:0;6412:6;-1:-1:-1;;;;;6412:6:0;9538:10;:21;9510:49;9502:89;;;;-1:-1:-1;;;9502:89:0;;;;;;;:::i;:::-;12991:18:::1;::::0;::::1;::::0;::::1;;;12990:19;12982:28;;;::::0;::::1;;13021:17;:28:::0;;-1:-1:-1;;13021:28:0::1;::::0;::::1;;;::::0;;13079:6:::1;13068:17:::0;::::1;13060:26;;;::::0;::::1;;13116:8;13097:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;12897:235:0:o;23273:93::-;6300:13;:11;:13::i;:::-;23347:11:::1;::::0;;-1:-1:-1;;23332:26:0;::::1;23347:11;::::0;;::::1;23346:12;23332:26;::::0;;23273:93::o;18548:228::-;18604:7;18654:12;18640:10;;18627;;:23;;;;:::i;:::-;:39;18624:73;;18693:1;18676:14;;:18;;;;:::i;18624:73::-;18711:7;18707:32;;;-1:-1:-1;;18727:12:0;;;18548:228::o;18707:32::-;-1:-1:-1;;18757:11:0;;;18548:228::o;6679:201::-;6300:13;:11;:13::i;:::-;-1:-1:-1;;;;;6768:22:0;::::1;6760:73;;;::::0;-1:-1:-1;;;6760:73:0;;12492:2:1;6760:73:0::1;::::0;::::1;12474:21:1::0;12531:2;12511:18;;;12504:30;12570:34;12550:18;;;12543:62;-1:-1:-1;;;12621:18:1;;;12614:36;12667:19;;6760:73:0::1;12290:402:1::0;6760:73:0::1;6844:28;6863:8;6844:18;:28::i;:::-;6679:201:::0;:::o;22318:127::-;6300:13;:11;:13::i;:::-;-1:-1:-1;;;;;22405:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22405:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22318:127::o;6432:132::-;6385:7;6412:6;-1:-1:-1;;;;;6412:6:0;4469:10;6496:23;6488:68;;;;-1:-1:-1;;;6488:68:0;;12899:2:1;6488:68:0;;;12881:21:1;;;12918:18;;;12911:30;12977:34;12957:18;;;12950:62;13029:18;;6488:68:0;12697:356:1;14421:1789:0;14513:4;-1:-1:-1;;;;;14538:20:0;;14530:57;;;;-1:-1:-1;;;14530:57:0;;13260:2:1;14530:57:0;;;13242:21:1;13299:2;13279:18;;;13272:30;13338:26;13318:18;;;13311:54;13382:18;;14530:57:0;13058:348:1;14530:57:0;-1:-1:-1;;;;;14606:23:0;;14598:58;;;;-1:-1:-1;;;14598:58:0;;13613:2:1;14598:58:0;;;13595:21:1;13652:2;13632:18;;;13625:30;-1:-1:-1;;;13671:18:1;;;13664:52;13733:18;;14598:58:0;13411:346:1;14598:58:0;14684:1;14675:6;:10;14667:44;;;;-1:-1:-1;;;14667:44:0;;13964:2:1;14667:44:0;;;13946:21:1;14003:2;13983:18;;;13976:30;-1:-1:-1;;;14022:18:1;;;14015:51;14083:18;;14667:44:0;13762:345:1;14667:44:0;-1:-1:-1;;;;;14730:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;14730:27:0;14722:60;;;;-1:-1:-1;;;14722:60:0;;14314:2:1;14722:60:0;;;14296:21:1;14353:2;14333:18;;;14326:30;-1:-1:-1;;;14372:18:1;;;14365:50;14432:18;;14722:60:0;14112:344:1;14722:60:0;16289:10;;:15;;;14796:40;;-1:-1:-1;;;;;;14811:25:0;;;;;;:14;:25;;;;;;;;14796:40;14793:120;;;-1:-1:-1;;;;;14847:24:0;;;;;;:16;:24;;;;;;;;14839:61;;;;-1:-1:-1;;;14839:61:0;;14663:2:1;14839:61:0;;;14645:21:1;14702:2;14682:18;;;14675:30;14741:26;14721:18;;;14714:54;14785:18;;14839:61:0;14461:348:1;14839:61:0;14902:8;16371:12;16358:10;:25;16409:15;16394:12;:30;16435:11;:18;;-1:-1:-1;;16435:18:0;16449:4;16435:18;;;16320:141;14902:8;14927:12;;;;14923:111;;-1:-1:-1;;;;;14950:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;14978:27:0;;;;;;:16;:27;;;;;;;;14950:55;14942:89;;;;-1:-1:-1;;;14942:89:0;;15016:2:1;14942:89:0;;;14998:21:1;15055:2;15035:18;;;15028:30;-1:-1:-1;;;15074:18:1;;;15067:51;15135:18;;14942:89:0;14814:345:1;14942:89:0;15046:39;15059:6;15067:9;15078:6;15046:12;:39::i;:::-;-1:-1:-1;;;;;15111:25:0;;;;;;:14;:25;;;;;;;;15110:26;:47;;;;-1:-1:-1;15153:4:0;;-1:-1:-1;;;;;15140:17:0;;;15153:4;;15140:17;;15110:47;15106:182;;;-1:-1:-1;;;;;15179:26:0;;;;;;:15;:26;;;;;;;;15174:103;;15226:35;15243:9;15254:6;15226:16;:35::i;:::-;15311:17;;;;:54;;;;;15350:15;15332;;:33;15311:54;15308:351;;;-1:-1:-1;;;;;15385:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;15411:9:0;-1:-1:-1;;;;;15411:22:0;;;;15385:48;:77;;;;-1:-1:-1;;;;;;15437:20:0;;;;;;:9;:20;;;;;;:25;15385:77;15382:266;;;-1:-1:-1;;;;;15483:20:0;;;;;;:9;:20;;;;;15506:12;15483:35;;15537:15;:17;;;;;;:::i;:::-;;;;;;15578:54;15594:9;15605;15616:12;15630:1;15578:54;;;;;;;;;:::i;:::-;;;;;;;;15382:266;15682:6;;;;15679:63;;;15698:41;15713:6;15721:9;15732:6;15698:14;:41::i;:::-;15691:48;;;;15679:63;-1:-1:-1;;;;;15774:17:0;;;;;;:9;:17;;;;;;:26;;15794:6;;15774:26;:::i;:::-;-1:-1:-1;;;;;15754:17:0;;;;;;:9;:17;;;;;:46;15838:6;15860:32;15764:6;15882:9;15860:13;:32::i;:::-;15857:182;;;15926:26;15934:9;15945:6;15926:7;:26::i;:::-;15909:43;;15970:25;15985:9;15970:14;:25::i;:::-;:39;;;;;16008:1;15999:6;:10;15970:39;15967:60;;;16011:16;16020:6;16011:8;:16::i;:::-;-1:-1:-1;;;;;16082:20:0;;;;;;:9;:20;;;;;;:37;;16105:14;;16082:37;:::i;:::-;-1:-1:-1;;;;;16059:20:0;;;;;;;:9;:20;;;;;;;:60;;;;16137:43;;;;;;;;;;16165:14;160:25:1;;148:2;133:18;;14:177;16137:43:0;;;;;;;;-1:-1:-1;16198:4:0;;14421:1789;-1:-1:-1;;;;14421:1789:0:o;6886:191::-;6960:16;6979:6;;-1:-1:-1;;;;;6996:17:0;;;-1:-1:-1;;;;;;6996:17:0;;;;;;7029:40;;6979:6;;;;;;;7029:40;;6960:16;7029:40;6949:128;6886:191;:::o;17024:1253::-;-1:-1:-1;;;;;17121:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;17148:26:0;;;;;;:15;:26;;;;;;;;17121:53;17117:66;;;17024:1253;;;:::o;17117:66::-;-1:-1:-1;;;;;17212:22:0;;;;;;:14;:22;;;;;;;;:59;;17255:16;;17212:59;;;17237:15;;17212:59;17201:6;:71;;17193:101;;;;-1:-1:-1;;;17193:101:0;;15835:2:1;17193:101:0;;;15817:21:1;15874:2;15854:18;;;15847:30;-1:-1:-1;;;15893:18:1;;;15886:47;15950:18;;17193:101:0;15633:341:1;17193:101:0;17334:9;;-1:-1:-1;;;;;17313:18:0;;;;;;:7;:18;;;;;;17347:12;;17313:30;;;:::i;:::-;:46;;17305:88;;;;-1:-1:-1;;;17305:88:0;;16181:2:1;17305:88:0;;;16163:21:1;16220:2;16200:18;;;16193:30;16259:31;16239:18;;;16232:59;16308:18;;17305:88:0;15979:353:1;17305:88:0;-1:-1:-1;;;;;17418:17:0;;;;;;:9;:17;;;;;;:22;17414:261;;17493:15;7406:1;17493:2;:15;:::i;:::-;17474;;:35;;;;:::i;:::-;17464:6;:45;;:70;;;;-1:-1:-1;;;;;;17513:16:0;;;;;;:8;:16;;;;;;:21;17464:70;:107;;;;;17556:15;17538;;:33;17464:107;17456:161;;;;-1:-1:-1;;;17456:161:0;;16539:2:1;17456:161:0;;;16521:21:1;16578:2;16558:18;;;16551:30;16617:34;16597:18;;;16590:62;-1:-1:-1;;;16668:18:1;;;16661:39;16717:19;;17456:161:0;16337:405:1;17456:161:0;-1:-1:-1;;;;;17632:16:0;;;;;;:8;:16;;;;;17651:12;17632:31;;17414:261;-1:-1:-1;;;;;17699:25:0;;;;;;:14;:25;;;;;;;;17695:575;;;-1:-1:-1;;;;;;;17741:16:0;;;;;:8;:16;;;;;17760:12;17741:31;;11922:329::o;17695:575::-;17794:32;17808:6;17816:9;17794:13;:32::i;:::-;17790:480;;;17847:17;;;;:54;;;;;17886:15;17868;;:33;17847:54;:92;;;;-1:-1:-1;17913:9:0;17905:18;;;;:7;:18;;;;;;17927:12;17905:34;17847:92;:121;;;;-1:-1:-1;;;;;;17943:20:0;;;;;;:9;:20;;;;;;:25;17847:121;17843:275;;;-1:-1:-1;;;;;17989:20:0;;;;;;:9;:20;;;;;;;18012:12;17989:35;;;;18048:54;;;;;;18064:9;;17999;;18100:1;;18048:54;:::i;:::-;;;;;;;;17843:275;-1:-1:-1;;;;;18132:18:0;;;;;;:7;:18;;;;;18153:12;18132:33;;18184:9;:22;18180:78;;18233:9;18225:18;;;;:7;:18;;;;;18246:12;18225:33;;17024:1253;;;:::o;16781:235::-;16889:14;;-1:-1:-1;;;;;16922:20:0;;16867:19;16922:20;;;:9;:20;;;;;;16889:14;;16922:29;;16945:6;;16922:29;:::i;:::-;:44;;16914:94;;;;-1:-1:-1;;;16914:94:0;;17418:2:1;16914:94:0;;;17400:21:1;17457:2;17437:18;;;17430:30;17496:34;17476:18;;;17469:62;-1:-1:-1;;;17547:18:1;;;17540:35;17592:19;;16914:94:0;17216:401:1;16469:300:0;-1:-1:-1;;;;;16599:17:0;;16562:4;16599:17;;;:9;:17;;;;;;:26;;16619:6;;16599:26;:::i;:::-;-1:-1:-1;;;;;16579:17:0;;;;;;;:9;:17;;;;;;:46;;;;16659:20;;;;;;;:29;;16682:6;;16659:29;:::i;:::-;-1:-1:-1;;;;;16636:20:0;;;;;;;:9;:20;;;;;;;:52;;;;16704:35;;;;;;;;;;16732:6;160:25:1;;148:2;133:18;;14:177;16704:35:0;;;;;;;;-1:-1:-1;16757:4:0;16469:300;;;;;:::o;18784:317::-;-1:-1:-1;;;;;18889:25:0;;18854:7;18889:25;;;:14;:25;;;;;;18979:14;;18889:25;;;;;18854:7;;18955:20;18889:25;18955:11;:20::i;:::-;18946:29;;:6;:29;:::i;:::-;18945:48;;;;:::i;:::-;19032:4;19014:24;;;;:9;:24;;;;;:37;;18925:68;;-1:-1:-1;18925:68:0;;19014:24;;;:37;;18925:68;;19014:37;:::i;:::-;;;;-1:-1:-1;19075:18:0;;-1:-1:-1;19084:9:0;19075:6;:18;:::i;:::-;19068:25;18784:317;-1:-1:-1;;;;;18784:317:0:o;19109:303::-;19215:10;19175:4;19200:26;;;:14;:26;;;;;;;;19199:27;:47;;;;-1:-1:-1;19240:6:0;;;;19239:7;19199:47;:71;;;;-1:-1:-1;19259:11:0;;;;19199:71;:109;;;;-1:-1:-1;;;;;;19283:25:0;;;;;;:14;:25;;;;;;;;19199:109;:161;;;;-1:-1:-1;19349:11:0;;19339:4;19321:24;;;;:9;:24;;;;;;:39;;19199:161;:205;;;;;19403:1;19388:12;;19374:11;;:26;;;;:::i;:::-;:30;19192:212;19109:303;-1:-1:-1;;19109:303:0:o;19420:1853::-;9375:6;:13;;-1:-1:-1;;9375:13:0;9384:4;9375:13;;;19516:12:::1;::::0;19502:11:::1;::::0;9375:6;;19502:26:::1;::::0;::::1;:::i;:::-;19483:45;;19539:20;19571:13;;19562:6;:22;:47;;19596:13;;19562:47;;;19587:6;19562:47;19642:4;19624:24;::::0;;;:9:::1;:24;::::0;;;;;19539:70;;-1:-1:-1;19624:39:0;-1:-1:-1;19620:84:0::1;;;-1:-1:-1::0;19698:4:0::1;19680:24;::::0;;;:9:::1;:24;::::0;;;;;19620:84:::1;19725:25;19768:16;;19753:12;;:31;;;;:::i;:::-;19725:59:::0;-1:-1:-1;19795:23:0::1;19862:8:::0;19857:1:::1;19822:32;19725:59:::0;19822:12;:32:::1;:::i;:::-;:36;;;;:::i;:::-;19821:49;;;;:::i;:::-;19795:75:::0;-1:-1:-1;19881:31:0::1;19795:75:::0;19881:31;::::1;:::i;:::-;19949:16;::::0;;19963:1:::1;19949:16:::0;;;;;::::1;::::0;;19881:31;;-1:-1:-1;19925:21:0::1;::::0;19949:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19949:16:0::1;19925:40;;19994:4;19976;19981:1;19976:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19976:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20020:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;20020:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;19976:7;;20020:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20010:4;20015:1;20010:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20010:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20112:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;20112:188:0;;20078:21:::1;::::0;20112:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;20184:12;;20054:21:::1;::::0;20227:4;;20254::::1;::::0;20274:15:::1;::::0;20112:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20313:17;20357:13;20333:21;:37;;;;:::i;:::-;20313:57:::0;-1:-1:-1;20381:19:0::1;20415:21;20435:1;20415:17:::0;:21:::1;:::i;:::-;20403:34;::::0;:8;:34:::1;:::i;:::-;20381:56:::0;-1:-1:-1;20450:26:0::1;20381:56:::0;20512:1:::1;20480:29;20492:17:::0;20480:9;:29:::1;:::i;:::-;:33;;;;:::i;:::-;20479:49;;;;:::i;:::-;20450:78:::0;-1:-1:-1;20539:26:0::1;20568:30;20450:78:::0;20568:9;:30:::1;:::i;:::-;20539:59:::0;-1:-1:-1;20623:22:0;;20619:243:::1;;20687:20;::::0;:56:::1;::::0;20663:18:::1;::::0;-1:-1:-1;;;;;20687:20:0::1;::::0;20720:18;;20663;20687:56;20663:18;20687:56;20720:18;20687:20;:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20619:243:0::1;20885:19:::0;;20882:293:::1;;20920:6;::::0;21094:20:::1;::::0;20920:243:::1;::::0;-1:-1:-1;;;20920:243:0;;20996:4:::1;20920:243;::::0;::::1;19344:34:1::0;19394:18;;;19387:34;;;-1:-1:-1;19437:18:1;;;19430:34;;;19480:18;;;19473:34;-1:-1:-1;;;;;20920:6:0::1;21094:20:::0;;::::1;::::0;::::1;19523:19:1::0;;;19516:44;21133:15:0::1;19576:19:1::0;;;19569:35;20920:6:0;::::1;::::0;:22:::1;::::0;20950:18;;19278:19:1;;20920:243:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20882:293;21192:73;::::0;;8448:25:1;;;8504:2;8489:18;;8482:34;;;8532:18;;;8525:34;;;21192:73:0::1;::::0;8436:2:1;8421:18;21192:73:0::1;;;;;;;-1:-1:-1::0;;9393:6:0;:14;;-1:-1:-1;;9393:14:0;;;-1:-1:-1;;;;;;;;;19420:1853:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:548::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;939:3;1124:1;1119:2;1110:6;1099:9;1095:22;1091:31;1084:42;1194:2;1187;1183:7;1178:2;1170:6;1166:15;1162:29;1151:9;1147:45;1143:54;1135:62;;;;655:548;;;;:::o;1208:160::-;1273:20;;1329:13;;1322:21;1312:32;;1302:60;;1358:1;1355;1348:12;1302:60;1208:160;;;:::o;1373:689::-;1465:6;1473;1481;1534:2;1522:9;1513:7;1509:23;1505:32;1502:52;;;1550:1;1547;1540:12;1502:52;1590:9;1577:23;1619:18;1660:2;1652:6;1649:14;1646:34;;;1676:1;1673;1666:12;1646:34;1714:6;1703:9;1699:22;1689:32;;1759:7;1752:4;1748:2;1744:13;1740:27;1730:55;;1781:1;1778;1771:12;1730:55;1821:2;1808:16;1847:2;1839:6;1836:14;1833:34;;;1863:1;1860;1853:12;1833:34;1918:7;1911:4;1901:6;1898:1;1894:14;1890:2;1886:23;1882:34;1879:47;1876:67;;;1939:1;1936;1929:12;1876:67;1970:4;1962:13;;;;-1:-1:-1;1994:6:1;-1:-1:-1;2019:37:1;;2035:20;;;-1:-1:-1;2019:37:1;:::i;:::-;2009:47;;1373:689;;;;;:::o;2067:131::-;-1:-1:-1;;;;;2142:31:1;;2132:42;;2122:70;;2188:1;2185;2178:12;2203:315;2271:6;2279;2332:2;2320:9;2311:7;2307:23;2303:32;2300:52;;;2348:1;2345;2338:12;2300:52;2387:9;2374:23;2406:31;2431:5;2406:31;:::i;:::-;2456:5;2508:2;2493:18;;;;2480:32;;-1:-1:-1;;;2203:315:1:o;2715:456::-;2792:6;2800;2808;2861:2;2849:9;2840:7;2836:23;2832:32;2829:52;;;2877:1;2874;2867:12;2829:52;2916:9;2903:23;2935:31;2960:5;2935:31;:::i;:::-;2985:5;-1:-1:-1;3042:2:1;3027:18;;3014:32;3055:33;3014:32;3055:33;:::i;:::-;2715:456;;3107:7;;-1:-1:-1;;;3161:2:1;3146:18;;;;3133:32;;2715:456::o;3365:388::-;3433:6;3441;3494:2;3482:9;3473:7;3469:23;3465:32;3462:52;;;3510:1;3507;3500:12;3462:52;3549:9;3536:23;3568:31;3593:5;3568:31;:::i;:::-;3618:5;-1:-1:-1;3675:2:1;3660:18;;3647:32;3688:33;3647:32;3688:33;:::i;:::-;3740:7;3730:17;;;3365:388;;;;;:::o;3758:316::-;3835:6;3843;3851;3904:2;3892:9;3883:7;3879:23;3875:32;3872:52;;;3920:1;3917;3910:12;3872:52;-1:-1:-1;;3943:23:1;;;4013:2;3998:18;;3985:32;;-1:-1:-1;4064:2:1;4049:18;;;4036:32;;3758:316;-1:-1:-1;3758:316:1:o;4079:247::-;4138:6;4191:2;4179:9;4170:7;4166:23;4162:32;4159:52;;;4207:1;4204;4197:12;4159:52;4246:9;4233:23;4265:31;4290:5;4265:31;:::i;4331:315::-;4396:6;4404;4457:2;4445:9;4436:7;4432:23;4428:32;4425:52;;;4473:1;4470;4463:12;4425:52;4512:9;4499:23;4531:31;4556:5;4531:31;:::i;:::-;4581:5;-1:-1:-1;4605:35:1;4636:2;4621:18;;4605:35;:::i;:::-;4595:45;;4331:315;;;;;:::o;4651:::-;4719:6;4727;4780:2;4768:9;4759:7;4755:23;4751:32;4748:52;;;4796:1;4793;4786:12;4748:52;4832:9;4819:23;4809:33;;4892:2;4881:9;4877:18;4864:32;4905:31;4930:5;4905:31;:::i;5179:248::-;5247:6;5255;5308:2;5296:9;5287:7;5283:23;5279:32;5276:52;;;5324:1;5321;5314:12;5276:52;-1:-1:-1;;5347:23:1;;;5417:2;5402:18;;;5389:32;;-1:-1:-1;5179:248:1:o;5656:180::-;5715:6;5768:2;5756:9;5747:7;5743:23;5739:32;5736:52;;;5784:1;5781;5774:12;5736:52;-1:-1:-1;5807:23:1;;5656:180;-1:-1:-1;5656:180:1:o;5841:316::-;5915:6;5923;5931;5984:2;5972:9;5963:7;5959:23;5955:32;5952:52;;;6000:1;5997;5990:12;5952:52;6023:26;6039:9;6023:26;:::i;:::-;6013:36;6096:2;6081:18;;6068:32;;-1:-1:-1;6147:2:1;6132:18;;;6119:32;;5841:316;-1:-1:-1;;;5841:316:1:o;6162:248::-;6227:6;6235;6288:2;6276:9;6267:7;6263:23;6259:32;6256:52;;;6304:1;6301;6294:12;6256:52;6327:26;6343:9;6327:26;:::i;6415:180::-;6471:6;6524:2;6512:9;6503:7;6499:23;6495:32;6492:52;;;6540:1;6537;6530:12;6492:52;6563:26;6579:9;6563:26;:::i;6826:127::-;6887:10;6882:3;6878:20;6875:1;6868:31;6918:4;6915:1;6908:15;6942:4;6939:1;6932:15;6958:125;7023:9;;;7044:10;;;7041:36;;;7057:18;;:::i;7088:217::-;7128:1;7154;7144:132;;7198:10;7193:3;7189:20;7186:1;7179:31;7233:4;7230:1;7223:15;7261:4;7258:1;7251:15;7144:132;-1:-1:-1;7290:9:1;;7088:217::o;7310:168::-;7383:9;;;7414;;7431:15;;;7425:22;;7411:37;7401:71;;7452:18;;:::i;8570:351::-;8772:2;8754:21;;;8811:2;8791:18;;;8784:30;8850:29;8845:2;8830:18;;8823:57;8912:2;8897:18;;8570:351::o;8926:135::-;8965:3;8986:17;;;8983:43;;9006:18;;:::i;:::-;-1:-1:-1;9053:1:1;9042:13;;8926:135::o;9066:127::-;9127:10;9122:3;9118:20;9115:1;9108:31;9158:4;9155:1;9148:15;9182:4;9179:1;9172:15;9198:464;-1:-1:-1;;;;;9491:15:1;;;9473:34;;9543:15;;;;9538:2;9523:18;;9516:43;9590:2;9575:18;;9568:34;9650:4;9638:17;;;9633:2;9618:18;;9611:45;9422:3;9407:19;;9198:464::o;9667:136::-;9706:3;9734:5;9724:39;;9743:18;;:::i;:::-;-1:-1:-1;;;9779:18:1;;9667:136::o;9808:422::-;9897:1;9940:5;9897:1;9954:270;9975:7;9965:8;9962:21;9954:270;;;10034:4;10030:1;10026:6;10022:17;10016:4;10013:27;10010:53;;;10043:18;;:::i;:::-;10093:7;10083:8;10079:22;10076:55;;;10113:16;;;;10076:55;10192:22;;;;10152:15;;;;9954:270;;;9958:3;9808:422;;;;;:::o;10235:806::-;10284:5;10314:8;10304:80;;-1:-1:-1;10355:1:1;10369:5;;10304:80;10403:4;10393:76;;-1:-1:-1;10440:1:1;10454:5;;10393:76;10485:4;10503:1;10498:59;;;;10571:1;10566:130;;;;10478:218;;10498:59;10528:1;10519:10;;10542:5;;;10566:130;10603:3;10593:8;10590:17;10587:43;;;10610:18;;:::i;:::-;-1:-1:-1;;10666:1:1;10652:16;;10681:5;;10478:218;;10780:2;10770:8;10767:16;10761:3;10755:4;10752:13;10748:36;10742:2;10732:8;10729:16;10724:2;10718:4;10715:12;10711:35;10708:77;10705:159;;;-1:-1:-1;10817:19:1;;;10849:5;;10705:159;10896:34;10921:8;10915:4;10896:34;:::i;:::-;10966:6;10962:1;10958:6;10954:19;10945:7;10942:32;10939:58;;;10977:18;;:::i;:::-;11015:20;;10235:806;-1:-1:-1;;;10235:806:1:o;11046:140::-;11104:5;11133:47;11174:4;11164:8;11160:19;11154:4;11133:47;:::i;11191:128::-;11258:9;;;11279:11;;;11276:37;;;11293:18;;:::i;17754:251::-;17824:6;17877:2;17865:9;17856:7;17852:23;17848:32;17845:52;;;17893:1;17890;17883:12;17845:52;17925:9;17919:16;17944:31;17969:5;17944:31;:::i;18010:980::-;18272:4;18320:3;18309:9;18305:19;18351:6;18340:9;18333:25;18377:2;18415:6;18410:2;18399:9;18395:18;18388:34;18458:3;18453:2;18442:9;18438:18;18431:31;18482:6;18517;18511:13;18548:6;18540;18533:22;18586:3;18575:9;18571:19;18564:26;;18625:2;18617:6;18613:15;18599:29;;18646:1;18656:195;18670:6;18667:1;18664:13;18656:195;;;18735:13;;-1:-1:-1;;;;;18731:39:1;18719:52;;18826:15;;;;18791:12;;;;18767:1;18685:9;18656:195;;;-1:-1:-1;;;;;;;18907:32:1;;;;18902:2;18887:18;;18880:60;-1:-1:-1;;;18971:3:1;18956:19;18949:35;18868:3;18010:980;-1:-1:-1;;;18010:980:1:o;19615:306::-;19703:6;19711;19719;19772:2;19760:9;19751:7;19747:23;19743:32;19740:52;;;19788:1;19785;19778:12;19740:52;19817:9;19811:16;19801:26;;19867:2;19856:9;19852:18;19846:25;19836:35;;19911:2;19900:9;19896:18;19890:25;19880:35;;19615:306;;;;;:::o

Swarm Source

ipfs://22ba0d3a2f99aad9792d3f58983cd6f8ed1f46cce22096a5e4923722c22d531e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.