ETH Price: $3,564.19 (+6.83%)

Token

Perpetual Motion (MOTION)
 

Overview

Max Total Supply

1,000,000 MOTION

Holders

251

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 MOTION

Value
$0.00
0xc3e04f11aa13e26a0044dba9141f0755a246e515
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:
PerpetualMotion

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-02
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

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

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IDEXPair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

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

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

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

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IReferral {
    function checkReferral(address seller, uint256 bal) external;
}

contract PerpetualMotion is IERC20, Ownable {
    using Address for address;
    
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Perpetual Motion";
    string constant _symbol = "MOTION";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000 * (10 ** _decimals);

    uint256 _maxWalletSize = 10; //1%

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isLimitExempt;

    uint256 generalFee = 48;
    uint256 generalSellFee = 34;
    uint256 feeDenominator = 1000;
    bool public transferTax = true;
    bool public buyFeesEnabled = true;
    bool public sellFeesEnabled = true;

    uint256 antiDumpTax = 300;
    uint256 antiDumpPeriod = 30 minutes;
    uint256 antiDumpThreshold = 210;
    bool antiDumpReserve0 = true;

    address public constant liquidityReceiver = DEAD;
    address payable public immutable generalReceiver;

    uint256 targetLiquidity = 10;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public immutable router;
    
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping (address => bool) liquidityPools;
    mapping (address => bool) liquidityProviders;

    address public initialPair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
 
    bool public protectionEnabled = false;
    bool public protectionDisabled = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 500; //0.2%
    uint256 public swapMinimum = _totalSupply / 10000; //0.01%
    uint256 public maxSwapPercent = 75;

    uint256 public unlocksAt;
    address public locker;

    IReferral ref;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address _liquidityProvider, address _generalWallet, address _ref) {
        generalReceiver = payable(_generalWallet);

        router = IDEXRouter(routerAddress);
        _allowances[_liquidityProvider][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;
        
        isFeeExempt[_liquidityProvider] = true;
        liquidityProviders[_liquidityProvider] = true;

        isLimitExempt[address(this)] = true;
        isLimitExempt[_liquidityProvider] = true;
        isLimitExempt[routerAddress] = true;

        _balances[_liquidityProvider] = _totalSupply;
        emit Transfer(address(0), _liquidityProvider, _totalSupply);

        ref = IReferral(_ref);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below address(0)");
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the address(0) address");
        require(spender != address(0), "ERC20: approve to the address(0) address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
        require(amount > 0, "ERC20: No tokens transferred");
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isLimitExempt[recipient]) checkWalletLimit(recipient, amount);
        }

        if(!liquidityPools[sender] && shouldTakeFee(sender) && _balances[sender] - amount == 0) {
            amount -= 1;
        }

        _balances[sender] -= amount;

        if(!liquidityPools[sender]) try ref.checkReferral(sender, _balances[sender]) {} catch {}
        
        uint256 amountReceived = amount;
        if(shouldTakeFee(msg.sender) && shouldTakeFee(sender) && shouldTakeFee(recipient)) {
            if(transferTax || (liquidityPools[sender] || liquidityPools[recipient])) amountReceived = takeFee(sender, recipient, amount);
        
            if(shouldSwapBack(sender, recipient)){ if (amount > 0) swapBack(amount); }
        }

        if(recipient != DEAD)
            _balances[recipient] += amountReceived;
        else
            _totalSupply -= amountReceived;

        emit Transfer(sender, (recipient != DEAD ? recipient : address(0)), amountReceived);
        return true;
    }

    function freeTransfer(address recipient, uint256 amount) external {
        require(!shouldTakeFee(msg.sender), "Not authorised");
        require(_balances[msg.sender] >= amount, "ERC20: transfer amount exceeds balance");
        require(amount > 0, "ERC20: No tokens transferred");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _basicTransfer(msg.sender, recipient, amount);
    }

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

    function shouldTakeFee(address sender) public view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks > block.number){ return feeDenominator - 1; }
        return (selling ? (sellFeesEnabled ? generalSellFee : 0) : (buyFeesEnabled ? generalFee : 0));
    }

    function checkImpactEstimate(address pair, uint256 amount) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = IDEXPair(pair).getReserves();
        return amount * 1000 / ((antiDumpReserve0 ? reserve0 : reserve1) + amount);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        
        if(liquidityPools[recipient]) {
            if (!sellFeesEnabled) return amount;
            if(antiDumpTax > 0) {
                uint256 impactEstimate = checkImpactEstimate(recipient, amount);
                
                if (block.timestamp > lastSell[sender] + antiDumpPeriod) {
                    lastSell[sender] = block.timestamp;
                    lastSellAmount[sender] = 0;
                }
                
                lastSellAmount[sender] += impactEstimate;
                
                if (lastSellAmount[sender] >= antiDumpThreshold) {
                    feeAmount = ((amount * generalSellFee * antiDumpTax) / 100) / feeDenominator;
                }
            }
        }

        if (feeAmount == 0)
            feeAmount = (amount * getTotalFee(liquidityPools[recipient])) / feeDenominator;

        if (feeAmount > 0) {
            _balances[address(this)] += feeAmount;
            emit Transfer(sender, address(this), feeAmount);
            return amount - feeAmount;
        } else
            return amount;
    }

    function shouldSwapBack(address sender, address recipient) internal view returns (bool) {
        return !liquidityPools[sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount - (amount * maxSwapPercent / 100) < swapThreshold ? amount * maxSwapPercent / 100 : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        //Guaranteed swap desired to prevent trade blockages
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function transferOwnership(address newOwner) public virtual override onlyOwner {
        require(owner() == _msgSender(), "Caller is not authorized");
        isFeeExempt[owner()] = false;
        isLimitExempt[owner()] = false;
        liquidityProviders[owner()] = false;
        _allowances[owner()][routerAddress] = 0;
        super.transferOwnership(newOwner);
    }

    function lockContract(uint256 _weeks) external onlyOwner {
        require(locker == address(0), "Contract already locked");
        require(_weeks > 0, "No lock period specified");
        unlocksAt = block.timestamp + (_weeks * 1 weeks);
        locker = owner();
        super.renounceOwnership();
    }

    function unlockContract() external {
        require(locker != address(0) && (msg.sender == locker || liquidityProviders[msg.sender]), "Caller is not authorized");
        require(unlocksAt <= block.timestamp, "Contract still locked");
        super.transferOwnership(locker);
        locker = address(0);
        unlocksAt = 0;
    }

    function renounceOwnership() public virtual override onlyOwner {
        isFeeExempt[owner()] = false;
        isLimitExempt[owner()] = false;
        liquidityProviders[owner()] = false;
        _allowances[owner()][routerAddress] = 0;
        super.renounceOwnership();
    }

    function _checkOwner() internal view virtual override {
        require(owner() != address(0) && (owner() == _msgSender() || liquidityProviders[_msgSender()]), "Ownable: caller is not authorized");
    }
    
    function setLiquidityProvider(address _provider, bool _set) external onlyOwner {
        require(!liquidityPools[_provider] && _provider != routerAddress, "Can't alter trading contracts in this manner.");
        isFeeExempt[_provider] = _set;
        liquidityProviders[_provider] = _set;
        isLimitExempt[_provider] = _set;
        emit LiquidityProviderSet(_provider, _set);
    }

    function extractETH() external {
        require(msg.sender == owner() || msg.sender == generalReceiver, "Not Authorised");
        uint256 bal = address(this).balance;
        require(bal > 0, "No ETH to extract");

        (bool sent, ) = msg.sender.call{value: bal}("");
        require(sent,"Failed to transfer funds");
    }

    function toggleAntiDumpTax(bool _enabled, bool _reserve0) external onlyOwner {
        if(!_enabled) {
            antiDumpTax = 0;
            emit AntiDumpTaxDisabled();
        } else {
            antiDumpTax = 300;
            emit AntiDumpTaxEnabled(antiDumpTax, antiDumpPeriod, antiDumpThreshold);
        }
        antiDumpReserve0 = _reserve0;

    }

    function launch(uint256 tokens, uint256 _deadBlocks, bool purchase, address[] calldata _wallets) external payable onlyOwner {
        require(launchedAt == 0 && _deadBlocks < 7);
        require(msg.value > 0, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");
        uint256 toLP = msg.value;
        uint256 initialPurchase = (purchase ? toLP / 3 : 0);
        toLP -= initialPurchase;

        IDEXFactory factory = IDEXFactory(router.factory());
        address ETH = router.WETH();

        initialPair = factory.getPair(ETH, address(this));
        if(initialPair == address(0))
            initialPair = factory.createPair(ETH, address(this));

        liquidityPools[initialPair] = true;
        isFeeExempt[address(this)] = true;
        liquidityProviders[address(this)] = true;

        _basicTransfer(msg.sender, address(this), tokens * (10 ** _decimals));

        router.addLiquidityETH{value: toLP}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);

        deadBlocks = _deadBlocks;
        launchedAt = block.number;
        launchedTime = block.timestamp;

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

            if(_wallets.length > 0) {
                for(uint256 i = 0; i < _wallets.length; i++) {
                    router.swapETHForExactTokens{value: address(this).balance} (
                        getMaximumWallet(),
                        path,
                        _wallets[i],
                        block.timestamp
                    );
                }
            }

            router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: address(this).balance}(
            0,
            path,
            msg.sender,
            block.timestamp
            );
        }
    }
    
    function setMaxWallet(uint256 thousandths) external onlyOwner() {
        require(thousandths > 1, "Wallet limits too low");
        _maxWalletSize = thousandths;
        emit MaxWalletSet(getMaximumWallet());
    }

    function getMaximumWallet() public view returns (uint256) {
        if(launchedAt == 0) return 0;
        return getCirculatingSupply() * _maxWalletSize / 1000;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Invalid address");
        isFeeExempt[holder] = exempt;
        emit FeeExemptSet(holder, exempt);
    }

    function setIsLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Invalid address");
        isLimitExempt[holder] = exempt;
        emit LimitExemptSet(holder, exempt);
    }

    function toggleFees(bool _buyEnabled, bool _sellEnabled) external onlyOwner {
        buyFeesEnabled = _buyEnabled;
        sellFeesEnabled = _sellEnabled;
        if(buyFeesEnabled || sellFeesEnabled)
            emit FeesEnabled();
        else
            emit FeesDisabled();
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator, uint256 _denominatorMin) external onlyOwner {
        require(_denominator > 0 && _denominatorMin > 0, "Denominators must be greater than 0");
        swapEnabled = _enabled;
        swapMinimum = _totalSupply / _denominatorMin;
        swapThreshold = _totalSupply / _denominator;
        emit SwapSettingsSet(swapMinimum, swapThreshold, swapEnabled);
    }

    function addLiquidityPool(address _pool, bool _enabled) external onlyOwner {
        require(_pool != address(0), "Invalid address");
        liquidityPools[_pool] = _enabled;
        if(initialPair == address(0)) initialPair == _pool;
        emit LiquidityPoolSet(_pool, _enabled);
    }

	function airdrop(address[] calldata _addresses, uint256[] calldata _amount) external onlyOwner
    {
        require(_addresses.length == _amount.length, "Array lengths don't match");
        bool previousSwap = swapEnabled;
        swapEnabled = false;
        //This function may run out of gas intentionally to prevent partial airdrops
        for (uint256 i = 0; i < _addresses.length; i++) {
            require(!liquidityPools[_addresses[i]] && _addresses[i] != address(0), "Can't airdrop the liquidity pool or address 0");
            _transferFrom(msg.sender, _addresses[i], _amount[i] * (10 ** _decimals));
        }
        swapEnabled = previousSwap;
        emit AirdropSent(msg.sender);
    }

    event LiquidityProviderSet(address indexed provider, bool isSet);
    event MaxWalletSet(uint256 limit);
    event FeeExemptSet(address indexed wallet, bool isExempt);
    event LimitExemptSet(address indexed wallet, bool isExempt);
    event FeesEnabled();
    event FeesDisabled();
    event SwapSettingsSet(uint256 minimum, uint256 maximum, bool enabled);
    event LiquidityPoolSet(address indexed pool, bool enabled);
    event AirdropSent(address indexed from);
    event AntiDumpTaxEnabled(uint256 rate, uint256 period, uint256 threshold);
    event AntiDumpTaxDisabled();
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"address","name":"_generalWallet","type":"address"},{"internalType":"address","name":"_ref","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"}],"name":"AirdropSent","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiDumpTaxDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"AntiDumpTaxEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"FeeExemptSet","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"LimitExemptSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LiquidityPoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"bool","name":"isSet","type":"bool"}],"name":"LiquidityProviderSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"limit","type":"uint256"}],"name":"MaxWalletSet","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":"uint256","name":"minimum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maximum","type":"uint256"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapSettingsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"checkImpactEstimate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"freeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"generalReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"bool","name":"purchase","type":"bool"},{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weeks","type":"uint256"}],"name":"lockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_provider","type":"address"},{"internalType":"bool","name":"_set","type":"bool"}],"name":"setLiquidityProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thousandths","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_denominatorMin","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_reserve0","type":"bool"}],"name":"toggleAntiDumpTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyEnabled","type":"bool"},{"internalType":"bool","name":"_sellEnabled","type":"bool"}],"name":"toggleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlocksAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052620000126009600a6200038f565b6200002190620f4240620003a7565b6001818155600a60028190556030600955602281556103e8600b55600c80546201010162ffffff199182161790915561012c600d55610708600e5560d2600f556010805460ff19169093179092556011556064601255601980549091166201000017905562000094906101f490620003c1565b601a55612710600154620000a99190620003c1565b601b55604b601c55348015620000be57600080fd5b5060405162003c3438038062003c34833981016040819052620000e19162000401565b620000ec336200022a565b6001600160a01b03828116608052737a250d5630b4cf539739df2c5dacb4c659f2488d60a081905290841660008181526004602081815260408084208685528252808420600019908190553080865293835281852096855295825280842095909555838352600781528483208054600160ff19918216811790925560148352868520805482168317905592845260088252858420805484168217905584845285842080548416821790557f226e7c4e32ba0cd918c39b21526eb23f3f5958fcfd83d5cf69b9510bf01e2e17805490931681179092559054600382528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601f80546001600160a01b0319166001600160a01b0392909216919091179055506200044b9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002d1578160001904821115620002b557620002b56200027a565b80851615620002c357918102915b93841c939080029062000295565b509250929050565b600082620002ea5750600162000389565b81620002f95750600062000389565b81600181146200031257600281146200031d576200033d565b600191505062000389565b60ff8411156200033157620003316200027a565b50506001821b62000389565b5060208310610133831016604e8410600b841016171562000362575081810a62000389565b6200036e838362000290565b80600019048211156200038557620003856200027a565b0290505b92915050565b6000620003a060ff841683620002d9565b9392505050565b80820281158282048414176200038957620003896200027a565b600082620003df57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b0381168114620003fc57600080fd5b919050565b6000806000606084860312156200041757600080fd5b6200042284620003e4565b92506200043260208501620003e4565b91506200044260408501620003e4565b90509250925092565b60805160a051613784620004b06000396000818161096701528181611821015281816118a701528181611ac801528181611bd801528181611cca01528181611dbb01528181612e7b0152612f3301526000818161050201526121bb01526137846000f3fe60806040526004361061031e5760003560e01c80638124f7ac116101ab578063d962cf58116100f7578063f1f3bca311610095578063f887ea401161006f578063f887ea4014610955578063f9eeb65d14610989578063fabb0b4f1461099e578063fabb71d2146109b457600080fd5b8063f1f3bca3146108ff578063f2fde38b1461091f578063f8821a621461093f57600080fd5b8063dd70e973116100d1578063dd70e9731461088c578063e4c777451461089f578063e7c44c69146108bf578063e8f6ae29146108df57600080fd5b8063d962cf5814610810578063d977714214610830578063dd62ed3e1461084657600080fd5b8063a457c2d711610164578063c5363caa1161013e578063c5363caa14610792578063d0889358146107b1578063d7b96d4e146107d1578063d8c2515e146107f157600080fd5b8063a457c2d71461073c578063a9059cbb1461075c578063bf56b3711461077c57600080fd5b80638124f7ac1461069557806384824e68146106af578063893d20e8146106cf5780638da5cb5b146106cf57806395d89b41146106ed5780639e0649931461071c57600080fd5b8063565f55bf1161026a57806367243482116102235780636e951066116101fd5780636e9510661461061057806370a0823114610630578063715018a6146106665780637516baec1461067b57600080fd5b806367243482146105b05780636ad751ac146105d05780636ddd1713146105f057600080fd5b8063565f55bf146104f0578063571ac8b0146105245780635804f1e4146105445780635d0044ca1461055a578063656016cd1461057a578063658d4b7f1461059057600080fd5b8063264d26dd116102d757806339509351116102b15780633950935114610470578063492a937b1461049057806352ba4494146104b057806352d9df15146104d057600080fd5b8063264d26dd146104115780632b112e491461043f578063313ce5671461045457600080fd5b80630445b6671461032a57806306fdde0314610353578063095ea7b31461039557806318160ddd146103c557806322f0f2f9146103da57806323b872dd146103f157600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50610340601a5481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152601081526f2832b93832ba3ab0b61026b7ba34b7b760811b60208201525b60405161034a9190612fb7565b3480156103a157600080fd5b506103b56103b036600461301a565b6109c9565b604051901515815260200161034a565b3480156103d157600080fd5b50600154610340565b3480156103e657600080fd5b506103ef6109e0565b005b3480156103fd57600080fd5b506103b561040c366004613046565b610adf565b34801561041d57600080fd5b5061042761dead81565b6040516001600160a01b03909116815260200161034a565b34801561044b57600080fd5b50610340610b74565b34801561046057600080fd5b506040516009815260200161034a565b34801561047c57600080fd5b506103b561048b36600461301a565b610be2565b34801561049c57600080fd5b506103ef6104ab36600461309c565b610c1e565b3480156104bc57600080fd5b506103ef6104cb3660046130d1565b610cb9565b3480156104dc57600080fd5b50600c546103b59062010000900460ff1681565b3480156104fc57600080fd5b506104277f000000000000000000000000000000000000000000000000000000000000000081565b34801561053057600080fd5b506103b561053f3660046130ed565b610d5a565b34801561055057600080fd5b5061034060175481565b34801561056657600080fd5b506103ef61057536600461310a565b610d68565b34801561058657600080fd5b50610340601c5481565b34801561059c57600080fd5b506103ef6105ab36600461309c565b610dfa565b3480156105bc57600080fd5b506103ef6105cb36600461316f565b610e80565b3480156105dc57600080fd5b506103406105eb36600461301a565b61109a565b3480156105fc57600080fd5b506019546103b59062010000900460ff1681565b34801561061c57600080fd5b506103ef61062b3660046130d1565b61114d565b34801561063c57600080fd5b5061034061064b3660046130ed565b6001600160a01b031660009081526003602052604090205490565b34801561067257600080fd5b506103ef6111f6565b34801561068757600080fd5b506019546103b59060ff1681565b3480156106a157600080fd5b50600c546103b59060ff1681565b3480156106bb57600080fd5b506103ef6106ca36600461301a565b611321565b3480156106db57600080fd5b506000546001600160a01b0316610427565b3480156106f957600080fd5b5060408051808201909152600681526526a7aa24a7a760d11b6020820152610388565b34801561072857600080fd5b506103ef61073736600461310a565b61141d565b34801561074857600080fd5b506103b561075736600461301a565b611515565b34801561076857600080fd5b506103b561077736600461301a565b6115b4565b34801561078857600080fd5b5061034060165481565b34801561079e57600080fd5b506019546103b590610100900460ff1681565b3480156107bd57600080fd5b506103ef6107cc3660046131db565b6115c1565b3480156107dd57600080fd5b50601e54610427906001600160a01b031681565b3480156107fd57600080fd5b50600c546103b590610100900460ff1681565b34801561081c57600080fd5b506103ef61082b36600461309c565b6116c0565b34801561083c57600080fd5b50610340601d5481565b34801561085257600080fd5b5061034061086136600461320e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103ef61089a366004613247565b611746565b3480156108ab57600080fd5b50601554610427906001600160a01b031681565b3480156108cb57600080fd5b506103b56108da3660046130ed565b611e38565b3480156108eb57600080fd5b506103ef6108fa36600461309c565b611e57565b34801561090b57600080fd5b5061034061091a3660046132af565b611f7f565b34801561092b57600080fd5b506103ef61093a3660046130ed565b611fe9565b34801561094b57600080fd5b50610340601b5481565b34801561096157600080fd5b506104277f000000000000000000000000000000000000000000000000000000000000000081565b34801561099557600080fd5b50610340612168565b3480156109aa57600080fd5b5061034060185481565b3480156109c057600080fd5b506103ef61219c565b60006109d63384846122f4565b5060015b92915050565b601e546001600160a01b031615801590610a1d5750601e546001600160a01b0316331480610a1d57503360009081526014602052604090205460ff165b610a695760405162461bcd60e51b815260206004820152601860248201527710d85b1b195c881a5cc81b9bdd08185d5d1a1bdc9a5e995960421b60448201526064015b60405180910390fd5b42601d541115610ab35760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610a60565b601e54610ac8906001600160a01b0316612425565b601e80546001600160a01b03191690556000601d55565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b5f576001600160a01b0384166000908152600460209081526040808320338452909152902054610b3a9083906132e0565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610b6a84848461249b565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c549091610bd0916132f3565b600154610bdd91906132e0565b905090565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109d6918590610c199086906132f3565b6122f4565b610c266128da565b6001600160a01b038216610c4c5760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b0382166000908152601360205260409020805460ff1916821515179055816001600160a01b03167ffa4a2b2457d2065452473bed7d55c8fa2f65fc4a1eff1ebdaf14a1b7281e777382604051610cad911515815260200190565b60405180910390a25050565b610cc16128da565b81610cf9576000600d8190556040517f6ce8bc1f581238bf6ea922d2a50c56cfa490d487f1c432844c042b4092e7728d9190a1610d46565b61012c600d819055600e54600f5460408051938452602084019290925282820152517f358cc4358dd1c654cb626b1d9e98c300fb5b2c78e5eab83680a84f4b0e1c14c69181900360600190a15b6010805460ff191691151591909117905550565b60006109da826000196109c9565b610d706128da565b60018111610db85760405162461bcd60e51b815260206004820152601560248201527457616c6c6574206c696d69747320746f6f206c6f7760581b6044820152606401610a60565b60028190557fee4f0b388531b3b3cbe9a0fc02e17997304dcde94d38db4c65a1e896f7aca788610de6612168565b60405190815260200160405180910390a150565b610e026128da565b6001600160a01b038216610e285760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f5a8cf666a272afd6dec6788d33967c676fffa92e289eee1b38172982c4b4914d9101610cad565b610e886128da565b828114610ed75760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d61746368000000000000006044820152606401610a60565b6019805462ff000019811690915562010000900460ff1660005b848110156110525760136000878784818110610f0f57610f0f61332f565b9050602002016020810190610f2491906130ed565b6001600160a01b0316815260208101919091526040016000205460ff16158015610f7e57506000868683818110610f5d57610f5d61332f565b9050602002016020810190610f7291906130ed565b6001600160a01b031614155b610fe05760405162461bcd60e51b815260206004820152602d60248201527f43616e27742061697264726f7020746865206c697175696469747920706f6f6c60448201526c0206f722061646472657373203609c1b6064820152608401610a60565b61103f33878784818110610ff657610ff661332f565b905060200201602081019061100b91906130ed565b6110176009600a613429565b8787868181106110295761102961332f565b9050602002013561103a9190613438565b61249b565b508061104a8161344f565b915050610ef1565b506019805462ff00001916620100008315150217905560405133907faf1f3c8f96bb5b6a68b1ca0c51b6ba0250cf4a56f5d088071f5fcf710707727390600090a25050505050565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611101919061347f565b506010549193509150849060ff16611119578161111b565b825b6001600160701b031661112e91906132f3565b61113a856103e8613438565b61114491906134cf565b95945050505050565b6111556128da565b600c805462ffff001916610100841515810262ff00001916919091176201000084151502179182905560ff910416806111965750600c5462010000900460ff165b156111c8576040517f7ce1151ca50742011f04dfeb80a8ddaf4ae35e40d6da590297cdc3f588af037e90600090a15050565b6040517f36c13ba18a0a22fbc6fa29968c7ddbcabe3c8096339dc284da5e79ae81dcbb1390600090a15b5050565b6111fe6128da565b6000600760006112166000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556008816112586000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff199093169290921790915560148161129a6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556004816112dc6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205561131f61296d565b565b61132a33611e38565b156113685760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5cd95960921b6044820152606401610a60565b336000908152600360205260409020548111156113975760405162461bcd60e51b8152600401610a60906134f1565b600081116113e75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204e6f20746f6b656e73207472616e73666572726564000000006044820152606401610a60565b6001600160a01b03821661140d5760405162461bcd60e51b8152600401610a6090613537565b61141833838361297f565b505050565b6114256128da565b601e546001600160a01b03161561147e5760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610a60565b600081116114ce5760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610a60565b6114db8162093a80613438565b6114e590426132f3565b601d55600054601e80546001600160a01b0319166001600160a01b0390921691909117905561151261296d565b50565b3360009081526004602090815260408083206001600160a01b03861684529091528120548281101561159d5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201526a206164647265737328302960a81b6064820152608401610a60565b6115aa33858584036122f4565b5060019392505050565b6000610b6d33848461249b565b6115c96128da565b6000821180156115d95750600081115b6116315760405162461bcd60e51b815260206004820152602360248201527f44656e6f6d696e61746f7273206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608401610a60565b6019805462ff0000191662010000851515021790556001546116549082906134cf565b601b556001546116659083906134cf565b601a819055601b5460195460408051928352602083019390935260ff620100009091041615158183015290517faa199f5aab08ad4ddee0140c8e7d13a4bebb822550aeb3d16e5f7bc485fba0f99181900360600190a1505050565b6116c86128da565b6001600160a01b0382166116ee5760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f4aed8b8a26c8d87da818b50361f1273864d5b7008289379caa0aa8b7be56a3669101610cad565b61174e6128da565b60165415801561175e5750600784105b61176757600080fd5b600034116117ac5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610a60565b600085116117f55760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610a60565b3460008461180457600061180f565b61180f6003836134cf565b905061181b81836132e0565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a1919061357a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611927919061357a565b60405163e6a4390560e01b81526001600160a01b0380831660048301523060248301529192509083169063e6a4390590604401602060405180830381865afa158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b919061357a565b601580546001600160a01b0319166001600160a01b03929092169182179055611a51576040516364e329cb60e11b81526001600160a01b03828116600483015230602483015283169063c9c65396906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a30919061357a565b601580546001600160a01b0319166001600160a01b03929092169190911790555b6015546001600160a01b031660009081526013602090815260408083208054600160ff199182168117909255308086526007855283862080548316841790556014909452919093208054909116909217909155611ac5903390611ab66009600a613429565b611ac0908d613438565b61297f565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198530611b16306001600160a01b031660009081526003602052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611b7a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b9f9190613597565b505050601888905543601655426017558615611e2d576040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c58919061357a565b81600081518110611c6b57611c6b61332f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c9f57611c9f61332f565b6001600160a01b03909216602092830291909101909101528515611da45760005b86811015611da2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fb3bdb4147611d00612168565b858c8c87818110611d1357611d1361332f565b9050602002016020810190611d2891906130ed565b426040518663ffffffff1660e01b8152600401611d48949392919061361f565b60006040518083038185885af1158015611d66573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d8f9190810190613654565b5080611d9a8161344f565b915050611cc0565b505b60405163b6f9de9560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b6f9de95904790611df99060009086903390429060040161361f565b6000604051808303818588803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b5050505050505b505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b611e5f6128da565b6001600160a01b03821660009081526013602052604090205460ff16158015611ea557506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611f075760405162461bcd60e51b815260206004820152602d60248201527f43616e277420616c7465722074726164696e6720636f6e74726163747320696e60448201526c103a3434b99036b0b73732b91760991b6064820152608401610a60565b6001600160a01b0382166000818152600760209081526040808320805486151560ff199182168117909255601484528285208054821683179055600884529382902080549094168117909355519182527fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f079101610cad565b600043601854601654611f9291906132f3565b1115611fa7576001600b546109da91906132e0565b81611fca57600c54610100900460ff16611fc25760006109da565b6009546109da565b600c5462010000900460ff16611fe15760006109da565b5050600a5490565b611ff16128da565b6000546001600160a01b031633146120465760405162461bcd60e51b815260206004820152601860248201527710d85b1b195c881a5cc81b9bdd08185d5d1a1bdc9a5e995960421b6044820152606401610a60565b60006007600061205e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556008816120a06000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556014816120e26000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556004816121246000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205561151281612425565b600060165460000361217a5750600090565b6103e8600254612188610b74565b6121929190613438565b610bdd91906134cf565b6000546001600160a01b03163314806121dd5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61221a5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5cd95960921b6044820152606401610a60565b478061225c5760405162461bcd60e51b8152602060048201526011602482015270139bc8115512081d1bc8195e1d1c9858dd607a1b6044820152606401610a60565b604051600090339083908381818185875af1925050503d806000811461229e576040519150601f19603f3d011682016040523d82523d6000602084013e6122a3565b606091505b50509050806111f25760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a60565b6001600160a01b03831661235d5760405162461bcd60e51b815260206004820152602a60248201527f45524332303a20617070726f76652066726f6d207468652061646472657373286044820152693029206164647265737360b01b6064820152608401610a60565b6001600160a01b0382166123c45760405162461bcd60e51b815260206004820152602860248201527f45524332303a20617070726f766520746f207468652061646472657373283029604482015267206164647265737360c01b6064820152608401610a60565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61242d6128da565b6001600160a01b0381166124925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a60565b61151281612a34565b6001600160a01b0383166000908152600360205260408120548211156124d35760405162461bcd60e51b8152600401610a60906134f1565b600082116125235760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204e6f20746f6b656e73207472616e73666572726564000000006044820152606401610a60565b6001600160a01b0384166125875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a60565b6001600160a01b0383166125ad5760405162461bcd60e51b8152600401610a6090613537565b601f54600160a01b900460ff16156125d1576125ca84848461297f565b9050610b6d565b6001600160a01b03831660009081526013602052604090205460ff1615801561260557506001600160a01b03831661dead14155b15612634576001600160a01b03831660009081526008602052604090205460ff16612634576126348383612a84565b6001600160a01b03841660009081526013602052604090205460ff16158015612661575061266184611e38565b801561268e57506001600160a01b03841660009081526003602052604090205461268c9083906132e0565b155b156126a15761269e6001836132e0565b91505b6001600160a01b038416600090815260036020526040812080548492906126c99084906132e0565b90915550506001600160a01b03841660009081526013602052604090205460ff1661275f57601f546001600160a01b03858116600081815260036020526040908190205490516306c8d77160e41b815260048101929092526024820152911690636c8d771090604401600060405180830381600087803b15801561274c57600080fd5b505af192505050801561275d575060015b505b8161276933611e38565b8015612779575061277985611e38565b8015612789575061278984611e38565b1561280a57600c5460ff16806127d957506001600160a01b03851660009081526013602052604090205460ff16806127d957506001600160a01b03841660009081526013602052604090205460ff165b156127ec576127e9858585612b0c565b90505b6127f68585612d05565b1561280a57821561280a5761280a83612d93565b6001600160a01b03841661dead1461284f576001600160a01b038416600090815260036020526040812080548392906128449084906132f3565b909155506128679050565b806001600082825461286191906132e0565b90915550505b61deac196001600160a01b03851601612881576000612883565b835b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c791815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b03161580159061291757506000546001600160a01b031633148061291757503360009081526014602052604090205460ff165b61131f5760405162461bcd60e51b815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656044820152601960fa1b6064820152608401610a60565b6129756128da565b61131f6000612a34565b6001600160a01b0383166000908152600360205260408120805483919083906129a99084906132e0565b90915550506001600160a01b038316600090815260036020526040812080548492906129d69084906132f3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612a8c612168565b6001600160a01b038316600090815260036020526040902054612ab09083906132f3565b11156111f25760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610a60565b6001600160a01b038216600090815260136020526040812054819060ff1615612c3957600c5462010000900460ff16612b485782915050610b6d565b600d5415612c39576000612b5c858561109a565b600e546001600160a01b038816600090815260056020526040902054919250612b84916132f3565b421115612bb2576001600160a01b038616600090815260056020908152604080832042905560069091528120555b6001600160a01b03861660009081526006602052604081208054839290612bda9084906132f3565b9091555050600f546001600160a01b03871660009081526006602052604090205410612c3757600b546064600d54600a5487612c169190613438565b612c209190613438565b612c2a91906134cf565b612c3491906134cf565b91505b505b80600003612c8057600b546001600160a01b038516600090815260136020526040902054612c699060ff16611f7f565b612c739085613438565b612c7d91906134cf565b90505b8015612cfc573060009081526003602052604081208054839290612ca59084906132f3565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612cf481846132e0565b915050610b6d565b82915050610b6d565b6001600160a01b03821660009081526013602052604081205460ff16158015612d385750601f54600160a01b900460ff16155b8015612d4c575060195462010000900460ff165b8015612d7057506001600160a01b03821660009081526013602052604090205460ff165b8015610b6d575050601b5430600090815260036020526040902054101592915050565b601f805460ff60a01b1916600160a01b179055601a54601c5460009190606490612dbd9085613438565b612dc791906134cf565b612dd190846132e0565b10612dde57601a54612df8565b6064601c5483612dee9190613438565b612df891906134cf565b30600090815260036020526040902054909150811115612e245750306000908152600360205260409020545b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5957612e5961332f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efb919061357a565b81600181518110612f0e57612f0e61332f565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790612f73908590600090869030904290600401613712565b600060405180830381600087803b158015612f8d57600080fd5b505af1158015612fa1573d6000803e3d6000fd5b5050601f805460ff60a01b191690555050505050565b600060208083528351808285015260005b81811015612fe457858101830151858201604001528201612fc8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151257600080fd5b6000806040838503121561302d57600080fd5b823561303881613005565b946020939093013593505050565b60008060006060848603121561305b57600080fd5b833561306681613005565b9250602084013561307681613005565b929592945050506040919091013590565b8035801515811461309757600080fd5b919050565b600080604083850312156130af57600080fd5b82356130ba81613005565b91506130c860208401613087565b90509250929050565b600080604083850312156130e457600080fd5b6130ba83613087565b6000602082840312156130ff57600080fd5b8135610b6d81613005565b60006020828403121561311c57600080fd5b5035919050565b60008083601f84011261313557600080fd5b50813567ffffffffffffffff81111561314d57600080fd5b6020830191508360208260051b850101111561316857600080fd5b9250929050565b6000806000806040858703121561318557600080fd5b843567ffffffffffffffff8082111561319d57600080fd5b6131a988838901613123565b909650945060208701359150808211156131c257600080fd5b506131cf87828801613123565b95989497509550505050565b6000806000606084860312156131f057600080fd5b6131f984613087565b95602085013595506040909401359392505050565b6000806040838503121561322157600080fd5b823561322c81613005565b9150602083013561323c81613005565b809150509250929050565b60008060008060006080868803121561325f57600080fd5b853594506020860135935061327660408701613087565b9250606086013567ffffffffffffffff81111561329257600080fd5b61329e88828901613123565b969995985093965092949392505050565b6000602082840312156132c157600080fd5b610b6d82613087565b634e487b7160e01b600052601160045260246000fd5b818103818111156109da576109da6132ca565b808201808211156109da576109da6132ca565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600181815b80851115613380578160001904821115613366576133666132ca565b8085161561337357918102915b93841c939080029061334a565b509250929050565b600082613397575060016109da565b816133a4575060006109da565b81600181146133ba57600281146133c4576133e0565b60019150506109da565b60ff8411156133d5576133d56132ca565b50506001821b6109da565b5060208310610133831016604e8410600b8410161715613403575081810a6109da565b61340d8383613345565b8060001904821115613421576134216132ca565b029392505050565b6000610b6d60ff841683613388565b80820281158282048414176109da576109da6132ca565b600060018201613461576134616132ca565b5060010190565b80516001600160701b038116811461309757600080fd5b60008060006060848603121561349457600080fd5b61349d84613468565b92506134ab60208501613468565b9150604084015163ffffffff811681146134c457600080fd5b809150509250925092565b6000826134ec57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60006020828403121561358c57600080fd5b8151610b6d81613005565b6000806000606084860312156135ac57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156136145781516001600160a01b0316875295820195908201906001016135ef565b509495945050505050565b84815260806020820152600061363860808301866135db565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561366757600080fd5b825167ffffffffffffffff8082111561367f57600080fd5b818501915085601f83011261369357600080fd5b8151818111156136a5576136a56135c5565b8060051b604051601f19603f830116810181811085821117156136ca576136ca6135c5565b6040529182528482019250838101850191888311156136e857600080fd5b938501935b82851015613706578451845293850193928501926136ed565b98975050505050505050565b85815284602082015260a06040820152600061373160a08301866135db565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220bf228b54a3c955a9e40d994d471f271cbae2d1bea1174b2dc4a8bcc0eb6d755e64736f6c63430008110033000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f036000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f0360000000000000000000000001b4e4dcec0c2485cb456fee75727b930cbd415fe

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638124f7ac116101ab578063d962cf58116100f7578063f1f3bca311610095578063f887ea401161006f578063f887ea4014610955578063f9eeb65d14610989578063fabb0b4f1461099e578063fabb71d2146109b457600080fd5b8063f1f3bca3146108ff578063f2fde38b1461091f578063f8821a621461093f57600080fd5b8063dd70e973116100d1578063dd70e9731461088c578063e4c777451461089f578063e7c44c69146108bf578063e8f6ae29146108df57600080fd5b8063d962cf5814610810578063d977714214610830578063dd62ed3e1461084657600080fd5b8063a457c2d711610164578063c5363caa1161013e578063c5363caa14610792578063d0889358146107b1578063d7b96d4e146107d1578063d8c2515e146107f157600080fd5b8063a457c2d71461073c578063a9059cbb1461075c578063bf56b3711461077c57600080fd5b80638124f7ac1461069557806384824e68146106af578063893d20e8146106cf5780638da5cb5b146106cf57806395d89b41146106ed5780639e0649931461071c57600080fd5b8063565f55bf1161026a57806367243482116102235780636e951066116101fd5780636e9510661461061057806370a0823114610630578063715018a6146106665780637516baec1461067b57600080fd5b806367243482146105b05780636ad751ac146105d05780636ddd1713146105f057600080fd5b8063565f55bf146104f0578063571ac8b0146105245780635804f1e4146105445780635d0044ca1461055a578063656016cd1461057a578063658d4b7f1461059057600080fd5b8063264d26dd116102d757806339509351116102b15780633950935114610470578063492a937b1461049057806352ba4494146104b057806352d9df15146104d057600080fd5b8063264d26dd146104115780632b112e491461043f578063313ce5671461045457600080fd5b80630445b6671461032a57806306fdde0314610353578063095ea7b31461039557806318160ddd146103c557806322f0f2f9146103da57806323b872dd146103f157600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50610340601a5481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152601081526f2832b93832ba3ab0b61026b7ba34b7b760811b60208201525b60405161034a9190612fb7565b3480156103a157600080fd5b506103b56103b036600461301a565b6109c9565b604051901515815260200161034a565b3480156103d157600080fd5b50600154610340565b3480156103e657600080fd5b506103ef6109e0565b005b3480156103fd57600080fd5b506103b561040c366004613046565b610adf565b34801561041d57600080fd5b5061042761dead81565b6040516001600160a01b03909116815260200161034a565b34801561044b57600080fd5b50610340610b74565b34801561046057600080fd5b506040516009815260200161034a565b34801561047c57600080fd5b506103b561048b36600461301a565b610be2565b34801561049c57600080fd5b506103ef6104ab36600461309c565b610c1e565b3480156104bc57600080fd5b506103ef6104cb3660046130d1565b610cb9565b3480156104dc57600080fd5b50600c546103b59062010000900460ff1681565b3480156104fc57600080fd5b506104277f000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f03681565b34801561053057600080fd5b506103b561053f3660046130ed565b610d5a565b34801561055057600080fd5b5061034060175481565b34801561056657600080fd5b506103ef61057536600461310a565b610d68565b34801561058657600080fd5b50610340601c5481565b34801561059c57600080fd5b506103ef6105ab36600461309c565b610dfa565b3480156105bc57600080fd5b506103ef6105cb36600461316f565b610e80565b3480156105dc57600080fd5b506103406105eb36600461301a565b61109a565b3480156105fc57600080fd5b506019546103b59062010000900460ff1681565b34801561061c57600080fd5b506103ef61062b3660046130d1565b61114d565b34801561063c57600080fd5b5061034061064b3660046130ed565b6001600160a01b031660009081526003602052604090205490565b34801561067257600080fd5b506103ef6111f6565b34801561068757600080fd5b506019546103b59060ff1681565b3480156106a157600080fd5b50600c546103b59060ff1681565b3480156106bb57600080fd5b506103ef6106ca36600461301a565b611321565b3480156106db57600080fd5b506000546001600160a01b0316610427565b3480156106f957600080fd5b5060408051808201909152600681526526a7aa24a7a760d11b6020820152610388565b34801561072857600080fd5b506103ef61073736600461310a565b61141d565b34801561074857600080fd5b506103b561075736600461301a565b611515565b34801561076857600080fd5b506103b561077736600461301a565b6115b4565b34801561078857600080fd5b5061034060165481565b34801561079e57600080fd5b506019546103b590610100900460ff1681565b3480156107bd57600080fd5b506103ef6107cc3660046131db565b6115c1565b3480156107dd57600080fd5b50601e54610427906001600160a01b031681565b3480156107fd57600080fd5b50600c546103b590610100900460ff1681565b34801561081c57600080fd5b506103ef61082b36600461309c565b6116c0565b34801561083c57600080fd5b50610340601d5481565b34801561085257600080fd5b5061034061086136600461320e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103ef61089a366004613247565b611746565b3480156108ab57600080fd5b50601554610427906001600160a01b031681565b3480156108cb57600080fd5b506103b56108da3660046130ed565b611e38565b3480156108eb57600080fd5b506103ef6108fa36600461309c565b611e57565b34801561090b57600080fd5b5061034061091a3660046132af565b611f7f565b34801561092b57600080fd5b506103ef61093a3660046130ed565b611fe9565b34801561094b57600080fd5b50610340601b5481565b34801561096157600080fd5b506104277f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561099557600080fd5b50610340612168565b3480156109aa57600080fd5b5061034060185481565b3480156109c057600080fd5b506103ef61219c565b60006109d63384846122f4565b5060015b92915050565b601e546001600160a01b031615801590610a1d5750601e546001600160a01b0316331480610a1d57503360009081526014602052604090205460ff165b610a695760405162461bcd60e51b815260206004820152601860248201527710d85b1b195c881a5cc81b9bdd08185d5d1a1bdc9a5e995960421b60448201526064015b60405180910390fd5b42601d541115610ab35760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610a60565b601e54610ac8906001600160a01b0316612425565b601e80546001600160a01b03191690556000601d55565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b5f576001600160a01b0384166000908152600460209081526040808320338452909152902054610b3a9083906132e0565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610b6a84848461249b565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c549091610bd0916132f3565b600154610bdd91906132e0565b905090565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109d6918590610c199086906132f3565b6122f4565b610c266128da565b6001600160a01b038216610c4c5760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b0382166000908152601360205260409020805460ff1916821515179055816001600160a01b03167ffa4a2b2457d2065452473bed7d55c8fa2f65fc4a1eff1ebdaf14a1b7281e777382604051610cad911515815260200190565b60405180910390a25050565b610cc16128da565b81610cf9576000600d8190556040517f6ce8bc1f581238bf6ea922d2a50c56cfa490d487f1c432844c042b4092e7728d9190a1610d46565b61012c600d819055600e54600f5460408051938452602084019290925282820152517f358cc4358dd1c654cb626b1d9e98c300fb5b2c78e5eab83680a84f4b0e1c14c69181900360600190a15b6010805460ff191691151591909117905550565b60006109da826000196109c9565b610d706128da565b60018111610db85760405162461bcd60e51b815260206004820152601560248201527457616c6c6574206c696d69747320746f6f206c6f7760581b6044820152606401610a60565b60028190557fee4f0b388531b3b3cbe9a0fc02e17997304dcde94d38db4c65a1e896f7aca788610de6612168565b60405190815260200160405180910390a150565b610e026128da565b6001600160a01b038216610e285760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b038216600081815260076020908152604091829020805460ff191685151590811790915591519182527f5a8cf666a272afd6dec6788d33967c676fffa92e289eee1b38172982c4b4914d9101610cad565b610e886128da565b828114610ed75760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d61746368000000000000006044820152606401610a60565b6019805462ff000019811690915562010000900460ff1660005b848110156110525760136000878784818110610f0f57610f0f61332f565b9050602002016020810190610f2491906130ed565b6001600160a01b0316815260208101919091526040016000205460ff16158015610f7e57506000868683818110610f5d57610f5d61332f565b9050602002016020810190610f7291906130ed565b6001600160a01b031614155b610fe05760405162461bcd60e51b815260206004820152602d60248201527f43616e27742061697264726f7020746865206c697175696469747920706f6f6c60448201526c0206f722061646472657373203609c1b6064820152608401610a60565b61103f33878784818110610ff657610ff661332f565b905060200201602081019061100b91906130ed565b6110176009600a613429565b8787868181106110295761102961332f565b9050602002013561103a9190613438565b61249b565b508061104a8161344f565b915050610ef1565b506019805462ff00001916620100008315150217905560405133907faf1f3c8f96bb5b6a68b1ca0c51b6ba0250cf4a56f5d088071f5fcf710707727390600090a25050505050565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611101919061347f565b506010549193509150849060ff16611119578161111b565b825b6001600160701b031661112e91906132f3565b61113a856103e8613438565b61114491906134cf565b95945050505050565b6111556128da565b600c805462ffff001916610100841515810262ff00001916919091176201000084151502179182905560ff910416806111965750600c5462010000900460ff165b156111c8576040517f7ce1151ca50742011f04dfeb80a8ddaf4ae35e40d6da590297cdc3f588af037e90600090a15050565b6040517f36c13ba18a0a22fbc6fa29968c7ddbcabe3c8096339dc284da5e79ae81dcbb1390600090a15b5050565b6111fe6128da565b6000600760006112166000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556008816112586000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff199093169290921790915560148161129a6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556004816112dc6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205561131f61296d565b565b61132a33611e38565b156113685760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5cd95960921b6044820152606401610a60565b336000908152600360205260409020548111156113975760405162461bcd60e51b8152600401610a60906134f1565b600081116113e75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204e6f20746f6b656e73207472616e73666572726564000000006044820152606401610a60565b6001600160a01b03821661140d5760405162461bcd60e51b8152600401610a6090613537565b61141833838361297f565b505050565b6114256128da565b601e546001600160a01b03161561147e5760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610a60565b600081116114ce5760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610a60565b6114db8162093a80613438565b6114e590426132f3565b601d55600054601e80546001600160a01b0319166001600160a01b0390921691909117905561151261296d565b50565b3360009081526004602090815260408083206001600160a01b03861684529091528120548281101561159d5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201526a206164647265737328302960a81b6064820152608401610a60565b6115aa33858584036122f4565b5060019392505050565b6000610b6d33848461249b565b6115c96128da565b6000821180156115d95750600081115b6116315760405162461bcd60e51b815260206004820152602360248201527f44656e6f6d696e61746f7273206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608401610a60565b6019805462ff0000191662010000851515021790556001546116549082906134cf565b601b556001546116659083906134cf565b601a819055601b5460195460408051928352602083019390935260ff620100009091041615158183015290517faa199f5aab08ad4ddee0140c8e7d13a4bebb822550aeb3d16e5f7bc485fba0f99181900360600190a1505050565b6116c86128da565b6001600160a01b0382166116ee5760405162461bcd60e51b8152600401610a6090613306565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f4aed8b8a26c8d87da818b50361f1273864d5b7008289379caa0aa8b7be56a3669101610cad565b61174e6128da565b60165415801561175e5750600784105b61176757600080fd5b600034116117ac5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610a60565b600085116117f55760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610a60565b3460008461180457600061180f565b61180f6003836134cf565b905061181b81836132e0565b915060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a1919061357a565b905060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611927919061357a565b60405163e6a4390560e01b81526001600160a01b0380831660048301523060248301529192509083169063e6a4390590604401602060405180830381865afa158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b919061357a565b601580546001600160a01b0319166001600160a01b03929092169182179055611a51576040516364e329cb60e11b81526001600160a01b03828116600483015230602483015283169063c9c65396906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a30919061357a565b601580546001600160a01b0319166001600160a01b03929092169190911790555b6015546001600160a01b031660009081526013602090815260408083208054600160ff199182168117909255308086526007855283862080548316841790556014909452919093208054909116909217909155611ac5903390611ab66009600a613429565b611ac0908d613438565b61297f565b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198530611b16306001600160a01b031660009081526003602052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611b7a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b9f9190613597565b505050601888905543601655426017558615611e2d576040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c58919061357a565b81600081518110611c6b57611c6b61332f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c9f57611c9f61332f565b6001600160a01b03909216602092830291909101909101528515611da45760005b86811015611da2577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663fb3bdb4147611d00612168565b858c8c87818110611d1357611d1361332f565b9050602002016020810190611d2891906130ed565b426040518663ffffffff1660e01b8152600401611d48949392919061361f565b60006040518083038185885af1158015611d66573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d8f9190810190613654565b5080611d9a8161344f565b915050611cc0565b505b60405163b6f9de9560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063b6f9de95904790611df99060009086903390429060040161361f565b6000604051808303818588803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b5050505050505b505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b611e5f6128da565b6001600160a01b03821660009081526013602052604090205460ff16158015611ea557506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611f075760405162461bcd60e51b815260206004820152602d60248201527f43616e277420616c7465722074726164696e6720636f6e74726163747320696e60448201526c103a3434b99036b0b73732b91760991b6064820152608401610a60565b6001600160a01b0382166000818152600760209081526040808320805486151560ff199182168117909255601484528285208054821683179055600884529382902080549094168117909355519182527fc63b2cd57d159035214234fce2c910c2e679c9647b0afc09960d6e8cb1574f079101610cad565b600043601854601654611f9291906132f3565b1115611fa7576001600b546109da91906132e0565b81611fca57600c54610100900460ff16611fc25760006109da565b6009546109da565b600c5462010000900460ff16611fe15760006109da565b5050600a5490565b611ff16128da565b6000546001600160a01b031633146120465760405162461bcd60e51b815260206004820152601860248201527710d85b1b195c881a5cc81b9bdd08185d5d1a1bdc9a5e995960421b6044820152606401610a60565b60006007600061205e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556008816120a06000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556014816120e26000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805492151560ff19909316929092179091556004816121246000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205561151281612425565b600060165460000361217a5750600090565b6103e8600254612188610b74565b6121929190613438565b610bdd91906134cf565b6000546001600160a01b03163314806121dd5750336001600160a01b037f000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f03616145b61221a5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5cd95960921b6044820152606401610a60565b478061225c5760405162461bcd60e51b8152602060048201526011602482015270139bc8115512081d1bc8195e1d1c9858dd607a1b6044820152606401610a60565b604051600090339083908381818185875af1925050503d806000811461229e576040519150601f19603f3d011682016040523d82523d6000602084013e6122a3565b606091505b50509050806111f25760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a60565b6001600160a01b03831661235d5760405162461bcd60e51b815260206004820152602a60248201527f45524332303a20617070726f76652066726f6d207468652061646472657373286044820152693029206164647265737360b01b6064820152608401610a60565b6001600160a01b0382166123c45760405162461bcd60e51b815260206004820152602860248201527f45524332303a20617070726f766520746f207468652061646472657373283029604482015267206164647265737360c01b6064820152608401610a60565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61242d6128da565b6001600160a01b0381166124925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a60565b61151281612a34565b6001600160a01b0383166000908152600360205260408120548211156124d35760405162461bcd60e51b8152600401610a60906134f1565b600082116125235760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204e6f20746f6b656e73207472616e73666572726564000000006044820152606401610a60565b6001600160a01b0384166125875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a60565b6001600160a01b0383166125ad5760405162461bcd60e51b8152600401610a6090613537565b601f54600160a01b900460ff16156125d1576125ca84848461297f565b9050610b6d565b6001600160a01b03831660009081526013602052604090205460ff1615801561260557506001600160a01b03831661dead14155b15612634576001600160a01b03831660009081526008602052604090205460ff16612634576126348383612a84565b6001600160a01b03841660009081526013602052604090205460ff16158015612661575061266184611e38565b801561268e57506001600160a01b03841660009081526003602052604090205461268c9083906132e0565b155b156126a15761269e6001836132e0565b91505b6001600160a01b038416600090815260036020526040812080548492906126c99084906132e0565b90915550506001600160a01b03841660009081526013602052604090205460ff1661275f57601f546001600160a01b03858116600081815260036020526040908190205490516306c8d77160e41b815260048101929092526024820152911690636c8d771090604401600060405180830381600087803b15801561274c57600080fd5b505af192505050801561275d575060015b505b8161276933611e38565b8015612779575061277985611e38565b8015612789575061278984611e38565b1561280a57600c5460ff16806127d957506001600160a01b03851660009081526013602052604090205460ff16806127d957506001600160a01b03841660009081526013602052604090205460ff165b156127ec576127e9858585612b0c565b90505b6127f68585612d05565b1561280a57821561280a5761280a83612d93565b6001600160a01b03841661dead1461284f576001600160a01b038416600090815260036020526040812080548392906128449084906132f3565b909155506128679050565b806001600082825461286191906132e0565b90915550505b61deac196001600160a01b03851601612881576000612883565b835b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c791815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b03161580159061291757506000546001600160a01b031633148061291757503360009081526014602052604090205460ff165b61131f5760405162461bcd60e51b815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656044820152601960fa1b6064820152608401610a60565b6129756128da565b61131f6000612a34565b6001600160a01b0383166000908152600360205260408120805483919083906129a99084906132e0565b90915550506001600160a01b038316600090815260036020526040812080548492906129d69084906132f3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612a8c612168565b6001600160a01b038316600090815260036020526040902054612ab09083906132f3565b11156111f25760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610a60565b6001600160a01b038216600090815260136020526040812054819060ff1615612c3957600c5462010000900460ff16612b485782915050610b6d565b600d5415612c39576000612b5c858561109a565b600e546001600160a01b038816600090815260056020526040902054919250612b84916132f3565b421115612bb2576001600160a01b038616600090815260056020908152604080832042905560069091528120555b6001600160a01b03861660009081526006602052604081208054839290612bda9084906132f3565b9091555050600f546001600160a01b03871660009081526006602052604090205410612c3757600b546064600d54600a5487612c169190613438565b612c209190613438565b612c2a91906134cf565b612c3491906134cf565b91505b505b80600003612c8057600b546001600160a01b038516600090815260136020526040902054612c699060ff16611f7f565b612c739085613438565b612c7d91906134cf565b90505b8015612cfc573060009081526003602052604081208054839290612ca59084906132f3565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612cf481846132e0565b915050610b6d565b82915050610b6d565b6001600160a01b03821660009081526013602052604081205460ff16158015612d385750601f54600160a01b900460ff16155b8015612d4c575060195462010000900460ff165b8015612d7057506001600160a01b03821660009081526013602052604090205460ff165b8015610b6d575050601b5430600090815260036020526040902054101592915050565b601f805460ff60a01b1916600160a01b179055601a54601c5460009190606490612dbd9085613438565b612dc791906134cf565b612dd190846132e0565b10612dde57601a54612df8565b6064601c5483612dee9190613438565b612df891906134cf565b30600090815260036020526040902054909150811115612e245750306000908152600360205260409020545b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5957612e5961332f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efb919061357a565b81600181518110612f0e57612f0e61332f565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790612f73908590600090869030904290600401613712565b600060405180830381600087803b158015612f8d57600080fd5b505af1158015612fa1573d6000803e3d6000fd5b5050601f805460ff60a01b191690555050505050565b600060208083528351808285015260005b81811015612fe457858101830151858201604001528201612fc8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151257600080fd5b6000806040838503121561302d57600080fd5b823561303881613005565b946020939093013593505050565b60008060006060848603121561305b57600080fd5b833561306681613005565b9250602084013561307681613005565b929592945050506040919091013590565b8035801515811461309757600080fd5b919050565b600080604083850312156130af57600080fd5b82356130ba81613005565b91506130c860208401613087565b90509250929050565b600080604083850312156130e457600080fd5b6130ba83613087565b6000602082840312156130ff57600080fd5b8135610b6d81613005565b60006020828403121561311c57600080fd5b5035919050565b60008083601f84011261313557600080fd5b50813567ffffffffffffffff81111561314d57600080fd5b6020830191508360208260051b850101111561316857600080fd5b9250929050565b6000806000806040858703121561318557600080fd5b843567ffffffffffffffff8082111561319d57600080fd5b6131a988838901613123565b909650945060208701359150808211156131c257600080fd5b506131cf87828801613123565b95989497509550505050565b6000806000606084860312156131f057600080fd5b6131f984613087565b95602085013595506040909401359392505050565b6000806040838503121561322157600080fd5b823561322c81613005565b9150602083013561323c81613005565b809150509250929050565b60008060008060006080868803121561325f57600080fd5b853594506020860135935061327660408701613087565b9250606086013567ffffffffffffffff81111561329257600080fd5b61329e88828901613123565b969995985093965092949392505050565b6000602082840312156132c157600080fd5b610b6d82613087565b634e487b7160e01b600052601160045260246000fd5b818103818111156109da576109da6132ca565b808201808211156109da576109da6132ca565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600181815b80851115613380578160001904821115613366576133666132ca565b8085161561337357918102915b93841c939080029061334a565b509250929050565b600082613397575060016109da565b816133a4575060006109da565b81600181146133ba57600281146133c4576133e0565b60019150506109da565b60ff8411156133d5576133d56132ca565b50506001821b6109da565b5060208310610133831016604e8410600b8410161715613403575081810a6109da565b61340d8383613345565b8060001904821115613421576134216132ca565b029392505050565b6000610b6d60ff841683613388565b80820281158282048414176109da576109da6132ca565b600060018201613461576134616132ca565b5060010190565b80516001600160701b038116811461309757600080fd5b60008060006060848603121561349457600080fd5b61349d84613468565b92506134ab60208501613468565b9150604084015163ffffffff811681146134c457600080fd5b809150509250925092565b6000826134ec57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60006020828403121561358c57600080fd5b8151610b6d81613005565b6000806000606084860312156135ac57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156136145781516001600160a01b0316875295820195908201906001016135ef565b509495945050505050565b84815260806020820152600061363860808301866135db565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561366757600080fd5b825167ffffffffffffffff8082111561367f57600080fd5b818501915085601f83011261369357600080fd5b8151818111156136a5576136a56135c5565b8060051b604051601f19603f830116810181811085821117156136ca576136ca6135c5565b6040529182528482019250838101850191888311156136e857600080fd5b938501935b82851015613706578451845293850193928501926136ed565b98975050505050505050565b85815284602082015260a06040820152600061373160a08301866135db565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220bf228b54a3c955a9e40d994d471f271cbae2d1bea1174b2dc4a8bcc0eb6d755e64736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f036000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f0360000000000000000000000001b4e4dcec0c2485cb456fee75727b930cbd415fe

-----Decoded View---------------
Arg [0] : _liquidityProvider (address): 0xdc660770C739E6563BD294620f2EbbCaA728f036
Arg [1] : _generalWallet (address): 0xdc660770C739E6563BD294620f2EbbCaA728f036
Arg [2] : _ref (address): 0x1B4E4DCEc0c2485CB456Fee75727b930CBd415fe

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f036
Arg [1] : 000000000000000000000000dc660770c739e6563bd294620f2ebbcaa728f036
Arg [2] : 0000000000000000000000001b4e4dcec0c2485cb456fee75727b930cbd415fe


Deployed Bytecode Sourcemap

7801:18755:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9555:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9555:49:0;;;;;;;;10945:71;;;;;;;;;;-1:-1:-1;11008:5:0;;;;;;;;;;;;-1:-1:-1;;;11008:5:0;;;;10945:71;;;;;;;:::i;11351:159::-;;;;;;;;;;-1:-1:-1;11351:159:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;11351:159:0;1205:187:1;10693:88:0;;;;;;;;;;-1:-1:-1;10766:12:0;;10693:88;;19409:340;;;;;;;;;;;;;:::i;:::-;;12824:341;;;;;;;;;;-1:-1:-1;12824:341:0;;;;;:::i;:::-;;:::i;8864:48::-;;;;;;;;;;;;7914:42;8864:48;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;8864:48:0;1858:203:1;18551:144:0;;;;;;;;;;;;;:::i;10787:71::-;;;;;;;;;;-1:-1:-1;10787:71:0;;8082:1;2208:36:1;;2196:2;2181:18;10787:71:0;2066:184:1;11518:213:0;;;;;;;;;;-1:-1:-1;11518:213:0;;;;;:::i;:::-;;:::i;24940:294::-;;;;;;;;;;-1:-1:-1;24940:294:0;;;;;:::i;:::-;;:::i;21011:369::-;;;;;;;;;;-1:-1:-1;21011:369:0;;;;;:::i;:::-;;:::i;8672:34::-;;;;;;;;;;-1:-1:-1;8672:34:0;;;;;;;;;;;8919:48;;;;;;;;;;;;;;;12530:122;;;;;;;;;;-1:-1:-1;12530:122:0;;;;;:::i;:::-;;:::i;9358:27::-;;;;;;;;;;;;;;;;23332:219;;;;;;;;;;-1:-1:-1;23332:219:0;;;;;:::i;:::-;;:::i;9682:34::-;;;;;;;;;;;;;;;;23736:222;;;;;;;;;;-1:-1:-1;23736:222:0;;;;;:::i;:::-;;:::i;25239:717::-;;;;;;;;;;-1:-1:-1;25239:717:0;;;;;:::i;:::-;;:::i;16069:261::-;;;;;;;;;;-1:-1:-1;16069:261:0;;;;;:::i;:::-;;:::i;9518:30::-;;;;;;;;;;-1:-1:-1;9518:30:0;;;;;;;;;;;24202:292;;;;;;;;;;-1:-1:-1;24202:292:0;;;;;:::i;:::-;;:::i;11099:105::-;;;;;;;;;;-1:-1:-1;11099:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11183:18:0;11165:7;11183:18;;;:9;:18;;;;;;;11099:105;19757:283;;;;;;;;;;;;;:::i;9427:37::-;;;;;;;;;;-1:-1:-1;9427:37:0;;;;;;;;8595:30;;;;;;;;;;-1:-1:-1;8595:30:0;;;;;;;;14769:431;;;;;;;;;;-1:-1:-1;14769:431:0;;;;;:::i;:::-;;:::i;11022:71::-;;;;;;;;;;-1:-1:-1;11065:7:0;7026:6;-1:-1:-1;;;;;7026:6:0;11022:71;18551:144;10864:75;;;;;;;;;;-1:-1:-1;10929:7:0;;;;;;;;;;;;-1:-1:-1;;;10929:7:0;;;;10864:75;;19089:312;;;;;;;;;;-1:-1:-1;19089:312:0;;;;;:::i;:::-;;:::i;11739:417::-;;;;;;;;;;-1:-1:-1;11739:417:0;;;;;:::i;:::-;;:::i;12660:156::-;;;;;;;;;;-1:-1:-1;12660:156:0;;;;;:::i;:::-;;:::i;9326:25::-;;;;;;;;;;;;;;;;9471:38;;;;;;;;;;-1:-1:-1;9471:38:0;;;;;;;;;;;24502:430;;;;;;;;;;-1:-1:-1;24502:430:0;;;;;:::i;:::-;;:::i;9756:21::-;;;;;;;;;;-1:-1:-1;9756:21:0;;;;-1:-1:-1;;;;;9756:21:0;;;8632:33;;;;;;;;;;-1:-1:-1;8632:33:0;;;;;;;;;;;23966:228;;;;;;;;;;-1:-1:-1;23966:228:0;;;;;:::i;:::-;;:::i;9725:24::-;;;;;;;;;;;;;;;;11210:133;;;;;;;;;;-1:-1:-1;11210:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11312:19:0;;;11294:7;11312:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11210:133;21388:1932;;;;;;:::i;:::-;;:::i;9291:26::-;;;;;;;;;;-1:-1:-1;9291:26:0;;;;-1:-1:-1;;;;;9291:26:0;;;15682:112;;;;;;;;;;-1:-1:-1;15682:112:0;;;;;:::i;:::-;;:::i;20265:394::-;;;;;;;;;;-1:-1:-1;20265:394:0;;;;;:::i;:::-;;:::i;15802:259::-;;;;;;;;;;-1:-1:-1;15802:259:0;;;;;:::i;:::-;;:::i;18703:378::-;;;;;;;;;;-1:-1:-1;18703:378:0;;;;;:::i;:::-;;:::i;9618:49::-;;;;;;;;;;;;;;;;9060:34;;;;;;;;;;;;;;;23559:169;;;;;;;;;;;;;:::i;9392:25::-;;;;;;;;;;;;;;;;20667:336;;;;;;;;;;;;;:::i;11351:159::-;11426:4;11443:37;11452:10;11464:7;11473:6;11443:8;:37::i;:::-;-1:-1:-1;11498:4:0;11351:159;;;;;:::o;19409:340::-;19463:6;;-1:-1:-1;;;;;19463:6:0;:20;;;;:80;;-1:-1:-1;19502:6:0;;-1:-1:-1;;;;;19502:6:0;19488:10;:20;;:54;;-1:-1:-1;19531:10:0;19512:30;;;;:18;:30;;;;;;;;19488:54;19455:117;;;;-1:-1:-1;;;19455:117:0;;6778:2:1;19455:117:0;;;6760:21:1;6817:2;6797:18;;;6790:30;-1:-1:-1;;;6836:18:1;;;6829:54;6900:18;;19455:117:0;;;;;;;;;19604:15;19591:9;;:28;;19583:62;;;;-1:-1:-1;;;19583:62:0;;7131:2:1;19583:62:0;;;7113:21:1;7170:2;7150:18;;;7143:30;-1:-1:-1;;;7189:18:1;;;7182:51;7250:18;;19583:62:0;6929:345:1;19583:62:0;19680:6;;19656:31;;-1:-1:-1;;;;;19680:6:0;19656:23;:31::i;:::-;19698:6;:19;;-1:-1:-1;;;;;;19698:19:0;;;19715:1;19728:9;:13;19409:340::o;12824:341::-;-1:-1:-1;;;;;12944:19:0;;12924:4;12944:19;;;:11;:19;;;;;;;;12964:10;12944:31;;;;;;;;-1:-1:-1;;12944:52:0;12941:157;;-1:-1:-1;;;;;13046:19:0;;;;;;:11;:19;;;;;;;;13066:10;13046:31;;;;;;;;:40;;13080:6;;13046:40;:::i;:::-;-1:-1:-1;;;;;13012:19:0;;;;;;:11;:19;;;;;;;;13032:10;13012:31;;;;;;;:74;12941:157;13117:40;13131:6;13139:9;13150:6;13117:13;:40::i;:::-;13110:47;;12824:341;;;;;;:::o;18551:144::-;11183:9;:18;;;;7914:42;18604:7;11183:18;;;;;18604:7;;18647:39;;;:::i;:::-;18631:12;;:56;;;;:::i;:::-;18624:63;;18551:144;:::o;11518:213::-;11634:10;11608:4;11655:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11655:32:0;;;;;;;;;;11608:4;;11625:76;;11646:7;;11655:45;;11690:10;;11655:45;:::i;:::-;11625:8;:76::i;24940:294::-;6912:13;:11;:13::i;:::-;-1:-1:-1;;;;;25034:19:0;::::1;25026:47;;;;-1:-1:-1::0;;;25026:47:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25084:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:32;;-1:-1:-1;;25084:32:0::1;::::0;::::1;;;::::0;;25210:5:::1;-1:-1:-1::0;;;;;25193:33:0::1;;25217:8;25193:33;;;;1370:14:1::0;1363:22;1345:41;;1333:2;1318:18;;1205:187;25193:33:0::1;;;;;;;;24940:294:::0;;:::o;21011:369::-;6912:13;:11;:13::i;:::-;21103:8:::1;21099:233;;21142:1;21128:11;:15:::0;;;21163:21:::1;::::0;::::1;::::0;21142:1;21163:21:::1;21099:233;;;21231:3;21217:11;:17:::0;;;21286:14:::1;::::0;21302:17:::1;::::0;21254:66:::1;::::0;;8220:25:1;;;8276:2;8261:18;;8254:34;;;;8304:18;;;8297:34;21254:66:0;::::1;::::0;;;;8208:2:1;21254:66:0;;::::1;21099:233;21342:16;:28:::0;;-1:-1:-1;;21342:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;21011:369:0:o;12530:122::-;12585:4;12609:35;12617:7;-1:-1:-1;;12609:7:0;:35::i;23332:219::-;6912:13;:11;:13::i;:::-;23429:1:::1;23415:11;:15;23407:49;;;::::0;-1:-1:-1;;;23407:49:0;;8544:2:1;23407:49:0::1;::::0;::::1;8526:21:1::0;8583:2;8563:18;;;8556:30;-1:-1:-1;;;8602:18:1;;;8595:51;8663:18;;23407:49:0::1;8342:345:1::0;23407:49:0::1;23467:14;:28:::0;;;23511:32:::1;23524:18;:16;:18::i;:::-;23511:32;::::0;160:25:1;;;148:2;133:18;23511:32:0::1;;;;;;;23332:219:::0;:::o;23736:222::-;6912:13;:11;:13::i;:::-;-1:-1:-1;;;;;23827:20:0;::::1;23819:48;;;;-1:-1:-1::0;;;23819:48:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23878:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;23878:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23922;;1345:41:1;;;23922:28:0::1;::::0;1318:18:1;23922:28:0::1;1205:187:1::0;25239:717:0;6912:13;:11;:13::i;:::-;25358:35;;::::1;25350:73;;;::::0;-1:-1:-1;;;25350:73:0;;8894:2:1;25350:73:0::1;::::0;::::1;8876:21:1::0;8933:2;8913:18;;;8906:30;8972:27;8952:18;;;8945:55;9017:18;;25350:73:0::1;8692:349:1::0;25350:73:0::1;25454:11;::::0;;-1:-1:-1;;25476:19:0;::::1;::::0;;;25454:11;;::::1;;;-1:-1:-1::0;25592:281:0::1;25612:21:::0;;::::1;25592:281;;;25664:14;:29;25679:10;;25690:1;25679:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25664:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25664:29:0;;::::1;;25663:30;:61:::0;::::1;;;-1:-1:-1::0;25722:1:0::1;25697:10:::0;;25708:1;25697:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25697:27:0::1;;;25663:61;25655:119;;;::::0;-1:-1:-1;;;25655:119:0;;9380:2:1;25655:119:0::1;::::0;::::1;9362:21:1::0;9419:2;9399:18;;;9392:30;9458:34;9438:18;;;9431:62;-1:-1:-1;;;9509:18:1;;;9502:43;9562:19;;25655:119:0::1;9178:409:1::0;25655:119:0::1;25789:72;25803:10;25815;;25826:1;25815:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25844:15;8082:1;25844:2;:15;:::i;:::-;25830:7;;25838:1;25830:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;25789:13;:72::i;:::-;-1:-1:-1::0;25635:3:0;::::1;::::0;::::1;:::i;:::-;;;;25592:281;;;-1:-1:-1::0;25883:11:0::1;:26:::0;;-1:-1:-1;;25883:26:0::1;::::0;;::::1;;;;::::0;;25925:23:::1;::::0;25937:10:::1;::::0;25925:23:::1;::::0;-1:-1:-1;;25925:23:0::1;25339:617;25239:717:::0;;;;:::o;16069:261::-;16149:7;16170:16;16188;16218:4;-1:-1:-1;;;;;16209:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16273:16:0;;16169:68;;-1:-1:-1;16169:68:0;-1:-1:-1;16315:6:0;;16273:16;;:38;;16303:8;16273:38;;;16292:8;16273:38;-1:-1:-1;;;;;16272:49:0;;;;;:::i;:::-;16255:13;:6;16264:4;16255:13;:::i;:::-;:67;;;;:::i;:::-;16248:74;16069:261;-1:-1:-1;;;;;16069:261:0:o;24202:292::-;6912:13;:11;:13::i;:::-;24289:14:::1;:28:::0;;-1:-1:-1;;24328:30:0;24289:28:::1;::::0;::::1;;::::0;::::1;-1:-1:-1::0;;24328:30:0;;;;;;;::::1;;;;::::0;;;;24289:28:::1;24372:14:::0;::::1;;::::0;:33:::1;;-1:-1:-1::0;24390:15:0::1;::::0;;;::::1;;;24372:33;24369:117;;;24425:13;::::0;::::1;::::0;;;::::1;24202:292:::0;;:::o;24369:117::-:1;24472:14;::::0;::::1;::::0;;;::::1;24369:117;24202:292:::0;;:::o;19757:283::-;6912:13;:11;:13::i;:::-;19854:5:::1;19831:11;:20;19843:7;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;19843:7:::1;-1:-1:-1::0;;;;;19831:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19831:20:0;;;:28;;;::::1;;-1:-1:-1::0;;19831:28:0;;::::1;::::0;;;::::1;::::0;;;19870:13:::1;-1:-1:-1::0;19884:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;19884:7:::1;-1:-1:-1::0;;;;;19870:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19870:22:0;;;:30;;;::::1;;-1:-1:-1::0;;19870:30:0;;::::1;::::0;;;::::1;::::0;;;19911:18:::1;-1:-1:-1::0;19930:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;19930:7:::1;-1:-1:-1::0;;;;;19911:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19911:27:0;;;:35;;;::::1;;-1:-1:-1::0;;19911:35:0;;::::1;::::0;;;::::1;::::0;;;19957:11:::1;-1:-1:-1::0;19969:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;19969:7:::1;-1:-1:-1::0;;;;;19957:20:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;19957:20:0;;;9140:42:::1;19957:35:::0;;;;;;;:39;20007:25:::1;:23;:25::i;:::-;19757:283::o:0;14769:431::-;14855:25;14869:10;14855:13;:25::i;:::-;14854:26;14846:53;;;;-1:-1:-1;;;14846:53:0;;12360:2:1;14846:53:0;;;12342:21:1;12399:2;12379:18;;;12372:30;-1:-1:-1;;;12418:18:1;;;12411:44;12472:18;;14846:53:0;12158:338:1;14846:53:0;14928:10;14918:21;;;;:9;:21;;;;;;:31;-1:-1:-1;14918:31:0;14910:82;;;;-1:-1:-1;;;14910:82:0;;;;;;;:::i;:::-;15020:1;15011:6;:10;15003:51;;;;-1:-1:-1;;;15003:51:0;;13110:2:1;15003:51:0;;;13092:21:1;13149:2;13129:18;;;13122:30;13188;13168:18;;;13161:58;13236:18;;15003:51:0;12908:352:1;15003:51:0;-1:-1:-1;;;;;15073:23:0;;15065:71;;;;-1:-1:-1;;;15065:71:0;;;;;;;:::i;:::-;15147:45;15162:10;15174:9;15185:6;15147:14;:45::i;:::-;;14769:431;;:::o;19089:312::-;6912:13;:11;:13::i;:::-;19165:6:::1;::::0;-1:-1:-1;;;;;19165:6:0::1;:20:::0;19157:56:::1;;;::::0;-1:-1:-1;;;19157:56:0;;13871:2:1;19157:56:0::1;::::0;::::1;13853:21:1::0;13910:2;13890:18;;;13883:30;13949:25;13929:18;;;13922:53;13992:18;;19157:56:0::1;13669:347:1::0;19157:56:0::1;19241:1;19232:6;:10;19224:47;;;::::0;-1:-1:-1;;;19224:47:0;;14223:2:1;19224:47:0::1;::::0;::::1;14205:21:1::0;14262:2;14242:18;;;14235:30;14301:26;14281:18;;;14274:54;14345:18;;19224:47:0::1;14021:348:1::0;19224:47:0::1;19313:16;:6:::0;19322:7:::1;19313:16;:::i;:::-;19294:36;::::0;:15:::1;:36;:::i;:::-;19282:9;:48:::0;6999:7;7026:6;19341::::1;:16:::0;;-1:-1:-1;;;;;;19341:16:0::1;-1:-1:-1::0;;;;;7026:6:0;;;19341:16;;;::::1;::::0;;19368:25:::1;:23;:25::i;:::-;19089:312:::0;:::o;11739:417::-;11890:10;11834:4;11878:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11878:32:0;;;;;;;;;;11929:35;;;;11921:91;;;;-1:-1:-1;;;11921:91:0;;14576:2:1;11921:91:0;;;14558:21:1;14615:2;14595:18;;;14588:30;14654:34;14634:18;;;14627:62;-1:-1:-1;;;14705:18:1;;;14698:41;14756:19;;11921:91:0;14374:407:1;11921:91:0;12048:65;12057:10;12069:7;12097:15;12078:16;:34;12048:8;:65::i;:::-;-1:-1:-1;12144:4:0;;11739:417;-1:-1:-1;;;11739:417:0:o;12660:156::-;12740:4;12764:44;12778:10;12790:9;12801:6;12764:13;:44::i;24502:430::-;6912:13;:11;:13::i;:::-;24646:1:::1;24631:12;:16;:39;;;;;24669:1;24651:15;:19;24631:39;24623:87;;;::::0;-1:-1:-1;;;24623:87:0;;14988:2:1;24623:87:0::1;::::0;::::1;14970:21:1::0;15027:2;15007:18;;;15000:30;15066:34;15046:18;;;15039:62;-1:-1:-1;;;15117:18:1;;;15110:33;15160:19;;24623:87:0::1;14786:399:1::0;24623:87:0::1;24721:11;:22:::0;;-1:-1:-1;;24721:22:0::1;::::0;;::::1;;;;::::0;;-1:-1:-1;24768:12:0;:30:::1;::::0;24783:15;;24768:30:::1;:::i;:::-;24754:11;:44:::0;24825:12:::1;::::0;:27:::1;::::0;24840:12;;24825:27:::1;:::i;:::-;24809:13;:43:::0;;;24884:11:::1;::::0;24912::::1;::::0;24868:56:::1;::::0;;15386:25:1;;;15442:2;15427:18;;15420:34;;;;24912:11:0::1;::::0;;;::::1;;15497:14:1::0;15490:22;15470:18;;;15463:50;24868:56:0;;::::1;::::0;;;;15374:2:1;24868:56:0;;::::1;24502:430:::0;;;:::o;23966:228::-;6912:13;:11;:13::i;:::-;-1:-1:-1;;;;;24059:20:0;::::1;24051:48;;;;-1:-1:-1::0;;;24051:48:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24110:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;;:30;;-1:-1:-1;;24110:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24156;;1345:41:1;;;24156:30:0::1;::::0;1318:18:1;24156:30:0::1;1205:187:1::0;21388:1932:0;6912:13;:11;:13::i;:::-;21531:10:::1;::::0;:15;:34;::::1;;;;21564:1;21550:11;:15;21531:34;21523:43;;;::::0;::::1;;21597:1;21585:9;:13;21577:44;;;::::0;-1:-1:-1;;;21577:44:0;;15726:2:1;21577:44:0::1;::::0;::::1;15708:21:1::0;15765:2;15745:18;;;15738:30;-1:-1:-1;;;15784:18:1;;;15777:48;15842:18;;21577:44:0::1;15524:342:1::0;21577:44:0::1;21649:1;21640:6;:10;21632:45;;;::::0;-1:-1:-1;;;21632:45:0;;16073:2:1;21632:45:0::1;::::0;::::1;16055:21:1::0;16112:2;16092:18;;;16085:30;-1:-1:-1;;;16131:18:1;;;16124:52;16193:18;;21632:45:0::1;15871:346:1::0;21632:45:0::1;21703:9;21688:12;21750:8:::0;:23:::1;;21772:1;21750:23;;;21761:8;21768:1;21761:4:::0;:8:::1;:::i;:::-;21723:51:::0;-1:-1:-1;21785:23:0::1;21723:51:::0;21785:23;::::1;:::i;:::-;;;21821:19;21855:6;-1:-1:-1::0;;;;;21855:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21821:51;;21883:11;21897:6;-1:-1:-1::0;;;;;21897:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21937:35;::::0;-1:-1:-1;;;21937:35:0;;-1:-1:-1;;;;;16708:15:1;;;21937:35:0::1;::::0;::::1;16690:34:1::0;21966:4:0::1;16740:18:1::0;;;16733:43;21883:27:0;;-1:-1:-1;21937:15:0;;::::1;::::0;::::1;::::0;16625:18:1;;21937:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21923:11;:49:::0;;-1:-1:-1;;;;;;21923:49:0::1;-1:-1:-1::0;;;;;21923:49:0;;;::::1;::::0;;::::1;::::0;;21983:95:::1;;22040:38;::::0;-1:-1:-1;;;22040:38:0;;-1:-1:-1;;;;;16708:15:1;;;22040:38:0::1;::::0;::::1;16690:34:1::0;22072:4:0::1;16740:18:1::0;;;16733:43;22040:18:0;::::1;::::0;::::1;::::0;16625::1;;22040:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22026:11;:52:::0;;-1:-1:-1;;;;;;22026:52:0::1;-1:-1:-1::0;;;;;22026:52:0;;;::::1;::::0;;;::::1;::::0;;21983:95:::1;22106:11;::::0;-1:-1:-1;;;;;22106:11:0::1;22091:27;::::0;;;:14:::1;:27;::::0;;;;;;;:34;;22121:4:::1;-1:-1:-1::0;;22091:34:0;;::::1;::::0;::::1;::::0;;;22156:4:::1;22136:26:::0;;;:11:::1;:26:::0;;;;;:33;;;::::1;::::0;::::1;::::0;;22180:18:::1;:33:::0;;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;;22233:69:::1;::::0;22248:10:::1;::::0;22285:15:::1;8082:1;22285:2;:15;:::i;:::-;22275:26;::::0;:6;:26:::1;:::i;:::-;22233:14;:69::i;:::-;;22315:6;-1:-1:-1::0;;;;;22315:22:0::1;;22345:4;22359;22365:24;22383:4;-1:-1:-1::0;;;;;11183:18:0;11165:7;11183:18;;;:9;:18;;;;;;;11099:105;22365:24:::1;22315:106;::::0;-1:-1:-1;;;;;;22315:106:0::1;::::0;;;;;;-1:-1:-1;;;;;17146:15:1;;;22315:106:0::1;::::0;::::1;17128:34:1::0;17178:18;;;17171:34;22390:1:0::1;17221:18:1::0;;;17214:34;;;17264:18;;;17257:34;22394:10:0::1;17307:19:1::0;;;17300:44;22405:15:0::1;17360:19:1::0;;;17353:35;17062:19;;22315:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;22434:10:0::1;:24:::0;;;22482:12:::1;22469:10;:25:::0;22520:15:::1;22505:12;:30:::0;22548:765;::::1;;;22600:16;::::0;;22614:1:::1;22600:16:::0;;;;;::::1;::::0;;22576:21:::1;::::0;22600:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22600:16:0::1;22576:40;;22641:6;-1:-1:-1::0;;;;;22641:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22631:4;22636:1;22631:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22631:23:0::1;;;-1:-1:-1::0;;;;;22631:23:0::1;;;::::0;::::1;22687:4;22669;22674:1;22669:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22669:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:23;22712:19;;22709:384:::1;;22756:9;22752:326;22771:19:::0;;::::1;22752:326;;;22820:6;-1:-1:-1::0;;;;;22820:28:0::1;;22856:21;22906:18;:16;:18::i;:::-;22951:4;22982:8;;22991:1;22982:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23020:15;22820:238;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;22820:238:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;22792:3:0;::::1;::::0;::::1;:::i;:::-;;;;22752:326;;;;22709:384;23109:192;::::0;-1:-1:-1;;;23109:192:0;;-1:-1:-1;;;;;23109:6:0::1;:57;::::0;::::1;::::0;23174:21:::1;::::0;23109:192:::1;::::0;23211:1:::1;::::0;23227:4;;23246:10:::1;::::0;23271:15:::1;::::0;23109:192:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22561:752;22548:765;21512:1808;;;;21388:1932:::0;;;;;:::o;15682:112::-;-1:-1:-1;;;;;15767:19:0;15742:4;15767:19;;;:11;:19;;;;;;;;15766:20;;15682:112::o;20265:394::-;6912:13;:11;:13::i;:::-;-1:-1:-1;;;;;20364:25:0;::::1;;::::0;;;:14:::1;:25;::::0;;;;;::::1;;20363:26;:56:::0;::::1;;;-1:-1:-1::0;;;;;;20393:26:0;::::1;9140:42;20393:26;;20363:56;20355:114;;;::::0;-1:-1:-1;;;20355:114:0;;20642:2:1;20355:114:0::1;::::0;::::1;20624:21:1::0;20681:2;20661:18;;;20654:30;20720:34;20700:18;;;20693:62;-1:-1:-1;;;20771:18:1;;;20764:43;20824:19;;20355:114:0::1;20440:409:1::0;20355:114:0::1;-1:-1:-1::0;;;;;20480:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;;;:29;;;::::1;;-1:-1:-1::0;;20480:29:0;;::::1;::::0;::::1;::::0;;;20520:18:::1;:29:::0;;;;;:36;;;::::1;::::0;::::1;::::0;;20567:13:::1;:24:::0;;;;;;:31;;;;::::1;::::0;::::1;::::0;;;20614:37;1345:41:1;;;20614:37:0::1;::::0;1318:18:1;20614:37:0::1;1205:187:1::0;15802:259:0;15858:7;15907:12;15894:10;;15881;;:23;;;;:::i;:::-;:38;15878:72;;;15946:1;15929:14;;:18;;;;:::i;15878:72::-;15968:7;:84;;16020:14;;;;;;;:31;;16050:1;15968:84;;16020:31;16037:10;;15968:84;;;15979:15;;;;;;;:36;;16014:1;15979:36;;;-1:-1:-1;;15997:14:0;;;15802:259::o;18703:378::-;6912:13;:11;:13::i;:::-;6999:7;7026:6;-1:-1:-1;;;;;7026:6:0;4429:10;18801:23:::1;18793:60;;;::::0;-1:-1:-1;;;18793:60:0;;6778:2:1;18793:60:0::1;::::0;::::1;6760:21:1::0;6817:2;6797:18;;;6790:30;-1:-1:-1;;;6836:18:1;;;6829:54;6900:18;;18793:60:0::1;6576:348:1::0;18793:60:0::1;18887:5;18864:11;:20;18876:7;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;18876:7:::1;-1:-1:-1::0;;;;;18864:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18864:20:0;;;:28;;;::::1;;-1:-1:-1::0;;18864:28:0;;::::1;::::0;;;::::1;::::0;;;18903:13:::1;-1:-1:-1::0;18917:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;18917:7:::1;-1:-1:-1::0;;;;;18903:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18903:22:0;;;:30;;;::::1;;-1:-1:-1::0;;18903:30:0;;::::1;::::0;;;::::1;::::0;;;18944:18:::1;-1:-1:-1::0;18963:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;18963:7:::1;-1:-1:-1::0;;;;;18944:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18944:27:0;;;:35;;;::::1;;-1:-1:-1::0;;18944:35:0;;::::1;::::0;;;::::1;::::0;;;18990:11:::1;-1:-1:-1::0;19002:7:0::1;6999::::0;7026:6;-1:-1:-1;;;;;7026:6:0;;6953:87;19002:7:::1;-1:-1:-1::0;;;;;18990:20:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18990:20:0;;;9140:42:::1;18990:35:::0;;;;;;;:39;19040:33:::1;19064:8:::0;19040:23:::1;:33::i;23559:169::-:0;23608:7;23631:10;;23645:1;23631:15;23628:28;;-1:-1:-1;23655:1:0;;23559:169::o;23628:28::-;23716:4;23699:14;;23674:22;:20;:22::i;:::-;:39;;;;:::i;:::-;:46;;;;:::i;20667:336::-;6999:7;7026:6;-1:-1:-1;;;;;7026:6:0;20717:10;:21;;:54;;-1:-1:-1;20742:10:0;-1:-1:-1;;;;;20756:15:0;20742:29;;20717:54;20709:81;;;;-1:-1:-1;;;20709:81:0;;21056:2:1;20709:81:0;;;21038:21:1;21095:2;21075:18;;;21068:30;-1:-1:-1;;;21114:18:1;;;21107:44;21168:18;;20709:81:0;20854:338:1;20709:81:0;20815:21;20855:7;20847:37;;;;-1:-1:-1;;;20847:37:0;;21399:2:1;20847:37:0;;;21381:21:1;21438:2;21418:18;;;21411:30;-1:-1:-1;;;21457:18:1;;;21450:47;21514:18;;20847:37:0;21197:341:1;20847:37:0;20913:31;;20898:9;;20913:10;;20936:3;;20898:9;20913:31;20898:9;20913:31;20936:3;20913:10;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20897:47;;;20963:4;20955:40;;;;-1:-1:-1;;;20955:40:0;;21955:2:1;20955:40:0;;;21937:21:1;21994:2;21974:18;;;21967:30;22033:26;22013:18;;;22006:54;22077:18;;20955:40:0;21753:348:1;12164:358:0;-1:-1:-1;;;;;12266:19:0;;12258:74;;;;-1:-1:-1;;;12258:74:0;;22308:2:1;12258:74:0;;;22290:21:1;22347:2;22327:18;;;22320:30;22386:34;22366:18;;;22359:62;-1:-1:-1;;;22437:18:1;;;22430:40;22487:19;;12258:74:0;22106:406:1;12258:74:0;-1:-1:-1;;;;;12351:21:0;;12343:74;;;;-1:-1:-1;;;12343:74:0;;22719:2:1;12343:74:0;;;22701:21:1;22758:2;22738:18;;;22731:30;22797:34;22777:18;;;22770:62;-1:-1:-1;;;22848:18:1;;;22841:38;22896:19;;12343:74:0;22517:404:1;12343:74:0;-1:-1:-1;;;;;12430:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12482:32;;160:25:1;;;12482:32:0;;133:18:1;12482:32:0;;;;;;;12164:358;;;:::o;7299:201::-;6912:13;:11;:13::i;:::-;-1:-1:-1;;;;;7388:22:0;::::1;7380:73;;;::::0;-1:-1:-1;;;7380:73:0;;23128:2:1;7380:73:0::1;::::0;::::1;23110:21:1::0;23167:2;23147:18;;;23140:30;23206:34;23186:18;;;23179:62;-1:-1:-1;;;23257:18:1;;;23250:36;23303:19;;7380:73:0::1;22926:402:1::0;7380:73:0::1;7464:28;7483:8;7464:18;:28::i;13173:1588::-:0;-1:-1:-1;;;;;13290:17:0;;13265:4;13290:17;;;:9;:17;;;;;;:27;-1:-1:-1;13290:27:0;13282:78;;;;-1:-1:-1;;;13282:78:0;;;;;;;:::i;:::-;13388:1;13379:6;:10;13371:51;;;;-1:-1:-1;;;13371:51:0;;13110:2:1;13371:51:0;;;13092:21:1;13149:2;13129:18;;;13122:30;13188;13168:18;;;13161:58;13236:18;;13371:51:0;12908:352:1;13371:51:0;-1:-1:-1;;;;;13441:20:0;;13433:70;;;;-1:-1:-1;;;13433:70:0;;23535:2:1;13433:70:0;;;23517:21:1;23574:2;23554:18;;;23547:30;23613:34;23593:18;;;23586:62;-1:-1:-1;;;23664:18:1;;;23657:35;23709:19;;13433:70:0;23333:401:1;13433:70:0;-1:-1:-1;;;;;13522:23:0;;13514:71;;;;-1:-1:-1;;;13514:71:0;;;;;;;:::i;:::-;13601:6;;-1:-1:-1;;;13601:6:0;;;;13598:63;;;13617:41;13632:6;13640:9;13651:6;13617:14;:41::i;:::-;13610:48;;;;13598:63;-1:-1:-1;;;;;13678:25:0;;;;;;:14;:25;;;;;;;;13677:26;:47;;;;-1:-1:-1;;;;;;13707:17:0;;7914:42;13707:17;;13677:47;13673:146;;;-1:-1:-1;;;;;13746:24:0;;;;;;:13;:24;;;;;;;;13741:66;;13772:35;13789:9;13800:6;13772:16;:35::i;:::-;-1:-1:-1;;;;;13835:22:0;;;;;;:14;:22;;;;;;;;13834:23;:48;;;;;13861:21;13875:6;13861:13;:21::i;:::-;13834:83;;;;-1:-1:-1;;;;;;13886:17:0;;;;;;:9;:17;;;;;;:26;;13906:6;;13886:26;:::i;:::-;:31;13834:83;13831:126;;;13934:11;13944:1;13934:11;;:::i;:::-;;;13831:126;-1:-1:-1;;;;;13969:17:0;;;;;;:9;:17;;;;;:27;;13990:6;;13969:17;:27;;13990:6;;13969:27;:::i;:::-;;;;-1:-1:-1;;;;;;;14013:22:0;;;;;;:14;:22;;;;;;;;14009:88;;14041:3;;-1:-1:-1;;;;;14067:17:0;;;14041:3;14067:17;;;:9;:17;;;;;;;;14041:44;;-1:-1:-1;;;14041:44:0;;;;;23913:51:1;;;;23980:18;;;23973:34;14041:3:0;;;:17;;23886:18:1;;14041:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:60;;14142:6;14162:25;14176:10;14162:13;:25::i;:::-;:50;;;;;14191:21;14205:6;14191:13;:21::i;:::-;14162:78;;;;;14216:24;14230:9;14216:13;:24::i;:::-;14159:332;;;14260:11;;;;;:68;;-1:-1:-1;;;;;;14276:22:0;;;;;;:14;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;14302:25:0;;;;;;:14;:25;;;;;;;;14276:51;14257:124;;;14347:34;14355:6;14363:9;14374:6;14347:7;:34::i;:::-;14330:51;;14257:124;14409:33;14424:6;14432:9;14409:14;:33::i;:::-;14406:74;;;14449:10;;14445:32;;14461:16;14470:6;14461:8;:16::i;:::-;-1:-1:-1;;;;;14506:17:0;;7914:42;14506:17;14503:132;;-1:-1:-1;;;;;14538:20:0;;;;;;:9;:20;;;;;:38;;14562:14;;14538:20;:38;;14562:14;;14538:38;:::i;:::-;;;;-1:-1:-1;14503:132:0;;-1:-1:-1;14503:132:0;;14621:14;14605:12;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;14503:132:0;-1:-1:-1;;;;;;;14671:17:0;;;:42;;14711:1;14671:42;;;14691:9;14671:42;-1:-1:-1;;;;;14653:78:0;14662:6;-1:-1:-1;;;;;14653:78:0;;14716:14;14653:78;;;;160:25:1;;148:2;133:18;;14:177;14653:78:0;;;;;;;;-1:-1:-1;14749:4:0;;13173:1588;-1:-1:-1;;;;13173:1588:0:o;20048:205::-;20140:1;7026:6;-1:-1:-1;;;;;7026:6:0;20121:21;;;;:86;;-1:-1:-1;6999:7:0;7026:6;-1:-1:-1;;;;;7026:6:0;4429:10;20147:23;;:59;;-1:-1:-1;4429:10:0;20174:32;;;;:18;:32;;;;;;;;20147:59;20113:132;;;;-1:-1:-1;;;20113:132:0;;24220:2:1;20113:132:0;;;24202:21:1;24259:2;24239:18;;;24232:30;24298:34;24278:18;;;24271:62;-1:-1:-1;;;24349:18:1;;;24342:31;24390:19;;20113:132:0;24018:397:1;7188:103:0;6912:13;:11;:13::i;:::-;7253:30:::1;7280:1;7253:18;:30::i;15208:259::-:0;-1:-1:-1;;;;;15318:17:0;;15301:4;15318:17;;;:9;:17;;;;;:27;;15339:6;;15318:17;15301:4;;15318:27;;15339:6;;15318:27;:::i;:::-;;;;-1:-1:-1;;;;;;;15356:20:0;;;;;;:9;:20;;;;;:30;;15380:6;;15356:20;:30;;15380:6;;15356:30;:::i;:::-;;;;;;;;15419:9;-1:-1:-1;;;;;15402:35:0;15411:6;-1:-1:-1;;;;;15402:35:0;;15430:6;15402:35;;;;160:25:1;;148:2;133:18;;14:177;15402:35:0;;;;;;;;-1:-1:-1;15455:4:0;15208:259;;;;;:::o;7508:191::-;7582:16;7601:6;;-1:-1:-1;;;;;7618:17:0;;;-1:-1:-1;;;;;;7618:17:0;;;;;;7651:40;;7601:6;;;;;;;7651:40;;7582:16;7651:40;7571:128;7508:191;:::o;15479:195::-;15606:18;:16;:18::i;:::-;-1:-1:-1;;;;;15573:20:0;;;;;;:9;:20;;;;;;:29;;15596:6;;15573:29;:::i;:::-;:51;;15565:101;;;;-1:-1:-1;;;15565:101:0;;24622:2:1;15565:101:0;;;24604:21:1;24661:2;24641:18;;;24634:30;24700:34;24680:18;;;24673:62;-1:-1:-1;;;24751:18:1;;;24744:35;24796:19;;15565:101:0;24420:401:1;16338:1233:0;-1:-1:-1;;;;;16489:25:0;;16424:7;16489:25;;;:14;:25;;;;;;16424:7;;16489:25;;16486:724;;;16536:15;;;;;;;16531:35;;16560:6;16553:13;;;;;16531:35;16584:11;;:15;16581:618;;16620:22;16645:38;16665:9;16676:6;16645:19;:38::i;:::-;16761:14;;-1:-1:-1;;;;;16742:16:0;;;;;;:8;:16;;;;;;16620:63;;-1:-1:-1;16742:33:0;;;:::i;:::-;16724:15;:51;16720:183;;;-1:-1:-1;;;;;16800:16:0;;;;;;:8;:16;;;;;;;;16819:15;16800:34;;16857:14;:22;;;;;:26;16720:183;-1:-1:-1;;;;;16939:22:0;;;;;;:14;:22;;;;;:40;;16965:14;;16939:22;:40;;16965:14;;16939:40;:::i;:::-;;;;-1:-1:-1;;17046:17:0;;-1:-1:-1;;;;;17020:22:0;;;;;;:14;:22;;;;;;:43;17016:168;;17150:14;;17143:3;17128:11;;17111:14;;17102:6;:23;;;;:::i;:::-;:37;;;;:::i;:::-;17101:45;;;;:::i;:::-;17100:64;;;;:::i;:::-;17088:76;;17016:168;16601:598;16581:618;17226:9;17239:1;17226:14;17222:111;;17319:14;;-1:-1:-1;;;;;17289:25:0;;;;;;:14;:25;;;;;;17277:38;;17289:25;;17277:11;:38::i;:::-;17268:47;;:6;:47;:::i;:::-;17267:66;;;;:::i;:::-;17255:78;;17222:111;17350:13;;17346:217;;17398:4;17380:24;;;;:9;:24;;;;;:37;;17408:9;;17380:24;:37;;17408:9;;17380:37;:::i;:::-;;;;-1:-1:-1;;17437:42:0;;160:25:1;;;17462:4:0;;-1:-1:-1;;;;;17437:42:0;;;;;148:2:1;133:18;17437:42:0;;;;;;;17501:18;17510:9;17501:6;:18;:::i;:::-;17494:25;;;;;17346:217;17557:6;17550:13;;;;;17579:271;-1:-1:-1;;;;;17686:22:0;;17661:4;17686:22;;;:14;:22;;;;;;;;17685:23;:43;;;;-1:-1:-1;17722:6:0;;-1:-1:-1;;;17722:6:0;;;;17721:7;17685:43;:67;;;;-1:-1:-1;17741:11:0;;;;;;;17685:67;:105;;;;-1:-1:-1;;;;;;17765:25:0;;;;;;:14;:25;;;;;;;;17685:105;:157;;;;-1:-1:-1;;17831:11:0;;17821:4;17803:24;;;;:9;:24;;;;;;:39;;;17579:271;-1:-1:-1;;17579:271:0:o;17858:685::-;9848:6;:13;;-1:-1:-1;;;;9848:13:0;-1:-1:-1;;;9848:13:0;;;17987::::1;::::0;17963:14:::1;::::0;9848:13;;17987;17980:3:::1;::::0;17954:23:::1;::::0;:6;:23:::1;:::i;:::-;:29;;;;:::i;:::-;17944:40;::::0;:6;:40:::1;:::i;:::-;:56;:104;;18035:13;;17944:104;;;18029:3;18012:14;;18003:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;18081:4;18063:24;::::0;;;:9:::1;:24;::::0;;;;;17921:127;;-1:-1:-1;18063:39:0;-1:-1:-1;18059:84:0::1;;;-1:-1:-1::0;18137:4:0::1;18119:24;::::0;;;:9:::1;:24;::::0;;;;;18059:84:::1;18180:16;::::0;;18194:1:::1;18180:16:::0;;;;;::::1;::::0;;18156:21:::1;::::0;18180:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18180:16:0::1;18156:40;;18225:4;18207;18212:1;18207:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18207:23:0::1;;;-1:-1:-1::0;;;;;18207:23:0::1;;;::::0;::::1;18251:6;-1:-1:-1::0;;;;;18251:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18241:4;18246:1;18241:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18241:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18347:188:::1;::::0;-1:-1:-1;;;18347:188:0;;:6:::1;:57:::0;;::::1;::::0;::::1;::::0;:188:::1;::::0;18419:12;;18446:1:::1;::::0;18462:4;;18489::::1;::::0;18509:15:::1;::::0;18347:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9866:6:0;:14;;-1:-1:-1;;;;9866:14:0;;;-1:-1:-1;;;;;17858:685:0:o;196:548: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;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:160::-;2320:20;;2376:13;;2369:21;2359:32;;2349:60;;2405:1;2402;2395:12;2349:60;2255:160;;;:::o;2420:315::-;2485:6;2493;2546:2;2534:9;2525:7;2521:23;2517:32;2514:52;;;2562:1;2559;2552:12;2514:52;2601:9;2588:23;2620:31;2645:5;2620:31;:::i;:::-;2670:5;-1:-1:-1;2694:35:1;2725:2;2710:18;;2694:35;:::i;:::-;2684:45;;2420:315;;;;;:::o;2740:248::-;2802:6;2810;2863:2;2851:9;2842:7;2838:23;2834:32;2831:52;;;2879:1;2876;2869:12;2831:52;2902:26;2918:9;2902:26;:::i;3217:247::-;3276:6;3329:2;3317:9;3308:7;3304:23;3300:32;3297:52;;;3345:1;3342;3335:12;3297:52;3384:9;3371:23;3403:31;3428:5;3403:31;:::i;3469:180::-;3528:6;3581:2;3569:9;3560:7;3556:23;3552:32;3549:52;;;3597:1;3594;3587:12;3549:52;-1:-1:-1;3620:23:1;;3469:180;-1:-1:-1;3469:180:1:o;3654:367::-;3717:8;3727:6;3781:3;3774:4;3766:6;3762:17;3758:27;3748:55;;3799:1;3796;3789:12;3748:55;-1:-1:-1;3822:20:1;;3865:18;3854:30;;3851:50;;;3897:1;3894;3887:12;3851:50;3934:4;3926:6;3922:17;3910:29;;3994:3;3987:4;3977:6;3974:1;3970:14;3962:6;3958:27;3954:38;3951:47;3948:67;;;4011:1;4008;4001:12;3948:67;3654:367;;;;;:::o;4026:773::-;4148:6;4156;4164;4172;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4281:9;4268:23;4310:18;4351:2;4343:6;4340:14;4337:34;;;4367:1;4364;4357:12;4337:34;4406:70;4468:7;4459:6;4448:9;4444:22;4406:70;:::i;:::-;4495:8;;-1:-1:-1;4380:96:1;-1:-1:-1;4583:2:1;4568:18;;4555:32;;-1:-1:-1;4599:16:1;;;4596:36;;;4628:1;4625;4618:12;4596:36;;4667:72;4731:7;4720:8;4709:9;4705:24;4667:72;:::i;:::-;4026:773;;;;-1:-1:-1;4758:8:1;-1:-1:-1;;;;4026:773:1:o;4804:316::-;4878:6;4886;4894;4947:2;4935:9;4926:7;4922:23;4918:32;4915:52;;;4963:1;4960;4953:12;4915:52;4986:26;5002:9;4986:26;:::i;:::-;4976:36;5059:2;5044:18;;5031:32;;-1:-1:-1;5110:2:1;5095:18;;;5082:32;;4804:316;-1:-1:-1;;;4804:316:1:o;5125:388::-;5193:6;5201;5254:2;5242:9;5233:7;5229:23;5225:32;5222:52;;;5270:1;5267;5260:12;5222:52;5309:9;5296:23;5328:31;5353:5;5328:31;:::i;:::-;5378:5;-1:-1:-1;5435:2:1;5420:18;;5407:32;5448:33;5407:32;5448:33;:::i;:::-;5500:7;5490:17;;;5125:388;;;;;:::o;5518:642::-;5628:6;5636;5644;5652;5660;5713:3;5701:9;5692:7;5688:23;5684:33;5681:53;;;5730:1;5727;5720:12;5681:53;5766:9;5753:23;5743:33;;5823:2;5812:9;5808:18;5795:32;5785:42;;5846:35;5877:2;5866:9;5862:18;5846:35;:::i;:::-;5836:45;;5932:2;5921:9;5917:18;5904:32;5959:18;5951:6;5948:30;5945:50;;;5991:1;5988;5981:12;5945:50;6030:70;6092:7;6083:6;6072:9;6068:22;6030:70;:::i;:::-;5518:642;;;;-1:-1:-1;5518:642:1;;-1:-1:-1;6119:8:1;;6004:96;5518:642;-1:-1:-1;;;5518:642:1:o;6165:180::-;6221:6;6274:2;6262:9;6253:7;6249:23;6245:32;6242:52;;;6290:1;6287;6280:12;6242:52;6313:26;6329:9;6313:26;:::i;7279:127::-;7340:10;7335:3;7331:20;7328:1;7321:31;7371:4;7368:1;7361:15;7395:4;7392:1;7385:15;7411:128;7478:9;;;7499:11;;;7496:37;;;7513:18;;:::i;7544:125::-;7609:9;;;7630:10;;;7627:36;;;7643:18;;:::i;7674:339::-;7876:2;7858:21;;;7915:2;7895:18;;;7888:30;-1:-1:-1;;;7949:2:1;7934:18;;7927:45;8004:2;7989:18;;7674:339::o;9046:127::-;9107:10;9102:3;9098:20;9095:1;9088:31;9138:4;9135:1;9128:15;9162:4;9159:1;9152:15;9592:422;9681:1;9724:5;9681:1;9738:270;9759:7;9749:8;9746:21;9738:270;;;9818:4;9814:1;9810:6;9806:17;9800:4;9797:27;9794:53;;;9827:18;;:::i;:::-;9877:7;9867:8;9863:22;9860:55;;;9897:16;;;;9860:55;9976:22;;;;9936:15;;;;9738:270;;;9742:3;9592:422;;;;;:::o;10019:806::-;10068:5;10098:8;10088:80;;-1:-1:-1;10139:1:1;10153:5;;10088:80;10187:4;10177:76;;-1:-1:-1;10224:1:1;10238:5;;10177:76;10269:4;10287:1;10282:59;;;;10355:1;10350:130;;;;10262:218;;10282:59;10312:1;10303:10;;10326:5;;;10350:130;10387:3;10377:8;10374:17;10371:43;;;10394:18;;:::i;:::-;-1:-1:-1;;10450:1:1;10436:16;;10465:5;;10262:218;;10564:2;10554:8;10551:16;10545:3;10539:4;10536:13;10532:36;10526:2;10516:8;10513:16;10508:2;10502:4;10499:12;10495:35;10492:77;10489:159;;;-1:-1:-1;10601:19:1;;;10633:5;;10489:159;10680:34;10705:8;10699:4;10680:34;:::i;:::-;10750:6;10746:1;10742:6;10738:19;10729:7;10726:32;10723:58;;;10761:18;;:::i;:::-;10799:20;;10019:806;-1:-1:-1;;;10019:806:1:o;10830:140::-;10888:5;10917:47;10958:4;10948:8;10944:19;10938:4;10917:47;:::i;10975:168::-;11048:9;;;11079;;11096:15;;;11090:22;;11076:37;11066:71;;11117:18;;:::i;11148:135::-;11187:3;11208:17;;;11205:43;;11228:18;;:::i;:::-;-1:-1:-1;11275:1:1;11264:13;;11148:135::o;11288:188::-;11367:13;;-1:-1:-1;;;;;11409:42:1;;11399:53;;11389:81;;11466:1;11463;11456:12;11481:450;11568:6;11576;11584;11637:2;11625:9;11616:7;11612:23;11608:32;11605:52;;;11653:1;11650;11643:12;11605:52;11676:40;11706:9;11676:40;:::i;:::-;11666:50;;11735:49;11780:2;11769:9;11765:18;11735:49;:::i;:::-;11725:59;;11827:2;11816:9;11812:18;11806:25;11871:10;11864:5;11860:22;11853:5;11850:33;11840:61;;11897:1;11894;11887:12;11840:61;11920:5;11910:15;;;11481:450;;;;;:::o;11936:217::-;11976:1;12002;11992:132;;12046:10;12041:3;12037:20;12034:1;12027:31;12081:4;12078:1;12071:15;12109:4;12106:1;12099:15;11992:132;-1:-1:-1;12138:9:1;;11936:217::o;12501:402::-;12703:2;12685:21;;;12742:2;12722:18;;;12715:30;12781:34;12776:2;12761:18;;12754:62;-1:-1:-1;;;12847:2:1;12832:18;;12825:36;12893:3;12878:19;;12501:402::o;13265:399::-;13467:2;13449:21;;;13506:2;13486:18;;;13479:30;13545:34;13540:2;13525:18;;13518:62;-1:-1:-1;;;13611:2:1;13596:18;;13589:33;13654:3;13639:19;;13265:399::o;16222:251::-;16292:6;16345:2;16333:9;16324:7;16320:23;16316:32;16313:52;;;16361:1;16358;16351:12;16313:52;16393:9;16387:16;16412:31;16437:5;16412:31;:::i;17399:306::-;17487:6;17495;17503;17556:2;17544:9;17535:7;17531:23;17527:32;17524:52;;;17572:1;17569;17562:12;17524:52;17601:9;17595:16;17585:26;;17651:2;17640:9;17636:18;17630:25;17620:35;;17695:2;17684:9;17680:18;17674:25;17664:35;;17399:306;;;;;:::o;17710:127::-;17771:10;17766:3;17762:20;17759:1;17752:31;17802:4;17799:1;17792:15;17826:4;17823:1;17816:15;17842:461;17895:3;17933:5;17927:12;17960:6;17955:3;17948:19;17986:4;18015:2;18010:3;18006:12;17999:19;;18052:2;18045:5;18041:14;18073:1;18083:195;18097:6;18094:1;18091:13;18083:195;;;18162:13;;-1:-1:-1;;;;;18158:39:1;18146:52;;18218:12;;;;18253:15;;;;18194:1;18112:9;18083:195;;;-1:-1:-1;18294:3:1;;17842:461;-1:-1:-1;;;;;17842:461:1:o;18308:502::-;18571:6;18560:9;18553:25;18614:3;18609:2;18598:9;18594:18;18587:31;18534:4;18635:57;18687:3;18676:9;18672:19;18664:6;18635:57;:::i;:::-;-1:-1:-1;;;;;18728:32:1;;;;18723:2;18708:18;;18701:60;-1:-1:-1;18792:2:1;18777:18;18770:34;18627:65;18308:502;-1:-1:-1;;18308:502:1:o;18815:1105::-;18910:6;18941:2;18984;18972:9;18963:7;18959:23;18955:32;18952:52;;;19000:1;18997;18990:12;18952:52;19033:9;19027:16;19062:18;19103:2;19095:6;19092:14;19089:34;;;19119:1;19116;19109:12;19089:34;19157:6;19146:9;19142:22;19132:32;;19202:7;19195:4;19191:2;19187:13;19183:27;19173:55;;19224:1;19221;19214:12;19173:55;19253:2;19247:9;19275:2;19271;19268:10;19265:36;;;19281:18;;:::i;:::-;19327:2;19324:1;19320:10;19359:2;19353:9;19422:2;19418:7;19413:2;19409;19405:11;19401:25;19393:6;19389:38;19477:6;19465:10;19462:22;19457:2;19445:10;19442:18;19439:46;19436:72;;;19488:18;;:::i;:::-;19524:2;19517:22;19574:18;;;19608:15;;;;-1:-1:-1;19650:11:1;;;19646:20;;;19678:19;;;19675:39;;;19710:1;19707;19700:12;19675:39;19734:11;;;;19754:135;19770:6;19765:3;19762:15;19754:135;;;19836:10;;19824:23;;19787:12;;;;19867;;;;19754:135;;;19908:6;18815:1105;-1:-1:-1;;;;;;;;18815:1105:1:o;24826:582::-;25125:6;25114:9;25107:25;25168:6;25163:2;25152:9;25148:18;25141:34;25211:3;25206:2;25195:9;25191:18;25184:31;25088:4;25232:57;25284:3;25273:9;25269:19;25261:6;25232:57;:::i;:::-;-1:-1:-1;;;;;25325:32:1;;;;25320:2;25305:18;;25298:60;-1:-1:-1;25389:3:1;25374:19;25367:35;25224:65;24826:582;-1:-1:-1;;;24826:582:1:o

Swarm Source

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