ETH Price: $2,402.68 (-4.24%)

Token

Optimus Lend (OPTL)
 

Overview

Max Total Supply

100,000,000 OPTL

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,518,340.346451260054784694 OPTL

Value
$0.00
0x727F8b35fe6893331F54154884340Fe796659d77
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:
OptimusLend

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
    Website:    https://www.optimuslend.com
    DAPP:       https://app.optimuslend.com
    Telegram:   https://t.me/optimuslend
*/

pragma solidity 0.8.19;


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

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

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

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

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

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

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

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    event OwnershipTransferred(address owner);
}

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

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

    function WETH() external pure returns (address);

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

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

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

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

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

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    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);
}

contract OptimusLend is ERC20, Ownable {
    using SafeMath for uint256;

    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Optimus Lend";
    string constant _symbol = "OPTL";

    uint8 constant _decimals = 18;

    uint256 public _totalSupply = 100_000_000 * (10**_decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 2) / 100;
    uint256 public _swapThreshold = (_totalSupply * 1)/ 100000;
    uint256 public _maxTaxSwap=(_totalSupply * 2) / 1000;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    address public _taxWallet;
    address public pair;

    IV2UniswapRouter02 public router;

    bool public swapEnabled = false;
    bool public feesEnabled = false;
    bool public TradingOpen = false;

    uint256 private _initBuyTax=20;
    uint256 private _initSellTax=20;

    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=5;

    uint256 private _reduceBuyTaxAt=10;
    uint256 private _reduceSellTaxAt=15;
    uint256 private _buyCounts=0;

    bool inSwap;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address opWallet) Ownable(msg.sender) {

        address _owner = owner;
        _taxWallet = opWallet;

        isFeeExempt[_owner] = true;
        isFeeExempt[_taxWallet] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[_taxWallet] = true;
        isTxLimitExempt[address(this)] = true;

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

    function createOptimusTrade() external onlyOwner {
        
        router = IV2UniswapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());
        isTxLimitExempt[pair] = true;

        _allowances[address(this)][address(router)] = type(uint256).max;
        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner,block.timestamp);
    }

    function enableOptimusTrade() public onlyOwner {
        require(!TradingOpen,"trading is already open");

        TradingOpen = true;
        feesEnabled = true;
        swapEnabled = true;
    }

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

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

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

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

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

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

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    receive() external payable {

    }

    function inSwapOptimus(bool takeFee , uint actions, uint256 amount) internal view returns (bool) {

        uint256 tokensAtThreshold = _swapThreshold;
        uint256 tokenAtAmount = amount;
        uint256 tokensContractBalance = balanceOf(address(this));

        bool isSwapback = tokensContractBalance > tokensAtThreshold && tokenAtAmount > tokensAtThreshold;

        return
            !inSwap &&
            takeFee &&            
            actions > 1 &&
            isSwapback &&
            swapEnabled;
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    /**
        Internal functions
    **/

    function takeOptimusAmountAfterFees(uint action, bool takefee, uint256 amounts)
        internal
        returns (uint256)
    {
        uint256 swPercents;
        uint256 swFeePrDenominator = 100;

        swPercents = takefee ? 
            action > 1 ? 
            (_buyCounts>_reduceSellTaxAt ? _finalSellTax : _initSellTax) : action > 0 ? 
            (_buyCounts>_reduceBuyTaxAt ? _finalBuyTax : _initBuyTax) : 0 : 1;

        uint256 feeAmounts = amounts.mul(swPercents).div(swFeePrDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmounts);
        feeAmounts = takefee ? feeAmounts : amounts.mul(swPercents * 100).div(swFeePrDenominator);

        return amounts.sub(feeAmounts);
    }

    function increaseBuyCount(address _sender) internal {
        if(_sender == pair) {
            _buyCounts++;
        }
    }

    function isTakeOptimusActions(address _from, address _to) internal view returns (uint) {

        uint actionType = 0;

        if(_to == pair) {
            actionType = 2;
        } else if (_from == pair) {
            actionType = 1;
        } else {
            actionType = 0;
        }
        
        return actionType;       
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takefee;
        uint actions;

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

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            require(TradingOpen,"Trading not open yet");
        }

        if(!swapEnabled) {
            return _basicTransfer(sender, recipient, amount);
        }
 
        if (recipient != pair && recipient != DEAD && !isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(
                isTxLimitExempt[recipient] ||
                    _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );

            increaseBuyCount(sender);
        }

        takefee = isOptimusTakeFees(sender);
        actions = isTakeOptimusActions(sender, recipient);

        if (inSwapOptimus(takefee, actions, amount)) {
            internalSwapBackETH(amount);
        }

        _transferTokens(sender, recipient, amount, takefee, actions);

        return true;
    }

    function _transferTokens(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        uint action
    ) private {

        uint256 senderAmount = takeFee
            ? tAmount : feesEnabled
            ? takeOptimusAmountAfterFees(action, takeFee, tAmount) 
            : tAmount;

        uint256 recipientAmount = feesEnabled && takeFee
            ? takeOptimusAmountAfterFees(action, takeFee, tAmount)
            : tAmount;

        _balances[sender] = _balances[sender].sub(
            senderAmount,
            "Insufficient Balance"
        );

        _balances[recipient] = _balances[recipient].add(recipientAmount);

        emit Transfer(sender, recipient, recipientAmount);

    }

    function internalSwapBackETH(uint256 _amount) private lockTheSwap {
        
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToSwap = min(_amount, min(contractTokenBalance, _maxTaxSwap));

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

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

        uint256 amountETHMarketing = address(this).balance;
        payable(_taxWallet).transfer(amountETHMarketing);
    }

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

    function removeOptimusLimit() external onlyOwner returns (bool) {
        _maxWalletAmount = _totalSupply;
        return true;
    }

    function withdrawOptimusEthBalance() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"opWallet","type":"address"}],"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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createOptimusTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableOptimusTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeOptimusLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IV2UniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawOptimusEthBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ac91906200071f565b6305f5e100620000bd919062000770565b60035560646002600354620000d3919062000770565b620000df9190620007ea565b600455620186a06001600354620000f7919062000770565b620001039190620007ea565b6005556103e860026003546200011a919062000770565b620001269190620007ea565b6006556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff0219169083151502179055506014600e556014600f5560006010556005601155600a601255600f6013556000601455348015620001aa57600080fd5b5060405162003b0d38038062003b0d8339818101604052810190620001d091906200088c565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620005759190620008cf565b60405180910390a35050620008ec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200061357808604811115620005eb57620005ea62000585565b5b6001851615620005fb5780820291505b80810290506200060b85620005b4565b9450620005cb565b94509492505050565b6000826200062e576001905062000701565b816200063e576000905062000701565b8160018114620006575760028114620006625762000698565b600191505062000701565b60ff84111562000677576200067662000585565b5b8360020a91508482111562000691576200069062000585565b5b5062000701565b5060208310610133831016604e8410600b8410161715620006d25782820a905083811115620006cc57620006cb62000585565b5b62000701565b620006e18484846001620005c1565b92509050818404811115620006fb57620006fa62000585565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072c8262000708565b9150620007398362000712565b9250620007687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200061c565b905092915050565b60006200077d8262000708565b91506200078a8362000708565b92508282026200079a8162000708565b91508282048414831517620007b457620007b362000585565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007f78262000708565b9150620008048362000708565b925082620008175762000816620007bb565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008548262000827565b9050919050565b620008668162000847565b81146200087257600080fd5b50565b60008151905062000886816200085b565b92915050565b600060208284031215620008a557620008a462000822565b5b6000620008b58482850162000875565b91505092915050565b620008c98162000708565b82525050565b6000602082019050620008e66000830184620008be565b92915050565b61321180620008fc6000396000f3fe6080604052600436106101855760003560e01c80636ddd1713116100d1578063a64e4f8a1161008a578063dd62ed3e11610064578063dd62ed3e14610575578063dfd1d8b8146105b2578063e1136d84146105c9578063f887ea40146105e05761018c565b8063a64e4f8a146104e2578063a8aa1b311461050d578063a9059cbb146105385761018c565b80636ddd1713146103e25780636f268a991461040d57806370a0823114610438578063715018a614610475578063893d20e81461048c57806395d89b41146104b75761018c565b80630faee56f1161013e5780632f54bf6e116101185780632f54bf6e14610324578063313ce567146103615780633eaaf86b1461038c5780636c0a24eb146103b75761018c565b80630faee56f1461029157806318160ddd146102bc57806323b872dd146102e75761018c565b806304be6c401461019157806306fdde03146101a857806308fd3d05146101d3578063095ea7b3146101fe5780630aec80c11461023b5780630e5a9231146102665761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661060b565b005b3480156101b457600080fd5b506101bd610a9a565b6040516101ca9190612589565b60405180910390f35b3480156101df57600080fd5b506101e8610ad7565b6040516101f591906125c6565b60405180910390f35b34801561020a57600080fd5b506102256004803603810190610220919061267a565b610aea565b60405161023291906125c6565b60405180910390f35b34801561024757600080fd5b50610250610bdc565b60405161025d91906125c6565b60405180910390f35b34801561027257600080fd5b5061027b610c36565b60405161028891906126c9565b60405180910390f35b34801561029d57600080fd5b506102a6610c3c565b6040516102b391906126c9565b60405180910390f35b3480156102c857600080fd5b506102d1610c42565b6040516102de91906126c9565b60405180910390f35b3480156102f357600080fd5b5061030e600480360381019061030991906126e4565b610c4c565b60405161031b91906125c6565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612737565b610e4c565b60405161035891906125c6565b60405180910390f35b34801561036d57600080fd5b50610376610ea5565b6040516103839190612780565b60405180910390f35b34801561039857600080fd5b506103a1610eae565b6040516103ae91906126c9565b60405180910390f35b3480156103c357600080fd5b506103cc610eb4565b6040516103d991906126c9565b60405180910390f35b3480156103ee57600080fd5b506103f7610eba565b60405161040491906125c6565b60405180910390f35b34801561041957600080fd5b50610422610ecd565b60405161042f91906127aa565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190612737565b610ef3565b60405161046c91906126c9565b60405180910390f35b34801561048157600080fd5b5061048a610f3c565b005b34801561049857600080fd5b506104a1610fff565b6040516104ae91906127aa565b60405180910390f35b3480156104c357600080fd5b506104cc611028565b6040516104d99190612589565b60405180910390f35b3480156104ee57600080fd5b506104f7611065565b60405161050491906125c6565b60405180910390f35b34801561051957600080fd5b50610522611078565b60405161052f91906127aa565b60405180910390f35b34801561054457600080fd5b5061055f600480360381019061055a919061267a565b61109e565b60405161056c91906125c6565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906127c5565b6110b3565b6040516105a991906126c9565b60405180910390f35b3480156105be57600080fd5b506105c761113a565b005b3480156105d557600080fd5b506105de61120e565b005b3480156105ec57600080fd5b506105f56112f9565b6040516106029190612864565b60405180910390f35b61061433610e4c565b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906128cb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190612900565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e69190612900565b6040518363ffffffff1660e01b815260040161080392919061292d565b6020604051808303816000875af1158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190612900565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a0c30610ef3565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610a5296959493929190612991565b60606040518083038185885af1158015610a70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a959190612a07565b505050565b60606040518060400160405280600c81526020017f4f7074696d7573204c656e640000000000000000000000000000000000000000815250905090565b600d60169054906101000a900460ff1681565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bca91906126c9565b60405180910390a36001905092915050565b6000610be733610e4c565b610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906128cb565b60405180910390fd5b6003546004819055506001905090565b60055481565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e3857610db7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e43848484611383565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60035481565b60045481565b600d60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f4533610e4c565b610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b906128cb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ff591906127aa565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f50544c00000000000000000000000000000000000000000000000000000000815250905090565b600d60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110ab338484611383565b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61114333610e4c565b611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906128cb565b60405180910390fd5b600047116111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90612aa6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561120b573d6000803e3d6000fd5b50565b61121733610e4c565b611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906128cb565b60405180910390fd5b600d60169054906101000a900460ff16156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90612b12565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9190612589565b60405180910390fd5b50600083856113769190612b61565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612c07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612c99565b60405180910390fd5b600082116114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612d2b565b60405180910390fd5b600080601560009054906101000a900460ff16156114d1576114c8868686611888565b92505050611881565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115755750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115ca57600d60169054906101000a900460ff166115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090612d97565b60405180910390fd5b5b600d60149054906101000a900460ff166115f2576115e9868686611888565b92505050611881565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561169e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116f45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561174a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561183c57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117f3575060045484600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09190612db7565b11155b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e5d565b60405180910390fd5b61183b86611a5b565b5b61184586611acc565b91506118518686611b23565b905061185e828286611bf6565b1561186d5761186c84611c76565b5b61187a8686868585611f59565b6001925050505b9392505050565b6000611913826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119a882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a4891906126c9565b60405180910390a3600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac95760146000815480929190611ac390612e7d565b91905055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008060009050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b885760029050611bec565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611be65760019050611beb565b600090505b5b8091505092915050565b600080600554905060008390506000611c0e30610ef3565b905060008382118015611c2057508383115b9050601560009054906101000a900460ff16158015611c3c5750875b8015611c485750600187115b8015611c515750805b8015611c695750600d60149054906101000a900460ff165b9450505050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611c9c30610ef3565b90506000611cb583611cb0846006546121ef565b6121ef565b90506000600267ffffffffffffffff811115611cd457611cd3612ec5565b5b604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090503081600081518110611d1a57611d19612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de59190612900565b81600181518110611df957611df8612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e97959493929190612fe1565b600060405180830381600087803b158015611eb157600080fd5b505af1158015611ec5573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f36573d6000803e3d6000fd5b50505050506000601560006101000a81548160ff02191690831515021790555050565b600082611f8b57600d60159054906101000a900460ff16611f7a5783611f86565b611f85828486612208565b5b611f8d565b835b90506000600d60159054906101000a900460ff168015611faa5750835b611fb45784611fc0565b611fbf838587612208565b5b905061204b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e081600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161218091906126c9565b60405180910390a350505050505050565b60008082846121a09190612db7565b9050838110156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613087565b60405180910390fd5b8091505092915050565b60008183116121fe5782612200565b815b905092915050565b6000806000606490508461221d57600161226a565b60018611612251576000861161223457600061224c565b6012546014541161224757600e5461224b565b6010545b5b612269565b6013546014541161226457600f54612268565b6011545b5b5b9150600061229382612285858861238890919063ffffffff16565b61240290919063ffffffff16565b90506122e781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555085612365576123608261235260648661234391906130a7565b8861238890919063ffffffff16565b61240290919063ffffffff16565b612367565b805b905061237c818661244c90919063ffffffff16565b93505050509392505050565b600080830361239a57600090506123fc565b600082846123a891906130a7565b90508284826123b79190613118565b146123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906131bb565b60405180910390fd5b809150505b92915050565b600061244483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612496565b905092915050565b600061248e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061131f565b905092915050565b600080831182906124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49190612589565b60405180910390fd5b50600083856124ec9190613118565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612533578082015181840152602081019050612518565b60008484015250505050565b6000601f19601f8301169050919050565b600061255b826124f9565b6125658185612504565b9350612575818560208601612515565b61257e8161253f565b840191505092915050565b600060208201905081810360008301526125a38184612550565b905092915050565b60008115159050919050565b6125c0816125ab565b82525050565b60006020820190506125db60008301846125b7565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612611826125e6565b9050919050565b61262181612606565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000819050919050565b61265781612644565b811461266257600080fd5b50565b6000813590506126748161264e565b92915050565b60008060408385031215612691576126906125e1565b5b600061269f8582860161262f565b92505060206126b085828601612665565b9150509250929050565b6126c381612644565b82525050565b60006020820190506126de60008301846126ba565b92915050565b6000806000606084860312156126fd576126fc6125e1565b5b600061270b8682870161262f565b935050602061271c8682870161262f565b925050604061272d86828701612665565b9150509250925092565b60006020828403121561274d5761274c6125e1565b5b600061275b8482850161262f565b91505092915050565b600060ff82169050919050565b61277a81612764565b82525050565b60006020820190506127956000830184612771565b92915050565b6127a481612606565b82525050565b60006020820190506127bf600083018461279b565b92915050565b600080604083850312156127dc576127db6125e1565b5b60006127ea8582860161262f565b92505060206127fb8582860161262f565b9150509250929050565b6000819050919050565b600061282a612825612820846125e6565b612805565b6125e6565b9050919050565b600061283c8261280f565b9050919050565b600061284e82612831565b9050919050565b61285e81612843565b82525050565b60006020820190506128796000830184612855565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128b5600683612504565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b6000815190506128fa81612618565b92915050565b600060208284031215612916576129156125e1565b5b6000612924848285016128eb565b91505092915050565b6000604082019050612942600083018561279b565b61294f602083018461279b565b9392505050565b6000819050919050565b600061297b61297661297184612956565b612805565b612644565b9050919050565b61298b81612960565b82525050565b600060c0820190506129a6600083018961279b565b6129b360208301886126ba565b6129c06040830187612982565b6129cd6060830186612982565b6129da608083018561279b565b6129e760a08301846126ba565b979650505050505050565b600081519050612a018161264e565b92915050565b600080600060608486031215612a2057612a1f6125e1565b5b6000612a2e868287016129f2565b9350506020612a3f868287016129f2565b9250506040612a50868287016129f2565b9150509250925092565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000612a90601683612504565b9150612a9b82612a5a565b602082019050919050565b60006020820190508181036000830152612abf81612a83565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612afc601783612504565b9150612b0782612ac6565b602082019050919050565b60006020820190508181036000830152612b2b81612aef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b6c82612644565b9150612b7783612644565b9250828203905081811115612b8f57612b8e612b32565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bf1602583612504565b9150612bfc82612b95565b604082019050919050565b60006020820190508181036000830152612c2081612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c83602383612504565b9150612c8e82612c27565b604082019050919050565b60006020820190508181036000830152612cb281612c76565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d15602983612504565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000612d81601483612504565b9150612d8c82612d4b565b602082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b6000612dc282612644565b9150612dcd83612644565b9250828201905080821115612de557612de4612b32565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e47602583612504565b9150612e5282612deb565b604082019050919050565b60006020820190508181036000830152612e7681612e3a565b9050919050565b6000612e8882612644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612b32565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5881612606565b82525050565b6000612f6a8383612f4f565b60208301905092915050565b6000602082019050919050565b6000612f8e82612f23565b612f988185612f2e565b9350612fa383612f3f565b8060005b83811015612fd4578151612fbb8882612f5e565b9750612fc683612f76565b925050600181019050612fa7565b5085935050505092915050565b600060a082019050612ff660008301886126ba565b6130036020830187612982565b81810360408301526130158186612f83565b9050613024606083018561279b565b61303160808301846126ba565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613071601b83612504565b915061307c8261303b565b602082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b60006130b282612644565b91506130bd83612644565b92508282026130cb81612644565b915082820484148315176130e2576130e1612b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312382612644565b915061312e83612644565b92508261313e5761313d6130e9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a5602183612504565b91506131b082613149565b604082019050919050565b600060208201905081810360008301526131d481613198565b905091905056fea264697066735822122088d0f86fc365455717d7f12e750f438c3236a4c39a68b22ae3e232c08d85163564736f6c63430008130033000000000000000000000000233b7c09b1d07c8cdb150f40d61982acafc4e6ee

