ETH Price: $3,649.38 (+0.76%)
 

Overview

Max Total Supply

100,000,000 KAI

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,926,032.874838044615940025 KAI

Value
$0.00
0x22a95f07da3341e348bab4b75402a63fd0ce7913
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:
KaiStack

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-13
*/

// SPDX-License-Identifier: MIT


/*
    Website:    https://www.kaistack.org
    Dapps:      https://app.kaistack.org
    Docs:       https://docs.kaistack.org

    Twitter:    https://twitter.com/kaistack_erc
    Medium:     https://medium.com/@kaistake
    Telegram:   https://t.me/kaistack_erc
*/

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 IUniDexV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniDexV2Router {
    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;
}

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

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

    string constant _name = "KaiStack";
    string constant _symbol = "KAI";

    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;

    IUniDexV2Router public dexV2Router;

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

    uint256 private _initBuyTax=15;
    uint256 private _initSellTax=15;

    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=2;

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

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

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

        address _owner = owner;
        _taxWallet = kaiWallet;

        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 createKaiTrade() external onlyOwner {
        
        dexV2Router = IUniDexV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniDexV2Factory(dexV2Router.factory()).createPair(address(this), dexV2Router.WETH());
        isTxLimitExempt[pair] = true;

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

    function enableKaiTrade() 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 isTakeFees(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 inSwapKai(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 takeKaiAmountAfterFees(uint action, bool takefee, uint256 amounts)
        internal
        returns (uint256)
    {
        uint256 kaiPercents;
        uint256 kaiFeePrDenominator = 100;

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

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

        return amounts.sub(feeAmounts);
    }

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

    function isTakeKaiActions(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 = isTakeFees(sender);
        actions = isTakeKaiActions(sender, recipient);

        if (inSwapKai(takefee, actions, amount)) {
            internalSwapBackKai(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
            ? takeKaiAmountAfterFees(action, takeFee, tAmount) 
            : tAmount;

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

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

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

        emit Transfer(sender, recipient, recipientAmount);

    }

    function internalSwapBackKai(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] = dexV2Router.WETH();

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

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

    

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

    function withdrawKaiBalance() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }
    
    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;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"kaiWallet","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":"createKaiTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexV2Router","outputs":[{"internalType":"contract IUniDexV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKaiTrade","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":"removeKaiLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"withdrawKaiBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ac91906200071e565b6305f5e100620000bd91906200076f565b60035560646002600354620000d391906200076f565b620000df9190620007e9565b600455620186a06001600354620000f791906200076f565b620001039190620007e9565b6005556103e860026003546200011a91906200076f565b620001269190620007e9565b6006556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff021916908315150217905550600f600e55600f805560026010556002601155600f60125560146013556000601455348015620001a957600080fd5b5060405162003b0c38038062003b0c8339818101604052810190620001cf91906200088b565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620005749190620008ce565b60405180910390a35050620008eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200061257808604811115620005ea57620005e962000584565b5b6001851615620005fa5780820291505b80810290506200060a85620005b3565b9450620005ca565b94509492505050565b6000826200062d576001905062000700565b816200063d576000905062000700565b8160018114620006565760028114620006615762000697565b600191505062000700565b60ff84111562000676576200067562000584565b5b8360020a91508482111562000690576200068f62000584565b5b5062000700565b5060208310610133831016604e8410600b8410161715620006d15782820a905083811115620006cb57620006ca62000584565b5b62000700565b620006e08484846001620005c0565b92509050818404811115620006fa57620006f962000584565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072b8262000707565b9150620007388362000711565b9250620007677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200061b565b905092915050565b60006200077c8262000707565b9150620007898362000707565b9250828202620007998162000707565b91508282048414831517620007b357620007b262000584565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007f68262000707565b9150620008038362000707565b925082620008165762000815620007ba565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008538262000826565b9050919050565b620008658162000846565b81146200087157600080fd5b50565b60008151905062000885816200085a565b92915050565b600060208284031215620008a457620008a362000821565b5b6000620008b48482850162000874565b91505092915050565b620008c88162000707565b82525050565b6000602082019050620008e56000830184620008bd565b92915050565b61321180620008fb6000396000f3fe6080604052600436106101855760003560e01c80636ddd1713116100d1578063a64e4f8a1161008a578063c3e39e5911610064578063c3e39e5914610561578063c80125bc1461058c578063ce544e83146105b7578063dd62ed3e146105ce5761018c565b8063a64e4f8a146104ce578063a8aa1b31146104f9578063a9059cbb146105245761018c565b80636ddd1713146103ce5780636f268a99146103f957806370a0823114610424578063715018a614610461578063893d20e81461047857806395d89b41146104a35761018c565b806323b872dd1161013e5780633bafde33116101185780633bafde331461034a5780633eaaf86b146103615780634bef3bdb1461038c5780636c0a24eb146103a35761018c565b806323b872dd146102a55780632f54bf6e146102e2578063313ce5671461031f5761018c565b806306fdde031461019157806308fd3d05146101bc578063095ea7b3146101e75780630e5a9231146102245780630faee56f1461024f57806318160ddd1461027a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661060b565b6040516101b39190612589565b60405180910390f35b3480156101c857600080fd5b506101d1610648565b6040516101de91906125c6565b60405180910390f35b3480156101f357600080fd5b5061020e6004803603810190610209919061267a565b61065b565b60405161021b91906125c6565b60405180910390f35b34801561023057600080fd5b5061023961074d565b60405161024691906126c9565b60405180910390f35b34801561025b57600080fd5b50610264610753565b60405161027191906126c9565b60405180910390f35b34801561028657600080fd5b5061028f610759565b60405161029c91906126c9565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c791906126e4565b610763565b6040516102d991906125c6565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190612737565b610963565b60405161031691906125c6565b60405180910390f35b34801561032b57600080fd5b506103346109bc565b6040516103419190612780565b60405180910390f35b34801561035657600080fd5b5061035f6109c5565b005b34801561036d57600080fd5b50610376610ab0565b60405161038391906126c9565b60405180910390f35b34801561039857600080fd5b506103a1610ab6565b005b3480156103af57600080fd5b506103b8610b8a565b6040516103c591906126c9565b60405180910390f35b3480156103da57600080fd5b506103e3610b90565b6040516103f091906125c6565b60405180910390f35b34801561040557600080fd5b5061040e610ba3565b60405161041b91906127aa565b60405180910390f35b34801561043057600080fd5b5061044b60048036038101906104469190612737565b610bc9565b60405161045891906126c9565b60405180910390f35b34801561046d57600080fd5b50610476610c12565b005b34801561048457600080fd5b5061048d610cd5565b60405161049a91906127aa565b60405180910390f35b3480156104af57600080fd5b506104b8610cfe565b6040516104c59190612589565b60405180910390f35b3480156104da57600080fd5b506104e3610d3b565b6040516104f091906125c6565b60405180910390f35b34801561050557600080fd5b5061050e610d4e565b60405161051b91906127aa565b60405180910390f35b34801561053057600080fd5b5061054b6004803603810190610546919061267a565b610d74565b60405161055891906125c6565b60405180910390f35b34801561056d57600080fd5b50610576610d89565b6040516105839190612824565b60405180910390f35b34801561059857600080fd5b506105a1610daf565b6040516105ae91906125c6565b60405180910390f35b3480156105c357600080fd5b506105cc610e09565b005b3480156105da57600080fd5b506105f560048036038101906105f0919061283f565b611298565b60405161060291906126c9565b60405180910390f35b60606040518060400160405280600881526020017f4b6169537461636b000000000000000000000000000000000000000000000000815250905090565b600d60169054906101000a900460ff1681565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161073b91906126c9565b60405180910390a36001905092915050565b60055481565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461094f576108ce826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61095a848484611383565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6109ce33610963565b610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a04906128cb565b60405180910390fd5b600d60169054906101000a900460ff1615610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490612937565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b60035481565b610abf33610963565b610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af5906128cb565b60405180910390fd5b60004711610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b38906129a3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b87573d6000803e3d6000fd5b50565b60045481565b600d60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c1b33610963565b610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c51906128cb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ccb91906127aa565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4b41490000000000000000000000000000000000000000000000000000000000815250905090565b600d60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d81338484611383565b905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dba33610963565b610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906128cb565b60405180910390fd5b6003546004819055506001905090565b610e1233610963565b610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e48906128cb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3791906129d8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe491906129d8565b6040518363ffffffff1660e01b8152600401611001929190612a05565b6020604051808303816000875af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906129d8565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120a30610bc9565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161125096959493929190612a69565b60606040518083038185885af115801561126e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112939190612adf565b505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000838311158290611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9190612589565b60405180910390fd5b50600083856113769190612b61565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612c07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612c99565b60405180910390fd5b600082116114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612d2b565b60405180910390fd5b600080601560009054906101000a900460ff16156114d1576114c8868686611888565b92505050611881565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115755750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115ca57600d60169054906101000a900460ff166115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090612d97565b60405180910390fd5b5b600d60149054906101000a900460ff166115f2576115e9868686611888565b92505050611881565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561169e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116f45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561174a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561183c57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117f3575060045484600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09190612db7565b11155b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e5d565b60405180910390fd5b61183b86611a5b565b5b61184586611acc565b91506118518686611b23565b905061185e828286611bf6565b1561186d5761186c84611c76565b5b61187a8686868585611f59565b6001925050505b9392505050565b6000611913826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119a882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a4891906126c9565b60405180910390a3600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac95760146000815480929190611ac390612e7d565b91905055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008060009050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b885760029050611bec565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611be65760019050611beb565b600090505b5b8091505092915050565b600080600554905060008390506000611c0e30610bc9565b905060008382118015611c2057508383115b9050601560009054906101000a900460ff16158015611c3c5750875b8015611c485750600187115b8015611c515750805b8015611c695750600d60149054906101000a900460ff165b9450505050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611c9c30610bc9565b90506000611cb583611cb0846006546121ef565b6121ef565b90506000600267ffffffffffffffff811115611cd457611cd3612ec5565b5b604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090503081600081518110611d1a57611d19612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de591906129d8565b81600181518110611df957611df8612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e97959493929190612fe1565b600060405180830381600087803b158015611eb157600080fd5b505af1158015611ec5573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f36573d6000803e3d6000fd5b50505050506000601560006101000a81548160ff02191690831515021790555050565b600082611f8b57600d60159054906101000a900460ff16611f7a5783611f86565b611f85828486612208565b5b611f8d565b835b90506000600d60159054906101000a900460ff168015611faa5750835b611fb45784611fc0565b611fbf838587612208565b5b905061204b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e081600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161218091906126c9565b60405180910390a350505050505050565b60008082846121a09190612db7565b9050838110156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613087565b60405180910390fd5b8091505092915050565b60008183116121fe5782612200565b815b905092915050565b6000806000606490508461221d57600161226a565b60018611612251576000861161223457600061224c565b6012546014541161224757600e5461224b565b6010545b5b612269565b6013546014541161226457600f54612268565b6011545b5b5b9150600061229382612285858861238890919063ffffffff16565b61240290919063ffffffff16565b90506122e781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555085612365576123608261235260648661234391906130a7565b8861238890919063ffffffff16565b61240290919063ffffffff16565b612367565b805b905061237c818661244c90919063ffffffff16565b93505050509392505050565b600080830361239a57600090506123fc565b600082846123a891906130a7565b90508284826123b79190613118565b146123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906131bb565b60405180910390fd5b809150505b92915050565b600061244483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612496565b905092915050565b600061248e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061131f565b905092915050565b600080831182906124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49190612589565b60405180910390fd5b50600083856124ec9190613118565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612533578082015181840152602081019050612518565b60008484015250505050565b6000601f19601f8301169050919050565b600061255b826124f9565b6125658185612504565b9350612575818560208601612515565b61257e8161253f565b840191505092915050565b600060208201905081810360008301526125a38184612550565b905092915050565b60008115159050919050565b6125c0816125ab565b82525050565b60006020820190506125db60008301846125b7565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612611826125e6565b9050919050565b61262181612606565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000819050919050565b61265781612644565b811461266257600080fd5b50565b6000813590506126748161264e565b92915050565b60008060408385031215612691576126906125e1565b5b600061269f8582860161262f565b92505060206126b085828601612665565b9150509250929050565b6126c381612644565b82525050565b60006020820190506126de60008301846126ba565b92915050565b6000806000606084860312156126fd576126fc6125e1565b5b600061270b8682870161262f565b935050602061271c8682870161262f565b925050604061272d86828701612665565b9150509250925092565b60006020828403121561274d5761274c6125e1565b5b600061275b8482850161262f565b91505092915050565b600060ff82169050919050565b61277a81612764565b82525050565b60006020820190506127956000830184612771565b92915050565b6127a481612606565b82525050565b60006020820190506127bf600083018461279b565b92915050565b6000819050919050565b60006127ea6127e56127e0846125e6565b6127c5565b6125e6565b9050919050565b60006127fc826127cf565b9050919050565b600061280e826127f1565b9050919050565b61281e81612803565b82525050565b60006020820190506128396000830184612815565b92915050565b60008060408385031215612856576128556125e1565b5b60006128648582860161262f565b92505060206128758582860161262f565b9150509250929050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128b5600683612504565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612921601783612504565b915061292c826128eb565b602082019050919050565b6000602082019050818103600083015261295081612914565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b600061298d601683612504565b915061299882612957565b602082019050919050565b600060208201905081810360008301526129bc81612980565b9050919050565b6000815190506129d281612618565b92915050565b6000602082840312156129ee576129ed6125e1565b5b60006129fc848285016129c3565b91505092915050565b6000604082019050612a1a600083018561279b565b612a27602083018461279b565b9392505050565b6000819050919050565b6000612a53612a4e612a4984612a2e565b6127c5565b612644565b9050919050565b612a6381612a38565b82525050565b600060c082019050612a7e600083018961279b565b612a8b60208301886126ba565b612a986040830187612a5a565b612aa56060830186612a5a565b612ab2608083018561279b565b612abf60a08301846126ba565b979650505050505050565b600081519050612ad98161264e565b92915050565b600080600060608486031215612af857612af76125e1565b5b6000612b0686828701612aca565b9350506020612b1786828701612aca565b9250506040612b2886828701612aca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b6c82612644565b9150612b7783612644565b9250828203905081811115612b8f57612b8e612b32565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bf1602583612504565b9150612bfc82612b95565b604082019050919050565b60006020820190508181036000830152612c2081612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c83602383612504565b9150612c8e82612c27565b604082019050919050565b60006020820190508181036000830152612cb281612c76565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d15602983612504565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000612d81601483612504565b9150612d8c82612d4b565b602082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b6000612dc282612644565b9150612dcd83612644565b9250828201905080821115612de557612de4612b32565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e47602583612504565b9150612e5282612deb565b604082019050919050565b60006020820190508181036000830152612e7681612e3a565b9050919050565b6000612e8882612644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612b32565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5881612606565b82525050565b6000612f6a8383612f4f565b60208301905092915050565b6000602082019050919050565b6000612f8e82612f23565b612f988185612f2e565b9350612fa383612f3f565b8060005b83811015612fd4578151612fbb8882612f5e565b9750612fc683612f76565b925050600181019050612fa7565b5085935050505092915050565b600060a082019050612ff660008301886126ba565b6130036020830187612a5a565b81810360408301526130158186612f83565b9050613024606083018561279b565b61303160808301846126ba565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613071601b83612504565b915061307c8261303b565b602082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b60006130b282612644565b91506130bd83612644565b92508282026130cb81612644565b915082820484148315176130e2576130e1612b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312382612644565b915061312e83612644565b92508261313e5761313d6130e9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a5602183612504565b91506131b082613149565b604082019050919050565b600060208201905081810360008301526131d481613198565b905091905056fea2646970667358221220c9217c1192fdd9a9d8c788e430a3c7cc971024fa54351584b949051a344fcfa364736f6c634300081300330000000000000000000000003c2821a522d6361f876eed1430d5bdabb709377c

Deployed Bytecode

0x6080604052600436106101855760003560e01c80636ddd1713116100d1578063a64e4f8a1161008a578063c3e39e5911610064578063c3e39e5914610561578063c80125bc1461058c578063ce544e83146105b7578063dd62ed3e146105ce5761018c565b8063a64e4f8a146104ce578063a8aa1b31146104f9578063a9059cbb146105245761018c565b80636ddd1713146103ce5780636f268a99146103f957806370a0823114610424578063715018a614610461578063893d20e81461047857806395d89b41146104a35761018c565b806323b872dd1161013e5780633bafde33116101185780633bafde331461034a5780633eaaf86b146103615780634bef3bdb1461038c5780636c0a24eb146103a35761018c565b806323b872dd146102a55780632f54bf6e146102e2578063313ce5671461031f5761018c565b806306fdde031461019157806308fd3d05146101bc578063095ea7b3146101e75780630e5a9231146102245780630faee56f1461024f57806318160ddd1461027a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661060b565b6040516101b39190612589565b60405180910390f35b3480156101c857600080fd5b506101d1610648565b6040516101de91906125c6565b60405180910390f35b3480156101f357600080fd5b5061020e6004803603810190610209919061267a565b61065b565b60405161021b91906125c6565b60405180910390f35b34801561023057600080fd5b5061023961074d565b60405161024691906126c9565b60405180910390f35b34801561025b57600080fd5b50610264610753565b60405161027191906126c9565b60405180910390f35b34801561028657600080fd5b5061028f610759565b60405161029c91906126c9565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c791906126e4565b610763565b6040516102d991906125c6565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190612737565b610963565b60405161031691906125c6565b60405180910390f35b34801561032b57600080fd5b506103346109bc565b6040516103419190612780565b60405180910390f35b34801561035657600080fd5b5061035f6109c5565b005b34801561036d57600080fd5b50610376610ab0565b60405161038391906126c9565b60405180910390f35b34801561039857600080fd5b506103a1610ab6565b005b3480156103af57600080fd5b506103b8610b8a565b6040516103c591906126c9565b60405180910390f35b3480156103da57600080fd5b506103e3610b90565b6040516103f091906125c6565b60405180910390f35b34801561040557600080fd5b5061040e610ba3565b60405161041b91906127aa565b60405180910390f35b34801561043057600080fd5b5061044b60048036038101906104469190612737565b610bc9565b60405161045891906126c9565b60405180910390f35b34801561046d57600080fd5b50610476610c12565b005b34801561048457600080fd5b5061048d610cd5565b60405161049a91906127aa565b60405180910390f35b3480156104af57600080fd5b506104b8610cfe565b6040516104c59190612589565b60405180910390f35b3480156104da57600080fd5b506104e3610d3b565b6040516104f091906125c6565b60405180910390f35b34801561050557600080fd5b5061050e610d4e565b60405161051b91906127aa565b60405180910390f35b34801561053057600080fd5b5061054b6004803603810190610546919061267a565b610d74565b60405161055891906125c6565b60405180910390f35b34801561056d57600080fd5b50610576610d89565b6040516105839190612824565b60405180910390f35b34801561059857600080fd5b506105a1610daf565b6040516105ae91906125c6565b60405180910390f35b3480156105c357600080fd5b506105cc610e09565b005b3480156105da57600080fd5b506105f560048036038101906105f0919061283f565b611298565b60405161060291906126c9565b60405180910390f35b60606040518060400160405280600881526020017f4b6169537461636b000000000000000000000000000000000000000000000000815250905090565b600d60169054906101000a900460ff1681565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161073b91906126c9565b60405180910390a36001905092915050565b60055481565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461094f576108ce826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61095a848484611383565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6109ce33610963565b610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a04906128cb565b60405180910390fd5b600d60169054906101000a900460ff1615610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490612937565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550565b60035481565b610abf33610963565b610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af5906128cb565b60405180910390fd5b60004711610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b38906129a3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b87573d6000803e3d6000fd5b50565b60045481565b600d60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c1b33610963565b610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c51906128cb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ccb91906127aa565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4b41490000000000000000000000000000000000000000000000000000000000815250905090565b600d60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d81338484611383565b905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dba33610963565b610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906128cb565b60405180910390fd5b6003546004819055506001905090565b610e1233610963565b610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e48906128cb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3791906129d8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe491906129d8565b6040518363ffffffff1660e01b8152600401611001929190612a05565b6020604051808303816000875af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906129d8565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120a30610bc9565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161125096959493929190612a69565b60606040518083038185885af115801561126e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112939190612adf565b505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000838311158290611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9190612589565b60405180910390fd5b50600083856113769190612b61565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612c07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612c99565b60405180910390fd5b600082116114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612d2b565b60405180910390fd5b600080601560009054906101000a900460ff16156114d1576114c8868686611888565b92505050611881565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115755750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115ca57600d60169054906101000a900460ff166115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090612d97565b60405180910390fd5b5b600d60149054906101000a900460ff166115f2576115e9868686611888565b92505050611881565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561169e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156116f45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561174a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561183c57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117f3575060045484600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09190612db7565b11155b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e5d565b60405180910390fd5b61183b86611a5b565b5b61184586611acc565b91506118518686611b23565b905061185e828286611bf6565b1561186d5761186c84611c76565b5b61187a8686868585611f59565b6001925050505b9392505050565b6000611913826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119a882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a4891906126c9565b60405180910390a3600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac95760146000815480929190611ac390612e7d565b91905055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008060009050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b885760029050611bec565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611be65760019050611beb565b600090505b5b8091505092915050565b600080600554905060008390506000611c0e30610bc9565b905060008382118015611c2057508383115b9050601560009054906101000a900460ff16158015611c3c5750875b8015611c485750600187115b8015611c515750805b8015611c695750600d60149054906101000a900460ff165b9450505050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611c9c30610bc9565b90506000611cb583611cb0846006546121ef565b6121ef565b90506000600267ffffffffffffffff811115611cd457611cd3612ec5565b5b604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090503081600081518110611d1a57611d19612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de591906129d8565b81600181518110611df957611df8612ef4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e97959493929190612fe1565b600060405180830381600087803b158015611eb157600080fd5b505af1158015611ec5573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f36573d6000803e3d6000fd5b50505050506000601560006101000a81548160ff02191690831515021790555050565b600082611f8b57600d60159054906101000a900460ff16611f7a5783611f86565b611f85828486612208565b5b611f8d565b835b90506000600d60159054906101000a900460ff168015611faa5750835b611fb45784611fc0565b611fbf838587612208565b5b905061204b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461131f9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e081600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161218091906126c9565b60405180910390a350505050505050565b60008082846121a09190612db7565b9050838110156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613087565b60405180910390fd5b8091505092915050565b60008183116121fe5782612200565b815b905092915050565b6000806000606490508461221d57600161226a565b60018611612251576000861161223457600061224c565b6012546014541161224757600e5461224b565b6010545b5b612269565b6013546014541161226457600f54612268565b6011545b5b5b9150600061229382612285858861238890919063ffffffff16565b61240290919063ffffffff16565b90506122e781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555085612365576123608261235260648661234391906130a7565b8861238890919063ffffffff16565b61240290919063ffffffff16565b612367565b805b905061237c818661244c90919063ffffffff16565b93505050509392505050565b600080830361239a57600090506123fc565b600082846123a891906130a7565b90508284826123b79190613118565b146123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906131bb565b60405180910390fd5b809150505b92915050565b600061244483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612496565b905092915050565b600061248e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061131f565b905092915050565b600080831182906124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d49190612589565b60405180910390fd5b50600083856124ec9190613118565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612533578082015181840152602081019050612518565b60008484015250505050565b6000601f19601f8301169050919050565b600061255b826124f9565b6125658185612504565b9350612575818560208601612515565b61257e8161253f565b840191505092915050565b600060208201905081810360008301526125a38184612550565b905092915050565b60008115159050919050565b6125c0816125ab565b82525050565b60006020820190506125db60008301846125b7565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612611826125e6565b9050919050565b61262181612606565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000819050919050565b61265781612644565b811461266257600080fd5b50565b6000813590506126748161264e565b92915050565b60008060408385031215612691576126906125e1565b5b600061269f8582860161262f565b92505060206126b085828601612665565b9150509250929050565b6126c381612644565b82525050565b60006020820190506126de60008301846126ba565b92915050565b6000806000606084860312156126fd576126fc6125e1565b5b600061270b8682870161262f565b935050602061271c8682870161262f565b925050604061272d86828701612665565b9150509250925092565b60006020828403121561274d5761274c6125e1565b5b600061275b8482850161262f565b91505092915050565b600060ff82169050919050565b61277a81612764565b82525050565b60006020820190506127956000830184612771565b92915050565b6127a481612606565b82525050565b60006020820190506127bf600083018461279b565b92915050565b6000819050919050565b60006127ea6127e56127e0846125e6565b6127c5565b6125e6565b9050919050565b60006127fc826127cf565b9050919050565b600061280e826127f1565b9050919050565b61281e81612803565b82525050565b60006020820190506128396000830184612815565b92915050565b60008060408385031215612856576128556125e1565b5b60006128648582860161262f565b92505060206128758582860161262f565b9150509250929050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128b5600683612504565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612921601783612504565b915061292c826128eb565b602082019050919050565b6000602082019050818103600083015261295081612914565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b600061298d601683612504565b915061299882612957565b602082019050919050565b600060208201905081810360008301526129bc81612980565b9050919050565b6000815190506129d281612618565b92915050565b6000602082840312156129ee576129ed6125e1565b5b60006129fc848285016129c3565b91505092915050565b6000604082019050612a1a600083018561279b565b612a27602083018461279b565b9392505050565b6000819050919050565b6000612a53612a4e612a4984612a2e565b6127c5565b612644565b9050919050565b612a6381612a38565b82525050565b600060c082019050612a7e600083018961279b565b612a8b60208301886126ba565b612a986040830187612a5a565b612aa56060830186612a5a565b612ab2608083018561279b565b612abf60a08301846126ba565b979650505050505050565b600081519050612ad98161264e565b92915050565b600080600060608486031215612af857612af76125e1565b5b6000612b0686828701612aca565b9350506020612b1786828701612aca565b9250506040612b2886828701612aca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b6c82612644565b9150612b7783612644565b9250828203905081811115612b8f57612b8e612b32565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bf1602583612504565b9150612bfc82612b95565b604082019050919050565b60006020820190508181036000830152612c2081612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c83602383612504565b9150612c8e82612c27565b604082019050919050565b60006020820190508181036000830152612cb281612c76565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d15602983612504565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000612d81601483612504565b9150612d8c82612d4b565b602082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b6000612dc282612644565b9150612dcd83612644565b9250828201905080821115612de557612de4612b32565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e47602583612504565b9150612e5282612deb565b604082019050919050565b60006020820190508181036000830152612e7681612e3a565b9050919050565b6000612e8882612644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612b32565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5881612606565b82525050565b6000612f6a8383612f4f565b60208301905092915050565b6000602082019050919050565b6000612f8e82612f23565b612f988185612f2e565b9350612fa383612f3f565b8060005b83811015612fd4578151612fbb8882612f5e565b9750612fc683612f76565b925050600181019050612fa7565b5085935050505092915050565b600060a082019050612ff660008301886126ba565b6130036020830187612a5a565b81810360408301526130158186612f83565b9050613024606083018561279b565b61303160808301846126ba565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613071601b83612504565b915061307c8261303b565b602082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b60006130b282612644565b91506130bd83612644565b92508282026130cb81612644565b915082820484148315176130e2576130e1612b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312382612644565b915061312e83612644565b92508261313e5761313d6130e9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a5602183612504565b91506131b082613149565b604082019050919050565b600060208201905081810360008301526131d481613198565b905091905056fea2646970667358221220c9217c1192fdd9a9d8c788e430a3c7cc971024fa54351584b949051a344fcfa364736f6c63430008130033

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

0000000000000000000000003c2821a522d6361f876eed1430d5bdabb709377c

-----Decoded View---------------
Arg [0] : kaiWallet (address): 0x3c2821A522d6361F876eED1430d5BDAbB709377C

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c2821a522d6361f876eed1430d5bdabb709377c


Deployed Bytecode Sourcemap

4848:10112:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7467:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8535:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5314:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5379:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9572:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2830:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7679:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7261:198;;;;;;;;;;;;;:::i;:::-;;5183:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14354:190;;;;;;;;;;;;;:::i;:::-;;5249:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5745:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5642:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7987:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2941:131;;;;;;;;;;;;;:::i;:::-;;7887:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7781:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5783:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5674:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9376:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5702:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14214:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6749:504;;;;;;;;;;;;;:::i;:::-;;8339:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:94;7515:13;7548:5;;;;;;;;;;;;;;;;;7541:12;;7467:94;:::o;5821:31::-;;;;;;;;;;;;;:::o;8535:248::-;8637:4;8694:6;8659:11;:23;8671:10;8659:23;;;;;;;;;;;;;;;:32;8683:7;8659:32;;;;;;;;;;;;;;;:41;;;;8737:7;8716:37;;8725:10;8716:37;;;8746:6;8716:37;;;;;;:::i;:::-;;;;;;;;8771:4;8764:11;;8535:248;;;;:::o;5314:58::-;;;;:::o;5379:52::-;;;;:::o;7569:102::-;7624:7;7651:12;;7644:19;;7569:102;:::o;9572:424::-;9706:4;9762:17;9727:11;:19;9739:6;9727:19;;;;;;;;;;;;;;;:31;9747:10;9727:31;;;;;;;;;;;;;;;;:52;9723:206;;9830:87;9884:6;9830:87;;;;;;;;;;;;;;;;;:11;:19;9842:6;9830:19;;;;;;;;;;;;;;;:31;9850:10;9830:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;9796:11;:19;9808:6;9796:19;;;;;;;;;;;;;;;:31;9816:10;9796:31;;;;;;;;;;;;;;;:121;;;;9723:206;9948:40;9962:6;9970:9;9981:6;9948:13;:40::i;:::-;9941:47;;9572:424;;;;;:::o;2830:103::-;2885:4;2920:5;;;;;;;;;;;2909:16;;:7;:16;;;2902:23;;2830:103;;;:::o;7679:94::-;7731:5;5172:2;7749:16;;7679:94;:::o;7261:198::-;2772:19;2780:10;2772:7;:19::i;:::-;2764:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7324:11:::1;;;;;;;;;;;7323:12;7315:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7389:4;7375:11;;:18;;;;;;;;;;;;;;;;;;7418:4;7404:11;;:18;;;;;;;;;;;;;;;;;;7447:4;7433:11;;:18;;;;;;;;;;;;;;;;;;7261:198::o:0;5183:59::-;;;;:::o;14354:190::-;2772:19;2780:10;2772:7;:19::i;:::-;2764:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14446:1:::1;14422:21;:25;14414:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14493:10;14485:28;;:51;14514:21;14485:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14354:190::o:0;5249:58::-;;;;:::o;5745:31::-;;;;;;;;;;;;;:::o;5642:25::-;;;;;;;;;;;;;:::o;7987:119::-;8053:7;8080:9;:18;8090:7;8080:18;;;;;;;;;;;;;;;;8073:25;;7987:119;;;:::o;2941:131::-;2772:19;2780:10;2772:7;:19::i;:::-;2764:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3014:1:::1;2998:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;3032:32;3061:1;3032:32;;;;;;:::i;:::-;;;;;;;;2941:131::o:0;7887:92::-;7939:7;7966:5;;;;;;;;;;;7959:12;;7887:92;:::o;7781:98::-;7831:13;7864:7;;;;;;;;;;;;;;;;;7857:14;;7781:98;:::o;5783:31::-;;;;;;;;;;;;;:::o;5674:19::-;;;;;;;;;;;;;:::o;9376:188::-;9483:4;9512:44;9526:10;9538:9;9549:6;9512:13;:44::i;:::-;9505:51;;9376:188;;;;:::o;5702:34::-;;;;;;;;;;;;;:::o;14214:132::-;14268:4;2772:19;2780:10;2772:7;:19::i;:::-;2764:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14304:12:::1;;14285:16;:31;;;;14334:4;14327:11;;14214:132:::0;:::o;6749:504::-;2772:19;2780:10;2772:7;:19::i;:::-;2764:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6845:42:::1;6815:11;;:73;;;;;;;;;;;;;;;;;;6923:11;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6906:50;;;6965:4;6972:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6906:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6899:4;;:92;;;;;;;;;;;;;;;;;;7026:4;7002:15;:21;7018:4;;;;;;;;;;;7002:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7094:17;7043:11;:26;7063:4;7043:26;;;;;;;;;;;;;;;:48;7078:11;;;;;;;;;;;7043:48;;;;;;;;;;;;;;;:68;;;;7122:11;;;;;;;;;;;:27;;;7157:21;7188:4;7194:24;7212:4;7194:9;:24::i;:::-;7219:1;7221::::0;7223:5:::1;::::0;::::1;;;;;;;;7229:15;7122:123;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6749:504::o:0;8339:188::-;8459:7;8491:11;:19;8503:6;8491:19;;;;;;;;;;;;;;;:28;8511:7;8491:28;;;;;;;;;;;;;;;;8484:35;;8339:188;;;;:::o;697:224::-;817:7;850:1;845;:6;;853:12;837:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;877:9;893:1;889;:5;;;;:::i;:::-;877:17;;912:1;905:8;;;697:224;;;;;:::o;11296:1440::-;11422:4;11467:1;11449:20;;:6;:20;;;11441:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11551:1;11530:23;;:9;:23;;;11522:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11621:1;11612:6;:10;11604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11681:12;11704;11733:6;;;;;;;;;;;11729:87;;;11763:41;11778:6;11786:9;11797:6;11763:14;:41::i;:::-;11756:48;;;;;;11729:87;11832:11;:19;11844:6;11832:19;;;;;;;;;;;;;;;;;;;;;;;;;11831:20;:47;;;;;11856:11;:22;11868:9;11856:22;;;;;;;;;;;;;;;;;;;;;;;;;11855:23;11831:47;11828:121;;;11902:11;;;;;;;;;;;11894:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11828:121;11965:11;;;;;;;;;;;11961:92;;12000:41;12015:6;12023:9;12034:6;12000:14;:41::i;:::-;11993:48;;;;;;11961:92;12083:4;;;;;;;;;;;12070:17;;:9;:17;;;;:38;;;;;12104:4;;;;;;;;;;;12091:17;;:9;:17;;;;12070:38;:62;;;;;12113:11;:19;12125:6;12113:19;;;;;;;;;;;;;;;;;;;;;;;;;12112:20;12070:62;:89;;;;;12137:11;:22;12149:9;12137:22;;;;;;;;;;;;;;;;;;;;;;;;;12136:23;12070:89;12066:362;;;12202:15;:26;12218:9;12202:26;;;;;;;;;;;;;;;;;;;;;;;;;:100;;;;12286:16;;12276:6;12253:9;:20;12263:9;12253:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;12202:100;12176:199;;;;;;;;;;;;:::i;:::-;;;;;;;;;12392:24;12409:6;12392:16;:24::i;:::-;12066:362;12450:18;12461:6;12450:10;:18::i;:::-;12440:28;;12489:35;12506:6;12514:9;12489:16;:35::i;:::-;12479:45;;12541:35;12551:7;12560;12569:6;12541:9;:35::i;:::-;12537:95;;;12593:27;12613:6;12593:19;:27::i;:::-;12537:95;12644:60;12660:6;12668:9;12679:6;12687:7;12696;12644:15;:60::i;:::-;12724:4;12717:11;;;;11296:1440;;;;;;:::o;14556:401::-;14683:4;14720:90;14756:6;14720:90;;;;;;;;;;;;;;;;;:9;:17;14730:6;14720:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;14700:9;:17;14710:6;14700:17;;;;;;;;;;;;;;;:110;;;;14844:32;14869:6;14844:9;:20;14854:9;14844:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14821:9;:20;14831:9;14821:20;;;;;;;;;;;;;;;:55;;;;14909:9;14892:35;;14901:6;14892:35;;;14920:6;14892:35;;;;;;:::i;:::-;;;;;;;;14945:4;14938:11;;14556:401;;;;;:::o;10807:127::-;10882:4;;;;;;;;;;;10872:14;;:6;:14;;;10869:58;;10903:10;;:12;;;;;;;;;:::i;:::-;;;;;;10869:58;10807:127;:::o;8220:111::-;8279:4;8304:11;:19;8316:6;8304:19;;;;;;;;;;;;;;;;;;;;;;;;;8303:20;8296:27;;8220:111;;;:::o;10942:346::-;11017:4;11036:15;11054:1;11036:19;;11077:4;;;;;;;;;;;11071:10;;:2;:10;;;11068:168;;11111:1;11098:14;;11068:168;;;11142:4;;;;;;;;;;;11134:12;;:4;:12;;;11130:106;;11176:1;11163:14;;11130:106;;;11223:1;11210:14;;11130:106;11068:168;11263:10;11256:17;;;10942:346;;;;:::o;8836:532::-;8923:4;8942:25;8970:14;;8942:42;;8995:21;9019:6;8995:30;;9036:29;9068:24;9086:4;9068:9;:24::i;:::-;9036:56;;9105:15;9147:17;9123:21;:41;:78;;;;;9184:17;9168:13;:33;9123:78;9105:96;;9235:6;;;;;;;;;;;9234:7;:31;;;;;9258:7;9234:31;:71;;;;;9304:1;9294:7;:11;9234:71;:98;;;;;9322:10;9234:98;:126;;;;;9349:11;;;;;;;;;;;9234:126;9214:146;;;;;;8836:532;;;;;:::o;13510:688::-;6194:4;6185:6;;:13;;;;;;;;;;;;;;;;;;13596:28:::1;13627:24;13645:4;13627:9;:24::i;:::-;13596:55;;13662:20;13685:51;13689:6;13697:38;13701:20;13723:11;;13697:3;:38::i;:::-;13685:3;:51::i;:::-;13662:74;;13749:21;13787:1;13773:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:40;;13818:4;13800;13805:1;13800:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13844:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13834:4;13839:1;13834:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;::::0;::::1;13875:11;;;;;;;;;;;:62;;;13952:12;13979:1;13995:4;14022;14042:15;13875:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14081:26;14110:21;14081:50;;14150:10;;;;;;;;;;;14142:28;;:48;14171:18;14142:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13575:623;;;;6230:5:::0;6221:6;;:14;;;;;;;;;;;;;;;;;;13510:688;:::o;12744:758::-;12921:20;12944:7;:132;;12977:11;;;;;;;;;;;:99;;13069:7;12977:99;;;13004:48;13027:6;13035:7;13044;13004:22;:48::i;:::-;12977:99;12944:132;;;12967:7;12944:132;12921:155;;13089:23;13115:11;;;;;;;;;;;:22;;;;;13130:7;13115:22;:109;;13217:7;13115:109;;;13153:48;13176:6;13184:7;13193;13153:22;:48::i;:::-;13115:109;13089:135;;13257:96;13293:12;13257:96;;;;;;;;;;;;;;;;;:9;:17;13267:6;13257:17;;;;;;;;;;;;;;;;:21;;:96;;;;;:::i;:::-;13237:9;:17;13247:6;13237:17;;;;;;;;;;;;;;;:116;;;;13389:41;13414:15;13389:9;:20;13399:9;13389:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;13366:9;:20;13376:9;13366:20;;;;;;;;;;;;;;;:64;;;;13465:9;13448:44;;13457:6;13448:44;;;13476:15;13448:44;;;;;;:::i;:::-;;;;;;;;12908:594;;12744:758;;;;;:::o;366:179::-;424:7;444:9;460:1;456;:5;;;;:::i;:::-;444:17;;485:1;480;:6;;472:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;536:1;529:8;;;366:179;;;;:::o;8114:98::-;8171:7;8198:1;8196;:3;8195:9;;8203:1;8195:9;;;8201:1;8195:9;8188:16;;8114:98;;;;:::o;10052:747::-;10164:7;10189:19;10219:27;10249:3;10219:33;;10279:7;:206;;10484:1;10279:206;;;10312:1;10303:6;:10;:178;;10402:1;10393:6;:10;:88;;10480:1;10393:88;;;10432:15;;10421:10;;:26;:55;;10465:11;;10421:55;;;10450:12;;10421:55;10393:88;10303:178;;;10342:16;;10331:10;;:27;:58;;10377:12;;10331:58;;;10361:13;;10331:58;10303:178;10279:206;10265:220;;10498:18;10519:49;10548:19;10519:24;10531:11;10519:7;:11;;:24;;;;:::i;:::-;:28;;:49;;;;:::i;:::-;10498:70;;10606:40;10635:10;10606:9;:24;10624:4;10606:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;10579:9;:24;10597:4;10579:24;;;;;;;;;;;;;;;:67;;;;10670:7;:78;;10693:55;10728:19;10693:30;10719:3;10705:11;:17;;;;:::i;:::-;10693:7;:11;;:30;;;;:::i;:::-;:34;;:55;;;;:::i;:::-;10670:78;;;10680:10;10670:78;10657:91;;10768:23;10780:10;10768:7;:11;;:23;;;;:::i;:::-;10761:30;;;;;10052:747;;;;;:::o;929:246::-;987:7;1016:1;1011;:6;1007:47;;1041:1;1034:8;;;;1007:47;1064:9;1080:1;1076;:5;;;;:::i;:::-;1064:17;;1109:1;1104;1100;:5;;;;:::i;:::-;:10;1092:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1166:1;1159:8;;;929:246;;;;;:::o;1183:132::-;1241:7;1268:39;1272:1;1275;1268:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1261:46;;1183:132;;;;:::o;553:136::-;611:7;638:43;642:1;645;638:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;631:50;;553:136;;;;:::o;1323:223::-;1443:7;1475:1;1471;:5;1478:12;1463:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1502:9;1518:1;1514;:5;;;;:::i;:::-;1502:17;;1537:1;1530:8;;;1323: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:60::-;5568:3;5589:5;5582:12;;5540:60;;;:::o;5606:142::-;5656:9;5689:53;5707:34;5716:24;5734:5;5716:24;:::i;:::-;5707:34;:::i;:::-;5689:53;:::i;:::-;5676:66;;5606:142;;;:::o;5754:126::-;5804:9;5837:37;5868:5;5837:37;:::i;:::-;5824:50;;5754:126;;;:::o;5886:149::-;5959:9;5992:37;6023:5;5992:37;:::i;:::-;5979:50;;5886:149;;;:::o;6041:177::-;6151:60;6205:5;6151:60;:::i;:::-;6146:3;6139:73;6041:177;;:::o;6224:268::-;6340:4;6378:2;6367:9;6363:18;6355:26;;6391:94;6482:1;6471:9;6467:17;6458:6;6391:94;:::i;:::-;6224:268;;;;:::o;6498:474::-;6566:6;6574;6623:2;6611:9;6602:7;6598:23;6594:32;6591:119;;;6629:79;;:::i;:::-;6591:119;6749:1;6774:53;6819:7;6810:6;6799:9;6795:22;6774:53;:::i;:::-;6764:63;;6720:117;6876:2;6902:53;6947:7;6938:6;6927:9;6923:22;6902:53;:::i;:::-;6892:63;;6847:118;6498:474;;;;;:::o;6978:156::-;7118:8;7114:1;7106:6;7102:14;7095:32;6978:156;:::o;7140:365::-;7282:3;7303:66;7367:1;7362:3;7303:66;:::i;:::-;7296:73;;7378:93;7467:3;7378:93;:::i;:::-;7496:2;7491:3;7487:12;7480:19;;7140:365;;;:::o;7511:419::-;7677:4;7715:2;7704:9;7700:18;7692:26;;7764:9;7758:4;7754:20;7750:1;7739:9;7735:17;7728:47;7792:131;7918:4;7792:131;:::i;:::-;7784:139;;7511:419;;;:::o;7936:173::-;8076:25;8072:1;8064:6;8060:14;8053:49;7936:173;:::o;8115:366::-;8257:3;8278:67;8342:2;8337:3;8278:67;:::i;:::-;8271:74;;8354:93;8443:3;8354:93;:::i;:::-;8472:2;8467:3;8463:12;8456:19;;8115:366;;;:::o;8487:419::-;8653:4;8691:2;8680:9;8676:18;8668:26;;8740:9;8734:4;8730:20;8726:1;8715:9;8711:17;8704:47;8768:131;8894:4;8768:131;:::i;:::-;8760:139;;8487:419;;;:::o;8912:172::-;9052:24;9048:1;9040:6;9036:14;9029:48;8912:172;:::o;9090:366::-;9232:3;9253:67;9317:2;9312:3;9253:67;:::i;:::-;9246:74;;9329:93;9418:3;9329:93;:::i;:::-;9447:2;9442:3;9438:12;9431:19;;9090:366;;;:::o;9462:419::-;9628:4;9666:2;9655:9;9651:18;9643:26;;9715:9;9709:4;9705:20;9701:1;9690:9;9686:17;9679:47;9743:131;9869:4;9743:131;:::i;:::-;9735:139;;9462:419;;;:::o;9887:143::-;9944:5;9975:6;9969:13;9960:22;;9991:33;10018:5;9991:33;:::i;:::-;9887:143;;;;:::o;10036:351::-;10106:6;10155:2;10143:9;10134:7;10130:23;10126:32;10123:119;;;10161:79;;:::i;:::-;10123:119;10281:1;10306:64;10362:7;10353:6;10342:9;10338:22;10306:64;:::i;:::-;10296:74;;10252:128;10036:351;;;;:::o;10393:332::-;10514:4;10552:2;10541:9;10537:18;10529:26;;10565:71;10633:1;10622:9;10618:17;10609:6;10565:71;:::i;:::-;10646:72;10714:2;10703:9;10699:18;10690:6;10646:72;:::i;:::-;10393:332;;;;;:::o;10731:85::-;10776:7;10805:5;10794:16;;10731:85;;;:::o;10822:158::-;10880:9;10913:61;10931:42;10940:32;10966:5;10940:32;:::i;:::-;10931:42;:::i;:::-;10913:61;:::i;:::-;10900:74;;10822:158;;;:::o;10986:147::-;11081:45;11120:5;11081:45;:::i;:::-;11076:3;11069:58;10986:147;;:::o;11139:807::-;11388:4;11426:3;11415:9;11411:19;11403:27;;11440:71;11508:1;11497:9;11493:17;11484:6;11440:71;:::i;:::-;11521:72;11589:2;11578:9;11574:18;11565:6;11521:72;:::i;:::-;11603:80;11679:2;11668:9;11664:18;11655:6;11603:80;:::i;:::-;11693;11769:2;11758:9;11754:18;11745:6;11693:80;:::i;:::-;11783:73;11851:3;11840:9;11836:19;11827:6;11783:73;:::i;:::-;11866;11934:3;11923:9;11919:19;11910:6;11866:73;:::i;:::-;11139:807;;;;;;;;;:::o;11952:143::-;12009:5;12040:6;12034:13;12025:22;;12056:33;12083:5;12056:33;:::i;:::-;11952:143;;;;:::o;12101:663::-;12189:6;12197;12205;12254:2;12242:9;12233:7;12229:23;12225:32;12222:119;;;12260:79;;:::i;:::-;12222:119;12380:1;12405:64;12461:7;12452:6;12441:9;12437:22;12405:64;:::i;:::-;12395:74;;12351:128;12518:2;12544:64;12600:7;12591:6;12580:9;12576:22;12544:64;:::i;:::-;12534:74;;12489:129;12657:2;12683:64;12739:7;12730:6;12719:9;12715:22;12683:64;:::i;:::-;12673:74;;12628:129;12101:663;;;;;:::o;12770:180::-;12818:77;12815:1;12808:88;12915:4;12912:1;12905:15;12939:4;12936:1;12929:15;12956:194;12996:4;13016:20;13034:1;13016:20;:::i;:::-;13011:25;;13050:20;13068:1;13050:20;:::i;:::-;13045:25;;13094:1;13091;13087:9;13079:17;;13118:1;13112:4;13109:11;13106:37;;;13123:18;;:::i;:::-;13106:37;12956:194;;;;:::o;13156:224::-;13296:34;13292:1;13284:6;13280:14;13273:58;13365:7;13360:2;13352:6;13348:15;13341:32;13156:224;:::o;13386:366::-;13528:3;13549:67;13613:2;13608:3;13549:67;:::i;:::-;13542:74;;13625:93;13714:3;13625:93;:::i;:::-;13743:2;13738:3;13734:12;13727:19;;13386:366;;;:::o;13758:419::-;13924:4;13962:2;13951:9;13947:18;13939:26;;14011:9;14005:4;14001:20;13997:1;13986:9;13982:17;13975:47;14039:131;14165:4;14039:131;:::i;:::-;14031:139;;13758:419;;;:::o;14183:222::-;14323:34;14319:1;14311:6;14307:14;14300:58;14392:5;14387:2;14379:6;14375:15;14368:30;14183:222;:::o;14411:366::-;14553:3;14574:67;14638:2;14633:3;14574:67;:::i;:::-;14567:74;;14650:93;14739:3;14650:93;:::i;:::-;14768:2;14763:3;14759:12;14752:19;;14411:366;;;:::o;14783:419::-;14949:4;14987:2;14976:9;14972:18;14964:26;;15036:9;15030:4;15026:20;15022:1;15011:9;15007:17;15000:47;15064:131;15190:4;15064:131;:::i;:::-;15056:139;;14783:419;;;:::o;15208:228::-;15348:34;15344:1;15336:6;15332:14;15325:58;15417:11;15412:2;15404:6;15400:15;15393:36;15208:228;:::o;15442:366::-;15584:3;15605:67;15669:2;15664:3;15605:67;:::i;:::-;15598:74;;15681:93;15770:3;15681:93;:::i;:::-;15799:2;15794:3;15790:12;15783:19;;15442:366;;;:::o;15814:419::-;15980:4;16018:2;16007:9;16003:18;15995:26;;16067:9;16061:4;16057:20;16053:1;16042:9;16038:17;16031:47;16095:131;16221:4;16095:131;:::i;:::-;16087:139;;15814:419;;;:::o;16239:170::-;16379:22;16375:1;16367:6;16363:14;16356:46;16239:170;:::o;16415:366::-;16557:3;16578:67;16642:2;16637:3;16578:67;:::i;:::-;16571:74;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16415:366;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:191::-;17252:3;17271:20;17289:1;17271:20;:::i;:::-;17266:25;;17305:20;17323:1;17305:20;:::i;:::-;17300:25;;17348:1;17345;17341:9;17334:16;;17369:3;17366:1;17363:10;17360:36;;;17376:18;;:::i;:::-;17360:36;17212:191;;;;:::o;17409:224::-;17549:34;17545:1;17537:6;17533:14;17526:58;17618:7;17613:2;17605:6;17601:15;17594:32;17409:224;:::o;17639:366::-;17781:3;17802:67;17866:2;17861:3;17802:67;:::i;:::-;17795:74;;17878:93;17967:3;17878:93;:::i;:::-;17996:2;17991:3;17987:12;17980:19;;17639:366;;;:::o;18011:419::-;18177:4;18215:2;18204:9;18200:18;18192:26;;18264:9;18258:4;18254:20;18250:1;18239:9;18235:17;18228:47;18292:131;18418:4;18292:131;:::i;:::-;18284:139;;18011:419;;;:::o;18436:233::-;18475:3;18498:24;18516:5;18498:24;:::i;:::-;18489:33;;18544:66;18537:5;18534:77;18531:103;;18614:18;;:::i;:::-;18531:103;18661:1;18654:5;18650:13;18643:20;;18436:233;;;:::o;18675:180::-;18723:77;18720:1;18713:88;18820:4;18817:1;18810:15;18844:4;18841:1;18834:15;18861:180;18909:77;18906:1;18899:88;19006:4;19003:1;18996:15;19030:4;19027:1;19020:15;19047:114;19114:6;19148:5;19142:12;19132:22;;19047:114;;;:::o;19167:184::-;19266:11;19300:6;19295:3;19288:19;19340:4;19335:3;19331:14;19316:29;;19167:184;;;;:::o;19357:132::-;19424:4;19447:3;19439:11;;19477:4;19472:3;19468:14;19460:22;;19357:132;;;:::o;19495:108::-;19572:24;19590:5;19572:24;:::i;:::-;19567:3;19560:37;19495:108;;:::o;19609:179::-;19678:10;19699:46;19741:3;19733:6;19699:46;:::i;:::-;19777:4;19772:3;19768:14;19754:28;;19609:179;;;;:::o;19794:113::-;19864:4;19896;19891:3;19887:14;19879:22;;19794:113;;;:::o;19943:732::-;20062:3;20091:54;20139:5;20091:54;:::i;:::-;20161:86;20240:6;20235:3;20161:86;:::i;:::-;20154:93;;20271:56;20321:5;20271:56;:::i;:::-;20350:7;20381:1;20366:284;20391:6;20388:1;20385:13;20366:284;;;20467:6;20461:13;20494:63;20553:3;20538:13;20494:63;:::i;:::-;20487:70;;20580:60;20633:6;20580:60;:::i;:::-;20570:70;;20426:224;20413:1;20410;20406:9;20401:14;;20366:284;;;20370:14;20666:3;20659:10;;20067:608;;;19943:732;;;;:::o;20681:831::-;20944:4;20982:3;20971:9;20967:19;20959:27;;20996:71;21064:1;21053:9;21049:17;21040:6;20996:71;:::i;:::-;21077:80;21153:2;21142:9;21138:18;21129:6;21077:80;:::i;:::-;21204:9;21198:4;21194:20;21189:2;21178:9;21174:18;21167:48;21232:108;21335:4;21326:6;21232:108;:::i;:::-;21224:116;;21350:72;21418:2;21407:9;21403:18;21394:6;21350:72;:::i;:::-;21432:73;21500:3;21489:9;21485:19;21476:6;21432:73;:::i;:::-;20681:831;;;;;;;;:::o;21518:177::-;21658:29;21654:1;21646:6;21642:14;21635:53;21518:177;:::o;21701:366::-;21843:3;21864:67;21928:2;21923:3;21864:67;:::i;:::-;21857:74;;21940:93;22029:3;21940:93;:::i;:::-;22058:2;22053:3;22049:12;22042:19;;21701:366;;;:::o;22073:419::-;22239:4;22277:2;22266:9;22262:18;22254:26;;22326:9;22320:4;22316:20;22312:1;22301:9;22297:17;22290:47;22354:131;22480:4;22354:131;:::i;:::-;22346:139;;22073:419;;;:::o;22498:410::-;22538:7;22561:20;22579:1;22561:20;:::i;:::-;22556:25;;22595:20;22613:1;22595:20;:::i;:::-;22590:25;;22650:1;22647;22643:9;22672:30;22690:11;22672:30;:::i;:::-;22661:41;;22851:1;22842:7;22838:15;22835:1;22832:22;22812:1;22805:9;22785:83;22762:139;;22881:18;;:::i;:::-;22762:139;22546:362;22498:410;;;;:::o;22914:180::-;22962:77;22959:1;22952:88;23059:4;23056:1;23049:15;23083:4;23080:1;23073:15;23100:185;23140:1;23157:20;23175:1;23157:20;:::i;:::-;23152:25;;23191:20;23209:1;23191:20;:::i;:::-;23186:25;;23230:1;23220:35;;23235:18;;:::i;:::-;23220:35;23277:1;23274;23270:9;23265:14;;23100:185;;;;:::o;23291:220::-;23431:34;23427:1;23419:6;23415:14;23408:58;23500:3;23495:2;23487:6;23483:15;23476:28;23291:220;:::o;23517:366::-;23659:3;23680:67;23744:2;23739:3;23680:67;:::i;:::-;23673:74;;23756:93;23845:3;23756:93;:::i;:::-;23874:2;23869:3;23865:12;23858:19;;23517:366;;;:::o;23889:419::-;24055:4;24093:2;24082:9;24078:18;24070:26;;24142:9;24136:4;24132:20;24128:1;24117:9;24113:17;24106:47;24170:131;24296:4;24170:131;:::i;:::-;24162:139;;23889:419;;;:::o

Swarm Source

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