ETH Price: $3,272.55 (+0.38%)
Gas: 3 Gwei

Token

Oogway (OOGWAY)
 

Overview

Max Total Supply

400,000,000 OOGWAY

Holders

501

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
sos1usd.eth
Balance
2,000 OOGWAY

Value
$0.00
0x505D79c7379EE65B6c2D6D18a0e7aB901b00756C
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:
Oogway

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-02
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA,
     address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,   uint liquidity,
        uint amountAMin,  uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut,
     address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

interface IERC20 {
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);


    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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



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

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

    mapping(address => mapping(address => uint256)) private _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 viewtheSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }   

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

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




    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 allowances(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");
        unchecked {
            _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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(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 {}

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

contract Oogway is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair = 0x000000000000000000000000000000000000dEaD;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public WalletTransferTaxes;
    uint256 public tradingStart;
    uint256 public buyFee;
    uint256 public sellFee;
    bool    private EnableSwap;
    uint256 public swapTokensAtAmount;  
    bool    public swapWithLimit;

    bool    private tswapping;
    bool    public tradingEnabled;
    address private marketingWalletAdd = 0x000000000000000000000000000000000000dEaD;




    

    event BuyFeesUpdated(uint256 buyFee);
    event SellFeesUpdated(uint256 sellFee);
    event maxAmtUpdated(uint256 maxBuyAmount);
    event SwaporSend(uint256 tokensSwapped, uint256 valueReceived);


    constructor () ERC20("Oogway", "OOGWAY") 
    {   
        address newOwner = 0x1B8615fDCA0BB3288ad08561b881a1E56743AcE7;
        transferOwnership(newOwner);

        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // uniswapV2 Router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapV2Router = _uniswapV2Router;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[owner()] = true;

        buyFee = 0;  
        sellFee = 0;
        WalletTransferTaxes = 0;

        _initstart(owner(), 400000000 ether);
    }

    receive() external payable {}



    function swapLimits(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswapV2Router);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapV2Router = IUniswapV2Router02(newRouterAddress); 
        EnableSwap = true;
    }


    function marketingfunds() external {
      payable(marketingWalletAdd).transfer(address(this).balance);
    }




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

       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !tswapping &&
            from != uniswapV2Pair &&
            EnableSwap
        ) {
            tswapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swap(from,contractTokenBalance);        

            tswapping = false;
        }

        if (
            tradingEnabled && 
            from != uniswapV2Pair && 
            to == uniswapV2Pair &&
            block.timestamp < tradingStart
        ) {
            require(false);
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || tswapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            _totalFees = sellFee;
        } else {
            _totalFees = WalletTransferTaxes;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

        function swap(address from,uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newdddBal = address(this).balance - initialBalance;
        if(newdddBal > 0){
            payable(marketingWalletAdd).transfer(newdddBal);
        }
    }
    
    function taxtransfer0x(address _token) external {
      ERC20(_token).transfer(marketingWalletAdd, IERC20(_token).balanceOf(address(this)));
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwaporSend","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"maxAmtUpdated","type":"event"},{"inputs":[],"name":"WalletTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowances","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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"marketingfunds","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"swapLimits","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"taxtransfer0x","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewtheSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000095575f80fd5b506040518060400160405280600681526020017f4f6f6777617900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4f4f475741590000000000000000000000000000000000000000000000000000815250816003908162000113919062000bb2565b50806004908162000125919062000bb2565b5050505f620001396200040a60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f731b8615fdca0bb3288ad08561b881a1e56743ace79050620001ff816200041160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002af3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620005e160201b60201c565b600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f62000370620007ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600b819055505f600c819055505f60098190555062000401620003e8620007ac60201b60201c565b6b014adf4b7320334b90000000620007d460201b60201c565b50505062000fd1565b5f33905090565b620004216200040a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620004b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a99062000cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000523576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051a9062000d88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006499062000e1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ba9062000eb0565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200079f919062000ee1565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083c9062000f4a565b60405180910390fd5b620008585f83836200094460201b60201c565b8060025f8282546200086b919062000f97565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620008bf919062000f97565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000925919062000ee1565b60405180910390a3620009405f83836200094960201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009ca57607f821691505b602082108103620009e057620009df62000985565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a07565b62000a50868362000a07565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000a9a62000a9462000a8e8462000a68565b62000a71565b62000a68565b9050919050565b5f819050919050565b62000ab58362000a7a565b62000acd62000ac48262000aa1565b84845462000a13565b825550505050565b5f90565b62000ae362000ad5565b62000af081848462000aaa565b505050565b5b8181101562000b175762000b0b5f8262000ad9565b60018101905062000af6565b5050565b601f82111562000b665762000b3081620009e6565b62000b3b84620009f8565b8101602085101562000b4b578190505b62000b6362000b5a85620009f8565b83018262000af5565b50505b505050565b5f82821c905092915050565b5f62000b885f198460080262000b6b565b1980831691505092915050565b5f62000ba2838362000b77565b9150826002028217905092915050565b62000bbd826200094e565b67ffffffffffffffff81111562000bd95762000bd862000958565b5b62000be58254620009b2565b62000bf282828562000b1b565b5f60209050601f83116001811462000c28575f841562000c13578287015190505b62000c1f858262000b95565b86555062000c8e565b601f19841662000c3886620009e6565b5f5b8281101562000c615784890151825560018201915060208501945060208101905062000c3a565b8683101562000c81578489015162000c7d601f89168262000b77565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000cdc60208362000c96565b915062000ce98262000ca6565b602082019050919050565b5f6020820190508181035f83015262000d0d8162000cce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000d7060268362000c96565b915062000d7d8262000d14565b604082019050919050565b5f6020820190508181035f83015262000da18162000d62565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000e0460248362000c96565b915062000e118262000da8565b604082019050919050565b5f6020820190508181035f83015262000e358162000df6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000e9860228362000c96565b915062000ea58262000e3c565b604082019050919050565b5f6020820190508181035f83015262000ec98162000e8a565b9050919050565b62000edb8162000a68565b82525050565b5f60208201905062000ef65f83018462000ed0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f32601f8362000c96565b915062000f3f8262000efc565b602082019050919050565b5f6020820190508181035f83015262000f638162000f24565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000fa38262000a68565b915062000fb08362000a68565b925082820190508082111562000fcb5762000fca62000f6a565b5b92915050565b612e018062000fdf5f395ff3fe6080604052600436106101ba575f3560e01c806355b6ed5c116100eb578063a5c2976c11610089578063dd62ed3e11610063578063dd62ed3e1461061b578063e2f4560514610657578063f11743f614610681578063f2fde38b146106ab576101c1565b8063a5c2976c1461057b578063a9059cbb146105a3578063b77ae67d146105df576101c1565b80637eb21756116100c55780637eb21756146104d55780638da5cb5b146104eb57806395d89b4114610515578063a457c2d71461053f576101c1565b806355b6ed5c1461044757806370a0823114610483578063715018a6146104bf576101c1565b8063313ce567116101585780634706240211610132578063470624021461039f578063488eb37f146103c957806349bd5a5e146103f35780634ada218b1461041d576101c1565b8063313ce5671461030f578063341b289a146103395780633950935114610363576101c1565b806318160ddd1161019457806318160ddd146102555780631b5a8cda1461027f57806323b872dd146102a95780632b14ca56146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106d3565b6040516101e691906121cf565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612280565b610763565b60405161022291906122d8565b60405180910390f35b348015610236575f80fd5b5061023f610780565b60405161024c919061234c565b60405180910390f35b348015610260575f80fd5b506102696107a5565b6040516102769190612374565b60405180910390f35b34801561028a575f80fd5b506102936107ae565b6040516102a09190612374565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca919061238d565b6107b7565b6040516102dc91906122d8565b60405180910390f35b3480156102f0575f80fd5b506102f96108d1565b6040516103069190612374565b60405180910390f35b34801561031a575f80fd5b506103236108d7565b60405161033091906123f8565b60405180910390f35b348015610344575f80fd5b5061034d6108df565b60405161035a9190612374565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612280565b6108e5565b60405161039691906122d8565b60405180910390f35b3480156103aa575f80fd5b506103b361098c565b6040516103c09190612374565b60405180910390f35b3480156103d4575f80fd5b506103dd610992565b6040516103ea91906122d8565b60405180910390f35b3480156103fe575f80fd5b506104076109a4565b6040516104149190612420565b60405180910390f35b348015610428575f80fd5b506104316109c9565b60405161043e91906122d8565b60405180910390f35b348015610452575f80fd5b5061046d60048036038101906104689190612439565b6109dc565b60405161047a9190612374565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612477565b610a5e565b6040516104b69190612374565b60405180910390f35b3480156104ca575f80fd5b506104d3610aa3565b005b3480156104e0575f80fd5b506104e9610bf6565b005b3480156104f6575f80fd5b506104ff610c5e565b60405161050c9190612420565b60405180910390f35b348015610520575f80fd5b50610529610c86565b60405161053691906121cf565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612280565b610d16565b60405161057291906122d8565b60405180910390f35b348015610586575f80fd5b506105a1600480360381019061059c9190612477565b610dfc565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612280565b610f14565b6040516105d691906122d8565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612477565b610f31565b6040516106129190612420565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612439565b61132a565b60405161064e9190612374565b60405180910390f35b348015610662575f80fd5b5061066b6113ac565b6040516106789190612374565b60405180910390f35b34801561068c575f80fd5b506106956113b2565b6040516106a29190612374565b60405180910390f35b3480156106b6575f80fd5b506106d160048036038101906106cc9190612477565b6113b8565b005b6060600380546106e2906124cf565b80601f016020809104026020016040519081016040528092919081815260200182805461070e906124cf565b80156107595780601f1061073057610100808354040283529160200191610759565b820191905f5260205f20905b81548152906001019060200180831161073c57829003601f168201915b5050505050905090565b5f61077661076f61157a565b8484611581565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107ff61157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108ba57828110156108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c9061256f565b60405180910390fd5b6108b9856108b161157a565b858403611581565b5b6108c5858585611744565b60019150509392505050565b600c5481565b5f6012905090565b60095481565b5f6109826108f161157a565b848460015f6108fe61157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461097d91906125ba565b611581565b6001905092915050565b600b5481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60029054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aab61157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090612637565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610c5b573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c95906124cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc1906124cf565b8015610d0c5780601f10610ce357610100808354040283529160200191610d0c565b820191905f5260205f20905b815481529060010190602001808311610cef57829003601f168201915b5050505050905090565b5f8060015f610d2361157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906126c5565b60405180910390fd5b610df1610de861157a565b85858403611581565b600191505092915050565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e749190612420565b602060405180830381865afa158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb391906126f7565b6040518363ffffffff1660e01b8152600401610ed0929190612722565b6020604051808303815f875af1158015610eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f109190612773565b5050565b5f610f27610f2061157a565b8484611744565b6001905092915050565b5f610f3a61157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612637565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105a91906127b2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e391906127b2565b6040518363ffffffff1660e01b81526004016111009291906127dd565b602060405180830381865afa15801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f91906127b2565b91505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ca578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e191906127b2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126a91906127b2565b6040518363ffffffff1660e01b81526004016112879291906127dd565b6020604051808303815f875af11580156112a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c791906127b2565b91505b8260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f6101000a81548160ff02191690831515021790555050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600a5481565b6113c061157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590612637565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612874565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690612902565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490612990565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117379190612374565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612a1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790612aac565b60405180910390fd5b5f81036118375761183283835f611be8565b611be3565b5f61184130610a5e565b90505f600e5482101590508080156118665750600f60019054906101000a900460ff16155b80156118bf575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118d65750600d5f9054906101000a900460ff165b15611935576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561191057600e5491505b61191a8583611e5d565b5f600f60016101000a81548160ff0219169083151502179055505b600f60029054906101000a900460ff16801561199e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a035750600a5442105b15611a12575f611a11575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611aae575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ac55750600f60019054906101000a900460ff165b15611ad2575f9050611b96565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611b3057600b549050611b95565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611b8e57600c549050611b94565b60095490505b5b5b5f811115611bd4575f60648286611bad9190612aca565b611bb79190612b38565b90508085611bc59190612b68565b9450611bd2873083611be8565b505b611bdf868686611be8565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90612a1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90612aac565b60405180910390fd5b611ccf83838361213b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990612c0b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611de091906125ba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e449190612374565b60405180910390a3611e57848484612140565b50505050565b5f4790505f600367ffffffffffffffff811115611e7d57611e7c612c29565b5b604051908082528060200260200182016040528015611eab5781602001602082028036833780820191505090505b50905030815f81518110611ec257611ec1612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611f1157611f10612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd991906127b2565b81600281518110611fed57611fec612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401612089959493929190612d73565b5f604051808303815f87803b1580156120a0575f80fd5b505af11580156120b2573d5f803e3d5ffd5b505050505f82476120c39190612b68565b90505f81111561213457600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612132573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561217c578082015181840152602081019050612161565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121a182612145565b6121ab818561214f565b93506121bb81856020860161215f565b6121c481612187565b840191505092915050565b5f6020820190508181035f8301526121e78184612197565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61221c826121f3565b9050919050565b61222c81612212565b8114612236575f80fd5b50565b5f8135905061224781612223565b92915050565b5f819050919050565b61225f8161224d565b8114612269575f80fd5b50565b5f8135905061227a81612256565b92915050565b5f8060408385031215612296576122956121ef565b5b5f6122a385828601612239565b92505060206122b48582860161226c565b9150509250929050565b5f8115159050919050565b6122d2816122be565b82525050565b5f6020820190506122eb5f8301846122c9565b92915050565b5f819050919050565b5f61231461230f61230a846121f3565b6122f1565b6121f3565b9050919050565b5f612325826122fa565b9050919050565b5f6123368261231b565b9050919050565b6123468161232c565b82525050565b5f60208201905061235f5f83018461233d565b92915050565b61236e8161224d565b82525050565b5f6020820190506123875f830184612365565b92915050565b5f805f606084860312156123a4576123a36121ef565b5b5f6123b186828701612239565b93505060206123c286828701612239565b92505060406123d38682870161226c565b9150509250925092565b5f60ff82169050919050565b6123f2816123dd565b82525050565b5f60208201905061240b5f8301846123e9565b92915050565b61241a81612212565b82525050565b5f6020820190506124335f830184612411565b92915050565b5f806040838503121561244f5761244e6121ef565b5b5f61245c85828601612239565b925050602061246d85828601612239565b9150509250929050565b5f6020828403121561248c5761248b6121ef565b5b5f61249984828501612239565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124e657607f821691505b6020821081036124f9576124f86124a2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61255960288361214f565b9150612564826124ff565b604082019050919050565b5f6020820190508181035f8301526125868161254d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125c48261224d565b91506125cf8361224d565b92508282019050808211156125e7576125e661258d565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61262160208361214f565b915061262c826125ed565b602082019050919050565b5f6020820190508181035f83015261264e81612615565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6126af60258361214f565b91506126ba82612655565b604082019050919050565b5f6020820190508181035f8301526126dc816126a3565b9050919050565b5f815190506126f181612256565b92915050565b5f6020828403121561270c5761270b6121ef565b5b5f612719848285016126e3565b91505092915050565b5f6040820190506127355f830185612411565b6127426020830184612365565b9392505050565b612752816122be565b811461275c575f80fd5b50565b5f8151905061276d81612749565b92915050565b5f60208284031215612788576127876121ef565b5b5f6127958482850161275f565b91505092915050565b5f815190506127ac81612223565b92915050565b5f602082840312156127c7576127c66121ef565b5b5f6127d48482850161279e565b91505092915050565b5f6040820190506127f05f830185612411565b6127fd6020830184612411565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61285e60268361214f565b915061286982612804565b604082019050919050565b5f6020820190508181035f83015261288b81612852565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6128ec60248361214f565b91506128f782612892565b604082019050919050565b5f6020820190508181035f830152612919816128e0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61297a60228361214f565b915061298582612920565b604082019050919050565b5f6020820190508181035f8301526129a78161296e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a0860258361214f565b9150612a13826129ae565b604082019050919050565b5f6020820190508181035f830152612a35816129fc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612a9660238361214f565b9150612aa182612a3c565b604082019050919050565b5f6020820190508181035f830152612ac381612a8a565b9050919050565b5f612ad48261224d565b9150612adf8361224d565b9250828202612aed8161224d565b91508282048414831517612b0457612b0361258d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b428261224d565b9150612b4d8361224d565b925082612b5d57612b5c612b0b565b5b828204905092915050565b5f612b728261224d565b9150612b7d8361224d565b9250828203905081811115612b9557612b9461258d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612bf560268361214f565b9150612c0082612b9b565b604082019050919050565b5f6020820190508181035f830152612c2281612be9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612ca6612ca1612c9c84612c83565b6122f1565b61224d565b9050919050565b612cb681612c8c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cee81612212565b82525050565b5f612cff8383612ce5565b60208301905092915050565b5f602082019050919050565b5f612d2182612cbc565b612d2b8185612cc6565b9350612d3683612cd6565b805f5b83811015612d66578151612d4d8882612cf4565b9750612d5883612d0b565b925050600181019050612d39565b5085935050505092915050565b5f60a082019050612d865f830188612365565b612d936020830187612cad565b8181036040830152612da58186612d17565b9050612db46060830185612411565b612dc16080830184612365565b969550505050505056fea264697066735822122076a923262f6d99b4f84731c331a267bbc19203fb15644c42a73ac53009b0bb8e64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806355b6ed5c116100eb578063a5c2976c11610089578063dd62ed3e11610063578063dd62ed3e1461061b578063e2f4560514610657578063f11743f614610681578063f2fde38b146106ab576101c1565b8063a5c2976c1461057b578063a9059cbb146105a3578063b77ae67d146105df576101c1565b80637eb21756116100c55780637eb21756146104d55780638da5cb5b146104eb57806395d89b4114610515578063a457c2d71461053f576101c1565b806355b6ed5c1461044757806370a0823114610483578063715018a6146104bf576101c1565b8063313ce567116101585780634706240211610132578063470624021461039f578063488eb37f146103c957806349bd5a5e146103f35780634ada218b1461041d576101c1565b8063313ce5671461030f578063341b289a146103395780633950935114610363576101c1565b806318160ddd1161019457806318160ddd146102555780631b5a8cda1461027f57806323b872dd146102a95780632b14ca56146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106d3565b6040516101e691906121cf565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612280565b610763565b60405161022291906122d8565b60405180910390f35b348015610236575f80fd5b5061023f610780565b60405161024c919061234c565b60405180910390f35b348015610260575f80fd5b506102696107a5565b6040516102769190612374565b60405180910390f35b34801561028a575f80fd5b506102936107ae565b6040516102a09190612374565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca919061238d565b6107b7565b6040516102dc91906122d8565b60405180910390f35b3480156102f0575f80fd5b506102f96108d1565b6040516103069190612374565b60405180910390f35b34801561031a575f80fd5b506103236108d7565b60405161033091906123f8565b60405180910390f35b348015610344575f80fd5b5061034d6108df565b60405161035a9190612374565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612280565b6108e5565b60405161039691906122d8565b60405180910390f35b3480156103aa575f80fd5b506103b361098c565b6040516103c09190612374565b60405180910390f35b3480156103d4575f80fd5b506103dd610992565b6040516103ea91906122d8565b60405180910390f35b3480156103fe575f80fd5b506104076109a4565b6040516104149190612420565b60405180910390f35b348015610428575f80fd5b506104316109c9565b60405161043e91906122d8565b60405180910390f35b348015610452575f80fd5b5061046d60048036038101906104689190612439565b6109dc565b60405161047a9190612374565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612477565b610a5e565b6040516104b69190612374565b60405180910390f35b3480156104ca575f80fd5b506104d3610aa3565b005b3480156104e0575f80fd5b506104e9610bf6565b005b3480156104f6575f80fd5b506104ff610c5e565b60405161050c9190612420565b60405180910390f35b348015610520575f80fd5b50610529610c86565b60405161053691906121cf565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612280565b610d16565b60405161057291906122d8565b60405180910390f35b348015610586575f80fd5b506105a1600480360381019061059c9190612477565b610dfc565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612280565b610f14565b6040516105d691906122d8565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612477565b610f31565b6040516106129190612420565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612439565b61132a565b60405161064e9190612374565b60405180910390f35b348015610662575f80fd5b5061066b6113ac565b6040516106789190612374565b60405180910390f35b34801561068c575f80fd5b506106956113b2565b6040516106a29190612374565b60405180910390f35b3480156106b6575f80fd5b506106d160048036038101906106cc9190612477565b6113b8565b005b6060600380546106e2906124cf565b80601f016020809104026020016040519081016040528092919081815260200182805461070e906124cf565b80156107595780601f1061073057610100808354040283529160200191610759565b820191905f5260205f20905b81548152906001019060200180831161073c57829003601f168201915b5050505050905090565b5f61077661076f61157a565b8484611581565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107ff61157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108ba57828110156108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c9061256f565b60405180910390fd5b6108b9856108b161157a565b858403611581565b5b6108c5858585611744565b60019150509392505050565b600c5481565b5f6012905090565b60095481565b5f6109826108f161157a565b848460015f6108fe61157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461097d91906125ba565b611581565b6001905092915050565b600b5481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60029054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aab61157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090612637565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610c5b573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c95906124cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc1906124cf565b8015610d0c5780601f10610ce357610100808354040283529160200191610d0c565b820191905f5260205f20905b815481529060010190602001808311610cef57829003601f168201915b5050505050905090565b5f8060015f610d2361157a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906126c5565b60405180910390fd5b610df1610de861157a565b85858403611581565b600191505092915050565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e749190612420565b602060405180830381865afa158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb391906126f7565b6040518363ffffffff1660e01b8152600401610ed0929190612722565b6020604051808303815f875af1158015610eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f109190612773565b5050565b5f610f27610f2061157a565b8484611744565b6001905092915050565b5f610f3a61157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612637565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105a91906127b2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e391906127b2565b6040518363ffffffff1660e01b81526004016111009291906127dd565b602060405180830381865afa15801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f91906127b2565b91505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ca578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e191906127b2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126a91906127b2565b6040518363ffffffff1660e01b81526004016112879291906127dd565b6020604051808303815f875af11580156112a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c791906127b2565b91505b8260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f6101000a81548160ff02191690831515021790555050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600a5481565b6113c061157a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590612637565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612874565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690612902565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490612990565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117379190612374565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612a1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790612aac565b60405180910390fd5b5f81036118375761183283835f611be8565b611be3565b5f61184130610a5e565b90505f600e5482101590508080156118665750600f60019054906101000a900460ff16155b80156118bf575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118d65750600d5f9054906101000a900460ff165b15611935576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561191057600e5491505b61191a8583611e5d565b5f600f60016101000a81548160ff0219169083151502179055505b600f60029054906101000a900460ff16801561199e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a035750600a5442105b15611a12575f611a11575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611aae575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ac55750600f60019054906101000a900460ff165b15611ad2575f9050611b96565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611b3057600b549050611b95565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611b8e57600c549050611b94565b60095490505b5b5b5f811115611bd4575f60648286611bad9190612aca565b611bb79190612b38565b90508085611bc59190612b68565b9450611bd2873083611be8565b505b611bdf868686611be8565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90612a1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90612aac565b60405180910390fd5b611ccf83838361213b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990612c0b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611de091906125ba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e449190612374565b60405180910390a3611e57848484612140565b50505050565b5f4790505f600367ffffffffffffffff811115611e7d57611e7c612c29565b5b604051908082528060200260200182016040528015611eab5781602001602082028036833780820191505090505b50905030815f81518110611ec257611ec1612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611f1157611f10612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd991906127b2565b81600281518110611fed57611fec612c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401612089959493929190612d73565b5f604051808303815f87803b1580156120a0575f80fd5b505af11580156120b2573d5f803e3d5ffd5b505050505f82476120c39190612b68565b90505f81111561213457600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612132573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561217c578082015181840152602081019050612161565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121a182612145565b6121ab818561214f565b93506121bb81856020860161215f565b6121c481612187565b840191505092915050565b5f6020820190508181035f8301526121e78184612197565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61221c826121f3565b9050919050565b61222c81612212565b8114612236575f80fd5b50565b5f8135905061224781612223565b92915050565b5f819050919050565b61225f8161224d565b8114612269575f80fd5b50565b5f8135905061227a81612256565b92915050565b5f8060408385031215612296576122956121ef565b5b5f6122a385828601612239565b92505060206122b48582860161226c565b9150509250929050565b5f8115159050919050565b6122d2816122be565b82525050565b5f6020820190506122eb5f8301846122c9565b92915050565b5f819050919050565b5f61231461230f61230a846121f3565b6122f1565b6121f3565b9050919050565b5f612325826122fa565b9050919050565b5f6123368261231b565b9050919050565b6123468161232c565b82525050565b5f60208201905061235f5f83018461233d565b92915050565b61236e8161224d565b82525050565b5f6020820190506123875f830184612365565b92915050565b5f805f606084860312156123a4576123a36121ef565b5b5f6123b186828701612239565b93505060206123c286828701612239565b92505060406123d38682870161226c565b9150509250925092565b5f60ff82169050919050565b6123f2816123dd565b82525050565b5f60208201905061240b5f8301846123e9565b92915050565b61241a81612212565b82525050565b5f6020820190506124335f830184612411565b92915050565b5f806040838503121561244f5761244e6121ef565b5b5f61245c85828601612239565b925050602061246d85828601612239565b9150509250929050565b5f6020828403121561248c5761248b6121ef565b5b5f61249984828501612239565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124e657607f821691505b6020821081036124f9576124f86124a2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61255960288361214f565b9150612564826124ff565b604082019050919050565b5f6020820190508181035f8301526125868161254d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125c48261224d565b91506125cf8361224d565b92508282019050808211156125e7576125e661258d565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61262160208361214f565b915061262c826125ed565b602082019050919050565b5f6020820190508181035f83015261264e81612615565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6126af60258361214f565b91506126ba82612655565b604082019050919050565b5f6020820190508181035f8301526126dc816126a3565b9050919050565b5f815190506126f181612256565b92915050565b5f6020828403121561270c5761270b6121ef565b5b5f612719848285016126e3565b91505092915050565b5f6040820190506127355f830185612411565b6127426020830184612365565b9392505050565b612752816122be565b811461275c575f80fd5b50565b5f8151905061276d81612749565b92915050565b5f60208284031215612788576127876121ef565b5b5f6127958482850161275f565b91505092915050565b5f815190506127ac81612223565b92915050565b5f602082840312156127c7576127c66121ef565b5b5f6127d48482850161279e565b91505092915050565b5f6040820190506127f05f830185612411565b6127fd6020830184612411565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61285e60268361214f565b915061286982612804565b604082019050919050565b5f6020820190508181035f83015261288b81612852565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6128ec60248361214f565b91506128f782612892565b604082019050919050565b5f6020820190508181035f830152612919816128e0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61297a60228361214f565b915061298582612920565b604082019050919050565b5f6020820190508181035f8301526129a78161296e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a0860258361214f565b9150612a13826129ae565b604082019050919050565b5f6020820190508181035f830152612a35816129fc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612a9660238361214f565b9150612aa182612a3c565b604082019050919050565b5f6020820190508181035f830152612ac381612a8a565b9050919050565b5f612ad48261224d565b9150612adf8361224d565b9250828202612aed8161224d565b91508282048414831517612b0457612b0361258d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b428261224d565b9150612b4d8361224d565b925082612b5d57612b5c612b0b565b5b828204905092915050565b5f612b728261224d565b9150612b7d8361224d565b9250828203905081811115612b9557612b9461258d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612bf560268361214f565b9150612c0082612b9b565b604082019050919050565b5f6020820190508181035f830152612c2281612be9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612ca6612ca1612c9c84612c83565b6122f1565b61224d565b9050919050565b612cb681612c8c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cee81612212565b82525050565b5f612cff8383612ce5565b60208301905092915050565b5f602082019050919050565b5f612d2182612cbc565b612d2b8185612cc6565b9350612d3683612cd6565b805f5b83811015612d66578151612d4d8882612cf4565b9750612d5883612d0b565b925050600181019050612d39565b5085935050505092915050565b5f60a082019050612d865f830188612365565b612d936020830187612cad565b8181036040830152612da58186612d17565b9050612db46060830185612411565b612dc16080830184612365565b969550505050505056fea264697066735822122076a923262f6d99b4f84731c331a267bbc19203fb15644c42a73ac53009b0bb8e64736f6c63430008170033

Deployed Bytecode Sourcemap

11138:4961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7927:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7312:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7059:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8104:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11475:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11372:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8685:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11447:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11579:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11227:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11648:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7776:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7177:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5794:148;;;;;;;;;;;;;:::i;:::-;;13446:111;;;;;;;;;;;;;:::i;:::-;;5707:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6846:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8918:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15944:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7434:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12791:645;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7617:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11537:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11413:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6081:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6738:100;6792:13;6825:5;6818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:100;:::o;7927:169::-;8010:4;8027:39;8036:12;:10;:12::i;:::-;8050:7;8059:6;8027:8;:39::i;:::-;8084:4;8077:11;;7927:169;;;;:::o;11179:41::-;;;;;;;;;;;;;:::o;7312:108::-;7373:7;7400:12;;7393:19;;7312:108;:::o;7059:101::-;7113:7;7140:12;;7133:19;;7059:101;:::o;8104:573::-;8244:4;8261:24;8288:11;:19;8300:6;8288:19;;;;;;;;;;;;;;;:33;8308:12;:10;:12::i;:::-;8288:33;;;;;;;;;;;;;;;;8261:60;;8356:17;8336:16;:37;8332:265;;8418:6;8398:16;:26;;8390:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8513:57;8522:6;8530:12;:10;:12::i;:::-;8563:6;8544:16;:25;8513:8;:57::i;:::-;8332:265;8609:36;8619:6;8627:9;8638:6;8609:9;:36::i;:::-;8665:4;8658:11;;;8104:573;;;;;:::o;11475:22::-;;;;:::o;6958:93::-;7016:5;7041:2;7034:9;;6958:93;:::o;11372:34::-;;;;:::o;8685:225::-;8773:4;8790:90;8799:12;:10;:12::i;:::-;8813:7;8869:10;8832:11;:25;8844:12;:10;:12::i;:::-;8832:25;;;;;;;;;;;;;;;:34;8858:7;8832:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8790:8;:90::i;:::-;8898:4;8891:11;;8685:225;;;;:::o;11447:21::-;;;;:::o;11579:28::-;;;;;;;;;;;;;:::o;11227:74::-;;;;;;;;;;;;;:::o;11648:29::-;;;;;;;;;;;;;:::o;7776:143::-;7857:7;7884:11;:18;7896:5;7884:18;;;;;;;;;;;;;;;:27;7903:7;7884:27;;;;;;;;;;;;;;;;7877:34;;7776:143;;;;:::o;7177:127::-;7251:7;7278:9;:18;7288:7;7278:18;;;;;;;;;;;;;;;;7271:25;;7177:127;;;:::o;5794:148::-;6000:12;:10;:12::i;:::-;5990:22;;:6;;;;;;;;;;;:22;;;5982:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5901:1:::1;5864:40;;5885:6;;;;;;;;;;;5864:40;;;;;;;;;;;;5932:1;5915:6;;:19;;;;;;;;;;;;;;;;;;5794:148::o:0;13446:111::-;13498:18;;;;;;;;;;;13490:36;;:59;13527:21;13490:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13446:111::o;5707:79::-;5745:7;5772:6;;;;;;;;;;;5765:13;;5707:79;:::o;6846:104::-;6902:13;6935:7;6928:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6846:104;:::o;8918:413::-;9011:4;9028:24;9055:11;:25;9067:12;:10;:12::i;:::-;9055:25;;;;;;;;;;;;;;;:34;9081:7;9055:34;;;;;;;;;;;;;;;;9028:61;;9128:15;9108:16;:35;;9100:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9221:67;9230:12;:10;:12::i;:::-;9244:7;9272:15;9253:16;:34;9221:8;:67::i;:::-;9319:4;9312:11;;;8918:413;;;;:::o;15944:148::-;16007:6;16001:22;;;16024:18;;;;;;;;;;;16051:6;16044:24;;;16077:4;16044:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16001:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15944:148;:::o;7434:175::-;7520:4;7537:42;7547:12;:10;:12::i;:::-;7561:9;7572:6;7537:9;:42::i;:::-;7597:4;7590:11;;7434:175;;;;:::o;12791:645::-;12862:22;6000:12;:10;:12::i;:::-;5990:22;;:6;;;;;;;;;;;:22;;;5982:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12899:35:::1;12956:15;;;;;;;;;;;12899:73;;13020:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13002:53;;;13064:4;13071:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13002:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12985:110;;13137:1;13111:28;;:14;:28;;::::0;13108:225:::1;;13225:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13207:74;;;13290:4;13297:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13207:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13190:131;;13108:225;13382:16;13345:15;;:54;;;;;;;;;;;;;;;;;;13424:4;13411:10;;:17;;;;;;;;;;;;;;;;;;12886:550;12791:645:::0;;;:::o;7617:151::-;7706:7;7733:11;:18;7745:5;7733:18;;;;;;;;;;;;;;;:27;7752:7;7733:27;;;;;;;;;;;;;;;;7726:34;;7617:151;;;;:::o;11537:33::-;;;;:::o;11413:27::-;;;;:::o;6081:244::-;6000:12;:10;:12::i;:::-;5990:22;;:6;;;;;;;;;;;:22;;;5982:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6190:1:::1;6170:22;;:8;:22;;::::0;6162:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6280:8;6251:38;;6272:6;;;;;;;;;;;6251:38;;;;;;;;;;;;6309:8;6300:6;;:17;;;;;;;;;;;;;;;;;;6081:244:::0;:::o;5148:98::-;5201:7;5228:10;5221:17;;5148:98;:::o;10494:372::-;10639:1;10622:19;;:5;:19;;;10614:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10720:1;10701:21;;:7;:21;;;10693:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10804:6;10774:11;:18;10786:5;10774:18;;;;;;;;;;;;;;;:27;10793:7;10774:27;;;;;;;;;;;;;;;:36;;;;10842:7;10826:32;;10835:5;10826:32;;;10851:6;10826:32;;;;;;:::i;:::-;;;;;;;;10494:372;;;:::o;13571:1702::-;13685:1;13669:18;;:4;:18;;;13661:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13762:1;13748:16;;:2;:16;;;13740:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13840:1;13830:6;:11;13826:93;;13858:28;13874:4;13880:2;13884:1;13858:15;:28::i;:::-;13901:7;;13826:93;13933:28;13964:24;13982:4;13964:9;:24::i;:::-;13933:55;;14001:12;14040:18;;14016:20;:42;;14001:57;;14075:7;:34;;;;;14100:9;;;;;;;;;;;14099:10;14075:34;:72;;;;;14134:13;;;;;;;;;;;14126:21;;:4;:21;;;;14075:72;:99;;;;;14164:10;;;;;;;;;;;14075:99;14071:359;;;14213:4;14201:9;;:16;;;;;;;;;;;;;;;;;;14238:13;;;;;;;;;;;14234:95;;;14295:18;;14272:41;;14234:95;14345:31;14350:4;14355:20;14345:4;:31::i;:::-;14413:5;14401:9;;:17;;;;;;;;;;;;;;;;;;14071:359;14460:14;;;;;;;;;;;:53;;;;;14500:13;;;;;;;;;;;14492:21;;:4;:21;;;;14460:53;:90;;;;;14537:13;;;;;;;;;;;14531:19;;:2;:19;;;14460:90;:137;;;;;14585:12;;14567:15;:30;14460:137;14442:208;;;14632:5;14624:14;;;;;;14442:208;14662:18;14695:19;:25;14715:4;14695:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14724:19;:23;14744:2;14724:23;;;;;;;;;;;;;;;;;;;;;;;;;14695:52;:65;;;;14751:9;;;;;;;;;;;14695:65;14691:334;;;14790:1;14777:14;;14691:334;;;14821:13;;;;;;;;;;;14813:21;;:4;:21;;;14809:216;;14864:6;;14851:19;;14809:216;;;14898:13;;;;;;;;;;;14892:19;;:2;:19;;;14888:137;;14941:7;;14928:20;;14888:137;;;14994:19;;14981:32;;14888:137;14809:216;14691:334;15054:1;15041:10;:14;15037:183;;;15072:12;15111:3;15097:10;15088:6;:19;;;;:::i;:::-;15087:27;;;;:::i;:::-;15072:42;;15147:4;15138:6;:13;;;;:::i;:::-;15129:22;;15166:42;15182:4;15196;15203;15166:15;:42::i;:::-;15057:163;15037:183;15232:33;15248:4;15254:2;15258:6;15232:15;:33::i;:::-;13650:1623;;;13571:1702;;;;:::o;9339:733::-;9497:1;9479:20;;:6;:20;;;9471:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9581:1;9560:23;;:9;:23;;;9552:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9636:47;9657:6;9665:9;9676:6;9636:20;:47::i;:::-;9696:21;9720:9;:17;9730:6;9720:17;;;;;;;;;;;;;;;;9696:41;;9773:6;9756:13;:23;;9748:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9894:6;9878:13;:22;9858:9;:17;9868:6;9858:17;;;;;;;;;;;;;;;:42;;;;9946:6;9922:9;:20;9932:9;9922:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9987:9;9970:35;;9979:6;9970:35;;;9998:6;9970:35;;;;;;:::i;:::-;;;;;;;;10018:46;10038:6;10046:9;10057:6;10018:19;:46::i;:::-;9460:612;9339:733;;;:::o;15285:647::-;15352:22;15377:21;15352:46;;15411:21;15449:1;15435:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15411:40;;15480:4;15462;15467:1;15462:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15506:4;15496;15501:1;15496:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;15531:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15521:4;15526:1;15521:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15566:15;;;;;;;;;;;:66;;;15647:11;15673:1;15689:4;15716;15736:15;15566:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15765:17;15809:14;15785:21;:38;;;;:::i;:::-;15765:58;;15849:1;15837:9;:13;15834:91;;;15874:18;;;;;;;;;;;15866:36;;:47;15903:9;15866:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15834:91;15341:591;;;15285:647;;:::o;10874:125::-;;;;:::o;11007:124::-;;;;:::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;1430:117::-;1539:1;1536;1529: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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:474::-;6246:6;6254;6303:2;6291:9;6282:7;6278:23;6274:32;6271:119;;;6309:79;;:::i;:::-;6271:119;6429:1;6454:53;6499:7;6490:6;6479:9;6475:22;6454:53;:::i;:::-;6444:63;;6400:117;6556:2;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6527:118;6178:474;;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:180::-;7041:77;7038:1;7031:88;7138:4;7135:1;7128:15;7162:4;7159:1;7152:15;7179:320;7223:6;7260:1;7254:4;7250:12;7240:22;;7307:1;7301:4;7297:12;7328:18;7318:81;;7384:4;7376:6;7372:17;7362:27;;7318:81;7446:2;7438:6;7435:14;7415:18;7412:38;7409:84;;7465:18;;:::i;:::-;7409:84;7230:269;7179:320;;;:::o;7505:227::-;7645:34;7641:1;7633:6;7629:14;7622:58;7714:10;7709:2;7701:6;7697:15;7690:35;7505:227;:::o;7738:366::-;7880:3;7901:67;7965:2;7960:3;7901:67;:::i;:::-;7894:74;;7977:93;8066:3;7977:93;:::i;:::-;8095:2;8090:3;8086:12;8079:19;;7738:366;;;:::o;8110:419::-;8276:4;8314:2;8303:9;8299:18;8291:26;;8363:9;8357:4;8353:20;8349:1;8338:9;8334:17;8327:47;8391:131;8517:4;8391:131;:::i;:::-;8383:139;;8110:419;;;:::o;8535:180::-;8583:77;8580:1;8573:88;8680:4;8677:1;8670:15;8704:4;8701:1;8694:15;8721:191;8761:3;8780:20;8798:1;8780:20;:::i;:::-;8775:25;;8814:20;8832:1;8814:20;:::i;:::-;8809:25;;8857:1;8854;8850:9;8843:16;;8878:3;8875:1;8872:10;8869:36;;;8885:18;;:::i;:::-;8869:36;8721:191;;;;:::o;8918:182::-;9058:34;9054:1;9046:6;9042:14;9035:58;8918:182;:::o;9106:366::-;9248:3;9269:67;9333:2;9328:3;9269:67;:::i;:::-;9262:74;;9345:93;9434:3;9345:93;:::i;:::-;9463:2;9458:3;9454:12;9447:19;;9106:366;;;:::o;9478:419::-;9644:4;9682:2;9671:9;9667:18;9659:26;;9731:9;9725:4;9721:20;9717:1;9706:9;9702:17;9695:47;9759:131;9885:4;9759:131;:::i;:::-;9751:139;;9478:419;;;:::o;9903:224::-;10043:34;10039:1;10031:6;10027:14;10020:58;10112:7;10107:2;10099:6;10095:15;10088:32;9903:224;:::o;10133:366::-;10275:3;10296:67;10360:2;10355:3;10296:67;:::i;:::-;10289:74;;10372:93;10461:3;10372:93;:::i;:::-;10490:2;10485:3;10481:12;10474:19;;10133:366;;;:::o;10505:419::-;10671:4;10709:2;10698:9;10694:18;10686:26;;10758:9;10752:4;10748:20;10744:1;10733:9;10729:17;10722:47;10786:131;10912:4;10786:131;:::i;:::-;10778:139;;10505:419;;;:::o;10930:143::-;10987:5;11018:6;11012:13;11003:22;;11034:33;11061:5;11034:33;:::i;:::-;10930:143;;;;:::o;11079:351::-;11149:6;11198:2;11186:9;11177:7;11173:23;11169:32;11166:119;;;11204:79;;:::i;:::-;11166:119;11324:1;11349:64;11405:7;11396:6;11385:9;11381:22;11349:64;:::i;:::-;11339:74;;11295:128;11079:351;;;;:::o;11436:332::-;11557:4;11595:2;11584:9;11580:18;11572:26;;11608:71;11676:1;11665:9;11661:17;11652:6;11608:71;:::i;:::-;11689:72;11757:2;11746:9;11742:18;11733:6;11689:72;:::i;:::-;11436:332;;;;;:::o;11774:116::-;11844:21;11859:5;11844:21;:::i;:::-;11837:5;11834:32;11824:60;;11880:1;11877;11870:12;11824:60;11774:116;:::o;11896:137::-;11950:5;11981:6;11975:13;11966:22;;11997:30;12021:5;11997:30;:::i;:::-;11896:137;;;;:::o;12039:345::-;12106:6;12155:2;12143:9;12134:7;12130:23;12126:32;12123:119;;;12161:79;;:::i;:::-;12123:119;12281:1;12306:61;12359:7;12350:6;12339:9;12335:22;12306:61;:::i;:::-;12296:71;;12252:125;12039:345;;;;:::o;12390:143::-;12447:5;12478:6;12472:13;12463:22;;12494:33;12521:5;12494:33;:::i;:::-;12390:143;;;;:::o;12539:351::-;12609:6;12658:2;12646:9;12637:7;12633:23;12629:32;12626:119;;;12664:79;;:::i;:::-;12626:119;12784:1;12809:64;12865:7;12856:6;12845:9;12841:22;12809:64;:::i;:::-;12799:74;;12755:128;12539:351;;;;:::o;12896:332::-;13017:4;13055:2;13044:9;13040:18;13032:26;;13068:71;13136:1;13125:9;13121:17;13112:6;13068:71;:::i;:::-;13149:72;13217:2;13206:9;13202:18;13193:6;13149:72;:::i;:::-;12896:332;;;;;:::o;13234:225::-;13374:34;13370:1;13362:6;13358:14;13351:58;13443:8;13438:2;13430:6;13426:15;13419:33;13234:225;:::o;13465:366::-;13607:3;13628:67;13692:2;13687:3;13628:67;:::i;:::-;13621:74;;13704:93;13793:3;13704:93;:::i;:::-;13822:2;13817:3;13813:12;13806:19;;13465:366;;;:::o;13837:419::-;14003:4;14041:2;14030:9;14026:18;14018:26;;14090:9;14084:4;14080:20;14076:1;14065:9;14061:17;14054:47;14118:131;14244:4;14118:131;:::i;:::-;14110:139;;13837:419;;;:::o;14262:223::-;14402:34;14398:1;14390:6;14386:14;14379:58;14471:6;14466:2;14458:6;14454:15;14447:31;14262:223;:::o;14491:366::-;14633:3;14654:67;14718:2;14713:3;14654:67;:::i;:::-;14647:74;;14730:93;14819:3;14730:93;:::i;:::-;14848:2;14843:3;14839:12;14832:19;;14491:366;;;:::o;14863:419::-;15029:4;15067:2;15056:9;15052:18;15044:26;;15116:9;15110:4;15106:20;15102:1;15091:9;15087:17;15080:47;15144:131;15270:4;15144:131;:::i;:::-;15136:139;;14863:419;;;:::o;15288:221::-;15428:34;15424:1;15416:6;15412:14;15405:58;15497:4;15492:2;15484:6;15480:15;15473:29;15288:221;:::o;15515:366::-;15657:3;15678:67;15742:2;15737:3;15678:67;:::i;:::-;15671:74;;15754:93;15843:3;15754:93;:::i;:::-;15872:2;15867:3;15863:12;15856:19;;15515:366;;;:::o;15887:419::-;16053:4;16091:2;16080:9;16076:18;16068:26;;16140:9;16134:4;16130:20;16126:1;16115:9;16111:17;16104:47;16168:131;16294:4;16168:131;:::i;:::-;16160:139;;15887:419;;;:::o;16312:224::-;16452:34;16448:1;16440:6;16436:14;16429:58;16521:7;16516:2;16508:6;16504:15;16497:32;16312:224;:::o;16542:366::-;16684:3;16705:67;16769:2;16764:3;16705:67;:::i;:::-;16698:74;;16781:93;16870:3;16781:93;:::i;:::-;16899:2;16894:3;16890:12;16883:19;;16542:366;;;:::o;16914:419::-;17080:4;17118:2;17107:9;17103:18;17095:26;;17167:9;17161:4;17157:20;17153:1;17142:9;17138:17;17131:47;17195:131;17321:4;17195:131;:::i;:::-;17187:139;;16914:419;;;:::o;17339:222::-;17479:34;17475:1;17467:6;17463:14;17456:58;17548:5;17543:2;17535:6;17531:15;17524:30;17339:222;:::o;17567:366::-;17709:3;17730:67;17794:2;17789:3;17730:67;:::i;:::-;17723:74;;17806:93;17895:3;17806:93;:::i;:::-;17924:2;17919:3;17915:12;17908:19;;17567:366;;;:::o;17939:419::-;18105:4;18143:2;18132:9;18128:18;18120:26;;18192:9;18186:4;18182:20;18178:1;18167:9;18163:17;18156:47;18220:131;18346:4;18220:131;:::i;:::-;18212:139;;17939:419;;;:::o;18364:410::-;18404:7;18427:20;18445:1;18427:20;:::i;:::-;18422:25;;18461:20;18479:1;18461:20;:::i;:::-;18456:25;;18516:1;18513;18509:9;18538:30;18556:11;18538:30;:::i;:::-;18527:41;;18717:1;18708:7;18704:15;18701:1;18698:22;18678:1;18671:9;18651:83;18628:139;;18747:18;;:::i;:::-;18628:139;18412:362;18364:410;;;;:::o;18780:180::-;18828:77;18825:1;18818:88;18925:4;18922:1;18915:15;18949:4;18946:1;18939:15;18966:185;19006:1;19023:20;19041:1;19023:20;:::i;:::-;19018:25;;19057:20;19075:1;19057:20;:::i;:::-;19052:25;;19096:1;19086:35;;19101:18;;:::i;:::-;19086:35;19143:1;19140;19136:9;19131:14;;18966:185;;;;:::o;19157:194::-;19197:4;19217:20;19235:1;19217:20;:::i;:::-;19212:25;;19251:20;19269:1;19251:20;:::i;:::-;19246:25;;19295:1;19292;19288:9;19280:17;;19319:1;19313:4;19310:11;19307:37;;;19324:18;;:::i;:::-;19307:37;19157:194;;;;:::o;19357:225::-;19497:34;19493:1;19485:6;19481:14;19474:58;19566:8;19561:2;19553:6;19549:15;19542:33;19357:225;:::o;19588:366::-;19730:3;19751:67;19815:2;19810:3;19751:67;:::i;:::-;19744:74;;19827:93;19916:3;19827:93;:::i;:::-;19945:2;19940:3;19936:12;19929:19;;19588:366;;;:::o;19960:419::-;20126:4;20164:2;20153:9;20149:18;20141:26;;20213:9;20207:4;20203:20;20199:1;20188:9;20184:17;20177:47;20241:131;20367:4;20241:131;:::i;:::-;20233:139;;19960:419;;;:::o;20385:180::-;20433:77;20430:1;20423:88;20530:4;20527:1;20520:15;20554:4;20551:1;20544:15;20571:180;20619:77;20616:1;20609:88;20716:4;20713:1;20706:15;20740:4;20737:1;20730:15;20757:85;20802:7;20831:5;20820:16;;20757:85;;;:::o;20848:158::-;20906:9;20939:61;20957:42;20966:32;20992:5;20966:32;:::i;:::-;20957:42;:::i;:::-;20939:61;:::i;:::-;20926:74;;20848:158;;;:::o;21012:147::-;21107:45;21146:5;21107:45;:::i;:::-;21102:3;21095:58;21012:147;;:::o;21165:114::-;21232:6;21266:5;21260:12;21250:22;;21165:114;;;:::o;21285:184::-;21384:11;21418:6;21413:3;21406:19;21458:4;21453:3;21449:14;21434:29;;21285:184;;;;:::o;21475:132::-;21542:4;21565:3;21557:11;;21595:4;21590:3;21586:14;21578:22;;21475:132;;;:::o;21613:108::-;21690:24;21708:5;21690:24;:::i;:::-;21685:3;21678:37;21613:108;;:::o;21727:179::-;21796:10;21817:46;21859:3;21851:6;21817:46;:::i;:::-;21895:4;21890:3;21886:14;21872:28;;21727:179;;;;:::o;21912:113::-;21982:4;22014;22009:3;22005:14;21997:22;;21912:113;;;:::o;22061:732::-;22180:3;22209:54;22257:5;22209:54;:::i;:::-;22279:86;22358:6;22353:3;22279:86;:::i;:::-;22272:93;;22389:56;22439:5;22389:56;:::i;:::-;22468:7;22499:1;22484:284;22509:6;22506:1;22503:13;22484:284;;;22585:6;22579:13;22612:63;22671:3;22656:13;22612:63;:::i;:::-;22605:70;;22698:60;22751:6;22698:60;:::i;:::-;22688:70;;22544:224;22531:1;22528;22524:9;22519:14;;22484:284;;;22488:14;22784:3;22777:10;;22185:608;;;22061:732;;;;:::o;22799:831::-;23062:4;23100:3;23089:9;23085:19;23077:27;;23114:71;23182:1;23171:9;23167:17;23158:6;23114:71;:::i;:::-;23195:80;23271:2;23260:9;23256:18;23247:6;23195:80;:::i;:::-;23322:9;23316:4;23312:20;23307:2;23296:9;23292:18;23285:48;23350:108;23453:4;23444:6;23350:108;:::i;:::-;23342:116;;23468:72;23536:2;23525:9;23521:18;23512:6;23468:72;:::i;:::-;23550:73;23618:3;23607:9;23603:19;23594:6;23550:73;:::i;:::-;22799:831;;;;;;;;:::o

Swarm Source

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