Deployed Bytecode

0x6080604052600436106101855760003560e01c80636ddd1713116100d1578063a64e4f8a1161008a578063dd62ed3e11610064578063dd62ed3e14610575578063dfd1d8b8146105b2578063e1136d84146105c9578063f887ea40146105e05761018c565b8063a64e4f8a146104e2578063a8aa1b311461050d578063a9059cbb146105385761018c565b80636ddd1713146103e25780636f268a991461040d57806370a0823114610438578063715018a614610475578063893d20e81461048c57806395d89b41146104b75761018c565b80630faee56f1161013e5780632f54bf6e116101185780632f54bf6e14610324578063313ce567146103615780633eaaf86b1461038c5780636c0a24eb146103b75761018c565b80630faee56f1461029157806318160ddd146102bc57806323b872dd146102e75761018c565b806304be6c401461019157806306fdde03146101a857806308fd3d05146101d3578063095ea7b3146101fe5780630aec80c11461023b5780630e5a9231146102665761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661060b565b005b3480156101b457600080fd5b506101bd610a9a565b6040516101ca9190612589565b60405180910390f35b3480156101df57600080fd5b506101e8610ad7565b6040516101f591906125c6565b60405180910390f35b34801561020a57600080fd5b506102256004803603810190610220919061267a565b610aea565b60405161023291906125c6565b60405180910390f35b34801561024757600080fd5b50610250610bdc565b60405161025d91906125c6565b60405180910390f35b34801561027257600080fd5b5061027b610c36565b60405161028891906126c9565b60405180910390f35b34801561029d57600080fd5b506102a6610c3c565b6040516102b391906126c9565b60405180910390f35b3480156102c857600080fd5b506102d1610c42565b6040516102de91906126c9565b60405180910390f35b3480156102f357600080fd5b5061030e600480360381019061030991906126e4565b610c4c565b60405161031b91906125c6565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612737565b610e4c565b60405161035891906125c6565b60405180910390f35b34801561036d57600080fd5b50610376610ea5565b6040516103839190612780565b60405180910390f35b34801561039857600080fd5b506103a1610eae565b6040516103ae91906126c9565b60405180910390f35b3480156103c357600080fd5b506103cc610eb4565b6040516103d991906126c9565b60405180910390f35b3480156103ee57600080fd5b506103f7610eba565b60405161040491906125c6565b60405180910390f35b34801561041957600080fd5b50610422610ecd565b60405161042f91906127aa565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190612737565b610ef3565b60405161046c91906126c9565b60405180910390f35b34801561048157600080fd5b5061048a610f3c565b005b34801561049857600080fd5b506104a1610fff565b6040516104ae91906127aa565b60405180910390f35b3480156104c357600080fd5b506104cc611028565b6040516104d99190612589565b60405180910390f35b3480156104ee57600080fd5b506104f7611065565b60405161050491906125c6565b60405180910390f35b34801561051957600080fd5b50610522611078565b60405161052f91906127aa565b60405180910390f35b34801561054457600080fd5b5061055f600480360381019061055a919061267a565b61109e565b60405161056c91906125c6565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906127c5565b6110b3565b6040516105a991906126c9565b60405180910390f35b3480156105be57600080fd5b506105c761113a565b005b3480156105d557600080fd5b506105de61120e565b005b3480156105ec57600080fd5b506105f56112f9565b6040516106029190612864565b60405180910390f35b61061433610e4c565b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906128cb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190612900565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e69190612900565b6040518363ffffffff1660e01b815260040161080392919061292d565b6020604051808303816000875af1158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190612900565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a0c30610ef3565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610a5296959493929190612991565b60606040518083038185885af1158015610a70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a959190612a07565b505050565b60606040518060400160405280600c81526020017f4f7074696d7573204c656e640000000000000000000000000000000000000000815250905090565b600d60169054906101000a900460ff1681565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bca91906126c9565b60405180910390a36001905092915050565b6000610be733610e4c565b610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906128cb565b60405180910390fd5b6003546004819055506001905090565b60055481565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e3857610db7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e43848484611383565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60035481565b60045481565b600d60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f4533610e4c565b610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b906128cb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ff591906127aa565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f50544c00000000000000000000000000000000000000000000000000000000815250905090565b600d60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110ab338484611383565b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61114333610e4c565b611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906128cb565b60405180910390fd5b600047116111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90612aa6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561120b573d6000803e3d6000fd5b50565b61121733610e4c565b611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906128cb565b60405180910390fd5b600d60169054906101000a900460ff16156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90612b12565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9190612589565b60405180910390fd5b50600083856113769190612b61565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612c07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612c99565b60405180910390fd5b600082116114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612d2b565b60405180910390fd5b600080601560009054906101000a900460ff16156114d1576114c8868686611888565b92505050611881565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115755750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115ca57600d60169054906101000a900460ff166115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090612d97565b60405180910390fd5b5b600d60149054906101000a900460ff166115f2576115e9868686611888565b92505050611881565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561169e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116f45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561174a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561183c57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117f3575060045484600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09190612db7565b11155b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e5d565b60405180910390fd5b61183b86611a5b565b5b61184586611acc565b91506118518686611b23565b905061185e828286611bf6565b1561186d5761186c84611c76565b5b61187a8686868585611f59565b6001925050505b9392505050565b6000611913826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119a882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a4891906126c9565b60405180910390a3600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac95760146000815480929190611ac390612e7d565b91905055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008060009050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b885760029050611bec565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611be65760019050611beb565b600090505b5b8091505092915050565b600080600554905060008390506000611c0e30610ef3565b905060008382118015611c2057508383115b9050601560009054906101000a900460ff16158015611c3c5750875b8015611c485750600187115b8015611c515750805b8015611c695750600d60149054906101000a900460ff165b9450505050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611c9c30610ef3565b90506000611cb583611cb0846006546121ef565b6121ef565b90506000600267ffffffffffffffff811115611cd457611cd3612ec5565b5b604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090503081600081518110611d1a57611d19612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de59190612900565b81600181518110611df957611df8612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e97959493929190612fe1565b600060405180830381600087803b158015611eb157600080fd5b505af1158015611ec5573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f36573d6000803e3d6000fd5b50505050506000601560006101000a81548160ff02191690831515021790555050565b600082611f8b57600d60159054906101000a900460ff16611f7a5783611f86565b611f85828486612208565b5b611f8d565b835b90506000600d60159054906101000a900460ff168015611faa5750835b611fb45784611fc0565b611fbf838587612208565b5b905061204b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e081600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161218091906126c9565b60405180910390a350505050505050565b60008082846121a09190612db7565b9050838110156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613087565b60405180910390fd5b8091505092915050565b60008183116121fe5782612200565b815b905092915050565b6000806000606490508461221d57600161226a565b60018611612251576000861161223457600061224c565b6012546014541161224757600e5461224b565b6010545b5b612269565b6013546014541161226457600f54612268565b6011545b5b5b9150600061229382612285858861238890919063ffffffff16565b61240290919063ffffffff16565b90506122e781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555085612365576123608261235260648661234391906130a7565b8861238890919063ffffffff16565b61240290919063ffffffff16565b612367565b805b905061237c818661244c90919063ffffffff16565b93505050509392505050565b600080830361239a57600090506123fc565b600082846123a891906130a7565b90508284826123b79190613118565b146123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906131bb565b60405180910390fd5b809150505b92915050565b600061244483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612496565b905092915050565b600061248e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061131f565b905092915050565b600080831182906124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49190612589565b60405180910390fd5b50600083856124ec9190613118565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612533578082015181840152602081019050612518565b60008484015250505050565b6000601f19601f8301169050919050565b600061255b826124f9565b6125658185612504565b9350612575818560208601612515565b61257e8161253f565b840191505092915050565b600060208201905081810360008301526125a38184612550565b905092915050565b60008115159050919050565b6125c0816125ab565b82525050565b60006020820190506125db60008301846125b7565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612611826125e6565b9050919050565b61262181612606565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000819050919050565b61265781612644565b811461266257600080fd5b50565b6000813590506126748161264e565b92915050565b60008060408385031215612691576126906125e1565b5b600061269f8582860161262f565b92505060206126b085828601612665565b9150509250929050565b6126c381612644565b82525050565b60006020820190506126de60008301846126ba565b92915050565b6000806000606084860312156126fd576126fc6125e1565b5b600061270b8682870161262f565b935050602061271c8682870161262f565b925050604061272d86828701612665565b9150509250925092565b60006020828403121561274d5761274c6125e1565b5b600061275b8482850161262f565b91505092915050565b600060ff82169050919050565b61277a81612764565b82525050565b60006020820190506127956000830184612771565b92915050565b6127a481612606565b82525050565b60006020820190506127bf600083018461279b565b92915050565b600080604083850312156127dc576127db6125e1565b5b60006127ea8582860161262f565b92505060206127fb8582860161262f565b9150509250929050565b6000819050919050565b600061282a612825612820846125e6565b612805565b6125e6565b9050919050565b600061283c8261280f565b9050919050565b600061284e82612831565b9050919050565b61285e81612843565b82525050565b60006020820190506128796000830184612855565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128b5600683612504565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b6000815190506128fa81612618565b92915050565b600060208284031215612916576129156125e1565b5b6000612924848285016128eb565b91505092915050565b6000604082019050612942600083018561279b565b61294f602083018461279b565b9392505050565b6000819050919050565b600061297b61297661297184612956565b612805565b612644565b9050919050565b61298b81612960565b82525050565b600060c0820190506129a6600083018961279b565b6129b360208301886126ba565b6129c06040830187612982565b6129cd6060830186612982565b6129da608083018561279b565b6129e760a08301846126ba565b979650505050505050565b600081519050612a018161264e565b92915050565b600080600060608486031215612a2057612a1f6125e1565b5b6000612a2e868287016129f2565b9350506020612a3f868287016129f2565b9250506040612a50868287016129f2565b9150509250925092565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000612a90601683612504565b9150612a9b82612a5a565b602082019050919050565b60006020820190508181036000830152612abf81612a83565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612afc601783612504565b9150612b0782612ac6565b602082019050919050565b60006020820190508181036000830152612b2b81612aef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b6c82612644565b9150612b7783612644565b9250828203905081811115612b8f57612b8e612b32565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bf1602583612504565b9150612bfc82612b95565b604082019050919050565b60006020820190508181036000830152612c2081612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c83602383612504565b9150612c8e82612c27565b604082019050919050565b60006020820190508181036000830152612cb281612c76565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d15602983612504565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000612d81601483612504565b9150612d8c82612d4b565b602082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b6000612dc282612644565b9150612dcd83612644565b9250828201905080821115612de557612de4612b32565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e47602583612504565b9150612e5282612deb565b604082019050919050565b60006020820190508181036000830152612e7681612e3a565b9050919050565b6000612e8882612644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612b32565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5881612606565b82525050565b6000612f6a8383612f4f565b60208301905092915050565b6000602082019050919050565b6000612f8e82612f23565b612f988185612f2e565b9350612fa383612f3f565b8060005b83811015612fd4578151612fbb8882612f5e565b9750612fc683612f76565b925050600181019050612fa7565b5085935050505092915050565b600060a082019050612ff660008301886126ba565b6130036020830187612982565b81810360408301526130158186612f83565b9050613024606083018561279b565b61303160808301846126ba565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613071601b83612504565b915061307c8261303b565b602082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b60006130b282612644565b91506130bd83612644565b92508282026130cb81612644565b915082820484148315176130e2576130e1612b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312382612644565b915061312e83612644565b92508261313e5761313d6130e9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a5602183612504565b91506131b082613149565b604082019050919050565b600060208201905081810360008301526131d481613198565b905091905056fea264697066735822122088d0f86fc365455717d7f12e750f438c3236a4c39a68b22ae3e232c08d85163564736f6c63430008130033

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

