ETH Price: $3,457.54 (-0.87%)
Gas: 10 Gwei

Token

Big Fish ($BISH)
 

Overview

Max Total Supply

100,000 $BISH

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,476.948308922329983777 $BISH

Value
$0.00
0xf02df97ea80e4b00f4ad077cef7e349202686a8f
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:
BigFish

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-12
*/

/**
 *Submitted for verification at Etherscan.io on 2022-03-06
*/ 
// https://t.me/BigFish
// Big fish is a fork of Lord of ETH, the biggest buyer is rewarded with a percentage from each transaction!
// !!IF YOU BUY THIS BEFORE JEFF SAYS IT'S SAFE, YOU WILL NOT BE REFUNDED!!
pragma solidity ^0.8.12;

// SPDX-License-Identifier: Unlicensed

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

    function WETH() external pure returns (address);

    function getAmountsIn(uint256 amountOut, address[] memory path)
        external
        view
        returns (uint256[] memory amounts);

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

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

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

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

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract ERC20Interface {
    function balanceOf(address whom) public view virtual returns (uint256);
}

contract BigFish is IERC20, Ownable {
    using SafeMath for uint256;

    string constant _name = "Big Fish";
    string constant _symbol = "$BISH";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    //address routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;

    uint256 _totalSupply = 100000 * (10**_decimals);
    uint256 public biggestBuy = 0;
    uint256 public lastRingChange = 0;
    uint256 public resetPeriod = 30 minutes;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => uint256) public _lastRingTimer;
    mapping(address => uint256) public _payOut;
    mapping(address => bool) public previousRingHolder;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) private _isBlackedlisted;

    uint256 private constant MAX = ~uint256(0);

    uint256 public liquidityFee = 50;
    uint256 public marketingFee = 49;
    uint256 public ringFee = 0;
    uint256 private totalFee = 99;
    uint256 private totalFeeIfSelling = 0;
    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public Ring;
    address public _payOutAddress;

    bool public _isLaunched = false;
    uint256 _launchTime;

    IDEXRouter public router;
    address public pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxWalletAmount = _totalSupply / 33;
    uint256 public swapThreshold = _totalSupply / 100;
    uint256 public timeToWait = 6;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event NewRing(address ring, uint256 buyAmount);
    event RingPayout(address ring, uint256 amountETH);
    event RingSold(address ring, uint256 amountETH);

    constructor()  {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = MAX;
        isFeeExempt[DEAD] = true;
        isTxLimitExempt[DEAD] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        autoLiquidityReceiver = msg.sender;
        marketingWallet = msg.sender;
        Ring = msg.sender;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
        totalFeeIfSelling = totalFee;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function getOwner() external view override returns (address) {
        return owner();
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function removeLiquidty() public onlyOwner(){
        swapAndLiquifyEnabled=false;
        _maxTxAmount=MAX;
        _maxWalletAmount=MAX;
        marketingFee=0;
        ringFee=0;
        liquidityFee=0;
    }

    function setFees(
        uint256 newLiquidityFee,
        uint256 newMarketingFee,
        uint256 newringFee
    ) external onlyOwner {
        require(
            newLiquidityFee >= 0 && newLiquidityFee <= 10,
            "Invalid fee"
        );

        require(
            newMarketingFee >= 0 && newMarketingFee <= 10,
            "Invalid fee"
        );

        require(
            newringFee >= 0 && newringFee <= 10,
            "Invalid fee"
        );

        liquidityFee = newLiquidityFee;
        marketingFee = newMarketingFee;
        ringFee = newringFee;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

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

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

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

    function setSwapThreshold(uint256 threshold) external onlyOwner {
        swapThreshold = threshold;
    }

    function setFeeReceivers(
        address newLiquidityReceiver,
        address newMarketingWallet
    ) external onlyOwner {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
    }

    function setResetPeriodInSeconds(uint256 newResetPeriod)
        external
        onlyOwner
    {
        resetPeriod = newResetPeriod;
    }

    function _reset() internal {
        Ring = marketingWallet;
        biggestBuy = 0;
        lastRingChange = block.timestamp;
    }

    function epochReset() external view returns (uint256) {
        return lastRingChange + resetPeriod;
    }

    function enableHappyHour() public onlyOwner()
    {
        liquidityFee = 1;
        marketingFee = 1;
        ringFee = 8;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function setDefaultTaxes() public onlyOwner()
    {
        liquidityFee = 2;
        marketingFee = 4;
        ringFee = 4;
        totalFee = liquidityFee.add(marketingFee).add(ringFee);
    }

    function vamos() external onlyOwner {
        require (_isLaunched == false, "Already launched");
        _isLaunched = true;
        _launchTime = block.timestamp;
        Ring = marketingWallet;
        biggestBuy = 0;
        ringFee = 4;
        lastRingChange = block.timestamp;
    }

    function setMaxWalletSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply / 50, "Max wallet size is too low");
        _maxWalletAmount = amount;

    }

    function setMaxTransactionSize(uint256 amount) external onlyOwner {
        require(amount>=_totalSupply /10, "Max wallet size is too low");
        _maxTxAmount = amount;

    }

    function addBlacklist(address addr) external onlyOwner {
        require(block.timestamp < _launchTime + 45 minutes);
        _isBlackedlisted[addr]=true;

    }

    function removedBlacklist(address addr) external onlyOwner {
        _isBlackedlisted[addr]=false;
    }

    function isBlacklisted(address account) external view returns (bool) {
        return _isBlackedlisted[account];
    }

    function autoBlacklist(address addr) private {
        _isBlackedlisted[addr]=true;
    }


    function _checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (block.timestamp - lastRingChange > resetPeriod) {
            _reset();
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[recipient] &&
            recipient != ZERO &&
            recipient != DEAD &&
            recipient != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            uint256 contractBalanceRecipient = balanceOf(recipient);
            require(
                contractBalanceRecipient + amount <= _maxWalletAmount,
                "Exceeds maximum wallet token amount"
            );

            address[] memory path = new address[](2);
            path[0] = router.WETH();
            path[1] = address(this);
            uint256 usedEth = router.getAmountsIn(amount, path)[0];

            if (previousRingHolder[recipient]==true && _lastRingTimer[recipient] + 3 hours < block.timestamp && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }

            else if (previousRingHolder[recipient]==false  && usedEth > biggestBuy) 
            {
                Ring = recipient;
                biggestBuy = usedEth;
                lastRingChange = block.timestamp;
                emit NewRing(Ring, biggestBuy);
            }
        }
        if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[sender] &&
            sender != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            if (Ring == sender) {
                emit RingSold(Ring, biggestBuy);
                _reset();
            }
 
        }
    }

    function setSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit)
        external
        onlyOwner
    {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    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] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        _transferFrom(sender, recipient, amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(_isBlackedlisted[sender]!=true && _isBlackedlisted[recipient]!=true, "Blacklisted");
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }
        _checkTxLimit(sender, recipient, amount);
        require(!isWalletToWallet(sender, recipient), "Don't cheat");

        uint256 amountReceived = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;

        if (_isLaunched !=true && recipient !=pair && sender!=owner() && recipient!=owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
            autoBlacklist(recipient);
        }
        else if (sender==owner() || recipient==owner()) 
        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
            _balances[sender] = _balances[sender].sub(amount);                       
        }
        else

        {
            _balances[recipient] = _balances[recipient].add(amountReceived);
             _balances[sender] = _balances[sender].sub(amount);
        }
        emit Transfer(msg.sender, recipient, amountReceived);
        return true;
    }

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function isWalletToWallet(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return false;
        }
        if (sender == pair || recipient == pair) {
            return false;
        }
        return true;
    }

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

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

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

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        uint256 amountETHRing = amountETH.mul(ringFee).div(totalETHFee);
        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);

        (bool tmpSuccess, ) = payable(marketingWallet).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        (bool tmpSuccess2, ) = payable(Ring).call{
            value: amountETHRing,
            gas: 30000
        }("");

        _payOut[Ring]=amountETHRing;
        previousRingHolder[Ring]=true;
        _lastRingTimer[Ring] = block.timestamp;
        emit RingPayout(Ring, amountETHRing);

        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess2 = false;

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

    function recoverLosteth() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverLostTokens(address _token, uint256 _amount)
        external
        onlyOwner
    {
        IERC20(_token).transfer(msg.sender, _amount);
    }
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"NewRing","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":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"RingSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Ring","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastRingTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_payOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_payOutAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuy","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":"enableHappyHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRingChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"previousRingHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLiquidty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ringFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setDefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newringFee","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":"amount","type":"uint256"}],"name":"setMaxTransactionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPeriod","type":"uint256"}],"name":"setResetPeriodInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"timeToWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vamos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280548216905560038054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000506012600a620005ae565b6200005f90620186a0620005c6565b600481905560006005819055600681905561070860075560326010556031601155601281905560636013556014556018805460ff60a01b19169055601b805460ff60a81b1916600160a81b179055601c819055620000c090602190620005e8565b601d556064600454620000d49190620005e8565b601e556006601f55348015620000e957600080fd5b50620000f533620003dc565b600354601a80546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017891906200060b565b6001600160a01b031663c9c65396601a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020091906200060b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027391906200060b565b601b80546001600160a01b039283166001600160a01b0319918216178255306000818152600960209081526040808320601a5488168452825280832060001990556001805488168452600d808452828520805460ff19908116841790915582548a168652600e8086528487208054831685179055338088529286528487208054831685179055968652838620805482168417905581865295845282852080548716831790559654909716835290912080549092169094179055601580548216831790556016805482168317905560178054909116909117905560125460115460105462000383936200036f9290620014206200042c821b17901c565b6200042c60201b620014201790919060201c565b601381905560145560045433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000651565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806200043b838562000636565b905083811015620004925760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004f2578160001904821115620004d657620004d66200049b565b80851615620004e457918102915b93841c9390800290620004b6565b509250929050565b6000826200050b5750600162000495565b816200051a5750600062000495565b81600181146200053357600281146200053e576200055e565b600191505062000495565b60ff8411156200055257620005526200049b565b50506001821b62000495565b5060208310610133831016604e8410600b841016171562000583575081810a62000495565b6200058f8383620004b1565b8060001904821115620005a657620005a66200049b565b029392505050565b6000620005bf60ff841683620004fa565b9392505050565b6000816000190483118215151615620005e357620005e36200049b565b500290565b6000826200060657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200061e57600080fd5b81516001600160a01b03811681146200049257600080fd5b600082198211156200064c576200064c6200049b565b500190565b612b3380620006616000396000f3fe60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610a31578063f887ea4014610a51578063fe2b6bc614610a71578063fe575a8714610a8657600080fd5b8063df20fd49146109bc578063ea1644d5146109dc578063eb45e709146109fc578063f2fde38b14610a1157600080fd5b8063cec10c11116100dc578063cec10c1114610920578063dbe1c4d514610940578063dd62ed3e14610956578063dec2ba0f1461099c57600080fd5b8063a9059cbb146108c0578063a9e59da3146108e0578063ca33e64c1461090057600080fd5b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610833578063a4f87a7a14610853578063a617792814610880578063a8aa1b31146108a057600080fd5b80639e0a7810146107cc5780639f2bb2e9146107ed5780639f55eb4e1461080357600080fd5b806395d89b41116101ab57806395d89b411461074857806398118cb4146107765780639cfe42da1461078c5780639d0014b1146107ac57600080fd5b80638da5cb5b146106ce5780638eb6889f1461071c578063944c1d971461073257600080fd5b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461068157806387b3be7d146106ae578063893d20e8146106ce5780638b42507f146106ec57600080fd5b8063715018a61461061e57806375f0a874146106335780637d1db4a51461066b57600080fd5b80636b67c4df116102855780636b67c4df1461059c5780636c0a24eb146105b257806370a08231146105c8578063712a890a146105fe57600080fd5b8063571ac8b01461053c578063658d4b7f1461055c57806366e930b31461057c57600080fd5b8063313ce567116103185780633f4218e0116102f25780633f4218e0146104c057806346cf314f146104f05780634a74bb02146105065780634fef3a821461052757600080fd5b8063313ce5671461047a57806333596f50146104965780633e02a988146104ab57600080fd5b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd146104455780632b112e491461046557600080fd5b80630445b6671461038657806306fdde03146103af578063095ea7b3146103e957600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c601e5481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b50604080518082019091526008815267084d2ce408cd2e6d60c31b60208201525b6040516103a6919061265e565b3480156103f557600080fd5b506104096104043660046126c8565b610abf565b60405190151581526020016103a6565b34801561042557600080fd5b5061042e610b2c565b005b34801561043c57600080fd5b5060045461039c565b34801561045157600080fd5b506104096104603660046126f4565b610b8b565b34801561047157600080fd5b5061039c610c50565b34801561048657600080fd5b50604051601281526020016103a6565b3480156104a257600080fd5b5061042e610ca2565b3480156104b757600080fd5b5061039c610cfb565b3480156104cc57600080fd5b506104096104db366004612735565b600d6020526000908152604090205460ff1681565b3480156104fc57600080fd5b5061039c60125481565b34801561051257600080fd5b50601b5461040990600160a81b900460ff1681565b34801561053357600080fd5b5061042e610d0d565b34801561054857600080fd5b50610409610557366004612735565b610d58565b34801561056857600080fd5b5061042e610577366004612760565b610d66565b34801561058857600080fd5b5061042e610597366004612735565b610dbb565b3480156105a857600080fd5b5061039c60115481565b3480156105be57600080fd5b5061039c601d5481565b3480156105d457600080fd5b5061039c6105e3366004612735565b6001600160a01b031660009081526008602052604090205490565b34801561060a57600080fd5b5061042e610619366004612799565b610e06565b34801561062a57600080fd5b5061042e610e35565b34801561063f57600080fd5b50601654610653906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561067757600080fd5b5061039c601c5481565b34801561068d57600080fd5b5061039c61069c366004612735565b600b6020526000908152604090205481565b3480156106ba57600080fd5b50601754610653906001600160a01b031681565b3480156106da57600080fd5b506000546001600160a01b0316610653565b3480156106f857600080fd5b50610409610707366004612735565b600e6020526000908152604090205460ff1681565b34801561072857600080fd5b5061039c60055481565b34801561073e57600080fd5b5061039c60075481565b34801561075457600080fd5b506040805180820190915260058152640488492a6960db1b60208201526103dc565b34801561078257600080fd5b5061039c60105481565b34801561079857600080fd5b5061042e6107a7366004612735565b610e6b565b3480156107b857600080fd5b5061042e6107c7366004612799565b610ed3565b3480156107d857600080fd5b5060185461040990600160a01b900460ff1681565b3480156107f957600080fd5b5061039c60065481565b34801561080f57600080fd5b5061040961081e366004612735565b600c6020526000908152604090205460ff1681565b34801561083f57600080fd5b5061042e61084e3660046127b2565b610f02565b34801561085f57600080fd5b5061039c61086e366004612735565b600a6020526000908152604090205481565b34801561088c57600080fd5b50601854610653906001600160a01b031681565b3480156108ac57600080fd5b50601b54610653906001600160a01b031681565b3480156108cc57600080fd5b506104096108db3660046126c8565b610f5a565b3480156108ec57600080fd5b5061042e6108fb366004612799565b610f67565b34801561090c57600080fd5b50601554610653906001600160a01b031681565b34801561092c57600080fd5b5061042e61093b3660046127e0565b610ff4565b34801561094c57600080fd5b5061039c601f5481565b34801561096257600080fd5b5061039c6109713660046127b2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109a857600080fd5b5061042e6109b73660046126c8565b6110a6565b3480156109c857600080fd5b5061042e6109d736600461280c565b611146565b3480156109e857600080fd5b5061042e6109f7366004612799565b611192565b348015610a0857600080fd5b5061042e61121f565b348015610a1d57600080fd5b5061042e610a2c366004612735565b611272565b348015610a3d57600080fd5b5061042e610a4c366004612760565b61130a565b348015610a5d57600080fd5b50601a54610653906001600160a01b031681565b348015610a7d57600080fd5b5061042e61135f565b348015610a9257600080fd5b50610409610aa1366004612735565b6001600160a01b03166000908152600f602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b1a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b8152600401610b569061282a565b60405180910390fd5b60026010819055600460118190556012819055610b8691610b809082611420565b90611420565b601355565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610c1391849061147f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c438484846114b9565b50600190505b9392505050565b6002546001600160a01b0316600090815260086020526040812054610c9d906001546001600160a01b0316600090815260086020526040902054610c9790600454906118a5565b906118a5565b905090565b6000546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b569061282a565b60405133904780156108fc02916000818181858888f19350505050158015610cf8573d6000803e3d6000fd5b50565b6000600754600654610c9d9190612875565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b569061282a565b60016010819055601181905560086012819055610b8691610b809080611420565b6000610b2682600019610abf565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de55760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b569061282a565b600755565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610b569061282a565b610e6960006118e7565b565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b569061282a565b601954610ea490610a8c612875565b4210610eaf57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b569061282a565b601e55565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b8152600401610b569061282a565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c493384846114b9565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610b569061282a565b600a600454610fa0919061288d565b811015610fef5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601c55565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610b569061282a565b600a83111561103f5760405162461bcd60e51b8152600401610b56906128af565b600a8211156110605760405162461bcd60e51b8152600401610b56906128af565b600a8111156110815760405162461bcd60e51b8152600401610b56906128af565b60108390556011829055601281905561109e81610b808585611420565b601355505050565b6000546001600160a01b031633146110d05760405162461bcd60e51b8152600401610b569061282a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561111d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114191906128d4565b505050565b6000546001600160a01b031633146111705760405162461bcd60e51b8152600401610b569061282a565b601b8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b6000546001600160a01b031633146111bc5760405162461bcd60e51b8152600401610b569061282a565b60326004546111cb919061288d565b81101561121a5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601d55565b6000546001600160a01b031633146112495760405162461bcd60e51b8152600401610b569061282a565b601b805460ff60a81b19169055600019601c819055601d55600060118190556012819055601055565b6000546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b56565b610cf8816118e7565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113895760405162461bcd60e51b8152600401610b569061282a565b601854600160a01b900460ff16156113d65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610b56565b6018805460ff60a01b1916600160a01b179055426019819055601654601780546001600160a01b0319166001600160a01b0390921691909117905560006005556004601255600655565b60008061142d8385612875565b905083811015610c495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b56565b600081848411156114a35760405162461bcd60e51b8152600401610b56919061265e565b5060006114b084866128f1565b95945050505050565b6001600160a01b0383166000908152600f602052604081205460ff16151560011480159061150557506001600160a01b0383166000908152600f602052604090205460ff161515600114155b61153f5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b56565b601b54600160a01b900460ff16156115635761155c848484611937565b9050610c49565b601b546001600160a01b031633148015906115885750601b54600160a01b900460ff16155b801561159d5750601b54600160a81b900460ff165b80156115ba5750601e543060009081526008602052604090205410155b156115c7576115c7611a1d565b6115d2848484611e5e565b6115dc84846123f4565b156116175760405162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b6044820152606401610b56565b6001600160a01b0384166000908152600d602052604081205460ff1615801561165957506001600160a01b0384166000908152600d602052604090205460ff16155b611663578261166e565b61166e85858561247f565b601854909150600160a01b900460ff16151560011480159061169e5750601b546001600160a01b03858116911614155b80156116b857506000546001600160a01b03868116911614155b80156116d257506000546001600160a01b03858116911614155b15611750576001600160a01b0384166000908152600860205260409020546116fa9082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461172990846118a5565b6001600160a01b03861660009081526008602052604090205561174b84610eaf565b61185a565b6000546001600160a01b038681169116148061177957506000546001600160a01b038581169116145b156117ee576001600160a01b0384166000908152600860205260409020546117a19082611420565b6001600160a01b0380861660009081526008602052604080822093909355908716815220546117d090846118a5565b6001600160a01b03861660009081526008602052604090205561185a565b6001600160a01b0384166000908152600860205260409020546118119082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461184090846118a5565b6001600160a01b0386166000908152600860205260409020555b6040518181526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506001949350505050565b6000610c4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461198891849061147f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546119b79083611420565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a0b9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b179055601e54601354601054600091611a5691600291611a509182908790612542565b906125c1565b90506000611a6483836118a5565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9e57611a9e61291e565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190612934565b81600181518110611b2e57611b2e61291e565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b815291169063791ac94790611b74908590600090869030904290600401612995565b600060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505060105447925060009150611bc690611bbd9060026125c1565b601354906118a5565b90506000611be382611a506011548661254290919063ffffffff16565b90506000611c0083611a506012548761254290919063ffffffff16565b90506000611c226002611a5086611a506010548a61254290919063ffffffff16565b6016546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611c79576040519150601f19603f3d011682016040523d82523d6000602084013e611c7e565b606091505b50506017546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b5050601780546001600160a01b039081166000908152600b602090815260408083208a9055845484168352600c8252808320805460ff19166001179055845484168352600a82529182902042905592548151921682529181018790529192507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632910160405180910390a15060009050808915611e4457601a5460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611de2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e0791906129d1565b505060408051858152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff60a01b19169055505050505050505050565b600754600654611e6e90426128f1565b1115611e7c57611e7c612603565b6000546001600160a01b03848116911614801590611ea857506000546001600160a01b03838116911614155b8015611ecd57506001600160a01b0382166000908152600e602052604090205460ff16155b8015611ee757506002546001600160a01b03838116911614155b8015611f0157506001546001600160a01b03838116911614155b8015611f1b5750601b546001600160a01b03838116911614155b8015611f3057506001600160a01b0382163014155b156122cc57601c54811115611f705760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6001600160a01b038216600090815260086020526040902054601d54611f968383612875565b1115611ff05760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b56565b6040805160028082526060820183526000926020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e9190612934565b816000815181106120915761209161291e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120c5576120c561291e565b6001600160a01b039283166020918202929092010152601a546040516307c0329d60e21b81526000929190911690631f00ca749061210990879086906004016129ff565b600060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261214e9190810190612a20565b6000815181106121605761216061291e565b6020908102919091018101516001600160a01b0387166000908152600c90925260409091205490915060ff16151560011480156121c157506001600160a01b0385166000908152600a602052604090205442906121bf90612a30612875565b105b80156121ce575060055481115b1561223857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a16122c8565b6001600160a01b0385166000908152600c602052604090205460ff16158015612262575060055481115b156122c857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a15b5050505b6000546001600160a01b038481169116148015906122f857506000546001600160a01b03838116911614155b801561231d57506001600160a01b0383166000908152600e602052604090205460ff16155b80156123375750601b546001600160a01b03848116911614155b801561234c57506001600160a01b0382163014155b1561114157601c5481111561238c5760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6017546001600160a01b038481169116141561114157601754600554604080516001600160a01b03909316835260208301919091527fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a910160405180910390a1611141612603565b6001600160a01b0382166000908152600d602052604081205460ff168061243357506001600160a01b0382166000908152600d602052604090205460ff165b1561244057506000610b26565b601b546001600160a01b03848116911614806124695750601b546001600160a01b038381169116145b1561247657506000610b26565b50600192915050565b601b5460009081906001600160a01b038581169116146124a1576013546124a5565b6014545b905060006124b86064611a508685612542565b306000908152600860205260409020549091506124d59082611420565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125269085815260200190565b60405180910390a361253884826118a5565b9695505050505050565b60008261255157506000610b26565b600061255d8385612ade565b90508261256a858361288d565b14610c495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b56565b6000610c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b601654601780546001600160a01b0319166001600160a01b03909216919091179055600060055542600655565b600081836126515760405162461bcd60e51b8152600401610b56919061265e565b5060006114b0848661288d565b600060208083528351808285015260005b8181101561268b5785810183015185820160400152820161266f565b8181111561269d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cf857600080fd5b600080604083850312156126db57600080fd5b82356126e6816126b3565b946020939093013593505050565b60008060006060848603121561270957600080fd5b8335612714816126b3565b92506020840135612724816126b3565b929592945050506040919091013590565b60006020828403121561274757600080fd5b8135610c49816126b3565b8015158114610cf857600080fd5b6000806040838503121561277357600080fd5b823561277e816126b3565b9150602083013561278e81612752565b809150509250929050565b6000602082840312156127ab57600080fd5b5035919050565b600080604083850312156127c557600080fd5b82356127d0816126b3565b9150602083013561278e816126b3565b6000806000606084860312156127f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281f57600080fd5b82356126e681612752565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128885761288861285f565b500190565b6000826128aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a496e76616c69642066656560a81b604082015260600190565b6000602082840312156128e657600080fd5b8151610c4981612752565b6000828210156129035761290361285f565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561294657600080fd5b8151610c49816126b3565b600081518084526020808501945080840160005b8381101561298a5781516001600160a01b031687529582019590820190600101612965565b509495945050505050565b85815284602082015260a0604082015260006129b460a0830186612951565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129e657600080fd5b8351925060208401519150604084015190509250925092565b828152604060208201526000612a186040830184612951565b949350505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a71612908565b8060051b604051601f19603f83011681018181108582111715612a9657612a96612908565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b6000816000190483118215151615612af857612af861285f565b50029056fea2646970667358221220676e5032f93d81dfb2dca2430f5ebaed7ce6eb5ac6c1a44d9414b246842122c864736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063a9059cbb11610102578063df20fd49116100a0578063f84ba65d1161006f578063f84ba65d14610a31578063f887ea4014610a51578063fe2b6bc614610a71578063fe575a8714610a8657600080fd5b8063df20fd49146109bc578063ea1644d5146109dc578063eb45e709146109fc578063f2fde38b14610a1157600080fd5b8063cec10c11116100dc578063cec10c1114610920578063dbe1c4d514610940578063dd62ed3e14610956578063dec2ba0f1461099c57600080fd5b8063a9059cbb146108c0578063a9e59da3146108e0578063ca33e64c1461090057600080fd5b80639e0a78101161016f578063a4b45c0011610149578063a4b45c0014610833578063a4f87a7a14610853578063a617792814610880578063a8aa1b31146108a057600080fd5b80639e0a7810146107cc5780639f2bb2e9146107ed5780639f55eb4e1461080357600080fd5b806395d89b41116101ab57806395d89b411461074857806398118cb4146107765780639cfe42da1461078c5780639d0014b1146107ac57600080fd5b80638da5cb5b146106ce5780638eb6889f1461071c578063944c1d971461073257600080fd5b8063571ac8b0116102ab578063715018a6116102495780637de4c778116102235780637de4c7781461068157806387b3be7d146106ae578063893d20e8146106ce5780638b42507f146106ec57600080fd5b8063715018a61461061e57806375f0a874146106335780637d1db4a51461066b57600080fd5b80636b67c4df116102855780636b67c4df1461059c5780636c0a24eb146105b257806370a08231146105c8578063712a890a146105fe57600080fd5b8063571ac8b01461053c578063658d4b7f1461055c57806366e930b31461057c57600080fd5b8063313ce567116103185780633f4218e0116102f25780633f4218e0146104c057806346cf314f146104f05780634a74bb02146105065780634fef3a821461052757600080fd5b8063313ce5671461047a57806333596f50146104965780633e02a988146104ab57600080fd5b8063125b94e511610354578063125b94e51461041957806318160ddd1461043057806323b872dd146104455780632b112e491461046557600080fd5b80630445b6671461038657806306fdde03146103af578063095ea7b3146103e957600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c601e5481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b50604080518082019091526008815267084d2ce408cd2e6d60c31b60208201525b6040516103a6919061265e565b3480156103f557600080fd5b506104096104043660046126c8565b610abf565b60405190151581526020016103a6565b34801561042557600080fd5b5061042e610b2c565b005b34801561043c57600080fd5b5060045461039c565b34801561045157600080fd5b506104096104603660046126f4565b610b8b565b34801561047157600080fd5b5061039c610c50565b34801561048657600080fd5b50604051601281526020016103a6565b3480156104a257600080fd5b5061042e610ca2565b3480156104b757600080fd5b5061039c610cfb565b3480156104cc57600080fd5b506104096104db366004612735565b600d6020526000908152604090205460ff1681565b3480156104fc57600080fd5b5061039c60125481565b34801561051257600080fd5b50601b5461040990600160a81b900460ff1681565b34801561053357600080fd5b5061042e610d0d565b34801561054857600080fd5b50610409610557366004612735565b610d58565b34801561056857600080fd5b5061042e610577366004612760565b610d66565b34801561058857600080fd5b5061042e610597366004612735565b610dbb565b3480156105a857600080fd5b5061039c60115481565b3480156105be57600080fd5b5061039c601d5481565b3480156105d457600080fd5b5061039c6105e3366004612735565b6001600160a01b031660009081526008602052604090205490565b34801561060a57600080fd5b5061042e610619366004612799565b610e06565b34801561062a57600080fd5b5061042e610e35565b34801561063f57600080fd5b50601654610653906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561067757600080fd5b5061039c601c5481565b34801561068d57600080fd5b5061039c61069c366004612735565b600b6020526000908152604090205481565b3480156106ba57600080fd5b50601754610653906001600160a01b031681565b3480156106da57600080fd5b506000546001600160a01b0316610653565b3480156106f857600080fd5b50610409610707366004612735565b600e6020526000908152604090205460ff1681565b34801561072857600080fd5b5061039c60055481565b34801561073e57600080fd5b5061039c60075481565b34801561075457600080fd5b506040805180820190915260058152640488492a6960db1b60208201526103dc565b34801561078257600080fd5b5061039c60105481565b34801561079857600080fd5b5061042e6107a7366004612735565b610e6b565b3480156107b857600080fd5b5061042e6107c7366004612799565b610ed3565b3480156107d857600080fd5b5060185461040990600160a01b900460ff1681565b3480156107f957600080fd5b5061039c60065481565b34801561080f57600080fd5b5061040961081e366004612735565b600c6020526000908152604090205460ff1681565b34801561083f57600080fd5b5061042e61084e3660046127b2565b610f02565b34801561085f57600080fd5b5061039c61086e366004612735565b600a6020526000908152604090205481565b34801561088c57600080fd5b50601854610653906001600160a01b031681565b3480156108ac57600080fd5b50601b54610653906001600160a01b031681565b3480156108cc57600080fd5b506104096108db3660046126c8565b610f5a565b3480156108ec57600080fd5b5061042e6108fb366004612799565b610f67565b34801561090c57600080fd5b50601554610653906001600160a01b031681565b34801561092c57600080fd5b5061042e61093b3660046127e0565b610ff4565b34801561094c57600080fd5b5061039c601f5481565b34801561096257600080fd5b5061039c6109713660046127b2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109a857600080fd5b5061042e6109b73660046126c8565b6110a6565b3480156109c857600080fd5b5061042e6109d736600461280c565b611146565b3480156109e857600080fd5b5061042e6109f7366004612799565b611192565b348015610a0857600080fd5b5061042e61121f565b348015610a1d57600080fd5b5061042e610a2c366004612735565b611272565b348015610a3d57600080fd5b5061042e610a4c366004612760565b61130a565b348015610a5d57600080fd5b50601a54610653906001600160a01b031681565b348015610a7d57600080fd5b5061042e61135f565b348015610a9257600080fd5b50610409610aa1366004612735565b6001600160a01b03166000908152600f602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b1a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b8152600401610b569061282a565b60405180910390fd5b60026010819055600460118190556012819055610b8691610b809082611420565b90611420565b601355565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610c1391849061147f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c438484846114b9565b50600190505b9392505050565b6002546001600160a01b0316600090815260086020526040812054610c9d906001546001600160a01b0316600090815260086020526040902054610c9790600454906118a5565b906118a5565b905090565b6000546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b569061282a565b60405133904780156108fc02916000818181858888f19350505050158015610cf8573d6000803e3d6000fd5b50565b6000600754600654610c9d9190612875565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b569061282a565b60016010819055601181905560086012819055610b8691610b809080611420565b6000610b2682600019610abf565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de55760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b569061282a565b600755565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610b569061282a565b610e6960006118e7565b565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b569061282a565b601954610ea490610a8c612875565b4210610eaf57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b569061282a565b601e55565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b8152600401610b569061282a565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c493384846114b9565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610b569061282a565b600a600454610fa0919061288d565b811015610fef5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601c55565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610b569061282a565b600a83111561103f5760405162461bcd60e51b8152600401610b56906128af565b600a8211156110605760405162461bcd60e51b8152600401610b56906128af565b600a8111156110815760405162461bcd60e51b8152600401610b56906128af565b60108390556011829055601281905561109e81610b808585611420565b601355505050565b6000546001600160a01b031633146110d05760405162461bcd60e51b8152600401610b569061282a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561111d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114191906128d4565b505050565b6000546001600160a01b031633146111705760405162461bcd60e51b8152600401610b569061282a565b601b8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b6000546001600160a01b031633146111bc5760405162461bcd60e51b8152600401610b569061282a565b60326004546111cb919061288d565b81101561121a5760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610b56565b601d55565b6000546001600160a01b031633146112495760405162461bcd60e51b8152600401610b569061282a565b601b805460ff60a81b19169055600019601c819055601d55600060118190556012819055601055565b6000546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b56565b610cf8816118e7565b6000546001600160a01b031633146113345760405162461bcd60e51b8152600401610b569061282a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113895760405162461bcd60e51b8152600401610b569061282a565b601854600160a01b900460ff16156113d65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610b56565b6018805460ff60a01b1916600160a01b179055426019819055601654601780546001600160a01b0319166001600160a01b0390921691909117905560006005556004601255600655565b60008061142d8385612875565b905083811015610c495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b56565b600081848411156114a35760405162461bcd60e51b8152600401610b56919061265e565b5060006114b084866128f1565b95945050505050565b6001600160a01b0383166000908152600f602052604081205460ff16151560011480159061150557506001600160a01b0383166000908152600f602052604090205460ff161515600114155b61153f5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b56565b601b54600160a01b900460ff16156115635761155c848484611937565b9050610c49565b601b546001600160a01b031633148015906115885750601b54600160a01b900460ff16155b801561159d5750601b54600160a81b900460ff165b80156115ba5750601e543060009081526008602052604090205410155b156115c7576115c7611a1d565b6115d2848484611e5e565b6115dc84846123f4565b156116175760405162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b6044820152606401610b56565b6001600160a01b0384166000908152600d602052604081205460ff1615801561165957506001600160a01b0384166000908152600d602052604090205460ff16155b611663578261166e565b61166e85858561247f565b601854909150600160a01b900460ff16151560011480159061169e5750601b546001600160a01b03858116911614155b80156116b857506000546001600160a01b03868116911614155b80156116d257506000546001600160a01b03858116911614155b15611750576001600160a01b0384166000908152600860205260409020546116fa9082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461172990846118a5565b6001600160a01b03861660009081526008602052604090205561174b84610eaf565b61185a565b6000546001600160a01b038681169116148061177957506000546001600160a01b038581169116145b156117ee576001600160a01b0384166000908152600860205260409020546117a19082611420565b6001600160a01b0380861660009081526008602052604080822093909355908716815220546117d090846118a5565b6001600160a01b03861660009081526008602052604090205561185a565b6001600160a01b0384166000908152600860205260409020546118119082611420565b6001600160a01b03808616600090815260086020526040808220939093559087168152205461184090846118a5565b6001600160a01b0386166000908152600860205260409020555b6040518181526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506001949350505050565b6000610c4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461198891849061147f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546119b79083611420565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a0b9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b179055601e54601354601054600091611a5691600291611a509182908790612542565b906125c1565b90506000611a6483836118a5565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9e57611a9e61291e565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190612934565b81600181518110611b2e57611b2e61291e565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b815291169063791ac94790611b74908590600090869030904290600401612995565b600060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505060105447925060009150611bc690611bbd9060026125c1565b601354906118a5565b90506000611be382611a506011548661254290919063ffffffff16565b90506000611c0083611a506012548761254290919063ffffffff16565b90506000611c226002611a5086611a506010548a61254290919063ffffffff16565b6016546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611c79576040519150601f19603f3d011682016040523d82523d6000602084013e611c7e565b606091505b50506017546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611cd7576040519150601f19603f3d011682016040523d82523d6000602084013e611cdc565b606091505b5050601780546001600160a01b039081166000908152600b602090815260408083208a9055845484168352600c8252808320805460ff19166001179055845484168352600a82529182902042905592548151921682529181018790529192507f887dd9f57395c2e1e0dea455ae76bf56410b19b3131f2a590aab0b29b3683632910160405180910390a15060009050808915611e4457601a5460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611de2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e0791906129d1565b505060408051858152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff60a01b19169055505050505050505050565b600754600654611e6e90426128f1565b1115611e7c57611e7c612603565b6000546001600160a01b03848116911614801590611ea857506000546001600160a01b03838116911614155b8015611ecd57506001600160a01b0382166000908152600e602052604090205460ff16155b8015611ee757506002546001600160a01b03838116911614155b8015611f0157506001546001600160a01b03838116911614155b8015611f1b5750601b546001600160a01b03838116911614155b8015611f3057506001600160a01b0382163014155b156122cc57601c54811115611f705760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6001600160a01b038216600090815260086020526040902054601d54611f968383612875565b1115611ff05760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b56565b6040805160028082526060820183526000926020830190803683375050601a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e9190612934565b816000815181106120915761209161291e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120c5576120c561291e565b6001600160a01b039283166020918202929092010152601a546040516307c0329d60e21b81526000929190911690631f00ca749061210990879086906004016129ff565b600060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261214e9190810190612a20565b6000815181106121605761216061291e565b6020908102919091018101516001600160a01b0387166000908152600c90925260409091205490915060ff16151560011480156121c157506001600160a01b0385166000908152600a602052604090205442906121bf90612a30612875565b105b80156121ce575060055481115b1561223857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a16122c8565b6001600160a01b0385166000908152600c602052604090205460ff16158015612262575060055481115b156122c857601780546001600160a01b0319166001600160a01b03871690811790915560058290554260065560408051918252602082018390527f735208e3a5b6390fd1d199ec98f6689564f9d7fef06323849704a8856eeed5f4910160405180910390a15b5050505b6000546001600160a01b038481169116148015906122f857506000546001600160a01b03838116911614155b801561231d57506001600160a01b0383166000908152600e602052604090205460ff16155b80156123375750601b546001600160a01b03848116911614155b801561234c57506001600160a01b0382163014155b1561114157601c5481111561238c5760405162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b6044820152606401610b56565b6017546001600160a01b038481169116141561114157601754600554604080516001600160a01b03909316835260208301919091527fec798f0f5328ec01f1d48922c12f488ecde2dae7402c814510a37d505cbdbb2a910160405180910390a1611141612603565b6001600160a01b0382166000908152600d602052604081205460ff168061243357506001600160a01b0382166000908152600d602052604090205460ff165b1561244057506000610b26565b601b546001600160a01b03848116911614806124695750601b546001600160a01b038381169116145b1561247657506000610b26565b50600192915050565b601b5460009081906001600160a01b038581169116146124a1576013546124a5565b6014545b905060006124b86064611a508685612542565b306000908152600860205260409020549091506124d59082611420565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125269085815260200190565b60405180910390a361253884826118a5565b9695505050505050565b60008261255157506000610b26565b600061255d8385612ade565b90508261256a858361288d565b14610c495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b56565b6000610c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b601654601780546001600160a01b0319166001600160a01b03909216919091179055600060055542600655565b600081836126515760405162461bcd60e51b8152600401610b56919061265e565b5060006114b0848661288d565b600060208083528351808285015260005b8181101561268b5785810183015185820160400152820161266f565b8181111561269d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cf857600080fd5b600080604083850312156126db57600080fd5b82356126e6816126b3565b946020939093013593505050565b60008060006060848603121561270957600080fd5b8335612714816126b3565b92506020840135612724816126b3565b929592945050506040919091013590565b60006020828403121561274757600080fd5b8135610c49816126b3565b8015158114610cf857600080fd5b6000806040838503121561277357600080fd5b823561277e816126b3565b9150602083013561278e81612752565b809150509250929050565b6000602082840312156127ab57600080fd5b5035919050565b600080604083850312156127c557600080fd5b82356127d0816126b3565b9150602083013561278e816126b3565b6000806000606084860312156127f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281f57600080fd5b82356126e681612752565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128885761288861285f565b500190565b6000826128aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600b908201526a496e76616c69642066656560a81b604082015260600190565b6000602082840312156128e657600080fd5b8151610c4981612752565b6000828210156129035761290361285f565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561294657600080fd5b8151610c49816126b3565b600081518084526020808501945080840160005b8381101561298a5781516001600160a01b031687529582019590820190600101612965565b509495945050505050565b85815284602082015260a0604082015260006129b460a0830186612951565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129e657600080fd5b8351925060208401519150604084015190509250925092565b828152604060208201526000612a186040830184612951565b949350505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a71612908565b8060051b604051601f19603f83011681018181108582111715612a9657612a96612908565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b6000816000190483118215151615612af857612af861285f565b50029056fea2646970667358221220676e5032f93d81dfb2dca2430f5ebaed7ce6eb5ac6c1a44d9414b246842122c864736f6c634300080c0033

