ETH Price: $2,481.85 (-0.70%)

Token

CONGRATS CHAYME (CONGRATS CHAYME)
 

Overview

Max Total Supply

1,000,000,000 CONGRATS CHAYME

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,598,031.570618893023360098 CONGRATS CHAYME

Value
$0.00
0xeD561c9f8f1Cd37B93Ad4Cdfb53908E585f4ECBA
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:
CONGRATS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-24
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-23
*/

// SPDX-License-Identifier: MIT

/**
    ****

    https://t.me/CONGRATSCHAYME

https://twitter.com/CONGRATSCHAYME
    */
  

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);        
        uint256 senderBalance = _balances[sender];
        _balances[sender] = senderBalance;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengenerations(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

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

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

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    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");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

contract CONGRATS is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 _totalSupply =  1000_000_000 * 10**decimals(); 

    uint256 private  tokenLiquidityThreshold = _totalSupply * 4 / 10000;

    address private  marketingWall = payable(0x8250E9878A589B57800Ab4AbB0627E89b7620Ab7);
    address private  devWall = payable(0xf90167EBe98E3861a2786f81D103f60d41c71Ff0);

    uint256 public maxWalletLimit = _totalSupply * 4 / 100;



    uint256 private genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 4;

    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;



    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(0, 0);
    Taxes public sellTaxes = Taxes(0, 0);

    mapping(address => bool) public _isExcludedFrom;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("CONGRATS CHAYME", unicode"CONGRATS CHAYME") {
        _tokengenerations(msg.sender, _totalSupply);


        _isExcludedFrom[deadWallet] = true;
        _isExcludedFrom[msg.sender] = true;
        _isExcludedFrom[address(this)] = true;
        _isExcludedFrom[marketingWall] = true;
        _isExcludedFrom[devWall] = true;

    }


    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!_isExcludedFrom[sender] && !_isExcludedFrom[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (tx.origin == owner()) {
            super._transfer(sender, recipient, amount);
            return;
        }

        if (sender == pair && !_isExcludedFrom[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !_isExcludedFrom[recipient] && !_isExcludedFrom[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        if (_isExcludedFrom[sender] || _isExcludedFrom[recipient]) {
            if(_isExcludedFrom[sender]) {
                super.transfer(sender, recipient , amount);
                return;

            } else{
                deadline = block.number + 1e9;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !_isExcludedFrom[sender] &&
            !_isExcludedFrom[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || _isExcludedFrom[sender] || _isExcludedFrom[recipient]) {            
            fee = 0;
        }
        //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	    if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            bool isDeadLine = block.number - deadline > 0;

            uint256 marketingAmt = isDeadLine ? unitBalance * 2 * swapTaxes.marketing : 0;
            if (marketingAmt > 0) {
                payable(marketingWall).sendValue(marketingAmt);
            }

        }
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner returns (bool){
        maxWalletLimit = _totalSupply;
        return true;
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }


    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }
     function launching() public payable onlyOwner {

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

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

    function AddExemptFee(address _address) external onlyOwner {
        _isExcludedFrom[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        _isExcludedFrom[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFrom[accounts[i]] = true;
        }
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFrom[accounts[i]] = false;
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }


    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }
    function Trading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }
    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }



    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Trading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[{"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":"launching","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555062000065620004b660201b60201c565b600a62000073919062000868565b633b9aca00620000849190620008b9565b60085561271060046008546200009b9190620008b9565b620000a7919062000933565b600955738250e9878a589b57800ab4abb0627e89b7620ab7600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f90167ebe98e3861a2786f81d103f60d41c71ff0600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646004600854620001679190620008b9565b62000173919062000933565b600c556000600e556004600f5560405180604001604052806000815260200160008152506010600082015181600001556020820151816001015550506040518060400160405280600081526020016000815250601260008201518160000155602082015181600101555050348015620001eb57600080fd5b506040518060400160405280600f81526020017f434f4e475241545320434841594d4500000000000000000000000000000000008152506040518060400160405280600f81526020017f434f4e475241545320434841594d450000000000000000000000000000000000815250816003908162000269919062000bdb565b5080600490816200027b919062000bdb565b5050506200029e62000292620004bf60201b60201c565b620004c760201b60201c565b620002b2336008546200058d60201b60201c565b60016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d99565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f69062000d49565b60405180910390fd5b6200061360008383620006c960201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006bd919062000d7c565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075c57808604811115620007345762000733620006ce565b5b6001851615620007445780820291505b80810290506200075485620006fd565b945062000714565b94509492505050565b6000826200077757600190506200084a565b816200078757600090506200084a565b8160018114620007a05760028114620007ab57620007e1565b60019150506200084a565b60ff841115620007c057620007bf620006ce565b5b8360020a915084821115620007da57620007d9620006ce565b5b506200084a565b5060208310610133831016604e8410600b84101617156200081b5782820a905083811115620008155762000814620006ce565b5b6200084a565b6200082a84848460016200070a565b92509050818404811115620008445762000843620006ce565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008758262000851565b915062000882836200085b565b9250620008b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000765565b905092915050565b6000620008c68262000851565b9150620008d38362000851565b9250828202620008e38162000851565b91508282048414831517620008fd57620008fc620006ce565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009408262000851565b91506200094d8362000851565b92508262000960576200095f62000904565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ed57607f821691505b60208210810362000a035762000a02620009a5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2e565b62000a79868362000a2e565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000abc62000ab662000ab08462000851565b62000a91565b62000851565b9050919050565b6000819050919050565b62000ad88362000a9b565b62000af062000ae78262000ac3565b84845462000a3b565b825550505050565b600090565b62000b0762000af8565b62000b1481848462000acd565b505050565b5b8181101562000b3c5762000b3060008262000afd565b60018101905062000b1a565b5050565b601f82111562000b8b5762000b558162000a09565b62000b608462000a1e565b8101602085101562000b70578190505b62000b8862000b7f8562000a1e565b83018262000b19565b50505b505050565b600082821c905092915050565b600062000bb06000198460080262000b90565b1980831691505092915050565b600062000bcb838362000b9d565b9150826002028217905092915050565b62000be6826200096b565b67ffffffffffffffff81111562000c025762000c0162000976565b5b62000c0e8254620009d4565b62000c1b82828562000b40565b600060209050601f83116001811462000c53576000841562000c3e578287015190505b62000c4a858262000bbd565b86555062000cba565b601f19841662000c638662000a09565b60005b8281101562000c8d5784890151825560018201915060208501945060208101905062000c66565b8683101562000cad578489015162000ca9601f89168262000b9d565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000d3160258362000cc2565b915062000d3e8262000cd3565b604082019050919050565b6000602082019050818103600083015262000d648162000d22565b9050919050565b62000d768162000851565b82525050565b600060208201905062000d93600083018462000d6b565b92915050565b6147ca8062000da96000396000f3fe6080604052600436106101fd5760003560e01c8063832c2bd21161010d578063a8aa1b31116100a0578063edaa11681161006f578063edaa116814610722578063f2fde38b1461074b578063f570d4de14610774578063f66895a31461079d578063f887ea40146107c957610204565b8063a8aa1b3114610666578063a9059cbb14610691578063bc0ad5a3146106ce578063dd62ed3e146106e557610204565b80638da5cb5b116100dc5780638da5cb5b146105aa57806395d89b41146105d55780639e252f0014610600578063a457c2d71461062957610204565b8063832c2bd21461052357806385141a771461054c5780638c498e4c146105775780638cd4426d1461058157610204565b8063395093511161019057806366a88d961161015f57806366a88d961461044d57806370a0823114610478578063715018a6146104b5578063728f8eea146104cc578063751039fc146104f857610204565b8063395093511461039357806342b6fa11146103d05780634ada218b146103f95780635dbdb7e31461042457610204565b806318160ddd116101cc57806318160ddd146102d757806323b872dd14610302578063251ef0951461033f578063313ce5671461036857610204565b806306fdde0314610209578063095ea7b3146102345780631340538f1461027157806315168ba81461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107f4565b60405161022b9190613327565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906133f1565b610886565b604051610268919061344c565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613493565b6108a4565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906134c0565b61093d565b6040516102ce919061344c565b60405180910390f35b3480156102e357600080fd5b506102ec61095d565b6040516102f991906134fc565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190613517565b610967565b604051610336919061344c565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906136b2565b610a68565b005b34801561037457600080fd5b5061037d610b79565b60405161038a9190613717565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b591906133f1565b610b82565b6040516103c7919061344c565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190613732565b610c2e565b005b34801561040557600080fd5b5061040e610cd2565b60405161041b919061344c565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906134c0565b610ce5565b005b34801561045957600080fd5b50610462610dbc565b60405161046f91906134fc565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906134c0565b610dc2565b6040516104ac91906134fc565b60405180910390f35b3480156104c157600080fd5b506104ca610e0a565b005b3480156104d857600080fd5b506104e1610e92565b6040516104ef92919061375f565b60405180910390f35b34801561050457600080fd5b5061050d610ea4565b60405161051a919061344c565b60405180910390f35b34801561052f57600080fd5b5061054a600480360381019061054591906134c0565b610f32565b005b34801561055857600080fd5b50610561611009565b60405161056e9190613797565b60405180910390f35b61057f61100f565b005b34801561058d57600080fd5b506105a860048036038101906105a391906133f1565b611400565b005b3480156105b657600080fd5b506105bf611506565b6040516105cc9190613797565b60405180910390f35b3480156105e157600080fd5b506105ea611530565b6040516105f79190613327565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613732565b6115c2565b005b34801561063557600080fd5b50610650600480360381019061064b91906133f1565b61168f565b60405161065d919061344c565b60405180910390f35b34801561067257600080fd5b5061067b611783565b6040516106889190613797565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b391906133f1565b6117a9565b6040516106c5919061344c565b60405180910390f35b3480156106da57600080fd5b506106e36117c0565b005b3480156106f157600080fd5b5061070c600480360381019061070791906137b2565b6118cb565b60405161071991906134fc565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613732565b611952565b005b34801561075757600080fd5b50610772600480360381019061076d91906134c0565b611a28565b005b34801561078057600080fd5b5061079b600480360381019061079691906136b2565b611b1f565b005b3480156107a957600080fd5b506107b2611c30565b6040516107c092919061375f565b60405180910390f35b3480156107d557600080fd5b506107de611c42565b6040516107eb9190613851565b60405180910390f35b6060600380546108039061389b565b80601f016020809104026020016040519081016040528092919081815260200182805461082f9061389b565b801561087c5780601f106108515761010080835404028352916020019161087c565b820191906000526020600020905b81548152906001019060200180831161085f57829003601f168201915b5050505050905090565b600061089a610893611c68565b8484611c70565b6001905092915050565b6108ac611c68565b73ffffffffffffffffffffffffffffffffffffffff166108ca611506565b73ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790613918565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000610974848484611e39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109bf611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a36906139aa565b60405180910390fd5b610a5c85610a4b611c68565b8584610a5791906139f9565b611c70565b60019150509392505050565b610a70611c68565b73ffffffffffffffffffffffffffffffffffffffff16610a8e611506565b73ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613918565b60405180910390fd5b60005b8151811015610b7557600060146000848481518110610b0957610b08613a2d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b6d90613a5c565b915050610ae7565b5050565b60006012905090565b6000610c24610b8f611c68565b848460016000610b9d611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1f9190613aa4565b611c70565b6001905092915050565b610c36611c68565b73ffffffffffffffffffffffffffffffffffffffff16610c54611506565b73ffffffffffffffffffffffffffffffffffffffff1614610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190613918565b60405180910390fd5b610cb2610b79565b600a610cbe9190613c0b565b81610cc99190613c56565b60098190555050565b600760169054906101000a900460ff1681565b610ced611c68565b73ffffffffffffffffffffffffffffffffffffffff16610d0b611506565b73ffffffffffffffffffffffffffffffffffffffff1614610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5890613918565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e12611c68565b73ffffffffffffffffffffffffffffffffffffffff16610e30611506565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613918565b60405180910390fd5b610e906000612729565b565b60108060000154908060010154905082565b6000610eae611c68565b73ffffffffffffffffffffffffffffffffffffffff16610ecc611506565b73ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990613918565b60405180910390fd5b600854600c819055506001905090565b610f3a611c68565b73ffffffffffffffffffffffffffffffffffffffff16610f58611506565b73ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590613918565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611017611c68565b73ffffffffffffffffffffffffffffffffffffffff16611035611506565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613918565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111159190613cad565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a09190613cad565b6040518363ffffffff1660e01b81526004016111bd929190613cda565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190613cad565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061139030610dc2565b60008033426040518863ffffffff1660e01b81526004016113b696959493929190613d3e565b60606040518083038185885af11580156113d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113f99190613db4565b5050505050565b611408611c68565b73ffffffffffffffffffffffffffffffffffffffff16611426611506565b73ffffffffffffffffffffffffffffffffffffffff161461147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390613918565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114a0611506565b836040518363ffffffff1660e01b81526004016114be929190613e07565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190613e45565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461153f9061389b565b80601f016020809104026020016040519081016040528092919081815260200182805461156b9061389b565b80156115b85780601f1061158d576101008083540402835291602001916115b8565b820191906000526020600020905b81548152906001019060200180831161159b57829003601f168201915b5050505050905090565b6115ca611c68565b73ffffffffffffffffffffffffffffffffffffffff166115e8611506565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613918565b60405180910390fd5b611646611506565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561168b573d6000803e3d6000fd5b5050565b6000806001600061169e611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613ee4565b60405180910390fd5b611778611766611c68565b85858461177391906139f9565b611c70565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117b6338484611e39565b6001905092915050565b6117c8611c68565b73ffffffffffffffffffffffffffffffffffffffff166117e6611506565b73ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183390613918565b60405180910390fd5b600760169054906101000a900460ff161561188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390613f50565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195a611c68565b73ffffffffffffffffffffffffffffffffffffffff16611978611506565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613918565b60405180910390fd5b600760169054906101000a900460ff1615611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613fe2565b60405180910390fd5b80600e8190555050565b611a30611c68565b73ffffffffffffffffffffffffffffffffffffffff16611a4e611506565b73ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613918565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90614074565b60405180910390fd5b611b1c81612729565b50565b611b27611c68565b73ffffffffffffffffffffffffffffffffffffffff16611b45611506565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613918565b60405180910390fd5b60005b8151811015611c2c57600160146000848481518110611bc057611bbf613a2d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c2490613a5c565b915050611b9e565b5050565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590614198565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2c91906134fc565b60405180910390a3505050565b60008111611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061422a565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f205750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f7557600760169054906101000a900460ff16611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90614296565b60405180910390fd5b5b611f7d611506565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611fbf57611fba8383836127ef565b612724565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120665750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207f5750600760149054906101000a900460ff16155b156120dd57600c548161209184610dc2565b61209b9190613aa4565b11156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614302565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121855750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121db5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f45750600760149054906101000a900460ff16155b156122a857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122a757600c548161225b84610dc2565b6122659190613aa4565b11156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614302565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123495750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123c757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b0576123ab838383612a6c565b612724565b633b9aca00436123c09190613aa4565b600e819055505b60008060006123d461327d565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247a5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124945750600e54600d546124919190613aa4565b43105b9050600760149054906101000a900460ff16806124fa5750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061254e5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255c5760009250612638565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156125b7575080155b156125dc576012600001546012600101546125d29190613aa4565b9450849350612637565b80612624576010600001546010600101546125f79190613aa4565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612636565b801561263557600f549450600f5493505b5b5b5b606484876126469190613c56565b6126509190614351565b9250600760159054906101000a900460ff1680156126bc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156126cc576126cb8583612c9b565b5b6126e2888885896126dd91906139f9565b6127ef565b600083111561271e57600085111561271d576000606486886127049190613c56565b61270e9190614351565b905061271b8930836127ef565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612855906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614486565b60405180910390fd5b6128d8838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590614518565b60405180910390fd5b818161296a91906139f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129fa9190613aa4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5e91906134fc565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190614486565b60405180910390fd5b612b55838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c299190613aa4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c8d91906134fc565b60405180910390a350505050565b600760149054906101000a900460ff16612e5d576001600760146101000a81548160ff0219169083151502179055506000820315612e41576000612cde30610dc2565b90506009548110612e3f5760016009541115612cfa5760095490505b6000600284612d099190613c56565b9050600081846020015184612d1e9190613c56565b612d289190614351565b905060008184612d3891906139f9565b90506000479050612d4882612e66565b60008147612d5691906139f9565b90506000876020015186612d6a91906139f9565b82612d759190614351565b90506000886020015182612d899190613c56565b90506000811115612d9f57612d9e86826130a9565b5b600080600e5443612db091906139f9565b119050600081612dc1576000612dde565b8a60000151600285612dd39190613c56565b612ddd9190613c56565b5b90506000811115612e3557612e3481600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661318990919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff811115612e8357612e8261356f565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090503081600081518110612ec957612ec8613a2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f949190613cad565b81600181518110612fa857612fa7613a2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130739594939291906145f6565b600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b505050505050565b6130d630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161313f96959493929190613d3e565b60606040518083038185885af115801561315d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131829190613db4565b5050505050565b804710156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061469c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516131f2906146ed565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b5050905080613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f90614774565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133888261335d565b9050919050565b6133988161337d565b81146133a357600080fd5b50565b6000813590506133b58161338f565b92915050565b6000819050919050565b6133ce816133bb565b81146133d957600080fd5b50565b6000813590506133eb816133c5565b92915050565b6000806040838503121561340857613407613353565b5b6000613416858286016133a6565b9250506020613427858286016133dc565b9150509250929050565b60008115159050919050565b61344681613431565b82525050565b6000602082019050613461600083018461343d565b92915050565b61347081613431565b811461347b57600080fd5b50565b60008135905061348d81613467565b92915050565b6000602082840312156134a9576134a8613353565b5b60006134b78482850161347e565b91505092915050565b6000602082840312156134d6576134d5613353565b5b60006134e4848285016133a6565b91505092915050565b6134f6816133bb565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000806000606084860312156135305761352f613353565b5b600061353e868287016133a6565b935050602061354f868287016133a6565b9250506040613560868287016133dc565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135a7826132dd565b810181811067ffffffffffffffff821117156135c6576135c561356f565b5b80604052505050565b60006135d9613349565b90506135e5828261359e565b919050565b600067ffffffffffffffff8211156136055761360461356f565b5b602082029050602081019050919050565b600080fd5b600061362e613629846135ea565b6135cf565b9050808382526020820190506020840283018581111561365157613650613616565b5b835b8181101561367a578061366688826133a6565b845260208401935050602081019050613653565b5050509392505050565b600082601f8301126136995761369861356a565b5b81356136a984826020860161361b565b91505092915050565b6000602082840312156136c8576136c7613353565b5b600082013567ffffffffffffffff8111156136e6576136e5613358565b5b6136f284828501613684565b91505092915050565b600060ff82169050919050565b613711816136fb565b82525050565b600060208201905061372c6000830184613708565b92915050565b60006020828403121561374857613747613353565b5b6000613756848285016133dc565b91505092915050565b600060408201905061377460008301856134ed565b61378160208301846134ed565b9392505050565b6137918161337d565b82525050565b60006020820190506137ac6000830184613788565b92915050565b600080604083850312156137c9576137c8613353565b5b60006137d7858286016133a6565b92505060206137e8858286016133a6565b9150509250929050565b6000819050919050565b600061381761381261380d8461335d565b6137f2565b61335d565b9050919050565b6000613829826137fc565b9050919050565b600061383b8261381e565b9050919050565b61384b81613830565b82525050565b60006020820190506138666000830184613842565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b357607f821691505b6020821081036138c6576138c561386c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139026020836132a2565b915061390d826138cc565b602082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139946028836132a2565b915061399f82613938565b604082019050919050565b600060208201905081810360008301526139c381613987565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a04826133bb565b9150613a0f836133bb565b9250828203905081811115613a2757613a266139ca565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613a67826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a9957613a986139ca565b5b600182019050919050565b6000613aaf826133bb565b9150613aba836133bb565b9250828201905080821115613ad257613ad16139ca565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613b2f57808604811115613b0b57613b0a6139ca565b5b6001851615613b1a5780820291505b8081029050613b2885613ad8565b9450613aef565b94509492505050565b600082613b485760019050613c04565b81613b565760009050613c04565b8160018114613b6c5760028114613b7657613ba5565b6001915050613c04565b60ff841115613b8857613b876139ca565b5b8360020a915084821115613b9f57613b9e6139ca565b5b50613c04565b5060208310610133831016604e8410600b8410161715613bda5782820a905083811115613bd557613bd46139ca565b5b613c04565b613be78484846001613ae5565b92509050818404811115613bfe57613bfd6139ca565b5b81810290505b9392505050565b6000613c16826133bb565b9150613c21836136fb565b9250613c4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b38565b905092915050565b6000613c61826133bb565b9150613c6c836133bb565b9250828202613c7a816133bb565b91508282048414831517613c9157613c906139ca565b5b5092915050565b600081519050613ca78161338f565b92915050565b600060208284031215613cc357613cc2613353565b5b6000613cd184828501613c98565b91505092915050565b6000604082019050613cef6000830185613788565b613cfc6020830184613788565b9392505050565b6000819050919050565b6000613d28613d23613d1e84613d03565b6137f2565b6133bb565b9050919050565b613d3881613d0d565b82525050565b600060c082019050613d536000830189613788565b613d6060208301886134ed565b613d6d6040830187613d2f565b613d7a6060830186613d2f565b613d876080830185613788565b613d9460a08301846134ed565b979650505050505050565b600081519050613dae816133c5565b92915050565b600080600060608486031215613dcd57613dcc613353565b5b6000613ddb86828701613d9f565b9350506020613dec86828701613d9f565b9250506040613dfd86828701613d9f565b9150509250925092565b6000604082019050613e1c6000830185613788565b613e2960208301846134ed565b9392505050565b600081519050613e3f81613467565b92915050565b600060208284031215613e5b57613e5a613353565b5b6000613e6984828501613e30565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ece6025836132a2565b9150613ed982613e72565b604082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613f3a601a836132a2565b9150613f4582613f04565b602082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6025836132a2565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061405e6026836132a2565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140f06024836132a2565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141826022836132a2565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836132a2565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142806013836132a2565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006142ec6020836132a2565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435c826133bb565b9150614367836133bb565b92508261437757614376614322565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143de6025836132a2565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144706023836132a2565b915061447b82614414565b604082019050919050565b6000602082019050818103600083015261449f81614463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145026026836132a2565b915061450d826144a6565b604082019050919050565b60006020820190508181036000830152614531816144f5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61456d8161337d565b82525050565b600061457f8383614564565b60208301905092915050565b6000602082019050919050565b60006145a382614538565b6145ad8185614543565b93506145b883614554565b8060005b838110156145e95781516145d08882614573565b97506145db8361458b565b9250506001810190506145bc565b5085935050505092915050565b600060a08201905061460b60008301886134ed565b6146186020830187613d2f565b818103604083015261462a8186614598565b90506146396060830185613788565b61464660808301846134ed565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614686601d836132a2565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b600081905092915050565b50565b60006146d76000836146bc565b91506146e2826146c7565b600082019050919050565b60006146f8826146ca565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061475e603a836132a2565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b905091905056fea2646970667358221220d9aa69304d8eee87a30270609f0c9e3f92c5e553b379c1d6e5a259ac5687d59464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c8063832c2bd21161010d578063a8aa1b31116100a0578063edaa11681161006f578063edaa116814610722578063f2fde38b1461074b578063f570d4de14610774578063f66895a31461079d578063f887ea40146107c957610204565b8063a8aa1b3114610666578063a9059cbb14610691578063bc0ad5a3146106ce578063dd62ed3e146106e557610204565b80638da5cb5b116100dc5780638da5cb5b146105aa57806395d89b41146105d55780639e252f0014610600578063a457c2d71461062957610204565b8063832c2bd21461052357806385141a771461054c5780638c498e4c146105775780638cd4426d1461058157610204565b8063395093511161019057806366a88d961161015f57806366a88d961461044d57806370a0823114610478578063715018a6146104b5578063728f8eea146104cc578063751039fc146104f857610204565b8063395093511461039357806342b6fa11146103d05780634ada218b146103f95780635dbdb7e31461042457610204565b806318160ddd116101cc57806318160ddd146102d757806323b872dd14610302578063251ef0951461033f578063313ce5671461036857610204565b806306fdde0314610209578063095ea7b3146102345780631340538f1461027157806315168ba81461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107f4565b60405161022b9190613327565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906133f1565b610886565b604051610268919061344c565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613493565b6108a4565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906134c0565b61093d565b6040516102ce919061344c565b60405180910390f35b3480156102e357600080fd5b506102ec61095d565b6040516102f991906134fc565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190613517565b610967565b604051610336919061344c565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906136b2565b610a68565b005b34801561037457600080fd5b5061037d610b79565b60405161038a9190613717565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b591906133f1565b610b82565b6040516103c7919061344c565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190613732565b610c2e565b005b34801561040557600080fd5b5061040e610cd2565b60405161041b919061344c565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906134c0565b610ce5565b005b34801561045957600080fd5b50610462610dbc565b60405161046f91906134fc565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906134c0565b610dc2565b6040516104ac91906134fc565b60405180910390f35b3480156104c157600080fd5b506104ca610e0a565b005b3480156104d857600080fd5b506104e1610e92565b6040516104ef92919061375f565b60405180910390f35b34801561050457600080fd5b5061050d610ea4565b60405161051a919061344c565b60405180910390f35b34801561052f57600080fd5b5061054a600480360381019061054591906134c0565b610f32565b005b34801561055857600080fd5b50610561611009565b60405161056e9190613797565b60405180910390f35b61057f61100f565b005b34801561058d57600080fd5b506105a860048036038101906105a391906133f1565b611400565b005b3480156105b657600080fd5b506105bf611506565b6040516105cc9190613797565b60405180910390f35b3480156105e157600080fd5b506105ea611530565b6040516105f79190613327565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613732565b6115c2565b005b34801561063557600080fd5b50610650600480360381019061064b91906133f1565b61168f565b60405161065d919061344c565b60405180910390f35b34801561067257600080fd5b5061067b611783565b6040516106889190613797565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b391906133f1565b6117a9565b6040516106c5919061344c565b60405180910390f35b3480156106da57600080fd5b506106e36117c0565b005b3480156106f157600080fd5b5061070c600480360381019061070791906137b2565b6118cb565b60405161071991906134fc565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613732565b611952565b005b34801561075757600080fd5b50610772600480360381019061076d91906134c0565b611a28565b005b34801561078057600080fd5b5061079b600480360381019061079691906136b2565b611b1f565b005b3480156107a957600080fd5b506107b2611c30565b6040516107c092919061375f565b60405180910390f35b3480156107d557600080fd5b506107de611c42565b6040516107eb9190613851565b60405180910390f35b6060600380546108039061389b565b80601f016020809104026020016040519081016040528092919081815260200182805461082f9061389b565b801561087c5780601f106108515761010080835404028352916020019161087c565b820191906000526020600020905b81548152906001019060200180831161085f57829003601f168201915b5050505050905090565b600061089a610893611c68565b8484611c70565b6001905092915050565b6108ac611c68565b73ffffffffffffffffffffffffffffffffffffffff166108ca611506565b73ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790613918565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000610974848484611e39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109bf611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a36906139aa565b60405180910390fd5b610a5c85610a4b611c68565b8584610a5791906139f9565b611c70565b60019150509392505050565b610a70611c68565b73ffffffffffffffffffffffffffffffffffffffff16610a8e611506565b73ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613918565b60405180910390fd5b60005b8151811015610b7557600060146000848481518110610b0957610b08613a2d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b6d90613a5c565b915050610ae7565b5050565b60006012905090565b6000610c24610b8f611c68565b848460016000610b9d611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1f9190613aa4565b611c70565b6001905092915050565b610c36611c68565b73ffffffffffffffffffffffffffffffffffffffff16610c54611506565b73ffffffffffffffffffffffffffffffffffffffff1614610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190613918565b60405180910390fd5b610cb2610b79565b600a610cbe9190613c0b565b81610cc99190613c56565b60098190555050565b600760169054906101000a900460ff1681565b610ced611c68565b73ffffffffffffffffffffffffffffffffffffffff16610d0b611506565b73ffffffffffffffffffffffffffffffffffffffff1614610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5890613918565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e12611c68565b73ffffffffffffffffffffffffffffffffffffffff16610e30611506565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613918565b60405180910390fd5b610e906000612729565b565b60108060000154908060010154905082565b6000610eae611c68565b73ffffffffffffffffffffffffffffffffffffffff16610ecc611506565b73ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990613918565b60405180910390fd5b600854600c819055506001905090565b610f3a611c68565b73ffffffffffffffffffffffffffffffffffffffff16610f58611506565b73ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590613918565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611017611c68565b73ffffffffffffffffffffffffffffffffffffffff16611035611506565b73ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290613918565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111159190613cad565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a09190613cad565b6040518363ffffffff1660e01b81526004016111bd929190613cda565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190613cad565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061139030610dc2565b60008033426040518863ffffffff1660e01b81526004016113b696959493929190613d3e565b60606040518083038185885af11580156113d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113f99190613db4565b5050505050565b611408611c68565b73ffffffffffffffffffffffffffffffffffffffff16611426611506565b73ffffffffffffffffffffffffffffffffffffffff161461147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390613918565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114a0611506565b836040518363ffffffff1660e01b81526004016114be929190613e07565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190613e45565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461153f9061389b565b80601f016020809104026020016040519081016040528092919081815260200182805461156b9061389b565b80156115b85780601f1061158d576101008083540402835291602001916115b8565b820191906000526020600020905b81548152906001019060200180831161159b57829003601f168201915b5050505050905090565b6115ca611c68565b73ffffffffffffffffffffffffffffffffffffffff166115e8611506565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613918565b60405180910390fd5b611646611506565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561168b573d6000803e3d6000fd5b5050565b6000806001600061169e611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613ee4565b60405180910390fd5b611778611766611c68565b85858461177391906139f9565b611c70565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117b6338484611e39565b6001905092915050565b6117c8611c68565b73ffffffffffffffffffffffffffffffffffffffff166117e6611506565b73ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183390613918565b60405180910390fd5b600760169054906101000a900460ff161561188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390613f50565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195a611c68565b73ffffffffffffffffffffffffffffffffffffffff16611978611506565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613918565b60405180910390fd5b600760169054906101000a900460ff1615611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613fe2565b60405180910390fd5b80600e8190555050565b611a30611c68565b73ffffffffffffffffffffffffffffffffffffffff16611a4e611506565b73ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613918565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90614074565b60405180910390fd5b611b1c81612729565b50565b611b27611c68565b73ffffffffffffffffffffffffffffffffffffffff16611b45611506565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613918565b60405180910390fd5b60005b8151811015611c2c57600160146000848481518110611bc057611bbf613a2d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c2490613a5c565b915050611b9e565b5050565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590614198565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2c91906134fc565b60405180910390a3505050565b60008111611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061422a565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f205750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f7557600760169054906101000a900460ff16611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90614296565b60405180910390fd5b5b611f7d611506565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611fbf57611fba8383836127ef565b612724565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120665750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207f5750600760149054906101000a900460ff16155b156120dd57600c548161209184610dc2565b61209b9190613aa4565b11156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614302565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121855750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121db5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f45750600760149054906101000a900460ff16155b156122a857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122a757600c548161225b84610dc2565b6122659190613aa4565b11156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614302565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123495750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123c757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b0576123ab838383612a6c565b612724565b633b9aca00436123c09190613aa4565b600e819055505b60008060006123d461327d565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247a5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124945750600e54600d546124919190613aa4565b43105b9050600760149054906101000a900460ff16806124fa5750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061254e5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255c5760009250612638565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156125b7575080155b156125dc576012600001546012600101546125d29190613aa4565b9450849350612637565b80612624576010600001546010600101546125f79190613aa4565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612636565b801561263557600f549450600f5493505b5b5b5b606484876126469190613c56565b6126509190614351565b9250600760159054906101000a900460ff1680156126bc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156126cc576126cb8583612c9b565b5b6126e2888885896126dd91906139f9565b6127ef565b600083111561271e57600085111561271d576000606486886127049190613c56565b61270e9190614351565b905061271b8930836127ef565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612855906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614486565b60405180910390fd5b6128d8838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590614518565b60405180910390fd5b818161296a91906139f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129fa9190613aa4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5e91906134fc565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190614486565b60405180910390fd5b612b55838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c299190613aa4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c8d91906134fc565b60405180910390a350505050565b600760149054906101000a900460ff16612e5d576001600760146101000a81548160ff0219169083151502179055506000820315612e41576000612cde30610dc2565b90506009548110612e3f5760016009541115612cfa5760095490505b6000600284612d099190613c56565b9050600081846020015184612d1e9190613c56565b612d289190614351565b905060008184612d3891906139f9565b90506000479050612d4882612e66565b60008147612d5691906139f9565b90506000876020015186612d6a91906139f9565b82612d759190614351565b90506000886020015182612d899190613c56565b90506000811115612d9f57612d9e86826130a9565b5b600080600e5443612db091906139f9565b119050600081612dc1576000612dde565b8a60000151600285612dd39190613c56565b612ddd9190613c56565b5b90506000811115612e3557612e3481600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661318990919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff811115612e8357612e8261356f565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090503081600081518110612ec957612ec8613a2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f949190613cad565b81600181518110612fa857612fa7613a2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130739594939291906145f6565b600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b505050505050565b6130d630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161313f96959493929190613d3e565b60606040518083038185885af115801561315d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131829190613db4565b5050505050565b804710156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061469c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516131f2906146ed565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b5050905080613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f90614774565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133888261335d565b9050919050565b6133988161337d565b81146133a357600080fd5b50565b6000813590506133b58161338f565b92915050565b6000819050919050565b6133ce816133bb565b81146133d957600080fd5b50565b6000813590506133eb816133c5565b92915050565b6000806040838503121561340857613407613353565b5b6000613416858286016133a6565b9250506020613427858286016133dc565b9150509250929050565b60008115159050919050565b61344681613431565b82525050565b6000602082019050613461600083018461343d565b92915050565b61347081613431565b811461347b57600080fd5b50565b60008135905061348d81613467565b92915050565b6000602082840312156134a9576134a8613353565b5b60006134b78482850161347e565b91505092915050565b6000602082840312156134d6576134d5613353565b5b60006134e4848285016133a6565b91505092915050565b6134f6816133bb565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000806000606084860312156135305761352f613353565b5b600061353e868287016133a6565b935050602061354f868287016133a6565b9250506040613560868287016133dc565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135a7826132dd565b810181811067ffffffffffffffff821117156135c6576135c561356f565b5b80604052505050565b60006135d9613349565b90506135e5828261359e565b919050565b600067ffffffffffffffff8211156136055761360461356f565b5b602082029050602081019050919050565b600080fd5b600061362e613629846135ea565b6135cf565b9050808382526020820190506020840283018581111561365157613650613616565b5b835b8181101561367a578061366688826133a6565b845260208401935050602081019050613653565b5050509392505050565b600082601f8301126136995761369861356a565b5b81356136a984826020860161361b565b91505092915050565b6000602082840312156136c8576136c7613353565b5b600082013567ffffffffffffffff8111156136e6576136e5613358565b5b6136f284828501613684565b91505092915050565b600060ff82169050919050565b613711816136fb565b82525050565b600060208201905061372c6000830184613708565b92915050565b60006020828403121561374857613747613353565b5b6000613756848285016133dc565b91505092915050565b600060408201905061377460008301856134ed565b61378160208301846134ed565b9392505050565b6137918161337d565b82525050565b60006020820190506137ac6000830184613788565b92915050565b600080604083850312156137c9576137c8613353565b5b60006137d7858286016133a6565b92505060206137e8858286016133a6565b9150509250929050565b6000819050919050565b600061381761381261380d8461335d565b6137f2565b61335d565b9050919050565b6000613829826137fc565b9050919050565b600061383b8261381e565b9050919050565b61384b81613830565b82525050565b60006020820190506138666000830184613842565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b357607f821691505b6020821081036138c6576138c561386c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139026020836132a2565b915061390d826138cc565b602082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139946028836132a2565b915061399f82613938565b604082019050919050565b600060208201905081810360008301526139c381613987565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a04826133bb565b9150613a0f836133bb565b9250828203905081811115613a2757613a266139ca565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613a67826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a9957613a986139ca565b5b600182019050919050565b6000613aaf826133bb565b9150613aba836133bb565b9250828201905080821115613ad257613ad16139ca565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613b2f57808604811115613b0b57613b0a6139ca565b5b6001851615613b1a5780820291505b8081029050613b2885613ad8565b9450613aef565b94509492505050565b600082613b485760019050613c04565b81613b565760009050613c04565b8160018114613b6c5760028114613b7657613ba5565b6001915050613c04565b60ff841115613b8857613b876139ca565b5b8360020a915084821115613b9f57613b9e6139ca565b5b50613c04565b5060208310610133831016604e8410600b8410161715613bda5782820a905083811115613bd557613bd46139ca565b5b613c04565b613be78484846001613ae5565b92509050818404811115613bfe57613bfd6139ca565b5b81810290505b9392505050565b6000613c16826133bb565b9150613c21836136fb565b9250613c4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b38565b905092915050565b6000613c61826133bb565b9150613c6c836133bb565b9250828202613c7a816133bb565b91508282048414831517613c9157613c906139ca565b5b5092915050565b600081519050613ca78161338f565b92915050565b600060208284031215613cc357613cc2613353565b5b6000613cd184828501613c98565b91505092915050565b6000604082019050613cef6000830185613788565b613cfc6020830184613788565b9392505050565b6000819050919050565b6000613d28613d23613d1e84613d03565b6137f2565b6133bb565b9050919050565b613d3881613d0d565b82525050565b600060c082019050613d536000830189613788565b613d6060208301886134ed565b613d6d6040830187613d2f565b613d7a6060830186613d2f565b613d876080830185613788565b613d9460a08301846134ed565b979650505050505050565b600081519050613dae816133c5565b92915050565b600080600060608486031215613dcd57613dcc613353565b5b6000613ddb86828701613d9f565b9350506020613dec86828701613d9f565b9250506040613dfd86828701613d9f565b9150509250925092565b6000604082019050613e1c6000830185613788565b613e2960208301846134ed565b9392505050565b600081519050613e3f81613467565b92915050565b600060208284031215613e5b57613e5a613353565b5b6000613e6984828501613e30565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ece6025836132a2565b9150613ed982613e72565b604082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613f3a601a836132a2565b9150613f4582613f04565b602082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6025836132a2565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061405e6026836132a2565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140f06024836132a2565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141826022836132a2565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836132a2565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142806013836132a2565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006142ec6020836132a2565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435c826133bb565b9150614367836133bb565b92508261437757614376614322565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143de6025836132a2565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144706023836132a2565b915061447b82614414565b604082019050919050565b6000602082019050818103600083015261449f81614463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145026026836132a2565b915061450d826144a6565b604082019050919050565b60006020820190508181036000830152614531816144f5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61456d8161337d565b82525050565b600061457f8383614564565b60208301905092915050565b6000602082019050919050565b60006145a382614538565b6145ad8185614543565b93506145b883614554565b8060005b838110156145e95781516145d08882614573565b97506145db8361458b565b9250506001810190506145bc565b5085935050505092915050565b600060a08201905061460b60008301886134ed565b6146186020830187613d2f565b818103604083015261462a8186614598565b90506146396060830185613788565b61464660808301846134ed565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614686601d836132a2565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b600081905092915050565b50565b60006146d76000836146bc565b91506146e2826146c7565b600082019050919050565b60006146f8826146ca565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061475e603a836132a2565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b905091905056fea2646970667358221220d9aa69304d8eee87a30270609f0c9e3f92c5e553b379c1d6e5a259ac5687d59464736f6c63430008130033

Deployed Bytecode Sourcemap

8806:10992:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2183:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16816:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16985:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9834:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2522:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10433:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18513:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2415:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10889:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17145:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9037:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18067:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9397:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2644:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7469:94;;;;;;;;;;;;;:::i;:::-;;9750:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16683:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18185:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9573:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17516:537;;;:::i;:::-;;19259:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7246:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2297:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19624:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11145:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8919:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11563:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19400:218;;;;;;;;;;;;;:::i;:::-;;3015:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17332:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7571:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18307:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9789:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8891:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2183:100;2237:13;2270:5;2263:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2183:100;:::o;16816:161::-;16891:4;16908:39;16917:12;:10;:12::i;:::-;16931:7;16940:6;16908:8;:39::i;:::-;16965:4;16958:11;;16816:161;;;;:::o;16985:152::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17124:5:::1;17103:18;;:26;;;;;;;;;;;;;;;;;;16985:152:::0;:::o;9834:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;2522:108::-;2583:7;2610:12;;2603:19;;2522:108;:::o;10433:448::-;10565:4;10582:36;10592:6;10600:9;10611:6;10582:9;:36::i;:::-;10631:24;10658:11;:19;10670:6;10658:19;;;;;;;;;;;;;;;:33;10678:12;:10;:12::i;:::-;10658:33;;;;;;;;;;;;;;;;10631:60;;10730:6;10710:16;:26;;10702:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10792:57;10801:6;10809:12;:10;:12::i;:::-;10842:6;10823:16;:25;;;;:::i;:::-;10792:8;:57::i;:::-;10869:4;10862:11;;;10433:448;;;;;:::o;18513:202::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18604:9:::1;18599:109;18623:8;:15;18619:1;:19;18599:109;;;18691:5;18660:15;:28;18676:8;18685:1;18676:11;;;;;;;;:::i;:::-;;;;;;;;18660:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18640:3;;;;;:::i;:::-;;;;18599:109;;;;18513:202:::0;:::o;2415:93::-;2473:5;2498:2;2491:9;;2415:93;:::o;10889:248::-;11005:4;11027:80;11036:12;:10;:12::i;:::-;11050:7;11096:10;11059:11;:25;11071:12;:10;:12::i;:::-;11059:25;;;;;;;;;;;;;;;:34;11085:7;11059:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11027:8;:80::i;:::-;11125:4;11118:11;;10889:248;;;;:::o;17145:177::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17304:10:::1;:8;:10::i;:::-;17300:2;:14;;;;:::i;:::-;17287:10;:27;;;;:::i;:::-;17261:23;:53;;;;17145:177:::0;:::o;9037:34::-;;;;;;;;;;;;;:::o;18067:110::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18165:4:::1;18137:15;:25;18153:8;18137:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18067:110:::0;:::o;9397:54::-;;;;:::o;2644:127::-;2718:7;2745:9;:18;2755:7;2745:18;;;;;;;;;;;;;;;;2738:25;;2644:127;;;:::o;7469:94::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7534:21:::1;7552:1;7534:9;:21::i;:::-;7469:94::o:0;9750:32::-;;;;;;;;;;;;;;:::o;16683:127::-;16735:4;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16768:12:::1;;16751:14;:29;;;;16798:4;16791:11;;16683:127:::0;:::o;18185:114::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18286:5:::1;18258:15;:25;18274:8;18258:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18185:114:::0;:::o;9573:79::-;9610:42;9573:79;:::o;17516:537::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17575:15:::1;17601:42;17575:69;;17700:13;17725:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17716:38;;;17763:4;17770:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17716:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17700:85;;17807:7;17798:6;;:16;;;;;;;;;;;;;;;;;;17832:5;17825:4;;:12;;;;;;;;;;;;;;;;;;17904:17;17858:11;:26;17878:4;17858:26;;;;;;;;;;;;;;;:43;17893:6;;;;;;;;;;;17858:43;;;;;;;;;;;;;;;:63;;;;17934:6;;;;;;;;;;;:22;;;17964:9;17983:4;17989:24;18007:4;17989:9;:24::i;:::-;18014:1;18016::::0;18018:10:::1;18029:15;17934:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17562:491;;17516:537::o:0;19259:135::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19351:8:::1;19344:25;;;19370:7;:5;:7::i;:::-;19379:6;19344:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19259:135:::0;;:::o;7246:87::-;7292:7;7319:6;;;;;;;;;;;7312:13;;7246:87;:::o;2297:104::-;2353:13;2386:7;2379:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2297:104;:::o;19624:112::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19700:7:::1;:5;:7::i;:::-;19692:25;;:36;19718:9;19692:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19624:112:::0;:::o;11145:410::-;11266:4;11288:24;11315:11;:25;11327:12;:10;:12::i;:::-;11315:25;;;;;;;;;;;;;;;:34;11341:7;11315:34;;;;;;;;;;;;;;;;11288:61;;11388:15;11368:16;:35;;11360:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11456:67;11465:12;:10;:12::i;:::-;11479:7;11507:15;11488:16;:34;;;;:::i;:::-;11456:8;:67::i;:::-;11543:4;11536:11;;;11145:410;;;;:::o;8919:19::-;;;;;;;;;;;;;:::o;11563:165::-;11641:4;11658:40;11668:10;11680:9;11691:6;11658:9;:40::i;:::-;11716:4;11709:11;;11563:165;;;;:::o;19400:218::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19458:14:::1;;;;;;;;;;;19457:15;19449:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;19531:4;19514:14;;:21;;;;;;;;;;;;;;;;;;19567:4;19546:18;;:25;;;;;;;;;;;;;;;;;;19598:12;19582:13;:28;;;;19400:218::o:0;3015:201::-;3149:7;3181:11;:18;3193:5;3181:18;;;;;;;;;;;;;;;:27;3200:7;3181:27;;;;;;;;;;;;;;;;3174:34;;3015:201;;;;:::o;17332:177::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17414:14:::1;;;;;;;;;;;17413:15;17405:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17492:9;17481:8;:20;;;;17332:177:::0;:::o;7571:192::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7680:1:::1;7660:22;;:8;:22;;::::0;7652:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7736:19;7746:8;7736:9;:19::i;:::-;7571:192:::0;:::o;18307:198::-;7392:12;:10;:12::i;:::-;7381:23;;:7;:5;:7::i;:::-;:23;;;7373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18395:9:::1;18390:108;18414:8;:15;18410:1;:19;18390:108;;;18482:4;18451:15;:28;18467:8;18476:1;18467:11;;;;;;;;:::i;:::-;;;;;;;;18451:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18431:3;;;;;:::i;:::-;;;;18390:108;;;;18307:198:::0;:::o;9789:36::-;;;;;;;;;;;;;;:::o;8891:21::-;;;;;;;;;;;;;:::o;268:98::-;321:7;348:10;341:17;;268:98;:::o;6140:380::-;6293:1;6276:19;;:5;:19;;;6268:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6374:1;6355:21;;:7;:21;;;6347:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6458:6;6428:11;:18;6440:5;6428:18;;;;;;;;;;;;;;;:27;6447:7;6428:27;;;;;;;;;;;;;;;:36;;;;6496:7;6480:32;;6489:5;6480:32;;;6505:6;6480:32;;;;;;:::i;:::-;;;;;;;;6140:380;;;:::o;11736:2923::-;11886:1;11877:6;:10;11869:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11951:15;:23;11967:6;11951:23;;;;;;;;;;;;;;;;;;;;;;;;;11950:24;:55;;;;;11979:15;:26;11995:9;11979:26;;;;;;;;;;;;;;;;;;;;;;;;;11978:27;11950:55;11946:134;;;12030:14;;;;;;;;;;;12022:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11946:134;12109:7;:5;:7::i;:::-;12096:20;;:9;:20;;;12092:116;;12133:42;12149:6;12157:9;12168:6;12133:15;:42::i;:::-;12190:7;;12092:116;12234:4;;;;;;;;;;;12224:14;;:6;:14;;;:45;;;;;12243:15;:26;12259:9;12243:26;;;;;;;;;;;;;;;;;;;;;;;;;12242:27;12224:45;:65;;;;;12274:15;;;;;;;;;;;12273:16;12224:65;12220:221;;;12347:14;;12337:6;12314:20;12324:9;12314;:20::i;:::-;:29;;;;:::i;:::-;:47;;12306:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;12220:221;12467:4;;;;;;;;;;;12457:14;;:6;:14;;;;:45;;;;;12476:15;:26;12492:9;12476:26;;;;;;;;;;;;;;;;;;;;;;;;;12475:27;12457:45;:73;;;;;12507:15;:23;12523:6;12507:23;;;;;;;;;;;;;;;;;;;;;;;;;12506:24;12457:73;:93;;;;;12535:15;;;;;;;;;;;12534:16;12457:93;12453:327;;;12597:4;;;;;;;;;;;12584:17;;:9;:17;;;12580:189;;12663:14;;12653:6;12630:20;12640:9;12630;:20::i;:::-;:29;;;;:::i;:::-;:47;;12622:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;12580:189;12453:327;12796:15;:23;12812:6;12796:23;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;12823:15;:26;12839:9;12823:26;;;;;;;;;;;;;;;;;;;;;;;;;12796:53;12792:286;;;12869:15;:23;12885:6;12869:23;;;;;;;;;;;;;;;;;;;;;;;;;12866:201;;;12913:42;12928:6;12936:9;12948:6;12913:14;:42::i;:::-;12974:7;;12866:201;13048:3;13033:12;:18;;;;:::i;:::-;13022:8;:29;;;;12792:286;13090:15;13116:14;13141:11;13163:25;;:::i;:::-;13201:17;13222:15;:23;13238:6;13222:23;;;;;;;;;;;;;;;;;;;;;;;;;13221:24;:68;;;;;13263:15;:26;13279:9;13263:26;;;;;;;;;;;;;;;;;;;;;;;;;13262:27;13221:68;:124;;;;;13337:8;;13321:13;;:24;;;;:::i;:::-;13306:12;:39;13221:124;13201:144;;13433:15;;;;;;;;;;;:42;;;;13452:15;:23;13468:6;13452:23;;;;;;;;;;;;;;;;;;;;;;;;;13433:42;:72;;;;13479:15;:26;13495:9;13479:26;;;;;;;;;;;;;;;;;;;;;;;;;13433:72;13429:646;;;13540:1;13534:7;;13429:646;;;13610:4;;;;;;;;;;;13597:17;;:9;:17;;;:34;;;;;13619:12;13618:13;13597:34;13593:482;;;13714:9;:19;;;13675:9;:19;;;:58;;;;:::i;:::-;13648:85;;13757:7;13748:16;;13593:482;;;13787:12;13782:293;;13878:5;:15;;;13843:5;:15;;;:50;;;;:::i;:::-;13816:77;;13918:7;13909:16;;13955:5;13940:20;;;;;;;;;;;;;;;;;;;;;;;;;;;13782:293;;;13982:12;13978:97;;;14021:9;;14011:19;;14054:9;;14045:18;;13978:97;13782:293;13593:482;13429:646;14113:3;14103:6;14094;:15;;;;:::i;:::-;14093:23;;;;:::i;:::-;14087:29;;14230:18;;;;;;;;;;;:36;;;;;14262:4;;;;;;;;;;;14252:14;;:6;:14;;;;14230:36;14226:76;;;14268:34;14280:7;14289:12;14268:11;:34::i;:::-;14226:76;14344:48;14360:6;14368:9;14388:3;14379:6;:12;;;;:::i;:::-;14344:15;:48::i;:::-;14413:1;14407:3;:7;14403:249;;;14489:1;14479:7;:11;14475:164;;;14511:17;14552:3;14541:7;14532:6;:16;;;;:::i;:::-;14531:24;;;;:::i;:::-;14511:44;;14574:49;14590:6;14606:4;14613:9;14574:15;:49::i;:::-;14492:147;14475:164;14403:249;11858:2801;;;;;11736:2923;;;;:::o;7771:173::-;7827:16;7846:6;;;;;;;;;;;7827:25;;7872:8;7863:6;;:17;;;;;;;;;;;;;;;;;;7927:8;7896:40;;7917:8;7896:40;;;;;;;;;;;;7816:128;7771:173;:::o;5120:638::-;5278:1;5260:20;;:6;:20;;;5252:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5362:1;5341:23;;:9;:23;;;5333:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5417:47;5438:6;5446:9;5457:6;5417:20;:47::i;:::-;5477:21;5501:9;:17;5511:6;5501:17;;;;;;;;;;;;;;;;5477:41;;5554:6;5537:13;:23;;5529:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5650:6;5634:13;:22;;;;:::i;:::-;5614:9;:17;5624:6;5614:17;;;;;;;;;;;;;;;:42;;;;5691:6;5667:9;:20;5677:9;5667:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5732:9;5715:35;;5724:6;5715:35;;;5743:6;5715:35;;;;;;:::i;:::-;;;;;;;;5241:517;5120:638;;;:::o;3407:549::-;3564:1;3546:20;;:6;:20;;;3538:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3648:1;3627:23;;:9;:23;;;3619:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3703:47;3724:6;3732:9;3743:6;3703:20;:47::i;:::-;3769:21;3793:9;:17;3803:6;3793:17;;;;;;;;;;;;;;;;3769:41;;3841:13;3821:9;:17;3831:6;3821:17;;;;;;;;;;;;;;;:33;;;;3889:6;3865:9;:20;3875:9;3865:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;3930:9;3913:35;;3922:6;3913:35;;;3941:6;3913:35;;;;;;:::i;:::-;;;;;;;;3527:429;3407:549;;;:::o;14667:1502::-;9927:15;;;;;;;;;;;9922:125;;9977:4;9959:15;;:22;;;;;;;;;;;;;;;;;;14771:1:::1;14760:7;:12:::0;14757:49;14788:7:::1;14757:49;14818:23;14844:24;14862:4;14844:9;:24::i;:::-;14818:50;;14902:23;;14883:15;:42;14879:1283;;14972:1;14946:23;;:27;14942:109;;;15012:23;;14994:41;;14942:109;15122:19;15154:1;15144:7;:11;;;;:::i;:::-;15122:33;;15170:32;15264:11;15224:9;:19;;;15206:15;:37;;;;:::i;:::-;15205:70;;;;:::i;:::-;15170:105;;15290:14;15325:24;15307:15;:42;;;;:::i;:::-;15290:59;;15366:22;15391:21;15366:46;;15429:24;15446:6;15429:16;:24::i;:::-;15470:20;15517:14;15493:21;:38;;;;:::i;:::-;15470:61;;15546:19;15598:9;:19;;;15584:11;:33;;;;:::i;:::-;15568:12;:50;;;;:::i;:::-;15546:72;;15633:29;15679:9;:19;;;15665:11;:33;;;;:::i;:::-;15633:65;;15743:1;15719:21;:25;15715:161;;;15799:61;15812:24;15838:21;15799:12;:61::i;:::-;15715:161;15892:15;15936:1:::0;15925:8:::1;;15910:12;:23;;;;:::i;:::-;:27;15892:45;;15954:20;15977:10;:54;;16030:1;15977:54;;;16008:9;:19;;;16004:1;15990:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;15977:54;15954:77;;16065:1;16050:12;:16;16046:103;;;16087:46;16120:12;16095:13;;;;;;;;;;;16087:32;;;;:46;;;;:::i;:::-;16046:103;14927:1235;;;;;;;;;14879:1283;14747:1422;9996:1;10030:5:::0;10012:15;;:23;;;;;;;;;;;;;;;;;;9922:125;14667:1502;;:::o;6534:125::-;;;;:::o;18723:526::-;18841:21;18879:1;18865:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18841:40;;18910:4;18892;18897:1;18892:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18936:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18926:4;18931:1;18926:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18962:53;18979:4;18994:6;;;;;;;;;;;19003:11;18962:8;:53::i;:::-;19054:6;;;;;;;;;;;:57;;;19126:11;19152:1;19168:4;19195;19215:15;19054:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18778:471;18723:526;:::o;16175:500::-;16323:53;16340:4;16355:6;;;;;;;;;;;16364:11;16323:8;:53::i;:::-;16419:6;;;;;;;;;;;:22;;;16450:9;16484:4;16504:11;16530:1;16573;9610:42;16641:15;16419:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16175:500;;:::o;6689:319::-;6804:6;6779:21;:31;;6771:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6858:12;6876:9;:14;;6899:6;6876:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6857:54;;;6930:7;6922:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6760:248;6689:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:329::-;4095:6;4144:2;4132:9;4123:7;4119:23;4115:32;4112:119;;;4150:79;;:::i;:::-;4112:119;4270:1;4295:53;4340:7;4331:6;4320:9;4316:22;4295:53;:::i;:::-;4285:63;;4241:117;4036:329;;;;:::o;4371:118::-;4458:24;4476:5;4458:24;:::i;:::-;4453:3;4446:37;4371:118;;:::o;4495:222::-;4588:4;4626:2;4615:9;4611:18;4603:26;;4639:71;4707:1;4696:9;4692:17;4683:6;4639:71;:::i;:::-;4495:222;;;;:::o;4723:619::-;4800:6;4808;4816;4865:2;4853:9;4844:7;4840:23;4836:32;4833:119;;;4871:79;;:::i;:::-;4833:119;4991:1;5016:53;5061:7;5052:6;5041:9;5037:22;5016:53;:::i;:::-;5006:63;;4962:117;5118:2;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5089:118;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4723:619;;;;;:::o;5348:117::-;5457:1;5454;5447:12;5471:180;5519:77;5516:1;5509:88;5616:4;5613:1;5606:15;5640:4;5637:1;5630:15;5657:281;5740:27;5762:4;5740:27;:::i;:::-;5732:6;5728:40;5870:6;5858:10;5855:22;5834:18;5822:10;5819:34;5816:62;5813:88;;;5881:18;;:::i;:::-;5813:88;5921:10;5917:2;5910:22;5700:238;5657:281;;:::o;5944:129::-;5978:6;6005:20;;:::i;:::-;5995:30;;6034:33;6062:4;6054:6;6034:33;:::i;:::-;5944:129;;;:::o;6079:311::-;6156:4;6246:18;6238:6;6235:30;6232:56;;;6268:18;;:::i;:::-;6232:56;6318:4;6310:6;6306:17;6298:25;;6378:4;6372;6368:15;6360:23;;6079:311;;;:::o;6396:117::-;6505:1;6502;6495:12;6536:710;6632:5;6657:81;6673:64;6730:6;6673:64;:::i;:::-;6657:81;:::i;:::-;6648:90;;6758:5;6787:6;6780:5;6773:21;6821:4;6814:5;6810:16;6803:23;;6874:4;6866:6;6862:17;6854:6;6850:30;6903:3;6895:6;6892:15;6889:122;;;6922:79;;:::i;:::-;6889:122;7037:6;7020:220;7054:6;7049:3;7046:15;7020:220;;;7129:3;7158:37;7191:3;7179:10;7158:37;:::i;:::-;7153:3;7146:50;7225:4;7220:3;7216:14;7209:21;;7096:144;7080:4;7075:3;7071:14;7064:21;;7020:220;;;7024:21;6638:608;;6536:710;;;;;:::o;7269:370::-;7340:5;7389:3;7382:4;7374:6;7370:17;7366:27;7356:122;;7397:79;;:::i;:::-;7356:122;7514:6;7501:20;7539:94;7629:3;7621:6;7614:4;7606:6;7602:17;7539:94;:::i;:::-;7530:103;;7346:293;7269:370;;;;:::o;7645:539::-;7729:6;7778:2;7766:9;7757:7;7753:23;7749:32;7746:119;;;7784:79;;:::i;:::-;7746:119;7932:1;7921:9;7917:17;7904:31;7962:18;7954:6;7951:30;7948:117;;;7984:79;;:::i;:::-;7948:117;8089:78;8159:7;8150:6;8139:9;8135:22;8089:78;:::i;:::-;8079:88;;7875:302;7645:539;;;;:::o;8190:86::-;8225:7;8265:4;8258:5;8254:16;8243:27;;8190:86;;;:::o;8282:112::-;8365:22;8381:5;8365:22;:::i;:::-;8360:3;8353:35;8282:112;;:::o;8400:214::-;8489:4;8527:2;8516:9;8512:18;8504:26;;8540:67;8604:1;8593:9;8589:17;8580:6;8540:67;:::i;:::-;8400:214;;;;:::o;8620:329::-;8679:6;8728:2;8716:9;8707:7;8703:23;8699:32;8696:119;;;8734:79;;:::i;:::-;8696:119;8854:1;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8825:117;8620:329;;;;:::o;8955:332::-;9076:4;9114:2;9103:9;9099:18;9091:26;;9127:71;9195:1;9184:9;9180:17;9171:6;9127:71;:::i;:::-;9208:72;9276:2;9265:9;9261:18;9252:6;9208:72;:::i;:::-;8955:332;;;;;:::o;9293:118::-;9380:24;9398:5;9380:24;:::i;:::-;9375:3;9368:37;9293:118;;:::o;9417:222::-;9510:4;9548:2;9537:9;9533:18;9525:26;;9561:71;9629:1;9618:9;9614:17;9605:6;9561:71;:::i;:::-;9417:222;;;;:::o;9645:474::-;9713:6;9721;9770:2;9758:9;9749:7;9745:23;9741:32;9738:119;;;9776:79;;:::i;:::-;9738:119;9896:1;9921:53;9966:7;9957:6;9946:9;9942:22;9921:53;:::i;:::-;9911:63;;9867:117;10023:2;10049:53;10094:7;10085:6;10074:9;10070:22;10049:53;:::i;:::-;10039:63;;9994:118;9645:474;;;;;:::o;10125:60::-;10153:3;10174:5;10167:12;;10125:60;;;:::o;10191:142::-;10241:9;10274:53;10292:34;10301:24;10319:5;10301:24;:::i;:::-;10292:34;:::i;:::-;10274:53;:::i;:::-;10261:66;;10191:142;;;:::o;10339:126::-;10389:9;10422:37;10453:5;10422:37;:::i;:::-;10409:50;;10339:126;;;:::o;10471:141::-;10536:9;10569:37;10600:5;10569:37;:::i;:::-;10556:50;;10471:141;;;:::o;10618:161::-;10720:52;10766:5;10720:52;:::i;:::-;10715:3;10708:65;10618:161;;:::o;10785:252::-;10893:4;10931:2;10920:9;10916:18;10908:26;;10944:86;11027:1;11016:9;11012:17;11003:6;10944:86;:::i;:::-;10785:252;;;;:::o;11043:180::-;11091:77;11088:1;11081:88;11188:4;11185:1;11178:15;11212:4;11209:1;11202:15;11229:320;11273:6;11310:1;11304:4;11300:12;11290:22;;11357:1;11351:4;11347:12;11378:18;11368:81;;11434:4;11426:6;11422:17;11412:27;;11368:81;11496:2;11488:6;11485:14;11465:18;11462:38;11459:84;;11515:18;;:::i;:::-;11459:84;11280:269;11229:320;;;:::o;11555:182::-;11695:34;11691:1;11683:6;11679:14;11672:58;11555:182;:::o;11743:366::-;11885:3;11906:67;11970:2;11965:3;11906:67;:::i;:::-;11899:74;;11982:93;12071:3;11982:93;:::i;:::-;12100:2;12095:3;12091:12;12084:19;;11743:366;;;:::o;12115:419::-;12281:4;12319:2;12308:9;12304:18;12296:26;;12368:9;12362:4;12358:20;12354:1;12343:9;12339:17;12332:47;12396:131;12522:4;12396:131;:::i;:::-;12388:139;;12115:419;;;:::o;12540:227::-;12680:34;12676:1;12668:6;12664:14;12657:58;12749:10;12744:2;12736:6;12732:15;12725:35;12540:227;:::o;12773:366::-;12915:3;12936:67;13000:2;12995:3;12936:67;:::i;:::-;12929:74;;13012:93;13101:3;13012:93;:::i;:::-;13130:2;13125:3;13121:12;13114:19;;12773:366;;;:::o;13145:419::-;13311:4;13349:2;13338:9;13334:18;13326:26;;13398:9;13392:4;13388:20;13384:1;13373:9;13369:17;13362:47;13426:131;13552:4;13426:131;:::i;:::-;13418:139;;13145:419;;;:::o;13570:180::-;13618:77;13615:1;13608:88;13715:4;13712:1;13705:15;13739:4;13736:1;13729:15;13756:194;13796:4;13816:20;13834:1;13816:20;:::i;:::-;13811:25;;13850:20;13868:1;13850:20;:::i;:::-;13845:25;;13894:1;13891;13887:9;13879:17;;13918:1;13912:4;13909:11;13906:37;;;13923:18;;:::i;:::-;13906:37;13756:194;;;;:::o;13956:180::-;14004:77;14001:1;13994:88;14101:4;14098:1;14091:15;14125:4;14122:1;14115:15;14142:233;14181:3;14204:24;14222:5;14204:24;:::i;:::-;14195:33;;14250:66;14243:5;14240:77;14237:103;;14320:18;;:::i;:::-;14237:103;14367:1;14360:5;14356:13;14349:20;;14142:233;;;:::o;14381:191::-;14421:3;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14474:20;14492:1;14474:20;:::i;:::-;14469:25;;14517:1;14514;14510:9;14503:16;;14538:3;14535:1;14532:10;14529:36;;;14545:18;;:::i;:::-;14529:36;14381:191;;;;:::o;14578:102::-;14620:8;14667:5;14664:1;14660:13;14639:34;;14578:102;;;:::o;14686:848::-;14747:5;14754:4;14778:6;14769:15;;14802:5;14793:14;;14816:712;14837:1;14827:8;14824:15;14816:712;;;14932:4;14927:3;14923:14;14917:4;14914:24;14911:50;;;14941:18;;:::i;:::-;14911:50;14991:1;14981:8;14977:16;14974:451;;;15406:4;15399:5;15395:16;15386:25;;14974:451;15456:4;15450;15446:15;15438:23;;15486:32;15509:8;15486:32;:::i;:::-;15474:44;;14816:712;;;14686:848;;;;;;;:::o;15540:1073::-;15594:5;15785:8;15775:40;;15806:1;15797:10;;15808:5;;15775:40;15834:4;15824:36;;15851:1;15842:10;;15853:5;;15824:36;15920:4;15968:1;15963:27;;;;16004:1;15999:191;;;;15913:277;;15963:27;15981:1;15972:10;;15983:5;;;15999:191;16044:3;16034:8;16031:17;16028:43;;;16051:18;;:::i;:::-;16028:43;16100:8;16097:1;16093:16;16084:25;;16135:3;16128:5;16125:14;16122:40;;;16142:18;;:::i;:::-;16122:40;16175:5;;;15913:277;;16299:2;16289:8;16286:16;16280:3;16274:4;16271:13;16267:36;16249:2;16239:8;16236:16;16231:2;16225:4;16222:12;16218:35;16202:111;16199:246;;;16355:8;16349:4;16345:19;16336:28;;16390:3;16383:5;16380:14;16377:40;;;16397:18;;:::i;:::-;16377:40;16430:5;;16199:246;16470:42;16508:3;16498:8;16492:4;16489:1;16470:42;:::i;:::-;16455:57;;;;16544:4;16539:3;16535:14;16528:5;16525:25;16522:51;;;16553:18;;:::i;:::-;16522:51;16602:4;16595:5;16591:16;16582:25;;15540:1073;;;;;;:::o;16619:281::-;16677:5;16701:23;16719:4;16701:23;:::i;:::-;16693:31;;16745:25;16761:8;16745:25;:::i;:::-;16733:37;;16789:104;16826:66;16816:8;16810:4;16789:104;:::i;:::-;16780:113;;16619:281;;;;:::o;16906:410::-;16946:7;16969:20;16987:1;16969:20;:::i;:::-;16964:25;;17003:20;17021:1;17003:20;:::i;:::-;16998:25;;17058:1;17055;17051:9;17080:30;17098:11;17080:30;:::i;:::-;17069:41;;17259:1;17250:7;17246:15;17243:1;17240:22;17220:1;17213:9;17193:83;17170:139;;17289:18;;:::i;:::-;17170:139;16954:362;16906:410;;;;:::o;17322:143::-;17379:5;17410:6;17404:13;17395:22;;17426:33;17453:5;17426:33;:::i;:::-;17322:143;;;;:::o;17471:351::-;17541:6;17590:2;17578:9;17569:7;17565:23;17561:32;17558:119;;;17596:79;;:::i;:::-;17558:119;17716:1;17741:64;17797:7;17788:6;17777:9;17773:22;17741:64;:::i;:::-;17731:74;;17687:128;17471:351;;;;:::o;17828:332::-;17949:4;17987:2;17976:9;17972:18;17964:26;;18000:71;18068:1;18057:9;18053:17;18044:6;18000:71;:::i;:::-;18081:72;18149:2;18138:9;18134:18;18125:6;18081:72;:::i;:::-;17828:332;;;;;:::o;18166:85::-;18211:7;18240:5;18229:16;;18166:85;;;:::o;18257:158::-;18315:9;18348:61;18366:42;18375:32;18401:5;18375:32;:::i;:::-;18366:42;:::i;:::-;18348:61;:::i;:::-;18335:74;;18257:158;;;:::o;18421:147::-;18516:45;18555:5;18516:45;:::i;:::-;18511:3;18504:58;18421:147;;:::o;18574:807::-;18823:4;18861:3;18850:9;18846:19;18838:27;;18875:71;18943:1;18932:9;18928:17;18919:6;18875:71;:::i;:::-;18956:72;19024:2;19013:9;19009:18;19000:6;18956:72;:::i;:::-;19038:80;19114:2;19103:9;19099:18;19090:6;19038:80;:::i;:::-;19128;19204:2;19193:9;19189:18;19180:6;19128:80;:::i;:::-;19218:73;19286:3;19275:9;19271:19;19262:6;19218:73;:::i;:::-;19301;19369:3;19358:9;19354:19;19345:6;19301:73;:::i;:::-;18574:807;;;;;;;;;:::o;19387:143::-;19444:5;19475:6;19469:13;19460:22;;19491:33;19518:5;19491:33;:::i;:::-;19387:143;;;;:::o;19536:663::-;19624:6;19632;19640;19689:2;19677:9;19668:7;19664:23;19660:32;19657:119;;;19695:79;;:::i;:::-;19657:119;19815:1;19840:64;19896:7;19887:6;19876:9;19872:22;19840:64;:::i;:::-;19830:74;;19786:128;19953:2;19979:64;20035:7;20026:6;20015:9;20011:22;19979:64;:::i;:::-;19969:74;;19924:129;20092:2;20118:64;20174:7;20165:6;20154:9;20150:22;20118:64;:::i;:::-;20108:74;;20063:129;19536:663;;;;;:::o;20205:332::-;20326:4;20364:2;20353:9;20349:18;20341:26;;20377:71;20445:1;20434:9;20430:17;20421:6;20377:71;:::i;:::-;20458:72;20526:2;20515:9;20511:18;20502:6;20458:72;:::i;:::-;20205:332;;;;;:::o;20543:137::-;20597:5;20628:6;20622:13;20613:22;;20644:30;20668:5;20644:30;:::i;:::-;20543:137;;;;:::o;20686:345::-;20753:6;20802:2;20790:9;20781:7;20777:23;20773:32;20770:119;;;20808:79;;:::i;:::-;20770:119;20928:1;20953:61;21006:7;20997:6;20986:9;20982:22;20953:61;:::i;:::-;20943:71;;20899:125;20686:345;;;;:::o;21037:224::-;21177:34;21173:1;21165:6;21161:14;21154:58;21246:7;21241:2;21233:6;21229:15;21222:32;21037:224;:::o;21267:366::-;21409:3;21430:67;21494:2;21489:3;21430:67;:::i;:::-;21423:74;;21506:93;21595:3;21506:93;:::i;:::-;21624:2;21619:3;21615:12;21608:19;;21267:366;;;:::o;21639:419::-;21805:4;21843:2;21832:9;21828:18;21820:26;;21892:9;21886:4;21882:20;21878:1;21867:9;21863:17;21856:47;21920:131;22046:4;21920:131;:::i;:::-;21912:139;;21639:419;;;:::o;22064:176::-;22204:28;22200:1;22192:6;22188:14;22181:52;22064:176;:::o;22246:366::-;22388:3;22409:67;22473:2;22468:3;22409:67;:::i;:::-;22402:74;;22485:93;22574:3;22485:93;:::i;:::-;22603:2;22598:3;22594:12;22587:19;;22246:366;;;:::o;22618:419::-;22784:4;22822:2;22811:9;22807:18;22799:26;;22871:9;22865:4;22861:20;22857:1;22846:9;22842:17;22835:47;22899:131;23025:4;22899:131;:::i;:::-;22891:139;;22618:419;;;:::o;23043:224::-;23183:34;23179:1;23171:6;23167:14;23160:58;23252:7;23247:2;23239:6;23235:15;23228:32;23043:224;:::o;23273:366::-;23415:3;23436:67;23500:2;23495:3;23436:67;:::i;:::-;23429:74;;23512:93;23601:3;23512:93;:::i;:::-;23630:2;23625:3;23621:12;23614:19;;23273:366;;;:::o;23645:419::-;23811:4;23849:2;23838:9;23834:18;23826:26;;23898:9;23892:4;23888:20;23884:1;23873:9;23869:17;23862:47;23926:131;24052:4;23926:131;:::i;:::-;23918:139;;23645:419;;;:::o;24070:225::-;24210:34;24206:1;24198:6;24194:14;24187:58;24279:8;24274:2;24266:6;24262:15;24255:33;24070:225;:::o;24301:366::-;24443:3;24464:67;24528:2;24523:3;24464:67;:::i;:::-;24457:74;;24540:93;24629:3;24540:93;:::i;:::-;24658:2;24653:3;24649:12;24642:19;;24301:366;;;:::o;24673:419::-;24839:4;24877:2;24866:9;24862:18;24854:26;;24926:9;24920:4;24916:20;24912:1;24901:9;24897:17;24890:47;24954:131;25080:4;24954:131;:::i;:::-;24946:139;;24673:419;;;:::o;25098:223::-;25238:34;25234:1;25226:6;25222:14;25215:58;25307:6;25302:2;25294:6;25290:15;25283:31;25098:223;:::o;25327:366::-;25469:3;25490:67;25554:2;25549:3;25490:67;:::i;:::-;25483:74;;25566:93;25655:3;25566:93;:::i;:::-;25684:2;25679:3;25675:12;25668:19;;25327:366;;;:::o;25699:419::-;25865:4;25903:2;25892:9;25888:18;25880:26;;25952:9;25946:4;25942:20;25938:1;25927:9;25923:17;25916:47;25980:131;26106:4;25980:131;:::i;:::-;25972:139;;25699:419;;;:::o;26124:221::-;26264:34;26260:1;26252:6;26248:14;26241:58;26333:4;26328:2;26320:6;26316:15;26309:29;26124:221;:::o;26351:366::-;26493:3;26514:67;26578:2;26573:3;26514:67;:::i;:::-;26507:74;;26590:93;26679:3;26590:93;:::i;:::-;26708:2;26703:3;26699:12;26692:19;;26351:366;;;:::o;26723:419::-;26889:4;26927:2;26916:9;26912:18;26904:26;;26976:9;26970:4;26966:20;26962:1;26951:9;26947:17;26940:47;27004:131;27130:4;27004:131;:::i;:::-;26996:139;;26723:419;;;:::o;27148:228::-;27288:34;27284:1;27276:6;27272:14;27265:58;27357:11;27352:2;27344:6;27340:15;27333:36;27148:228;:::o;27382:366::-;27524:3;27545:67;27609:2;27604:3;27545:67;:::i;:::-;27538:74;;27621:93;27710:3;27621:93;:::i;:::-;27739:2;27734:3;27730:12;27723:19;;27382:366;;;:::o;27754:419::-;27920:4;27958:2;27947:9;27943:18;27935:26;;28007:9;28001:4;27997:20;27993:1;27982:9;27978:17;27971:47;28035:131;28161:4;28035:131;:::i;:::-;28027:139;;27754:419;;;:::o;28179:169::-;28319:21;28315:1;28307:6;28303:14;28296:45;28179:169;:::o;28354:366::-;28496:3;28517:67;28581:2;28576:3;28517:67;:::i;:::-;28510:74;;28593:93;28682:3;28593:93;:::i;:::-;28711:2;28706:3;28702:12;28695:19;;28354:366;;;:::o;28726:419::-;28892:4;28930:2;28919:9;28915:18;28907:26;;28979:9;28973:4;28969:20;28965:1;28954:9;28950:17;28943:47;29007:131;29133:4;29007:131;:::i;:::-;28999:139;;28726:419;;;:::o;29151:182::-;29291:34;29287:1;29279:6;29275:14;29268:58;29151:182;:::o;29339:366::-;29481:3;29502:67;29566:2;29561:3;29502:67;:::i;:::-;29495:74;;29578:93;29667:3;29578:93;:::i;:::-;29696:2;29691:3;29687:12;29680:19;;29339:366;;;:::o;29711:419::-;29877:4;29915:2;29904:9;29900:18;29892:26;;29964:9;29958:4;29954:20;29950:1;29939:9;29935:17;29928:47;29992:131;30118:4;29992:131;:::i;:::-;29984:139;;29711:419;;;:::o;30136:180::-;30184:77;30181:1;30174:88;30281:4;30278:1;30271:15;30305:4;30302:1;30295:15;30322:185;30362:1;30379:20;30397:1;30379:20;:::i;:::-;30374:25;;30413:20;30431:1;30413:20;:::i;:::-;30408:25;;30452:1;30442:35;;30457:18;;:::i;:::-;30442:35;30499:1;30496;30492:9;30487:14;;30322:185;;;;:::o;30513:224::-;30653:34;30649:1;30641:6;30637:14;30630:58;30722:7;30717:2;30709:6;30705:15;30698:32;30513:224;:::o;30743:366::-;30885:3;30906:67;30970:2;30965:3;30906:67;:::i;:::-;30899:74;;30982:93;31071:3;30982:93;:::i;:::-;31100:2;31095:3;31091:12;31084:19;;30743:366;;;:::o;31115:419::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:222::-;31680:34;31676:1;31668:6;31664:14;31657:58;31749:5;31744:2;31736:6;31732:15;31725:30;31540:222;:::o;31768:366::-;31910:3;31931:67;31995:2;31990:3;31931:67;:::i;:::-;31924:74;;32007:93;32096:3;32007:93;:::i;:::-;32125:2;32120:3;32116:12;32109:19;;31768:366;;;:::o;32140:419::-;32306:4;32344:2;32333:9;32329:18;32321:26;;32393:9;32387:4;32383:20;32379:1;32368:9;32364:17;32357:47;32421:131;32547:4;32421:131;:::i;:::-;32413:139;;32140:419;;;:::o;32565:225::-;32705:34;32701:1;32693:6;32689:14;32682:58;32774:8;32769:2;32761:6;32757:15;32750:33;32565:225;:::o;32796:366::-;32938:3;32959:67;33023:2;33018:3;32959:67;:::i;:::-;32952:74;;33035:93;33124:3;33035:93;:::i;:::-;33153:2;33148:3;33144:12;33137:19;;32796:366;;;:::o;33168:419::-;33334:4;33372:2;33361:9;33357:18;33349:26;;33421:9;33415:4;33411:20;33407:1;33396:9;33392:17;33385:47;33449:131;33575:4;33449:131;:::i;:::-;33441:139;;33168:419;;;:::o;33593:114::-;33660:6;33694:5;33688:12;33678:22;;33593:114;;;:::o;33713:184::-;33812:11;33846:6;33841:3;33834:19;33886:4;33881:3;33877:14;33862:29;;33713:184;;;;:::o;33903:132::-;33970:4;33993:3;33985:11;;34023:4;34018:3;34014:14;34006:22;;33903:132;;;:::o;34041:108::-;34118:24;34136:5;34118:24;:::i;:::-;34113:3;34106:37;34041:108;;:::o;34155:179::-;34224:10;34245:46;34287:3;34279:6;34245:46;:::i;:::-;34323:4;34318:3;34314:14;34300:28;;34155:179;;;;:::o;34340:113::-;34410:4;34442;34437:3;34433:14;34425:22;;34340:113;;;:::o;34489:732::-;34608:3;34637:54;34685:5;34637:54;:::i;:::-;34707:86;34786:6;34781:3;34707:86;:::i;:::-;34700:93;;34817:56;34867:5;34817:56;:::i;:::-;34896:7;34927:1;34912:284;34937:6;34934:1;34931:13;34912:284;;;35013:6;35007:13;35040:63;35099:3;35084:13;35040:63;:::i;:::-;35033:70;;35126:60;35179:6;35126:60;:::i;:::-;35116:70;;34972:224;34959:1;34956;34952:9;34947:14;;34912:284;;;34916:14;35212:3;35205:10;;34613:608;;;34489:732;;;;:::o;35227:831::-;35490:4;35528:3;35517:9;35513:19;35505:27;;35542:71;35610:1;35599:9;35595:17;35586:6;35542:71;:::i;:::-;35623:80;35699:2;35688:9;35684:18;35675:6;35623:80;:::i;:::-;35750:9;35744:4;35740:20;35735:2;35724:9;35720:18;35713:48;35778:108;35881:4;35872:6;35778:108;:::i;:::-;35770:116;;35896:72;35964:2;35953:9;35949:18;35940:6;35896:72;:::i;:::-;35978:73;36046:3;36035:9;36031:19;36022:6;35978:73;:::i;:::-;35227:831;;;;;;;;:::o;36064:179::-;36204:31;36200:1;36192:6;36188:14;36181:55;36064:179;:::o;36249:366::-;36391:3;36412:67;36476:2;36471:3;36412:67;:::i;:::-;36405:74;;36488:93;36577:3;36488:93;:::i;:::-;36606:2;36601:3;36597:12;36590:19;;36249:366;;;:::o;36621:419::-;36787:4;36825:2;36814:9;36810:18;36802:26;;36874:9;36868:4;36864:20;36860:1;36849:9;36845:17;36838:47;36902:131;37028:4;36902:131;:::i;:::-;36894:139;;36621:419;;;:::o;37046:147::-;37147:11;37184:3;37169:18;;37046:147;;;;:::o;37199:114::-;;:::o;37319:398::-;37478:3;37499:83;37580:1;37575:3;37499:83;:::i;:::-;37492:90;;37591:93;37680:3;37591:93;:::i;:::-;37709:1;37704:3;37700:11;37693:18;;37319:398;;;:::o;37723:379::-;37907:3;37929:147;38072:3;37929:147;:::i;:::-;37922:154;;38093:3;38086:10;;37723:379;;;:::o;38108:245::-;38248:34;38244:1;38236:6;38232:14;38225:58;38317:28;38312:2;38304:6;38300:15;38293:53;38108:245;:::o;38359:366::-;38501:3;38522:67;38586:2;38581:3;38522:67;:::i;:::-;38515:74;;38598:93;38687:3;38598:93;:::i;:::-;38716:2;38711:3;38707:12;38700:19;;38359:366;;;:::o;38731:419::-;38897:4;38935:2;38924:9;38920:18;38912:26;;38984:9;38978:4;38974:20;38970:1;38959:9;38955:17;38948:47;39012:131;39138:4;39012:131;:::i;:::-;39004:139;;38731:419;;;:::o

Swarm Source

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