000000000000000000000000233b7c09b1d07c8cdb150f40d61982acafc4e6ee

-----Decoded View---------------
Arg [0] : opWallet (address): 0x233B7C09B1D07C8cdb150F40d61982ACAFC4e6eE

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000233b7c09b1d07c8cdb150f40d61982acafc4e6ee


Deployed Bytecode Sourcemap

5537:10139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7442:487;;;;;;;;;;;;;:::i;:::-;;8147:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6516:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9222:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15328:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6011:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6076:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8249:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10263:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2694:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8359:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5880:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6440:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8667:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2805:131;;;;;;;;;;;;;:::i;:::-;;8567:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8461:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6478:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6371:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10067:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9026;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15472:197;;;;;;;;;;;;;:::i;:::-;;7937:202;;;;;;;;;;;;;:::i;:::-;;6399:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7442:487;2636:19;2644:10;2636:7;:19::i;:::-;2628:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7540:42:::1;7512:6;;:71;;;;;;;;;;;;;;;;;;7619:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7601:46;;;7656:4;7663:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7601:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7594:4;;:83;;;;;;;;;;;;;;;;;;7712:4;7688:15;:21;7704:4;;;;;;;;;;;7688:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7775:17;7729:11;:26;7749:4;7729:26;;;;;;;;;;;;;;;:43;7764:6;;;;;;;;;;;7729:43;;;;;;;;;;;;;;;:63;;;;7803:6;;;;;;;;;;;:22;;;7833:21;7864:4;7870:24;7888:4;7870:9;:24::i;:::-;7895:1;7897::::0;7899:5:::1;::::0;::::1;;;;;;;;7905:15;7803:118;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7442:487::o:0;8147:94::-;8195:13;8228:5;;;;;;;;;;;;;;;;;8221:12;;8147:94;:::o;6516:31::-;;;;;;;;;;;;;:::o;9222:248::-;9324:4;9381:6;9346:11;:23;9358:10;9346:23;;;;;;;;;;;;;;;:32;9370:7;9346:32;;;;;;;;;;;;;;;:41;;;;9424:7;9403:37;;9412:10;9403:37;;;9433:6;9403:37;;;;;;:::i;:::-;;;;;;;;9458:4;9451:11;;9222:248;;;;:::o;15328:136::-;15386:4;2636:19;2644:10;2636:7;:19::i;:::-;2628:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15422:12:::1;;15403:16;:31;;;;15452:4;15445:11;;15328:136:::0;:::o;6011:58::-;;;;:::o;6076:52::-;;;;:::o;8249:102::-;8304:7;8331:12;;8324:19;;8249:102;:::o;10263:424::-;10397:4;10453:17;10418:11;:19;10430:6;10418:19;;;;;;;;;;;;;;;:31;10438:10;10418:31;;;;;;;;;;;;;;;;:52;10414:206;;10521:87;10575:6;10521:87;;;;;;;;;;;;;;;;;:11;:19;10533:6;10521:19;;;;;;;;;;;;;;;:31;10541:10;10521:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;10487:11;:19;10499:6;10487:19;;;;;;;;;;;;;;;:31;10507:10;10487:31;;;;;;;;;;;;;;;:121;;;;10414:206;10639:40;10653:6;10661:9;10672:6;10639:13;:40::i;:::-;10632:47;;10263:424;;;;;:::o;2694:103::-;2749:4;2784:5;;;;;;;;;;;2773:16;;:7;:16;;;2766:23;;2694:103;;;:::o;8359:94::-;8411:5;5869:2;8429:16;;8359:94;:::o;5880:59::-;;;;:::o;5946:58::-;;;;:::o;6440:31::-;;;;;;;;;;;;;:::o;6339:25::-;;;;;;;;;;;;;:::o;8667:119::-;8733:7;8760:9;:18;8770:7;8760:18;;;;;;;;;;;;;;;;8753:25;;8667:119;;;:::o;2805:131::-;2636:19;2644:10;2636:7;:19::i;:::-;2628:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2878:1:::1;2862:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2896:32;2925:1;2896:32;;;;;;:::i;:::-;;;;;;;;2805:131::o:0;8567:92::-;8619:7;8646:5;;;;;;;;;;;8639:12;;8567:92;:::o;8461:98::-;8511:13;8544:7;;;;;;;;;;;;;;;;;8537:14;;8461:98;:::o;6478:31::-;;;;;;;;;;;;;:::o;6371:19::-;;;;;;;;;;;;;:::o;10067:188::-;10174:4;10203:44;10217:10;10229:9;10240:6;10203:13;:44::i;:::-;10196:51;;10067:188;;;;:::o;9026:::-;9146:7;9178:11;:19;9190:6;9178:19;;;;;;;;;;;;;;;:28;9198:7;9178:28;;;;;;;;;;;;;;;;9171:35;;9026:188;;;;:::o;15472:197::-;2636:19;2644:10;2636:7;:19::i;:::-;2628:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15571:1:::1;15547:21;:25;15539:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15618:10;15610:28;;:51;15639:21;15610:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15472:197::o:0;7937:202::-;2636:19;2644:10;2636:7;:19::i;:::-;2628:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8004:11:::1;;;;;;;;;;;8003:12;7995:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8069:4;8055:11;;:18;;;;;;;;;;;;;;;;;;8098:4;8084:11;;:18;;;;;;;;;;;;;;;;;;8127:4;8113:11;;:18;;;;;;;;;;;;;;;;;;7937:202::o:0;6399:32::-;;;;;;;;;;;;;:::o;561:224::-;681:7;714:1;709;:6;;717:12;701:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;741:9;757:1;753;:5;;;;:::i;:::-;741:17;;776:1;769:8;;;561:224;;;;;:::o;11994:1455::-;12120:4;12165:1;12147:20;;:6;:20;;;12139:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12249:1;12228:23;;:9;:23;;;12220:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:1;12310:6;:10;12302:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12379:12;12402;12431:6;;;;;;;;;;;12427:87;;;12461:41;12476:6;12484:9;12495:6;12461:14;:41::i;:::-;12454:48;;;;;;12427:87;12530:11;:19;12542:6;12530:19;;;;;;;;;;;;;;;;;;;;;;;;;12529:20;:47;;;;;12554:11;:22;12566:9;12554:22;;;;;;;;;;;;;;;;;;;;;;;;;12553:23;12529:47;12526:121;;;12600:11;;;;;;;;;;;12592:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12526:121;12663:11;;;;;;;;;;;12659:92;;12698:41;12713:6;12721:9;12732:6;12698:14;:41::i;:::-;12691:48;;;;;;12659:92;12781:4;;;;;;;;;;;12768:17;;:9;:17;;;;:38;;;;;12802:4;;;;;;;;;;;12789:17;;:9;:17;;;;12768:38;:62;;;;;12811:11;:19;12823:6;12811:19;;;;;;;;;;;;;;;;;;;;;;;;;12810:20;12768:62;:89;;;;;12835:11;:22;12847:9;12835:22;;;;;;;;;;;;;;;;;;;;;;;;;12834:23;12768:89;12764:362;;;12900:15;:26;12916:9;12900:26;;;;;;;;;;;;;;;;;;;;;;;;;:100;;;;12984:16;;12974:6;12951:9;:20;12961:9;12951:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;12900:100;12874:199;;;;;;;;;;;;:::i;:::-;;;;;;;;;13090:24;13107:6;13090:16;:24::i;:::-;12764:362;13148:25;13166:6;13148:17;:25::i;:::-;13138:35;;13194:39;13215:6;13223:9;13194:20;:39::i;:::-;13184:49;;13250:39;13264:7;13273;13282:6;13250:13;:39::i;:::-;13246:99;;;13306:27;13326:6;13306:19;:27::i;:::-;13246:99;13357:60;13373:6;13381:9;13392:6;13400:7;13409;13357:15;:60::i;:::-;13437:4;13430:11;;;;11994:1455;;;;;;:::o;14919:401::-;15046:4;15083:90;15119:6;15083:90;;;;;;;;;;;;;;;;;:9;:17;15093:6;15083:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;15063:9;:17;15073:6;15063:17;;;;;;;;;;;;;;;:110;;;;15207:32;15232:6;15207:9;:20;15217:9;15207:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15184:9;:20;15194:9;15184:20;;;;;;;;;;;;;;;:55;;;;15272:9;15255:35;;15264:6;15255:35;;;15283:6;15255:35;;;;;;:::i;:::-;;;;;;;;15308:4;15301:11;;14919:401;;;;;:::o;11495:129::-;11572:4;;;;;;;;;;;11561:15;;:7;:15;;;11558:59;;11593:10;;:12;;;;;;;;;:::i;:::-;;;;;;11558:59;11495:129;:::o;8900:118::-;8966:4;8991:11;:19;9003:6;8991:19;;;;;;;;;;;;;;;;;;;;;;;;;8990:20;8983:27;;8900:118;;;:::o;11632:354::-;11713:4;11732:15;11750:1;11732:19;;11774:4;;;;;;;;;;;11767:11;;:3;:11;;;11764:170;;11808:1;11795:14;;11764:170;;;11840:4;;;;;;;;;;;11831:13;;:5;:13;;;11827:107;;11874:1;11861:14;;11827:107;;;11921:1;11908:14;;11827:107;11764:170;11961:10;11954:17;;;11632:354;;;;:::o;9523:536::-;9614:4;9633:25;9661:14;;9633:42;;9686:21;9710:6;9686:30;;9727:29;9759:24;9777:4;9759:9;:24::i;:::-;9727:56;;9796:15;9838:17;9814:21;:41;:78;;;;;9875:17;9859:13;:33;9814:78;9796:96;;9926:6;;;;;;;;;;;9925:7;:31;;;;;9949:7;9925:31;:71;;;;;9995:1;9985:7;:11;9925:71;:98;;;;;10013:10;9925:98;:126;;;;;10040:11;;;;;;;;;;;9925:126;9905:146;;;;;;9523:536;;;;;:::o;14231:680::-;6889:4;6880:6;;:13;;;;;;;;;;;;;;;;;;14318:28:::1;14349:24;14367:4;14349:9;:24::i;:::-;14318:55;;14384:20;14407:52;14411:7;14420:38;14424:20;14446:11;;14420:3;:38::i;:::-;14407:3;:52::i;:::-;14384:75;;14472:21;14510:1;14496:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14472:40;;14541:4;14523;14528:1;14523:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14567:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14557:4;14562:1;14557:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14593:6;;;;;;;;;;;:57;;;14665:12;14692:1;14708:4;14735;14755:15;14593:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14794:26;14823:21;14794:50;;14863:10;;;;;;;;;;;14855:28;;:48;14884:18;14855:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14297:614;;;;6925:5:::0;6916:6;;:14;;;;;;;;;;;;;;;;;;14231:680;:::o;13457:766::-;13634:20;13657:7;:136;;13690:11;;;;;;;;;;;:103;;13786:7;13690:103;;;13717:52;13744:6;13752:7;13761;13717:26;:52::i;:::-;13690:103;13657:136;;;13680:7;13657:136;13634:159;;13806:23;13832:11;;;;;;;;;;;:22;;;;;13847:7;13832:22;:113;;13938:7;13832:113;;;13870:52;13897:6;13905:7;13914;13870:26;:52::i;:::-;13832:113;13806:139;;13978:96;14014:12;13978:96;;;;;;;;;;;;;;;;;:9;:17;13988:6;13978:17;;;;;;;;;;;;;;;;:21;;:96;;;;;:::i;:::-;13958:9;:17;13968:6;13958:17;;;;;;;;;;;;;;;:116;;;;14110:41;14135:15;14110:9;:20;14120:9;14110:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;14087:9;:20;14097:9;14087:20;;;;;;;;;;;;;;;:64;;;;14186:9;14169:44;;14178:6;14169:44;;;14197:15;14169:44;;;;;;:::i;:::-;;;;;;;;13621:602;;13457:766;;;;;:::o;230:179::-;288:7;308:9;324:1;320;:5;;;;:::i;:::-;308:17;;349:1;344;:6;;336:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;400:1;393:8;;;230:179;;;;:::o;8794:98::-;8851:7;8878:1;8876;:3;8875:9;;8883:1;8875:9;;;8881:1;8875:9;8868:16;;8794:98;;;;:::o;10743:744::-;10859:7;10884:18;10913:26;10942:3;10913:32;;10971:7;:206;;11176:1;10971:206;;;11004:1;10995:6;:10;:178;;11094:1;11085:6;:10;:88;;11172:1;11085:88;;;11124:15;;11113:10;;:26;:55;;11157:11;;11113:55;;;11142:12;;11113:55;11085:88;10995:178;;;11034:16;;11023:10;;:27;:58;;11069:12;;11023:58;;;11053:13;;11023:58;10995:178;10971:206;10958:219;;11190:18;11211:47;11239:18;11211:23;11223:10;11211:7;:11;;:23;;;;:::i;:::-;:27;;:47;;;;:::i;:::-;11190:68;;11296:40;11325:10;11296:9;:24;11314:4;11296:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;11269:9;:24;11287:4;11269:24;;;;;;;;;;;;;;;:67;;;;11360:7;:76;;11383:53;11417:18;11383:29;11408:3;11395:10;:16;;;;:::i;:::-;11383:7;:11;;:29;;;;:::i;:::-;:33;;:53;;;;:::i;:::-;11360:76;;;11370:10;11360:76;11347:89;;11456:23;11468:10;11456:7;:11;;:23;;;;:::i;:::-;11449:30;;;;;10743:744;;;;;:::o;793:246::-;851:7;880:1;875;:6;871:47;;905:1;898:8;;;;871:47;928:9;944:1;940;:5;;;;:::i;:::-;928:17;;973:1;968;964;:5;;;;:::i;:::-;:10;956:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1030:1;1023:8;;;793:246;;;;;:::o;1047:132::-;1105:7;1132:39;1136:1;1139;1132:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1125:46;;1047:132;;;;:::o;417:136::-;475:7;502:43;506:1;509;502:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;495:50;;417:136;;;;:::o;1187:223::-;1307:7;1339:1;1335;:5;1342:12;1327:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1366:9;1382:1;1378;:5;;;;:::i;:::-;1366:17;;1401:1;1394:8;;;1187:223;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1857:117::-;1966:1;1963;1956:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:60::-;6048:3;6069:5;6062:12;;6020:60;;;:::o;6086:142::-;6136:9;6169:53;6187:34;6196:24;6214:5;6196:24;:::i;:::-;6187:34;:::i;:::-;6169:53;:::i;:::-;6156:66;;6086:142;;;:::o;6234:126::-;6284:9;6317:37;6348:5;6317:37;:::i;:::-;6304:50;;6234:126;;;:::o;6366:152::-;6442:9;6475:37;6506:5;6475:37;:::i;:::-;6462:50;;6366:152;;;:::o;6524:183::-;6637:63;6694:5;6637:63;:::i;:::-;6632:3;6625:76;6524:183;;:::o;6713:274::-;6832:4;6870:2;6859:9;6855:18;6847:26;;6883:97;6977:1;6966:9;6962:17;6953:6;6883:97;:::i;:::-;6713:274;;;;:::o;6993:156::-;7133:8;7129:1;7121:6;7117:14;7110:32;6993:156;:::o;7155:365::-;7297:3;7318:66;7382:1;7377:3;7318:66;:::i;:::-;7311:73;;7393:93;7482:3;7393:93;:::i;:::-;7511:2;7506:3;7502:12;7495:19;;7155:365;;;:::o;7526:419::-;7692:4;7730:2;7719:9;7715:18;7707:26;;7779:9;7773:4;7769:20;7765:1;7754:9;7750:17;7743:47;7807:131;7933:4;7807:131;:::i;:::-;7799:139;;7526:419;;;:::o;7951:143::-;8008:5;8039:6;8033:13;8024:22;;8055:33;8082:5;8055:33;:::i;:::-;7951:143;;;;:::o;8100:351::-;8170:6;8219:2;8207:9;8198:7;8194:23;8190:32;8187:119;;;8225:79;;:::i;:::-;8187:119;8345:1;8370:64;8426:7;8417:6;8406:9;8402:22;8370:64;:::i;:::-;8360:74;;8316:128;8100:351;;;;:::o;8457:332::-;8578:4;8616:2;8605:9;8601:18;8593:26;;8629:71;8697:1;8686:9;8682:17;8673:6;8629:71;:::i;:::-;8710:72;8778:2;8767:9;8763:18;8754:6;8710:72;:::i;:::-;8457:332;;;;;:::o;8795:85::-;8840:7;8869:5;8858:16;;8795:85;;;:::o;8886:158::-;8944:9;8977:61;8995:42;9004:32;9030:5;9004:32;:::i;:::-;8995:42;:::i;:::-;8977:61;:::i;:::-;8964:74;;8886:158;;;:::o;9050:147::-;9145:45;9184:5;9145:45;:::i;:::-;9140:3;9133:58;9050:147;;:::o;9203:807::-;9452:4;9490:3;9479:9;9475:19;9467:27;;9504:71;9572:1;9561:9;9557:17;9548:6;9504:71;:::i;:::-;9585:72;9653:2;9642:9;9638:18;9629:6;9585:72;:::i;:::-;9667:80;9743:2;9732:9;9728:18;9719:6;9667:80;:::i;:::-;9757;9833:2;9822:9;9818:18;9809:6;9757:80;:::i;:::-;9847:73;9915:3;9904:9;9900:19;9891:6;9847:73;:::i;:::-;9930;9998:3;9987:9;9983:19;9974:6;9930:73;:::i;:::-;9203:807;;;;;;;;;:::o;10016:143::-;10073:5;10104:6;10098:13;10089:22;;10120:33;10147:5;10120:33;:::i;:::-;10016:143;;;;:::o;10165:663::-;10253:6;10261;10269;10318:2;10306:9;10297:7;10293:23;10289:32;10286:119;;;10324:79;;:::i;:::-;10286:119;10444:1;10469:64;10525:7;10516:6;10505:9;10501:22;10469:64;:::i;:::-;10459:74;;10415:128;10582:2;10608:64;10664:7;10655:6;10644:9;10640:22;10608:64;:::i;:::-;10598:74;;10553:129;10721:2;10747:64;10803:7;10794:6;10783:9;10779:22;10747:64;:::i;:::-;10737:74;;10692:129;10165:663;;;;;:::o;10834:172::-;10974:24;10970:1;10962:6;10958:14;10951:48;10834:172;:::o;11012:366::-;11154:3;11175:67;11239:2;11234:3;11175:67;:::i;:::-;11168:74;;11251:93;11340:3;11251:93;:::i;:::-;11369:2;11364:3;11360:12;11353:19;;11012:366;;;:::o;11384:419::-;11550:4;11588:2;11577:9;11573:18;11565:26;;11637:9;11631:4;11627:20;11623:1;11612:9;11608:17;11601:47;11665:131;11791:4;11665:131;:::i;:::-;11657:139;;11384:419;;;:::o;11809:173::-;11949:25;11945:1;11937:6;11933:14;11926:49;11809:173;:::o;11988:366::-;12130:3;12151:67;12215:2;12210:3;12151:67;:::i;:::-;12144:74;;12227:93;12316:3;12227:93;:::i;:::-;12345:2;12340:3;12336:12;12329:19;;11988:366;;;:::o;12360:419::-;12526:4;12564:2;12553:9;12549:18;12541:26;;12613:9;12607:4;12603:20;12599:1;12588:9;12584:17;12577:47;12641:131;12767:4;12641:131;:::i;:::-;12633:139;;12360:419;;;:::o;12785:180::-;12833:77;12830:1;12823:88;12930:4;12927:1;12920:15;12954:4;12951:1;12944:15;12971:194;13011:4;13031:20;13049:1;13031:20;:::i;:::-;13026:25;;13065:20;13083:1;13065:20;:::i;:::-;13060:25;;13109:1;13106;13102:9;13094:17;;13133:1;13127:4;13124:11;13121:37;;;13138:18;;:::i;:::-;13121:37;12971:194;;;;:::o;13171:224::-;13311:34;13307:1;13299:6;13295:14;13288:58;13380:7;13375:2;13367:6;13363:15;13356:32;13171:224;:::o;13401:366::-;13543:3;13564:67;13628:2;13623:3;13564:67;:::i;:::-;13557:74;;13640:93;13729:3;13640:93;:::i;:::-;13758:2;13753:3;13749:12;13742:19;;13401:366;;;:::o;13773:419::-;13939:4;13977:2;13966:9;13962:18;13954:26;;14026:9;14020:4;14016:20;14012:1;14001:9;13997:17;13990:47;14054:131;14180:4;14054:131;:::i;:::-;14046:139;;13773:419;;;:::o;14198:222::-;14338:34;14334:1;14326:6;14322:14;14315:58;14407:5;14402:2;14394:6;14390:15;14383:30;14198:222;:::o;14426:366::-;14568:3;14589:67;14653:2;14648:3;14589:67;:::i;:::-;14582:74;;14665:93;14754:3;14665:93;:::i;:::-;14783:2;14778:3;14774:12;14767:19;;14426:366;;;:::o;14798:419::-;14964:4;15002:2;14991:9;14987:18;14979:26;;15051:9;15045:4;15041:20;15037:1;15026:9;15022:17;15015:47;15079:131;15205:4;15079:131;:::i;:::-;15071:139;;14798:419;;;:::o;15223:228::-;15363:34;15359:1;15351:6;15347:14;15340:58;15432:11;15427:2;15419:6;15415:15;15408:36;15223:228;:::o;15457:366::-;15599:3;15620:67;15684:2;15679:3;15620:67;:::i;:::-;15613:74;;15696:93;15785:3;15696:93;:::i;:::-;15814:2;15809:3;15805:12;15798:19;;15457:366;;;:::o;15829:419::-;15995:4;16033:2;16022:9;16018:18;16010:26;;16082:9;16076:4;16072:20;16068:1;16057:9;16053:17;16046:47;16110:131;16236:4;16110:131;:::i;:::-;16102:139;;15829:419;;;:::o;16254:170::-;16394:22;16390:1;16382:6;16378:14;16371:46;16254:170;:::o;16430:366::-;16572:3;16593:67;16657:2;16652:3;16593:67;:::i;:::-;16586:74;;16669:93;16758:3;16669:93;:::i;:::-;16787:2;16782:3;16778:12;16771:19;;16430:366;;;:::o;16802:419::-;16968:4;17006:2;16995:9;16991:18;16983:26;;17055:9;17049:4;17045:20;17041:1;17030:9;17026:17;17019:47;17083:131;17209:4;17083:131;:::i;:::-;17075:139;;16802:419;;;:::o;17227:191::-;17267:3;17286:20;17304:1;17286:20;:::i;:::-;17281:25;;17320:20;17338:1;17320:20;:::i;:::-;17315:25;;17363:1;17360;17356:9;17349:16;;17384:3;17381:1;17378:10;17375:36;;;17391:18;;:::i;:::-;17375:36;17227:191;;;;:::o;17424:224::-;17564:34;17560:1;17552:6;17548:14;17541:58;17633:7;17628:2;17620:6;17616:15;17609:32;17424:224;:::o;17654:366::-;17796:3;17817:67;17881:2;17876:3;17817:67;:::i;:::-;17810:74;;17893:93;17982:3;17893:93;:::i;:::-;18011:2;18006:3;18002:12;17995:19;;17654:366;;;:::o;18026:419::-;18192:4;18230:2;18219:9;18215:18;18207:26;;18279:9;18273:4;18269:20;18265:1;18254:9;18250:17;18243:47;18307:131;18433:4;18307:131;:::i;:::-;18299:139;;18026:419;;;:::o;18451:233::-;18490:3;18513:24;18531:5;18513:24;:::i;:::-;18504:33;;18559:66;18552:5;18549:77;18546:103;;18629:18;;:::i;:::-;18546:103;18676:1;18669:5;18665:13;18658:20;;18451:233;;;:::o;18690:180::-;18738:77;18735:1;18728:88;18835:4;18832:1;18825:15;18859:4;18856:1;18849:15;18876:180;18924:77;18921:1;18914:88;19021:4;19018:1;19011:15;19045:4;19042:1;19035:15;19062:114;19129:6;19163:5;19157:12;19147:22;;19062:114;;;:::o;19182:184::-;19281:11;19315:6;19310:3;19303:19;19355:4;19350:3;19346:14;19331:29;;19182:184;;;;:::o;19372:132::-;19439:4;19462:3;19454:11;;19492:4;19487:3;19483:14;19475:22;;19372:132;;;:::o;19510:108::-;19587:24;19605:5;19587:24;:::i;:::-;19582:3;19575:37;19510:108;;:::o;19624:179::-;19693:10;19714:46;19756:3;19748:6;19714:46;:::i;:::-;19792:4;19787:3;19783:14;19769:28;;19624:179;;;;:::o;19809:113::-;19879:4;19911;19906:3;19902:14;19894:22;;19809:113;;;:::o;19958:732::-;20077:3;20106:54;20154:5;20106:54;:::i;:::-;20176:86;20255:6;20250:3;20176:86;:::i;:::-;20169:93;;20286:56;20336:5;20286:56;:::i;:::-;20365:7;20396:1;20381:284;20406:6;20403:1;20400:13;20381:284;;;20482:6;20476:13;20509:63;20568:3;20553:13;20509:63;:::i;:::-;20502:70;;20595:60;20648:6;20595:60;:::i;:::-;20585:70;;20441:224;20428:1;20425;20421:9;20416:14;;20381:284;;;20385:14;20681:3;20674:10;;20082:608;;;19958:732;;;;:::o;20696:831::-;20959:4;20997:3;20986:9;20982:19;20974:27;;21011:71;21079:1;21068:9;21064:17;21055:6;21011:71;:::i;:::-;21092:80;21168:2;21157:9;21153:18;21144:6;21092:80;:::i;:::-;21219:9;21213:4;21209:20;21204:2;21193:9;21189:18;21182:48;21247:108;21350:4;21341:6;21247:108;:::i;:::-;21239:116;;21365:72;21433:2;21422:9;21418:18;21409:6;21365:72;:::i;:::-;21447:73;21515:3;21504:9;21500:19;21491:6;21447:73;:::i;:::-;20696:831;;;;;;;;:::o;21533:177::-;21673:29;21669:1;21661:6;21657:14;21650:53;21533:177;:::o;21716:366::-;21858:3;21879:67;21943:2;21938:3;21879:67;:::i;:::-;21872:74;;21955:93;22044:3;21955:93;:::i;:::-;22073:2;22068:3;22064:12;22057:19;;21716:366;;;:::o;22088:419::-;22254:4;22292:2;22281:9;22277:18;22269:26;;22341:9;22335:4;22331:20;22327:1;22316:9;22312:17;22305:47;22369:131;22495:4;22369:131;:::i;:::-;22361:139;;22088:419;;;:::o;22513:410::-;22553:7;22576:20;22594:1;22576:20;:::i;:::-;22571:25;;22610:20;22628:1;22610:20;:::i;:::-;22605:25;;22665:1;22662;22658:9;22687:30;22705:11;22687:30;:::i;:::-;22676:41;;22866:1;22857:7;22853:15;22850:1;22847:22;22827:1;22820:9;22800:83;22777:139;;22896:18;;:::i;:::-;22777:139;22561:362;22513:410;;;;:::o;22929:180::-;22977:77;22974:1;22967:88;23074:4;23071:1;23064:15;23098:4;23095:1;23088:15;23115:185;23155:1;23172:20;23190:1;23172:20;:::i;:::-;23167:25;;23206:20;23224:1;23206:20;:::i;:::-;23201:25;;23245:1;23235:35;;23250:18;;:::i;:::-;23235:35;23292:1;23289;23285:9;23280:14;;23115:185;;;;:::o;23306:220::-;23446:34;23442:1;23434:6;23430:14;23423:58;23515:3;23510:2;23502:6;23498:15;23491:28;23306:220;:::o;23532:366::-;23674:3;23695:67;23759:2;23754:3;23695:67;:::i;:::-;23688:74;;23771:93;23860:3;23771:93;:::i;:::-;23889:2;23884:3;23880:12;23873:19;;23532:366;;;:::o;23904:419::-;24070:4;24108:2;24097:9;24093:18;24085:26;;24157:9;24151:4;24147:20;24143:1;24132:9;24128:17;24121:47;24185:131;24311:4;24185:131;:::i;:::-;24177:139;;23904:419;;;:::o

Swarm Source

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