Deployed Bytecode Sourcemap

7022:16240:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8800:49:0;;;;;;;;10107:94;;;;;;;;;;-1:-1:-1;10188:5:0;;;;;;;;;;;;-1:-1:-1;;;10188:5:0;;;;10107:94;;;;;;;:::i;12009:248::-;;;;;;;;;;-1:-1:-1;12009:248:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;12009:248:0;1254:187:1;13649:200:0;;;;;;;;;;;;;:::i;:::-;;10519:102;;;;;;;;;;-1:-1:-1;10601:12:0;;10519:102;;17539:423;;;;;;;;;;-1:-1:-1;17539:423:0;;;;;:::i;:::-;;:::i;10629:142::-;;;;;;;;;;;;;:::i;10315:94::-;;;;;;;;;;-1:-1:-1;10315:94:0;;7208:2;2049:36:1;;2037:2;2022:18;10315:94:0;1907:184:1;22971:115:0;;;;;;;;;;;;;:::i;13325:108::-;;;;;;;;;;;;;:::i;7945:43::-;;;;;;;;;;-1:-1:-1;7945:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8236:26;;;;;;;;;;;;;;;;8646:40;;;;;;;;;;-1:-1:-1;8646:40:0;;;;-1:-1:-1;;;8646:40:0;;;;;;13441:200;;;;;;;;;;;;;:::i;12265:108::-;;;;;;;;;;-1:-1:-1;12265:108:0;;;;;:::i;:::-;;:::i;12381:119::-;;;;;;;;;;-1:-1:-1;12381:119:0;;;;;:::i;:::-;;:::i;14715:106::-;;;;;;;;;;-1:-1:-1;14715:106:0;;;;;:::i;:::-;;:::i;8197:32::-;;;;;;;;;;;;;;;;8742:51;;;;;;;;;;;;;;;;10779:119;;;;;;;;;;-1:-1:-1;10779:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10872:18:0;10845:7;10872:18;;;:9;:18;;;;;;;10779:119;13027:146;;;;;;;;;;-1:-1:-1;13027:146:0;;;;;:::i;:::-;;:::i;6275:94::-;;;;;;;;;;;;;:::i;8392:30::-;;;;;;;;;;-1:-1:-1;8392:30:0;;;;-1:-1:-1;;;;;8392:30:0;;;;;;-1:-1:-1;;;;;3207:32:1;;;3189:51;;3177:2;3162:18;8392:30:0;3043:203:1;8693:42:0;;;;;;;;;;;;;;;;7839;;;;;;;;;;-1:-1:-1;7839:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;8429:19;;;;;;;;;;-1:-1:-1;8429:19:0;;;;-1:-1:-1;;;;;8429:19:0;;;10417:94;;;;;;;;;;-1:-1:-1;10469:7:0;5697:6;-1:-1:-1;;;;;5697:6:0;10417:94;10629:142;7995:47;;;;;;;;;;-1:-1:-1;7995:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7551:29;;;;;;;;;;;;;;;;7627:39;;;;;;;;;;;;;;;;10209:98;;;;;;;;;;-1:-1:-1;10292:7:0;;;;;;;;;;;;-1:-1:-1;;;10292:7:0;;;;10209:98;;8158:32;;;;;;;;;;;;;;;;14542:165;;;;;;;;;;-1:-1:-1;14542:165:0;;;;;:::i;:::-;;:::i;12666:108::-;;;;;;;;;;-1:-1:-1;12666:108:0;;;;;:::i;:::-;;:::i;8493:31::-;;;;;;;;;;-1:-1:-1;8493:31:0;;;;-1:-1:-1;;;8493:31:0;;;;;;7587:33;;;;;;;;;;;;;;;;7888:50;;;;;;;;;;-1:-1:-1;7888:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12782:237;;;;;;;;;;-1:-1:-1;12782:237:0;;;;;:::i;:::-;;:::i;7783:49::-;;;;;;;;;;-1:-1:-1;7783:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;8455:29;;;;;;;;;;-1:-1:-1;8455:29:0;;;;-1:-1:-1;;;;;8455:29:0;;;8590:19;;;;;;;;;;-1:-1:-1;8590:19:0;;;;-1:-1:-1;;;;;8590:19:0;;;17343:188;;;;;;;;;;-1:-1:-1;17343:188:0;;;;;:::i;:::-;;:::i;14352:182::-;;;;;;;;;;-1:-1:-1;14352:182:0;;;;;:::i;:::-;;:::i;8349:36::-;;;;;;;;;;-1:-1:-1;8349:36:0;;;;-1:-1:-1;;;;;8349:36:0;;;11132:673;;;;;;;;;;-1:-1:-1;11132:673:0;;;;;:::i;:::-;;:::i;8856:29::-;;;;;;;;;;;;;;;;11813:188;;;;;;;;;;-1:-1:-1;11813:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;11965:19:0;;;11933:7;11965:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11813:188;23094:165;;;;;;;;;;-1:-1:-1;23094:165:0;;;;;:::i;:::-;;:::i;17117:218::-;;;;;;;;;;-1:-1:-1;17117:218:0;;;;;:::i;:::-;;:::i;14162:182::-;;;;;;;;;;-1:-1:-1;14162:182:0;;;;;:::i;:::-;;:::i;10906:218::-;;;;;;;;;;;;;:::i;6524:192::-;;;;;;;;;;-1:-1:-1;6524:192:0;;;;;:::i;:::-;;:::i;12508:150::-;;;;;;;;;;-1:-1:-1;12508:150:0;;;;;:::i;:::-;;:::i;8559:24::-;;;;;;;;;;-1:-1:-1;8559:24:0;;;;-1:-1:-1;;;;;8559:24:0;;;13857:297;;;;;;;;;;;;;:::i;14829:120::-;;;;;;;;;;-1:-1:-1;14829:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14916:25:0;14892:4;14916:25;;;:16;:25;;;;;;;;;14829:120;12009:248;12145:10;12111:4;12133:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12133:32:0;;;;;;;;;;:41;;;12190:37;12111:4;;12133:32;;12190:37;;;;12168:6;160:25:1;;148:2;133:18;;14:177;12190:37:0;;;;;;;;-1:-1:-1;12245:4:0;12009:248;;;;;:::o;13649:200::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;;;;;;;;;13726:1:::1;13711:12;:16:::0;;;13753:1:::1;13738:12;:16:::0;;;13765:7:::1;:11:::0;;;13798:43:::1;::::0;:30:::1;::::0;13753:1;13798:16:::1;:30::i;:::-;:34:::0;::::1;:43::i;:::-;13787:8;:54:::0;13649:200::o;17539:423::-;-1:-1:-1;;;;;17694:19:0;;17673:4;17694:19;;;:11;:19;;;;;;;;17714:10;17694:31;;;;;;;;-1:-1:-1;;17694:38:0;17690:192;;17783:87;;;;;;;;;;;-1:-1:-1;;;17783:87:0;;;;;;;;-1:-1:-1;;;;;17783:19:0;;-1:-1:-1;17783:19:0;;;:11;:19;;;;;17803:10;17783:31;;;;;;;;;;:87;;17837:6;;17783:53;:87::i;:::-;-1:-1:-1;;;;;17749:19:0;;;;;;:11;:19;;;;;;;;17769:10;17749:31;;;;;;;:121;17690:192;17892:40;17906:6;17914:9;17925:6;17892:13;:40::i;:::-;;17950:4;17943:11;;17539:423;;;;;;:::o;10629:142::-;10757:4;;-1:-1:-1;;;;;10757:4:0;10682:7;10872:18;;;:9;:18;;;;;;10709:54;;10736:4;;-1:-1:-1;;;;;10736:4:0;10845:7;10872:18;;;:9;:18;;;;;;10709:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;10702:61;;10629:142;:::o;22971:115::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;23027:51:::1;::::0;23035:10:::1;::::0;23056:21:::1;23027:51:::0;::::1;;;::::0;::::1;::::0;;;23056:21;23035:10;23027:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22971:115::o:0;13325:108::-;13370:7;13414:11;;13397:14;;:28;;;;:::i;13441:200::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;13518:1:::1;13503:12;:16:::0;;;13530:12:::1;:16:::0;;;13567:1:::1;13557:7;:11:::0;;;13590:43:::1;::::0;:30:::1;::::0;13518:1;13590:16:::1;:30::i;12265:108::-:0;12320:4;12344:21;12352:7;-1:-1:-1;;12344:7:0;:21::i;12381:119::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12464:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;12464:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12381:119::o;14715:106::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14785:22:0::1;14808:5;14785:22:::0;;;:16:::1;:22;::::0;;;;:28;;-1:-1:-1;;14785:28:0::1;::::0;;14715:106::o;13027:146::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;13137:11:::1;:28:::0;13027:146::o;6275:94::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;6340:21:::1;6358:1;6340:9;:21::i;:::-;6275:94::o:0;14542:165::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;14634:11:::1;::::0;:24:::1;::::0;14648:10:::1;14634:24;:::i;:::-;14616:15;:42;14608:51;;;::::0;::::1;;-1:-1:-1::0;;;;;14670:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:27;;-1:-1:-1;;14670:27:0::1;14693:4;14670:27;::::0;;14542:165::o;12666:108::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;12741:13:::1;:25:::0;12666:108::o;12782:237::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;12920:21:::1;:44:::0;;-1:-1:-1;;;;;12920:44:0;;::::1;-1:-1:-1::0;;;;;;12920:44:0;;::::1;;::::0;;;12975:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;12782:237::o;17343:188::-;17450:4;17479:44;17493:10;17505:9;17516:6;17479:13;:44::i;14352:182::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;14459:2:::1;14445:12;;:16;;;;:::i;:::-;14437:6;:24;;14429:63;;;::::0;-1:-1:-1;;;14429:63:0;;5555:2:1;14429:63:0::1;::::0;::::1;5537:21:1::0;5594:2;5574:18;;;5567:30;5633:28;5613:18;;;5606:56;5679:18;;14429:63:0::1;5353:350:1::0;14429:63:0::1;14503:12;:21:::0;14352:182::o;11132:673::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;11348:2:::1;11329:15;:21;;11283:106;;;;-1:-1:-1::0;;;11283:106:0::1;;;;;;;:::i;:::-;11467:2;11448:15;:21;;11402:106;;;;-1:-1:-1::0;;;11402:106:0::1;;;;;;;:::i;:::-;11576:2;11562:10;:16;;11521:96;;;;-1:-1:-1::0;;;11521:96:0::1;;;;;;;:::i;:::-;11630:12;:30:::0;;;11671:12:::1;:30:::0;;;11712:7:::1;:20:::0;;;11754:43:::1;11722:10:::0;11754:30:::1;11645:15:::0;11686;11754:16:::1;:30::i;:43::-;11743:8;:54:::0;-1:-1:-1;;;11132:673:0:o;23094:165::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;23207:44:::1;::::0;-1:-1:-1;;;23207:44:0;;23231:10:::1;23207:44;::::0;::::1;6222:51:1::0;6289:18;;;6282:34;;;-1:-1:-1;;;;;23207:23:0;::::1;::::0;::::1;::::0;6195:18:1;;23207:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23094:165:::0;;:::o;17117:218::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;17246:21:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;17246:38:0::1;-1:-1:-1::0;;;;17246:38:0;;::::1;::::0;;;::::1;::::0;;;17295:13:::1;:32:::0;17117:218::o;14162:182::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;14265:2:::1;14250:12;;:17;;;;:::i;:::-;14242:6;:25;;14234:64;;;::::0;-1:-1:-1;;;14234:64:0;;5555:2:1;14234:64:0::1;::::0;::::1;5537:21:1::0;5594:2;5574:18;;;5567:30;5633:28;5613:18;;;5606:56;5679:18;;14234:64:0::1;5353:350:1::0;14234:64:0::1;14309:16;:25:::0;14162:182::o;10906:218::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;10961:21:::1;:27:::0;;-1:-1:-1;;;;10961:27:0::1;::::0;;-1:-1:-1;;10999:12:0::1;:16:::0;;;11026::::1;:20:::0;10983:5:::1;11057:12;:14:::0;;;11082:7:::1;:9:::0;;;11102:12:::1;:14:::0;10906:218::o;6524:192::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6613:22:0;::::1;6605:73;;;::::0;-1:-1:-1;;;6605:73:0;;6779:2:1;6605:73:0::1;::::0;::::1;6761:21:1::0;6818:2;6798:18;;;6791:30;6857:34;6837:18;;;6830:62;-1:-1:-1;;;6908:18:1;;;6901:36;6954:19;;6605:73:0::1;6577:402:1::0;6605:73:0::1;6689:19;6699:8;6689:9;:19::i;12508:150::-:0;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12618:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;12618:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12508:150::o;13857:297::-;5670:7;5697:6;-1:-1:-1;;;;;5697:6:0;4580:10;5844:23;5836:68;;;;-1:-1:-1;;;5836:68:0;;;;;;;:::i;:::-;13913:11:::1;::::0;-1:-1:-1;;;13913:11:0;::::1;;;:20;13904:50;;;::::0;-1:-1:-1;;;13904:50:0;;7186:2:1;13904:50:0::1;::::0;::::1;7168:21:1::0;7225:2;7205:18;;;7198:30;-1:-1:-1;;;7244:18:1;;;7237:46;7300:18;;13904:50:0::1;6984:340:1::0;13904:50:0::1;13965:11;:18:::0;;-1:-1:-1;;;;13965:18:0::1;-1:-1:-1::0;;;13965:18:0::1;::::0;;14008:15:::1;13994:11;:29:::0;;;14041:15:::1;::::0;14034:4:::1;:22:::0;;-1:-1:-1;;;;;;14034:22:0::1;-1:-1:-1::0;;;;;14041:15:0;;::::1;14034:22:::0;;;::::1;::::0;;13965:18;14067:10:::1;:14:::0;14102:1:::1;-1:-1:-1::0;14092:11:0;-1:-1:-1;14114:32:0;13857:297::o;376:179::-;434:7;;466:5;470:1;466;:5;:::i;:::-;454:17;;495:1;490;:6;;482:46;;;;-1:-1:-1;;;482:46:0;;7531:2:1;482:46:0;;;7513:21:1;7570:2;7550:18;;;7543:30;7609:29;7589:18;;;7582:57;7656:18;;482:46:0;7329:351:1;707:224:0;827:7;863:12;855:6;;;;847:29;;;;-1:-1:-1;;;847:29:0;;;;;;;;:::i;:::-;-1:-1:-1;887:9:0;899:5;903:1;899;:5;:::i;:::-;887:17;707:224;-1:-1:-1;;;;;707:224:0:o;17970:1687::-;-1:-1:-1;;;;;18121:24:0;;18096:4;18121:24;;;:16;:24;;;;;;;;:30;;:24;:30;;;;:67;;-1:-1:-1;;;;;;18155:27:0;;;;;;:16;:27;;;;;;;;:33;;:27;:33;;18121:67;18113:91;;;;-1:-1:-1;;;18113:91:0;;8017:2:1;18113:91:0;;;7999:21:1;8056:2;8036:18;;;8029:30;-1:-1:-1;;;8075:18:1;;;8068:41;8126:18;;18113:91:0;7815:335:1;18113:91:0;18219:16;;-1:-1:-1;;;18219:16:0;;;;18215:97;;;18259:41;18274:6;18282:9;18293:6;18259:14;:41::i;:::-;18252:48;;;;18215:97;18354:4;;-1:-1:-1;;;;;18354:4:0;18340:10;:18;;;;:52;;-1:-1:-1;18376:16:0;;-1:-1:-1;;;18376:16:0;;;;18375:17;18340:52;:90;;;;-1:-1:-1;18409:21:0;;-1:-1:-1;;;18409:21:0;;;;18340:90;:148;;;;-1:-1:-1;18475:13:0;;18465:4;18447:24;;;;:9;:24;;;;;;:41;;18340:148;18322:215;;;18515:10;:8;:10::i;:::-;18547:40;18561:6;18569:9;18580:6;18547:13;:40::i;:::-;18607:35;18624:6;18632:9;18607:16;:35::i;:::-;18606:36;18598:60;;;;-1:-1:-1;;;18598:60:0;;8357:2:1;18598:60:0;;;8339:21:1;8396:2;8376:18;;;8369:30;-1:-1:-1;;;8415:18:1;;;8408:41;8466:18;;18598:60:0;8155:335:1;18598:60:0;-1:-1:-1;;;;;18697:19:0;;18671:22;18697:19;;;:11;:19;;;;;;;;18696:20;:47;;;;-1:-1:-1;;;;;;18721:22:0;;;;;;:11;:22;;;;;;;;18720:23;18696:47;:119;;18809:6;18696:119;;;18759:34;18767:6;18775:9;18786:6;18759:7;:34::i;:::-;18832:11;;18671:144;;-1:-1:-1;;;;18832:11:0;;;;:18;;18846:4;18832:18;;;;:38;;-1:-1:-1;18866:4:0;;-1:-1:-1;;;;;18854:16:0;;;18866:4;;18854:16;;18832:38;:57;;;;-1:-1:-1;5670:7:0;5697:6;-1:-1:-1;;;;;18874:15:0;;;5697:6;;18874:15;;18832:57;:79;;;;-1:-1:-1;5670:7:0;5697:6;-1:-1:-1;;;;;18893:18:0;;;5697:6;;18893:18;;18832:79;18828:737;;;-1:-1:-1;;;;;18961:20:0;;;;;;:9;:20;;;;;;:40;;18986:14;18961:24;:40::i;:::-;-1:-1:-1;;;;;18938:20:0;;;;;;;:9;:20;;;;;;:63;;;;19036:17;;;;;;;:29;;19058:6;19036:21;:29::i;:::-;-1:-1:-1;;;;;19016:17:0;;;;;;:9;:17;;;;;:49;19103:24;19117:9;19103:13;:24::i;:::-;18828:737;;;5670:7;5697:6;-1:-1:-1;;;;;19158:15:0;;;5697:6;;19158:15;;:37;;-1:-1:-1;5670:7:0;5697:6;-1:-1:-1;;;;;19177:18:0;;;5697:6;;19177:18;19158:37;19154:411;;;-1:-1:-1;;;;;19245:20:0;;;;;;:9;:20;;;;;;:40;;19270:14;19245:24;:40::i;:::-;-1:-1:-1;;;;;19222:20:0;;;;;;;:9;:20;;;;;;:63;;;;19320:17;;;;;;;:29;;19342:6;19320:21;:29::i;:::-;-1:-1:-1;;;;;19300:17:0;;;;;;:9;:17;;;;;:49;19154:411;;;-1:-1:-1;;;;;19448:20:0;;;;;;:9;:20;;;;;;:40;;19473:14;19448:24;:40::i;:::-;-1:-1:-1;;;;;19425:20:0;;;;;;;:9;:20;;;;;;:63;;;;19524:17;;;;;;;:29;;19546:6;19524:21;:29::i;:::-;-1:-1:-1;;;;;19504:17:0;;;;;;:9;:17;;;;;:49;19154:411;19580:47;;160:25:1;;;-1:-1:-1;;;;;19580:47:0;;;19589:10;;19580:47;;148:2:1;133:18;19580:47:0;;;;;;;-1:-1:-1;19645:4:0;;17970:1687;-1:-1:-1;;;;17970:1687:0:o;563:136::-;621:7;648:43;652:1;655;648:43;;;;;;;;;;;;;;;;;:3;:43::i;6724:173::-;6780:16;6799:6;;-1:-1:-1;;;;;6816:17:0;;;-1:-1:-1;;;;;;6816:17:0;;;;;;6849:40;;6799:6;;;;;;;6849:40;;6780:16;6849:40;6769:128;6724:173;:::o;19665:401::-;19829:90;;;;;;;;;;;-1:-1:-1;;;19829:90:0;;;;;;;;-1:-1:-1;;;;;19829:17:0;;19792:4;19829:17;;;:9;:17;;;;;;;:90;;19865:6;;19829:21;:90::i;:::-;-1:-1:-1;;;;;19809:17:0;;;;;;;:9;:17;;;;;;:110;;;;19953:20;;;;;;;:32;;19978:6;19953:24;:32::i;:::-;-1:-1:-1;;;;;19930:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20001:35;;;;;;;;;;20029:6;160:25:1;;148:2;133:18;;14:177;20001:35:0;;;;;;;;-1:-1:-1;20054:4:0;19665:401;;;;;:::o;20917:2046::-;8928:16;:23;;-1:-1:-1;;;;8928:23:0;-1:-1:-1;;;8928:23:0;;;21058:13:::1;::::0;21174:8:::1;::::0;21142:12:::1;::::0;8928:23;;21108:96:::1;::::0;21202:1:::1;::::0;21108:75:::1;::::0;;;21058:13;;21108:33:::1;:47::i;:::-;:65:::0;::::1;:75::i;:96::-;21082:122:::0;-1:-1:-1;21215:20:0::1;21238:36;:15:::0;21082:122;21238:19:::1;:36::i;:::-;21311:16;::::0;;21325:1:::1;21311:16:::0;;;;;::::1;::::0;;21215:59;;-1:-1:-1;21287:21:0::1;::::0;21311:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21311:16:0::1;21287:40;;21356:4;21338;21343:1;21338:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21338:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21382:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21382:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21338:7;;21382:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21372:4;21377:1;21372:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21372:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21408:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21408:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21480:12;;21408:6:::1;::::0;21523:4;;21550::::1;::::0;21570:15:::1;::::0;21408:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21696:12:0::1;::::0;21629:21:::1;::::0;-1:-1:-1;21609:17:0::1;::::0;-1:-1:-1;21683:33:0::1;::::0;21696:19:::1;::::0;21713:1:::1;21696:16;:19::i;:::-;21683:8;::::0;;:12:::1;:33::i;:::-;21661:55;;21727:26;21756:68;21802:11;21756:27;21770:12;;21756:9;:13;;:27;;;;:::i;:68::-;21727:97;;21835:21;21859:39;21886:11;21859:22;21873:7;;21859:9;:13;;:22;;;;:::i;:39::-;21835:63;;21909:26;21938:93;22029:1;21938:72;21998:11;21938:41;21966:12;;21938:9;:27;;:41;;;;:::i;:93::-;22074:15;::::0;22066:109:::1;::::0;21909:122;;-1:-1:-1;22045:15:0::1;::::0;-1:-1:-1;;;;;22074:15:0;;::::1;::::0;22155:5:::1;::::0;22117:18;;22045:15;22066:109;22045:15;22066:109;22117:18;22074:15;22155:5;22066:109:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22217:4:0::1;::::0;22209:93:::1;::::0;22044:131;;-1:-1:-1;22187:16:0::1;::::0;-1:-1:-1;;;;;22217:4:0;;::::1;::::0;22282:5:::1;::::0;22249:13;;22187:16;22209:93;22187:16;22209:93;22249:13;22217:4;22282:5;22209:93:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22323:4:0::1;::::0;;-1:-1:-1;;;;;22323:4:0;;::::1;22315:13;::::0;;;:7:::1;:13;::::0;;;;;;;:27;;;22372:4;;;::::1;22353:24:::0;;:18:::1;:24:::0;;;;;:29;;-1:-1:-1;;22353:29:0::1;22323:4:::0;22353:29:::1;::::0;;22408:4;;;::::1;22393:20:::0;;:14:::1;:20:::0;;;;;;22416:15:::1;22393:38:::0;;22458:4;;22447:31;;22458:4;::::1;6222:51:1::0;;6289:18;;;6282:34;;;22186:116:0;;-1:-1:-1;22447:31:0::1;::::0;6195:18:1;22447:31:0::1;;;;;;;-1:-1:-1::0;22544:5:0::1;::::0;-1:-1:-1;22544:5:0;22596:19;;22592:364:::1;;22632:6;::::0;22806:21:::1;::::0;22632:244:::1;::::0;-1:-1:-1;;;22632:244:0;;22708:4:::1;22632:244;::::0;::::1;10619:34:1::0;10669:18;;;10662:34;;;22632:6:0::1;10712:18:1::0;;;10705:34;;;10755:18;;;10748:34;-1:-1:-1;;;;;22806:21:0;;::::1;10798:19:1::0;;;10791:44;22846:15:0::1;10851:19:1::0;;;10844:35;22632:6:0;::::1;::::0;:22:::1;::::0;22662:18;;10553:19:1;;22632:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22896:48:0::1;::::0;;11375:25:1;;;11431:2;11416:18;;11409:34;;;22896:48:0::1;::::0;-1:-1:-1;11348:18:1;22896:48:0::1;;;;;;;22592:364;-1:-1:-1::0;;8974:16:0;:24;;-1:-1:-1;;;;8974:24:0;;;-1:-1:-1;;;;;;;;;20917:2046:0:o;15058:2051::-;15225:11;;15208:14;;15190:32;;:15;:32;:::i;:::-;:46;15186:87;;;15253:8;:6;:8::i;:::-;5670:7;5697:6;-1:-1:-1;;;;;15301:17:0;;;5697:6;;15301:17;;;;:54;;-1:-1:-1;5670:7:0;5697:6;-1:-1:-1;;;;;15335:20:0;;;5697:6;;15335:20;;15301:54;:98;;;;-1:-1:-1;;;;;;15373:26:0;;;;;;:15;:26;;;;;;;;15372:27;15301:98;:132;;;;-1:-1:-1;15429:4:0;;-1:-1:-1;;;;;15416:17:0;;;15429:4;;15416:17;;15301:132;:166;;;;-1:-1:-1;15463:4:0;;-1:-1:-1;;;;;15450:17:0;;;15463:4;;15450:17;;15301:166;:200;;;;-1:-1:-1;15497:4:0;;-1:-1:-1;;;;;15484:17:0;;;15497:4;;15484:17;;15301:200;:243;;;;-1:-1:-1;;;;;;15518:26:0;;15539:4;15518:26;;15301:243;15283:1412;;;15589:12;;15579:6;:22;;15571:41;;;;-1:-1:-1;;;15571:41:0;;11656:2:1;15571:41:0;;;11638:21:1;11695:1;11675:18;;;11668:29;-1:-1:-1;;;11713:18:1;;;11706:36;11759:18;;15571:41:0;11454:329:1;15571:41:0;-1:-1:-1;;;;;10872:18:0;;15627:32;10872:18;;;:9;:18;;;;;;15760:16;;15723:33;15750:6;10872:18;15723:33;:::i;:::-;:53;;15697:150;;;;-1:-1:-1;;;15697:150:0;;11990:2:1;15697:150:0;;;11972:21:1;12029:2;12009:18;;;12002:30;12068:34;12048:18;;;12041:62;-1:-1:-1;;;12119:18:1;;;12112:33;12162:19;;15697:150:0;11788:399:1;15697:150:0;15888:16;;;15902:1;15888:16;;;;;;;;15864:21;;15888:16;;;;;;;;-1:-1:-1;;15929:6:0;;:13;;;-1:-1:-1;;;15929:13:0;;;;15864:40;;-1:-1:-1;;;;;;15929:6:0;;;;:11;;-1:-1:-1;15929:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15919:4;15924:1;15919:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15919:23:0;;;-1:-1:-1;;;;;15919:23:0;;;;;15975:4;15957;15962:1;15957:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15957:23:0;;;:7;;;;;;;;;:23;16013:6;;:33;;-1:-1:-1;;;16013:33:0;;15995:15;;16013:6;;;;;:19;;:33;;16033:6;;16041:4;;16013:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16013:33:0;;;;;;;;;;;;:::i;:::-;16047:1;16013:36;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;16070:29:0;;;;;;:18;:29;;;;;;;;16013:36;;-1:-1:-1;16070:29:0;;:35;;:29;:35;:92;;;;-1:-1:-1;;;;;;16109:25:0;;;;;;:14;:25;;;;;;16147:15;;16109:35;;16137:7;16109:35;:::i;:::-;:53;16070:92;:116;;;;;16176:10;;16166:7;:20;16070:116;16066:618;;;16221:4;:16;;-1:-1:-1;;;;;;16221:16:0;-1:-1:-1;;;;;16221:16:0;;;;;;;;16256:10;:20;;;16312:15;16295:14;:32;16351:25;;;6222:51:1;;;6304:2;6289:18;;6282:34;;;16351:25:0;;6195:18:1;16351:25:0;;;;;;;16066:618;;;-1:-1:-1;;;;;16417:29:0;;;;;;:18;:29;;;;;;;;:36;;;:61;;;16468:10;;16458:7;:20;16417:61;16413:271;;;16513:4;:16;;-1:-1:-1;;;;;;16513:16:0;-1:-1:-1;;;;;16513:16:0;;;;;;;;16548:10;:20;;;16604:15;16587:14;:32;16643:25;;;6222:51:1;;;6304:2;6289:18;;6282:34;;;16643:25:0;;6195:18:1;16643:25:0;;;;;;;16413:271;15556:1139;;;15283:1412;5670:7;5697:6;-1:-1:-1;;;;;16723:17:0;;;5697:6;;16723:17;;;;:54;;-1:-1:-1;5670:7:0;5697:6;-1:-1:-1;;;;;16757:20:0;;;5697:6;;16757:20;;16723:54;:95;;;;-1:-1:-1;;;;;;16795:23:0;;;;;;:15;:23;;;;;;;;16794:24;16723:95;:126;;;;-1:-1:-1;16845:4:0;;-1:-1:-1;;;;;16835:14:0;;;16845:4;;16835:14;;16723:126;:169;;;;-1:-1:-1;;;;;;16866:26:0;;16887:4;16866:26;;16723:169;16705:397;;;16937:12;;16927:6;:22;;16919:41;;;;-1:-1:-1;;;16919:41:0;;11656:2:1;16919:41:0;;;11638:21:1;11695:1;11675:18;;;11668:29;-1:-1:-1;;;11713:18:1;;;11706:36;11759:18;;16919:41:0;11454:329:1;16919:41:0;16979:4;;-1:-1:-1;;;;;16979:14:0;;;:4;;:14;16975:113;;;17028:4;;17034:10;;17019:26;;;-1:-1:-1;;;;;17028:4:0;;;6222:51:1;;6304:2;6289:18;;6282:34;;;;17019:26:0;;6195:18:1;17019:26:0;;;;;;;17064:8;:6;:8::i;20567:342::-;-1:-1:-1;;;;;20704:19:0;;20678:4;20704:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20727:22:0;;;;;;:11;:22;;;;;;;;20704:45;20700:90;;;-1:-1:-1;20773:5:0;20766:12;;20700:90;20814:4;;-1:-1:-1;;;;;20804:14:0;;;20814:4;;20804:14;;:35;;-1:-1:-1;20835:4:0;;-1:-1:-1;;;;;20822:17:0;;;20835:4;;20822:17;20804:35;20800:80;;;-1:-1:-1;20863:5:0;20856:12;;20800:80;-1:-1:-1;20897:4:0;20567:342;;;;:::o;20074:485::-;20238:4;;20194:7;;;;-1:-1:-1;;;;;20238:17:0;;;:4;;:17;:74;;20304:8;;20238:74;;;20271:17;;20238:74;20214:98;-1:-1:-1;20323:17:0;20343:34;20373:3;20343:25;:6;20214:98;20343:10;:25::i;:34::-;20433:4;20415:24;;;;:9;:24;;;;;;20323:54;;-1:-1:-1;20415:39:0;;20323:54;20415:28;:39::i;:::-;20406:4;20388:24;;;;:9;:24;;;;;;;:66;;;;20470:42;;-1:-1:-1;;;;;20470:42:0;;;;;;;20502:9;160:25:1;;148:2;133:18;;14:177;20470:42:0;;;;;;;;20530:21;:6;20541:9;20530:10;:21::i;:::-;20523:28;20074:485;-1:-1:-1;;;;;;20074:485:0:o;939:246::-;997:7;1021:6;1017:47;;-1:-1:-1;1051:1:0;1044:8;;1017:47;1074:9;1086:5;1090:1;1086;:5;:::i;:::-;1074:17;-1:-1:-1;1119:1:0;1110:5;1114:1;1074:17;1110:5;:::i;:::-;:10;1102:56;;;;-1:-1:-1;;;1102:56:0;;14014:2:1;1102:56:0;;;13996:21:1;14053:2;14033:18;;;14026:30;14092:34;14072:18;;;14065:62;-1:-1:-1;;;14143:18:1;;;14136:31;14184:19;;1102:56:0;13812:397:1;1193:132:0;1251:7;1278:39;1282:1;1285;1278:39;;;;;;;;;;;;;;;;;:3;:39::i;13181:136::-;13226:15;;13219:4;:22;;-1:-1:-1;;;;;;13219:22:0;-1:-1:-1;;;;;13226:15:0;;;13219:22;;;;;;13226:15;13252:10;:14;13294:15;13277:14;:32;13181:136::o;1333:223::-;1453:7;1488:12;1481:5;1473:28;;;;-1:-1:-1;;;1473:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1512:9:0;1524:5;1528:1;1524;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;2096:247::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2263:9;2250:23;2282:31;2307:5;2282:31;:::i;2348:118::-;2434:5;2427:13;2420:21;2413:5;2410:32;2400:60;;2456:1;2453;2446:12;2471:382;2536:6;2544;2597:2;2585:9;2576:7;2572:23;2568:32;2565:52;;;2613:1;2610;2603:12;2565:52;2652:9;2639:23;2671:31;2696:5;2671:31;:::i;:::-;2721:5;-1:-1:-1;2778:2:1;2763:18;;2750:32;2791:30;2750:32;2791:30;:::i;:::-;2840:7;2830:17;;;2471:382;;;;;:::o;2858:180::-;2917:6;2970:2;2958:9;2949:7;2945:23;2941:32;2938:52;;;2986:1;2983;2976:12;2938:52;-1:-1:-1;3009:23:1;;2858:180;-1:-1:-1;2858:180:1:o;3251:388::-;3319:6;3327;3380:2;3368:9;3359:7;3355:23;3351:32;3348:52;;;3396:1;3393;3386:12;3348:52;3435:9;3422:23;3454:31;3479:5;3454:31;:::i;:::-;3504:5;-1:-1:-1;3561:2:1;3546:18;;3533:32;3574:33;3533:32;3574:33;:::i;3644:316::-;3721:6;3729;3737;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;-1:-1:-1;;3829:23:1;;;3899:2;3884:18;;3871:32;;-1:-1:-1;3950:2:1;3935:18;;;3922:32;;3644:316;-1:-1:-1;3644:316:1:o;3965:309::-;4030:6;4038;4091:2;4079:9;4070:7;4066:23;4062:32;4059:52;;;4107:1;4104;4097:12;4059:52;4146:9;4133:23;4165:28;4187:5;4165:28;:::i;4505:356::-;4707:2;4689:21;;;4726:18;;;4719:30;4785:34;4780:2;4765:18;;4758:62;4852:2;4837:18;;4505:356::o;4866:127::-;4927:10;4922:3;4918:20;4915:1;4908:31;4958:4;4955:1;4948:15;4982:4;4979:1;4972:15;4998:128;5038:3;5069:1;5065:6;5062:1;5059:13;5056:39;;;5075:18;;:::i;:::-;-1:-1:-1;5111:9:1;;4998:128::o;5131:217::-;5171:1;5197;5187:132;;5241:10;5236:3;5232:20;5229:1;5222:31;5276:4;5273:1;5266:15;5304:4;5301:1;5294:15;5187:132;-1:-1:-1;5333:9:1;;5131:217::o;5708:335::-;5910:2;5892:21;;;5949:2;5929:18;;;5922:30;-1:-1:-1;;;5983:2:1;5968:18;;5961:41;6034:2;6019:18;;5708:335::o;6327:245::-;6394:6;6447:2;6435:9;6426:7;6422:23;6418:32;6415:52;;;6463:1;6460;6453:12;6415:52;6495:9;6489:16;6514:28;6536:5;6514:28;:::i;7685:125::-;7725:4;7753:1;7750;7747:8;7744:34;;;7758:18;;:::i;:::-;-1:-1:-1;7795:9:1;;7685:125::o;8495:127::-;8556:10;8551:3;8547:20;8544:1;8537:31;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8627:127;8688:10;8683:3;8679:20;8676:1;8669:31;8719:4;8716:1;8709:15;8743:4;8740:1;8733:15;8759:251;8829:6;8882:2;8870:9;8861:7;8857:23;8853:32;8850:52;;;8898:1;8895;8888:12;8850:52;8930:9;8924:16;8949:31;8974:5;8949:31;:::i;9015:461::-;9068:3;9106:5;9100:12;9133:6;9128:3;9121:19;9159:4;9188:2;9183:3;9179:12;9172:19;;9225:2;9218:5;9214:14;9246:1;9256:195;9270:6;9267:1;9264:13;9256:195;;;9335:13;;-1:-1:-1;;;;;9331:39:1;9319:52;;9391:12;;;;9426:15;;;;9367:1;9285:9;9256:195;;;-1:-1:-1;9467:3:1;;9015:461;-1:-1:-1;;;;;9015:461:1:o;9481:582::-;9780:6;9769:9;9762:25;9823:6;9818:2;9807:9;9803:18;9796:34;9866:3;9861:2;9850:9;9846:18;9839:31;9743:4;9887:57;9939:3;9928:9;9924:19;9916:6;9887:57;:::i;:::-;-1:-1:-1;;;;;9980:32:1;;;;9975:2;9960:18;;9953:60;-1:-1:-1;10044:3:1;10029:19;10022:35;9879:65;9481:582;-1:-1:-1;;;9481:582:1:o;10890:306::-;10978:6;10986;10994;11047:2;11035:9;11026:7;11022:23;11018:32;11015:52;;;11063:1;11060;11053:12;11015:52;11092:9;11086:16;11076:26;;11142:2;11131:9;11127:18;11121:25;11111:35;;11186:2;11175:9;11171:18;11165:25;11155:35;;10890:306;;;;;:::o;12192:332::-;12399:6;12388:9;12381:25;12442:2;12437;12426:9;12422:18;12415:30;12362:4;12462:56;12514:2;12503:9;12499:18;12491:6;12462:56;:::i;:::-;12454:64;12192:332;-1:-1:-1;;;;12192:332:1:o;12529:1105::-;12624:6;12655:2;12698;12686:9;12677:7;12673:23;12669:32;12666:52;;;12714:1;12711;12704:12;12666:52;12747:9;12741:16;12776:18;12817:2;12809:6;12806:14;12803:34;;;12833:1;12830;12823:12;12803:34;12871:6;12860:9;12856:22;12846:32;;12916:7;12909:4;12905:2;12901:13;12897:27;12887:55;;12938:1;12935;12928:12;12887:55;12967:2;12961:9;12989:2;12985;12982:10;12979:36;;;12995:18;;:::i;:::-;13041:2;13038:1;13034:10;13073:2;13067:9;13136:2;13132:7;13127:2;13123;13119:11;13115:25;13107:6;13103:38;13191:6;13179:10;13176:22;13171:2;13159:10;13156:18;13153:46;13150:72;;;13202:18;;:::i;:::-;13238:2;13231:22;13288:18;;;13322:15;;;;-1:-1:-1;13364:11:1;;;13360:20;;;13392:19;;;13389:39;;;13424:1;13421;13414:12;13389:39;13448:11;;;;13468:135;13484:6;13479:3;13476:15;13468:135;;;13550:10;;13538:23;;13501:12;;;;13581;;;;13468:135;;;13622:6;12529:1105;-1:-1:-1;;;;;;;;12529:1105:1:o;13639:168::-;13679:7;13745:1;13741;13737:6;13733:14;13730:1;13727:21;13722:1;13715:9;13708:17;13704:45;13701:71;;;13752:18;;:::i;:::-;-1:-1:-1;13792:9:1;;13639:168::o

Swarm Source

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