ETH Price: $3,634.33 (+8.07%)

Token

Kishimoto redux (KISHIBURNO)
 

Overview

Max Total Supply

540,628.618965 KISHIBURNO

Holders

150 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
601 KISHIBURNO

Value
$0.00
0x8ae3771a1d57f0bc9f3cf429aba0aadff6bc9638
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

KISHIBURNO is an upcoming P2E video game digital distribution platform, developed by a team of enthusiastic blockchain engineers and gamers. To power, the platform, the $KISHIBURNO token was created.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KishimotoRedux

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2022-07-29
*/

/*
https://t.me/kishiburno */

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

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

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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract KishimotoRedux is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Kishimoto redux";
    string private constant _symbol = "KISHIBURNO";
    uint8 private constant _decimals = 6;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 public _tTotal = 1000 * 1e3 * 1e6; //1,000,000

    uint256 public _maxWalletAmount = 20 * 1e3 * 1e6; //2%
    uint256 public swapAmount = 7 * 1e3 * 1e6; //.07%

    // fees
    uint256 public j_liqBuy = 2; 
    uint256 public j_burnBuy = 3; 

    uint256 public j_liqSell = 15; 
    uint256 public j_burnSell = 2; 
    
    uint256 private j_previousLiqFee = j_liqFee;
    uint256 private j_previousBurnFee = j_burnFee;
    uint256 private j_liqFee;
    uint256 private j_burnFee;

    uint256 public _totalBurned;

    struct FeeBreakdown {
        uint256 tLiq;
        uint256 tBurn;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private liqAddress = payable(0x36355F08DdB54741d3EC4B2D82b61145865bcA54);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;

    bool private swapping = false;
    bool public burnMode = true;

    modifier lockSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[liqAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function burning(address _account, uint _amount) private {  
        require( _amount <= balanceOf(_account));
        _balances[_account] = _balances[_account].sub(_amount);
        _tTotal = _tTotal.sub(_amount);
        _totalBurned = _totalBurned.add(_amount);
        emit Transfer(_account, address(0), _amount);
    }

    function removeAllFee() private {
        if (j_burnFee == 0 && j_liqFee == 0) return;
        j_previousBurnFee = j_burnFee;
        j_previousLiqFee = j_liqFee;

        j_burnFee = 0;
        j_liqFee = 0;
    }
    
    function restoreAllFee() private {
        
        j_liqFee = j_previousLiqFee;
        j_burnFee = j_previousBurnFee;
    }

    function updateFees(uint256 liqSell) external onlyOwner {
        j_liqSell = liqSell;
        require(liqSell <= 5, "Must keep fees at 18% or less");
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {

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

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ((!_isExcludedFromFee[from] || !_isExcludedFromFee[to]))) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
                
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_liqFee = j_liqBuy;
                j_burnFee = j_burnBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_liqFee = j_liqSell;
                j_burnFee = j_burnSell;
            }
           
            if (!swapping && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                //uint256 contractETHBalance = address(this).balance;
                //if (contractETHBalance > 0) {
                //    sendETHToFee(address(this).balance);
                //}
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _transferAgain(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liqAddress,
            block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockSwap {
        uint256 autoLPamount = j_liqFee.mul(contractTokenBalance).sub(j_burnFee.mul(contractTokenBalance));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        liqAddress.transfer(amount);
    }

    function manualSwap() external {
        require(_msgSender() == liqAddress);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == liqAddress);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _transferAgain(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        
    
        FeeBreakdown memory fees;
        fees.tBurn = amount.mul(j_burnFee).div(100);
        fees.tLiq = amount.mul(j_liqFee).div(100);
        
        fees.tAmount = amount.sub(fees.tBurn).sub(fees.tLiq);

        uint256 amountPreBurn = amount.sub(fees.tBurn);
        burning(sender, fees.tBurn);

        _balances[sender] = _balances[sender].sub(amountPreBurn);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tBurn.add(fees.tLiq));
        

        if(burnMode && sender != uniswapV2Pair && sender != address(this) && sender != address(uniswapV2Router) && (recipient == address(uniswapV2Router) || recipient == uniswapV2Pair)) {
            burning(uniswapV2Pair, fees.tBurn);
        }

        emit Transfer(sender, recipient, fees.tAmount);
        restoreAllFee();
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == liqAddress);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == liqAddress);
        swapAmount = _swapAmount;

    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"burnMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"j_burnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_burnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_liqBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_liqSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"liqSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405264e8d4a510006005556404a817c8006006556401a13b860060075560026008556003600955600f600a556002600b55600e54600c55600f54600d557336355f08ddb54741d3ec4b2d82b61145865bca54601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff021916908315150217905550348015620000d657600080fd5b506000620000e9620005c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022857600080fd5b505afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200060c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c657600080fd5b505afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030191906200060c565b6040518363ffffffff1660e01b8152600401620003209291906200065a565b602060405180830381600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037691906200060c565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055460026000620003cd620005c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016004600062000421620005cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000554620005c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620005b5919062000687565b60405180910390a350620006fc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200060681620006e2565b92915050565b6000602082840312156200061f57600080fd5b60006200062f84828501620005f5565b91505092915050565b6200064381620006a4565b82525050565b6200065481620006d8565b82525050565b600060408201905062000671600083018562000638565b62000680602083018462000638565b9392505050565b60006020820190506200069e600083018462000649565b92915050565b6000620006b182620006b8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620006ed81620006a4565b8114620006f957600080fd5b50565b6136d8806200070c6000396000f3fe6080604052600436106101bb5760003560e01c806378dacee1116100ec578063d9f7e4df1161008a578063e632313c11610064578063e632313c146105fd578063f2fde38b14610626578063f42938901461064f578063fd01bd4c14610666576101c2565b8063d9f7e4df1461056a578063dc903ba114610595578063dd62ed3e146105c0576101c2565b806395d89b41116100c657806395d89b41146104ac578063a9059cbb146104d7578063af465a2714610514578063d89135cd1461053f576101c2565b806378dacee11461042d5780638da5cb5b146104565780638ea7815314610481576101c2565b80632e8fa8211161015957806351bc3c851161013357806351bc3c85146103975780636c0a24eb146103ae57806370a08231146103d9578063715018a614610416576101c2565b80632e8fa82114610316578063313ce5671461034157806349bd5a5e1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd1461028557806323bbf9e7146102c257806327a14fc2146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630cdf21871461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610691565b6040516101e99190612e09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a02565b6106ce565b6040516102269190612dee565b60405180910390f35b34801561023b57600080fd5b506102446106ec565b6040516102519190612fab565b60405180910390f35b34801561026657600080fd5b5061026f6106f2565b60405161027c9190612fab565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a791906129b3565b6106fc565b6040516102b99190612dee565b60405180910390f35b3480156102ce57600080fd5b506102d76107d5565b6040516102e49190612fab565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612a3e565b6107db565b005b34801561032257600080fd5b5061032b61089d565b6040516103389190612fab565b60405180910390f35b34801561034d57600080fd5b506103566108a3565b6040516103639190613020565b60405180910390f35b34801561037857600080fd5b506103816108ac565b60405161038e9190612d72565b60405180910390f35b3480156103a357600080fd5b506103ac6108d2565b005b3480156103ba57600080fd5b506103c3610956565b6040516103d09190612fab565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190612925565b61095c565b60405161040d9190612fab565b60405180910390f35b34801561042257600080fd5b5061042b6109a5565b005b34801561043957600080fd5b50610454600480360381019061044f9190612a3e565b610af8565b005b34801561046257600080fd5b5061046b610bdb565b6040516104789190612d72565b60405180910390f35b34801561048d57600080fd5b50610496610c04565b6040516104a39190612dee565b60405180910390f35b3480156104b857600080fd5b506104c1610c17565b6040516104ce9190612e09565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190612a02565b610c54565b60405161050b9190612dee565b60405180910390f35b34801561052057600080fd5b50610529610c72565b6040516105369190612fab565b60405180910390f35b34801561054b57600080fd5b50610554610c78565b6040516105619190612fab565b60405180910390f35b34801561057657600080fd5b5061057f610c82565b60405161058c9190612fab565b60405180910390f35b3480156105a157600080fd5b506105aa610c88565b6040516105b79190612fab565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190612977565b610c8e565b6040516105f49190612fab565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612a3e565b610d15565b005b34801561063257600080fd5b5061064d60048036038101906106489190612925565b610d80565b005b34801561065b57600080fd5b50610664610e91565b005b34801561067257600080fd5b5061067b610f0d565b6040516106889190612fab565b60405180910390f35b60606040518060400160405280600f81526020017f4b697368696d6f746f2072656475780000000000000000000000000000000000815250905090565b60006106e26106db610f13565b8484610f1b565b6001905092915050565b600a5481565b6000600554905090565b60006107098484846110e6565b6107ca84610715610f13565b6107c58560405180606001604052806028815260200161367b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077b610f13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119979092919063ffffffff16565b610f1b565b600190509392505050565b60085481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661081c610f13565b73ffffffffffffffffffffffffffffffffffffffff161461083c57600080fd5b61085260c86005546119fb90919063ffffffff16565b8111610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90612ecb565b60405180910390fd5b8060068190555050565b60075481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610913610f13565b73ffffffffffffffffffffffffffffffffffffffff161461093357600080fd5b600061093e3061095c565b905060008111156109535761095281611a45565b5b50565b60065481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ad610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612f0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b00610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8490612f0b565b60405180910390fd5b80600a819055506005811115610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612f6b565b60405180910390fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460159054906101000a900460ff1681565b60606040518060400160405280600a81526020017f4b495348494255524e4f00000000000000000000000000000000000000000000815250905090565b6000610c68610c61610f13565b84846110e6565b6001905092915050565b60055481565b6000601054905090565b600b5481565b60095481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d56610f13565b73ffffffffffffffffffffffffffffffffffffffff1614610d7657600080fd5b8060078190555050565b610d88610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90612f0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90612e4b565b60405180910390fd5b610e8e81611d3d565b50565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ed2610f13565b73ffffffffffffffffffffffffffffffffffffffff1614610ef257600080fd5b60004790506000811115610f0a57610f0981611e01565b5b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612f8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff290612e6b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d99190612fab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612e2b565b60405180910390fd5b60008111611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090612f2b565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112ad5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112b657600080fd5b6000600190506112c4610bdb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113325750611302610bdb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561136a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113a257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118d257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114525750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806114fc5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561156257600654611520836115128661095c565b611e6d90919063ffffffff16565b1115611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612eab565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561160d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116635750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116b95750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116d157600854600e81905550600954600f819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561177c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117d25750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118285750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561184057600a54600e81905550600b54600f819055505b60148054906101000a900460ff161580156118a95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118d15760006118b93061095c565b90506007548111156118cf576118ce81611ecb565b5b505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119735750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561197d57600090505b61198984848484611fc8565b6119916124d8565b50505050565b60008383111582906119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d69190612e09565b60405180910390fd5b50600083856119ee9190613171565b9050809150509392505050565b6000611a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124ec565b905092915050565b60016014806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611aa2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611ad05781602001602082028036833780820191505090505b5090503081600081518110611b0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be8919061294e565b81600181518110611c22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c8930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f1b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ced959493929190612fc6565b600060405180830381600087803b158015611d0757600080fd5b505af1158015611d1b573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e69573d6000803e3d6000fd5b5050565b6000808284611e7c9190613090565b905083811015611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890612e8b565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000611f22611eff83600f5461254f90919063ffffffff16565b611f1484600e5461254f90919063ffffffff16565b6125ca90919063ffffffff16565b90506000611f3a6002836119fb90919063ffffffff16565b90506000611f5182856125ca90919063ffffffff16565b90506000479050611f6182611a45565b6000611f9a83611f8c86611f7e86476125ca90919063ffffffff16565b61254f90919063ffffffff16565b6119fb90919063ffffffff16565b9050611fa68482612614565b505050505060006014806101000a81548160ff02191690831515021790555050565b80611fd657611fd5612723565b5b611fde6128b0565b6120066064611ff8600f548661254f90919063ffffffff16565b6119fb90919063ffffffff16565b8160200181815250506120376064612029600e548661254f90919063ffffffff16565b6119fb90919063ffffffff16565b81600001818152505061206d816000015161205f8360200151866125ca90919063ffffffff16565b6125ca90919063ffffffff16565b816040018181525050600061208f8260200151856125ca90919063ffffffff16565b905061209f868360200151612766565b6120f181600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218a8260400151600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6d90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122396121eb83600001518460200151611e6d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601460159054906101000a900460ff1680156122e65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561231e57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156124295750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806124285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b1561245f5761245e601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360200151612766565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604001516040516124c09190612fab565b60405180910390a36124d06124d8565b505050505050565b600c54600e81905550600d54600f81905550565b60008083118290612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a9190612e09565b60405180910390fd5b506000838561254291906130e6565b9050809150509392505050565b60008083141561256257600090506125c4565b600082846125709190613117565b905082848261257f91906130e6565b146125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b690612eeb565b60405180910390fd5b809150505b92915050565b600061260c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611997565b905092915050565b61264130601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f1b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126ca96959493929190612d8d565b6060604051808303818588803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061271c9190612a67565b5050505050565b6000600f5414801561273757506000600e54145b1561274157612764565b600f54600d81905550600e54600c819055506000600f819055506000600e819055505b565b61276f8261095c565b81111561277b57600080fd5b6127cd81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612825816005546125ca90919063ffffffff16565b60058190555061284081601054611e6d90919063ffffffff16565b601081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128a49190612fab565b60405180910390a35050565b60405180606001604052806000815260200160008152602001600081525090565b6000813590506128e08161364c565b92915050565b6000815190506128f58161364c565b92915050565b60008135905061290a81613663565b92915050565b60008151905061291f81613663565b92915050565b60006020828403121561293757600080fd5b6000612945848285016128d1565b91505092915050565b60006020828403121561296057600080fd5b600061296e848285016128e6565b91505092915050565b6000806040838503121561298a57600080fd5b6000612998858286016128d1565b92505060206129a9858286016128d1565b9150509250929050565b6000806000606084860312156129c857600080fd5b60006129d6868287016128d1565b93505060206129e7868287016128d1565b92505060406129f8868287016128fb565b9150509250925092565b60008060408385031215612a1557600080fd5b6000612a23858286016128d1565b9250506020612a34858286016128fb565b9150509250929050565b600060208284031215612a5057600080fd5b6000612a5e848285016128fb565b91505092915050565b600080600060608486031215612a7c57600080fd5b6000612a8a86828701612910565b9350506020612a9b86828701612910565b9250506040612aac86828701612910565b9150509250925092565b6000612ac28383612add565b60208301905092915050565b612ad7816131fa565b82525050565b612ae6816131a5565b82525050565b612af5816131a5565b82525050565b6000612b068261304b565b612b10818561306e565b9350612b1b8361303b565b8060005b83811015612b4c578151612b338882612ab6565b9750612b3e83613061565b925050600181019050612b1f565b5085935050505092915050565b612b62816131b7565b82525050565b612b718161320c565b82525050565b6000612b8282613056565b612b8c818561307f565b9350612b9c818560208601613242565b612ba5816132d3565b840191505092915050565b6000612bbd60238361307f565b9150612bc8826132e4565b604082019050919050565b6000612be060268361307f565b9150612beb82613333565b604082019050919050565b6000612c0360228361307f565b9150612c0e82613382565b604082019050919050565b6000612c26601b8361307f565b9150612c31826133d1565b602082019050919050565b6000612c4960418361307f565b9150612c54826133fa565b606082019050919050565b6000612c6c602a8361307f565b9150612c778261346f565b604082019050919050565b6000612c8f60218361307f565b9150612c9a826134be565b604082019050919050565b6000612cb260208361307f565b9150612cbd8261350d565b602082019050919050565b6000612cd560298361307f565b9150612ce082613536565b604082019050919050565b6000612cf860258361307f565b9150612d0382613585565b604082019050919050565b6000612d1b601d8361307f565b9150612d26826135d4565b602082019050919050565b6000612d3e60248361307f565b9150612d49826135fd565b604082019050919050565b612d5d816131e3565b82525050565b612d6c816131ed565b82525050565b6000602082019050612d876000830184612aec565b92915050565b600060c082019050612da26000830189612aec565b612daf6020830188612d54565b612dbc6040830187612b68565b612dc96060830186612b68565b612dd66080830185612ace565b612de360a0830184612d54565b979650505050505050565b6000602082019050612e036000830184612b59565b92915050565b60006020820190508181036000830152612e238184612b77565b905092915050565b60006020820190508181036000830152612e4481612bb0565b9050919050565b60006020820190508181036000830152612e6481612bd3565b9050919050565b60006020820190508181036000830152612e8481612bf6565b9050919050565b60006020820190508181036000830152612ea481612c19565b9050919050565b60006020820190508181036000830152612ec481612c3c565b9050919050565b60006020820190508181036000830152612ee481612c5f565b9050919050565b60006020820190508181036000830152612f0481612c82565b9050919050565b60006020820190508181036000830152612f2481612ca5565b9050919050565b60006020820190508181036000830152612f4481612cc8565b9050919050565b60006020820190508181036000830152612f6481612ceb565b9050919050565b60006020820190508181036000830152612f8481612d0e565b9050919050565b60006020820190508181036000830152612fa481612d31565b9050919050565b6000602082019050612fc06000830184612d54565b92915050565b600060a082019050612fdb6000830188612d54565b612fe86020830187612b68565b8181036040830152612ffa8186612afb565b90506130096060830185612aec565b6130166080830184612d54565b9695505050505050565b60006020820190506130356000830184612d63565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061309b826131e3565b91506130a6836131e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130db576130da613275565b5b828201905092915050565b60006130f1826131e3565b91506130fc836131e3565b92508261310c5761310b6132a4565b5b828204905092915050565b6000613122826131e3565b915061312d836131e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561316657613165613275565b5b828202905092915050565b600061317c826131e3565b9150613187836131e3565b92508282101561319a57613199613275565b5b828203905092915050565b60006131b0826131c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132058261321e565b9050919050565b6000613217826131e3565b9050919050565b600061322982613230565b9050919050565b600061323b826131c3565b9050919050565b60005b83811015613260578082015181840152602081019050613245565b8381111561326f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560008201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420313825206f72206c657373000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613655816131a5565b811461366057600080fd5b50565b61366c816131e3565b811461367757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee44b262cea4322aaf55343b1709c7e96dd2d42d850a2b8d9ebc706c6d96ba0564736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806378dacee1116100ec578063d9f7e4df1161008a578063e632313c11610064578063e632313c146105fd578063f2fde38b14610626578063f42938901461064f578063fd01bd4c14610666576101c2565b8063d9f7e4df1461056a578063dc903ba114610595578063dd62ed3e146105c0576101c2565b806395d89b41116100c657806395d89b41146104ac578063a9059cbb146104d7578063af465a2714610514578063d89135cd1461053f576101c2565b806378dacee11461042d5780638da5cb5b146104565780638ea7815314610481576101c2565b80632e8fa8211161015957806351bc3c851161013357806351bc3c85146103975780636c0a24eb146103ae57806370a08231146103d9578063715018a614610416576101c2565b80632e8fa82114610316578063313ce5671461034157806349bd5a5e1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd1461028557806323bbf9e7146102c257806327a14fc2146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630cdf21871461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610691565b6040516101e99190612e09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a02565b6106ce565b6040516102269190612dee565b60405180910390f35b34801561023b57600080fd5b506102446106ec565b6040516102519190612fab565b60405180910390f35b34801561026657600080fd5b5061026f6106f2565b60405161027c9190612fab565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a791906129b3565b6106fc565b6040516102b99190612dee565b60405180910390f35b3480156102ce57600080fd5b506102d76107d5565b6040516102e49190612fab565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612a3e565b6107db565b005b34801561032257600080fd5b5061032b61089d565b6040516103389190612fab565b60405180910390f35b34801561034d57600080fd5b506103566108a3565b6040516103639190613020565b60405180910390f35b34801561037857600080fd5b506103816108ac565b60405161038e9190612d72565b60405180910390f35b3480156103a357600080fd5b506103ac6108d2565b005b3480156103ba57600080fd5b506103c3610956565b6040516103d09190612fab565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190612925565b61095c565b60405161040d9190612fab565b60405180910390f35b34801561042257600080fd5b5061042b6109a5565b005b34801561043957600080fd5b50610454600480360381019061044f9190612a3e565b610af8565b005b34801561046257600080fd5b5061046b610bdb565b6040516104789190612d72565b60405180910390f35b34801561048d57600080fd5b50610496610c04565b6040516104a39190612dee565b60405180910390f35b3480156104b857600080fd5b506104c1610c17565b6040516104ce9190612e09565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190612a02565b610c54565b60405161050b9190612dee565b60405180910390f35b34801561052057600080fd5b50610529610c72565b6040516105369190612fab565b60405180910390f35b34801561054b57600080fd5b50610554610c78565b6040516105619190612fab565b60405180910390f35b34801561057657600080fd5b5061057f610c82565b60405161058c9190612fab565b60405180910390f35b3480156105a157600080fd5b506105aa610c88565b6040516105b79190612fab565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190612977565b610c8e565b6040516105f49190612fab565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612a3e565b610d15565b005b34801561063257600080fd5b5061064d60048036038101906106489190612925565b610d80565b005b34801561065b57600080fd5b50610664610e91565b005b34801561067257600080fd5b5061067b610f0d565b6040516106889190612fab565b60405180910390f35b60606040518060400160405280600f81526020017f4b697368696d6f746f2072656475780000000000000000000000000000000000815250905090565b60006106e26106db610f13565b8484610f1b565b6001905092915050565b600a5481565b6000600554905090565b60006107098484846110e6565b6107ca84610715610f13565b6107c58560405180606001604052806028815260200161367b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077b610f13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119979092919063ffffffff16565b610f1b565b600190509392505050565b60085481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661081c610f13565b73ffffffffffffffffffffffffffffffffffffffff161461083c57600080fd5b61085260c86005546119fb90919063ffffffff16565b8111610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90612ecb565b60405180910390fd5b8060068190555050565b60075481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610913610f13565b73ffffffffffffffffffffffffffffffffffffffff161461093357600080fd5b600061093e3061095c565b905060008111156109535761095281611a45565b5b50565b60065481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ad610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612f0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b00610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8490612f0b565b60405180910390fd5b80600a819055506005811115610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612f6b565b60405180910390fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460159054906101000a900460ff1681565b60606040518060400160405280600a81526020017f4b495348494255524e4f00000000000000000000000000000000000000000000815250905090565b6000610c68610c61610f13565b84846110e6565b6001905092915050565b60055481565b6000601054905090565b600b5481565b60095481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d56610f13565b73ffffffffffffffffffffffffffffffffffffffff1614610d7657600080fd5b8060078190555050565b610d88610f13565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90612f0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90612e4b565b60405180910390fd5b610e8e81611d3d565b50565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ed2610f13565b73ffffffffffffffffffffffffffffffffffffffff1614610ef257600080fd5b60004790506000811115610f0a57610f0981611e01565b5b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612f8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff290612e6b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d99190612fab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612e2b565b60405180910390fd5b60008111611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090612f2b565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112ad5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112b657600080fd5b6000600190506112c4610bdb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113325750611302610bdb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561136a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113a257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118d257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114525750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806114fc5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561156257600654611520836115128661095c565b611e6d90919063ffffffff16565b1115611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612eab565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561160d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116635750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116b95750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116d157600854600e81905550600954600f819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561177c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117d25750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118285750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561184057600a54600e81905550600b54600f819055505b60148054906101000a900460ff161580156118a95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118d15760006118b93061095c565b90506007548111156118cf576118ce81611ecb565b5b505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119735750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561197d57600090505b61198984848484611fc8565b6119916124d8565b50505050565b60008383111582906119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d69190612e09565b60405180910390fd5b50600083856119ee9190613171565b9050809150509392505050565b6000611a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124ec565b905092915050565b60016014806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611aa2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611ad05781602001602082028036833780820191505090505b5090503081600081518110611b0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be8919061294e565b81600181518110611c22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c8930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f1b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ced959493929190612fc6565b600060405180830381600087803b158015611d0757600080fd5b505af1158015611d1b573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e69573d6000803e3d6000fd5b5050565b6000808284611e7c9190613090565b905083811015611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890612e8b565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000611f22611eff83600f5461254f90919063ffffffff16565b611f1484600e5461254f90919063ffffffff16565b6125ca90919063ffffffff16565b90506000611f3a6002836119fb90919063ffffffff16565b90506000611f5182856125ca90919063ffffffff16565b90506000479050611f6182611a45565b6000611f9a83611f8c86611f7e86476125ca90919063ffffffff16565b61254f90919063ffffffff16565b6119fb90919063ffffffff16565b9050611fa68482612614565b505050505060006014806101000a81548160ff02191690831515021790555050565b80611fd657611fd5612723565b5b611fde6128b0565b6120066064611ff8600f548661254f90919063ffffffff16565b6119fb90919063ffffffff16565b8160200181815250506120376064612029600e548661254f90919063ffffffff16565b6119fb90919063ffffffff16565b81600001818152505061206d816000015161205f8360200151866125ca90919063ffffffff16565b6125ca90919063ffffffff16565b816040018181525050600061208f8260200151856125ca90919063ffffffff16565b905061209f868360200151612766565b6120f181600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218a8260400151600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6d90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122396121eb83600001518460200151611e6d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601460159054906101000a900460ff1680156122e65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561231e57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156124295750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806124285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b1561245f5761245e601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360200151612766565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604001516040516124c09190612fab565b60405180910390a36124d06124d8565b505050505050565b600c54600e81905550600d54600f81905550565b60008083118290612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a9190612e09565b60405180910390fd5b506000838561254291906130e6565b9050809150509392505050565b60008083141561256257600090506125c4565b600082846125709190613117565b905082848261257f91906130e6565b146125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b690612eeb565b60405180910390fd5b809150505b92915050565b600061260c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611997565b905092915050565b61264130601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f1b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126ca96959493929190612d8d565b6060604051808303818588803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061271c9190612a67565b5050505050565b6000600f5414801561273757506000600e54145b1561274157612764565b600f54600d81905550600e54600c819055506000600f819055506000600e819055505b565b61276f8261095c565b81111561277b57600080fd5b6127cd81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612825816005546125ca90919063ffffffff16565b60058190555061284081601054611e6d90919063ffffffff16565b601081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128a49190612fab565b60405180910390a35050565b60405180606001604052806000815260200160008152602001600081525090565b6000813590506128e08161364c565b92915050565b6000815190506128f58161364c565b92915050565b60008135905061290a81613663565b92915050565b60008151905061291f81613663565b92915050565b60006020828403121561293757600080fd5b6000612945848285016128d1565b91505092915050565b60006020828403121561296057600080fd5b600061296e848285016128e6565b91505092915050565b6000806040838503121561298a57600080fd5b6000612998858286016128d1565b92505060206129a9858286016128d1565b9150509250929050565b6000806000606084860312156129c857600080fd5b60006129d6868287016128d1565b93505060206129e7868287016128d1565b92505060406129f8868287016128fb565b9150509250925092565b60008060408385031215612a1557600080fd5b6000612a23858286016128d1565b9250506020612a34858286016128fb565b9150509250929050565b600060208284031215612a5057600080fd5b6000612a5e848285016128fb565b91505092915050565b600080600060608486031215612a7c57600080fd5b6000612a8a86828701612910565b9350506020612a9b86828701612910565b9250506040612aac86828701612910565b9150509250925092565b6000612ac28383612add565b60208301905092915050565b612ad7816131fa565b82525050565b612ae6816131a5565b82525050565b612af5816131a5565b82525050565b6000612b068261304b565b612b10818561306e565b9350612b1b8361303b565b8060005b83811015612b4c578151612b338882612ab6565b9750612b3e83613061565b925050600181019050612b1f565b5085935050505092915050565b612b62816131b7565b82525050565b612b718161320c565b82525050565b6000612b8282613056565b612b8c818561307f565b9350612b9c818560208601613242565b612ba5816132d3565b840191505092915050565b6000612bbd60238361307f565b9150612bc8826132e4565b604082019050919050565b6000612be060268361307f565b9150612beb82613333565b604082019050919050565b6000612c0360228361307f565b9150612c0e82613382565b604082019050919050565b6000612c26601b8361307f565b9150612c31826133d1565b602082019050919050565b6000612c4960418361307f565b9150612c54826133fa565b606082019050919050565b6000612c6c602a8361307f565b9150612c778261346f565b604082019050919050565b6000612c8f60218361307f565b9150612c9a826134be565b604082019050919050565b6000612cb260208361307f565b9150612cbd8261350d565b602082019050919050565b6000612cd560298361307f565b9150612ce082613536565b604082019050919050565b6000612cf860258361307f565b9150612d0382613585565b604082019050919050565b6000612d1b601d8361307f565b9150612d26826135d4565b602082019050919050565b6000612d3e60248361307f565b9150612d49826135fd565b604082019050919050565b612d5d816131e3565b82525050565b612d6c816131ed565b82525050565b6000602082019050612d876000830184612aec565b92915050565b600060c082019050612da26000830189612aec565b612daf6020830188612d54565b612dbc6040830187612b68565b612dc96060830186612b68565b612dd66080830185612ace565b612de360a0830184612d54565b979650505050505050565b6000602082019050612e036000830184612b59565b92915050565b60006020820190508181036000830152612e238184612b77565b905092915050565b60006020820190508181036000830152612e4481612bb0565b9050919050565b60006020820190508181036000830152612e6481612bd3565b9050919050565b60006020820190508181036000830152612e8481612bf6565b9050919050565b60006020820190508181036000830152612ea481612c19565b9050919050565b60006020820190508181036000830152612ec481612c3c565b9050919050565b60006020820190508181036000830152612ee481612c5f565b9050919050565b60006020820190508181036000830152612f0481612c82565b9050919050565b60006020820190508181036000830152612f2481612ca5565b9050919050565b60006020820190508181036000830152612f4481612cc8565b9050919050565b60006020820190508181036000830152612f6481612ceb565b9050919050565b60006020820190508181036000830152612f8481612d0e565b9050919050565b60006020820190508181036000830152612fa481612d31565b9050919050565b6000602082019050612fc06000830184612d54565b92915050565b600060a082019050612fdb6000830188612d54565b612fe86020830187612b68565b8181036040830152612ffa8186612afb565b90506130096060830185612aec565b6130166080830184612d54565b9695505050505050565b60006020820190506130356000830184612d63565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061309b826131e3565b91506130a6836131e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130db576130da613275565b5b828201905092915050565b60006130f1826131e3565b91506130fc836131e3565b92508261310c5761310b6132a4565b5b828204905092915050565b6000613122826131e3565b915061312d836131e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561316657613165613275565b5b828202905092915050565b600061317c826131e3565b9150613187836131e3565b92508282101561319a57613199613275565b5b828203905092915050565b60006131b0826131c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132058261321e565b9050919050565b6000613217826131e3565b9050919050565b600061322982613230565b9050919050565b600061323b826131c3565b9050919050565b60005b83811015613260578082015181840152602081019050613245565b8381111561326f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560008201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420313825206f72206c657373000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613655816131a5565b811461366057600080fd5b50565b61366c816131e3565b811461367757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee44b262cea4322aaf55343b1709c7e96dd2d42d850a2b8d9ebc706c6d96ba0564736f6c63430008040033

Deployed Bytecode Sourcemap

4758:10694:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6809:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7650:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5453:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7086:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5380:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5310:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6995:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6035:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13403:241;;;;;;;;;;;;;:::i;:::-;;5250:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7189:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2622:148;;;;;;;;;;;;;:::i;:::-;;8948:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2408:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6108:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6900:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7320:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5188:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8141:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5490:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5415:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7497:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15303:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2782:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13652:243;;;;;;;;;;;;;:::i;:::-;;5700:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6809:83;6846:13;6879:5;;;;;;;;;;;;;;;;;6872:12;;6809:83;:::o;7650:163::-;7727:4;7744:39;7753:12;:10;:12::i;:::-;7767:7;7776:6;7744:8;:39::i;:::-;7801:4;7794:11;;7650:163;;;;:::o;5453:29::-;;;;:::o;7086:95::-;7139:7;7166;;7159:14;;7086:95;:::o;7821:312::-;7921:4;7938:36;7948:6;7956:9;7967:6;7938:9;:36::i;:::-;7985:118;7994:6;8001:12;:10;:12::i;:::-;8014:88;8052:6;8014:88;;;;;;;;;;;;;;;;;:11;:19;8026:6;8014:19;;;;;;;;;;;;;;;:33;8034:12;:10;:12::i;:::-;8014:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;7985:8;:118::i;:::-;8121:4;8114:11;;7821:312;;;;;:::o;5380:27::-;;;;:::o;15034:261::-;15131:10;;;;;;;;;;;15115:26;;:12;:10;:12::i;:::-;:26;;;15107:35;;;;;;15179:16;15191:3;15179:7;;:11;;:16;;;;:::i;:::-;15161:15;:34;15153:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;15272:15;15253:16;:34;;;;15034:261;:::o;5310:41::-;;;;:::o;6995:83::-;7036:5;4994:1;7054:16;;6995:83;:::o;6035:28::-;;;;;;;;;;;;;:::o;13403:241::-;13469:10;;;;;;;;;;;13453:26;;:12;:10;:12::i;:::-;:26;;;13445:35;;;;;;13491:23;13517:24;13535:4;13517:9;:24::i;:::-;13491:50;;13574:1;13556:15;:19;13552:85;;;13592:33;13609:15;13592:16;:33::i;:::-;13552:85;13403:241;:::o;5250:48::-;;;;:::o;7189:119::-;7255:7;7282:9;:18;7292:7;7282:18;;;;;;;;;;;;;;;;7275:25;;7189:119;;;:::o;2622:148::-;2545:12;:10;:12::i;:::-;2535:22;;:6;;;;;;;;;;:22;;;2527:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2729:1:::1;2692:40;;2713:6;::::0;::::1;;;;;;;;2692:40;;;;;;;;;;;;2760:1;2743:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2622:148::o:0;8948:159::-;2545:12;:10;:12::i;:::-;2535:22;;:6;;;;;;;;;;:22;;;2527:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9027:7:::1;9015:9;:19;;;;9064:1;9053:7;:12;;9045:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8948:159:::0;:::o;2408:79::-;2446:7;2473:6;;;;;;;;;;;2466:13;;2408:79;:::o;6108:27::-;;;;;;;;;;;;;:::o;6900:87::-;6939:13;6972:7;;;;;;;;;;;;;;;;;6965:14;;6900:87;:::o;7320:169::-;7400:4;7417:42;7427:12;:10;:12::i;:::-;7441:9;7452:6;7417:9;:42::i;:::-;7477:4;7470:11;;7320:169;;;;:::o;5188:41::-;;;;:::o;8141:91::-;8185:7;8212:12;;8205:19;;8141:91;:::o;5490:29::-;;;;:::o;5415:28::-;;;;:::o;7497:145::-;7580:7;7607:11;:18;7619:5;7607:18;;;;;;;;;;;;;;;:27;7626:7;7607:27;;;;;;;;;;;;;;;;7600:34;;7497:145;;;;:::o;15303:144::-;15391:10;;;;;;;;;;;15375:26;;:12;:10;:12::i;:::-;:26;;;15367:35;;;;;;15426:11;15413:10;:24;;;;15303:144;:::o;2782:201::-;2545:12;:10;:12::i;:::-;2535:22;;:6;;;;;;;;;;:22;;;2527:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2891:1:::1;2871:22;;:8;:22;;;;2863:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2947:28;2966:8;2947:18;:28::i;:::-;2782:201:::0;:::o;13652:243::-;13718:10;;;;;;;;;;;13702:26;;:12;:10;:12::i;:::-;:26;;;13694:35;;;;;;13740:26;13769:21;13740:50;;13826:1;13805:18;:22;13801:87;;;13844:32;13857:18;13844:12;:32::i;:::-;13801:87;13652:243;:::o;5700:27::-;;;;:::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;9115:335::-;9225:1;9208:19;;:5;:19;;;;9200:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9306:1;9287:21;;:7;:21;;;;9279:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9388:6;9358:11;:18;9370:5;9358:18;;;;;;;;;;;;;;;:27;9377:7;9358:27;;;;;;;;;;;;;;;:36;;;;9426:7;9410:32;;9419:5;9410:32;;;9435:6;9410:32;;;;;;:::i;:::-;;;;;;;;9115:335;;;:::o;9462:1943::-;9568:1;9552:18;;:4;:18;;;;9544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9645:1;9631:16;;:2;:16;;;;9623:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9715:1;9706:6;:10;9698:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9782:4;:10;9787:4;9782:10;;;;;;;;;;;;;;;;;;;;;;;;;9781:11;:24;;;;;9797:4;:8;9802:2;9797:8;;;;;;;;;;;;;;;;;;;;;;;;;9796:9;9781:24;9773:33;;;;;;9819:12;9834:4;9819:19;;9863:7;:5;:7::i;:::-;9855:15;;:4;:15;;;;:32;;;;;9880:7;:5;:7::i;:::-;9874:13;;:2;:13;;;;9855:32;:57;;;;;9907:4;9891:21;;:4;:21;;;;9855:57;:80;;;;;9930:4;9916:19;;:2;:19;;;;9855:80;9851:1349;;;9966:13;;;;;;;;;;;9958:21;;:4;:21;;;:55;;;;;9997:15;;;;;;;;;;;9983:30;;:2;:30;;;;9958:55;:115;;;;;10020:18;:24;10039:4;10020:24;;;;;;;;;;;;;;;;;;;;;;;;;10019:25;:52;;;;10049:18;:22;10068:2;10049:22;;;;;;;;;;;;;;;;;;;;;;;;;10048:23;10019:52;9958:115;9954:297;;;10131:16;;10102:25;10120:6;10102:13;10112:2;10102:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:45;;10094:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;9954:297;10279:13;;;;;;;;;;;10271:21;;:4;:21;;;:55;;;;;10310:15;;;;;;;;;;;10296:30;;:2;:30;;;;10271:55;:68;;;;;10331:4;:8;10336:2;10331:8;;;;;;;;;;;;;;;;;;;;;;;;;10330:9;10271:68;:83;;;;;10344:4;:10;10349:4;10344:10;;;;;;;;;;;;;;;;;;;;;;;;;10343:11;10271:83;10267:183;;;10386:8;;10375;:19;;;;10425:9;;10413;:21;;;;10267:183;10492:13;;;;;;;;;;;10486:19;;:2;:19;;;:55;;;;;10525:15;;;;;;;;;;;10509:32;;:4;:32;;;;10486:55;:68;;;;;10546:4;:8;10551:2;10546:8;;;;;;;;;;;;;;;;;;;;;;;;;10545:9;10486:68;:83;;;;;10559:4;:10;10564:4;10559:10;;;;;;;;;;;;;;;;;;;;;;;;;10558:11;10486:83;10482:185;;;10601:9;;10590:8;:20;;;;10641:10;;10629:9;:22;;;;10482:185;10699:8;;;;;;;;;;10698:9;:34;;;;;10719:13;;;;;;;;;;;10711:21;;:4;:21;;;;10698:34;10694:495;;;10755:28;10786:24;10804:4;10786:9;:24::i;:::-;10755:55;;10858:10;;10835:20;:33;10831:118;;;10893:36;10908:20;10893:14;:36::i;:::-;10831:118;10694:495;;9851:1349;11216:18;:24;11235:4;11216:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11244:18;:22;11263:2;11244:22;;;;;;;;;;;;;;;;;;;;;;;;;11216:50;11212:98;;;11293:5;11283:15;;11212:98;11330:41;11345:4;11351:2;11355:6;11363:7;11330:14;:41::i;:::-;11382:15;:13;:15::i;:::-;9462:1943;;;;:::o;1266:190::-;1352:7;1385:1;1380;:6;;1388:12;1372:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1412:9;1428:1;1424;:5;;;;:::i;:::-;1412:17;;1447:1;1440:8;;;1266:190;;;;;:::o;1718:132::-;1776:7;1803:39;1807:1;1810;1803:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1796:46;;1718:132;;;;:::o;11413:404::-;6184:4;6173:8;;:15;;;;;;;;;;;;;;;;;;11488:21:::1;11526:1;11512:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:40;;11557:4;11539;11544:1;11539:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11573:4;11578:1;11573:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11616:62;11633:4;11648:15;;;;;;;;;;;11666:11;11616:8;:62::i;:::-;11689:15;;;;;;;;;;;:66;;;11756:11;11769:1;11772:4;11786;11793:15;11689:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6199:1;6222:5:::0;6211:8;;:16;;;;;;;;;;;;;;;;;;11413:404;:::o;2991:191::-;3065:16;3084:6;;;;;;;;;;;3065:25;;3110:8;3101:6;;:17;;;;;;;;;;;;;;;;;;3165:8;3134:40;;3155:8;3134:40;;;;;;;;;;;;2991:191;;:::o;13303:92::-;13360:10;;;;;;;;;;;:19;;:27;13380:6;13360:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13303:92;:::o;935:179::-;993:7;1013:9;1029:1;1025;:5;;;;:::i;:::-;1013:17;;1054:1;1049;:6;;1041:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1105:1;1098:8;;;935:179;;;;:::o;12286:1009::-;6184:4;6173:8;;:15;;;;;;;;;;;;;;;;;;12368:20:::1;12391:75;12430:35;12444:20;12430:9;;:13;;:35;;;;:::i;:::-;12391:34;12404:20;12391:8;;:12;;:34;;;;:::i;:::-;:38;;:75;;;;:::i;:::-;12368:98;;12530:12;12546:19;12563:1;12546:12;:16;;:19;;;;:::i;:::-;12530:35;;12576:17;12596:30;12621:4;12596:20;:24;;:30;;;;:::i;:::-;12576:50;;12904:22;12929:21;12904:46;;12995:27;13012:9;12995:16;:27::i;:::-;13153:18;13174:70;13234:9;13175:53;13223:4;13176:41;13202:14;13176:21;:25;;:41;;;;:::i;:::-;13175:47;;:53;;;;:::i;:::-;13174:59;;:70;;;;:::i;:::-;13153:91;;13257:30;13270:4;13276:10;13257:12;:30::i;:::-;6199:1;;;;;6222:5:::0;6211:8;;:16;;;;;;;;;;;;;;;;;;12286:1009;:::o;13903:1082::-;14016:7;14011:60;;14045:14;:12;:14::i;:::-;14011:60;14097:24;;:::i;:::-;14145:30;14171:3;14145:21;14156:9;;14145:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14132:4;:10;;:43;;;;;14198:29;14223:3;14198:20;14209:8;;14198:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14186:4;:9;;:41;;;;;14263:37;14290:4;:9;;;14263:22;14274:4;:10;;;14263:6;:10;;:22;;;;:::i;:::-;:26;;:37;;;;:::i;:::-;14248:4;:12;;:52;;;;;14313:21;14337:22;14348:4;:10;;;14337:6;:10;;:22;;;;:::i;:::-;14313:46;;14370:27;14378:6;14386:4;:10;;;14370:7;:27::i;:::-;14430:36;14452:13;14430:9;:17;14440:6;14430:17;;;;;;;;;;;;;;;;:21;;:36;;;;:::i;:::-;14410:9;:17;14420:6;14410:17;;;;;;;;;;;;;;;:56;;;;14500:38;14525:4;:12;;;14500:9;:20;14510:9;14500:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;14477:9;:20;14487:9;14477:20;;;;;;;;;;;;;;;:61;;;;14576:55;14605:25;14620:4;:9;;;14605:4;:10;;;:14;;:25;;;;:::i;:::-;14576:9;:24;14594:4;14576:24;;;;;;;;;;;;;;;;:28;;:55;;;;:::i;:::-;14549:9;:24;14567:4;14549:24;;;;;;;;;;;;;;;:82;;;;14657:8;;;;;;;;;;;:35;;;;;14679:13;;;;;;;;;;;14669:23;;:6;:23;;;;14657:35;:62;;;;;14714:4;14696:23;;:6;:23;;;;14657:62;:100;;;;;14741:15;;;;;;;;;;;14723:34;;:6;:34;;;;14657:100;:173;;;;;14783:15;;;;;;;;;;;14762:37;;:9;:37;;;:67;;;;14816:13;;;;;;;;;;;14803:26;;:9;:26;;;14762:67;14657:173;14654:239;;;14847:34;14855:13;;;;;;;;;;;14870:4;:10;;;14847:7;:34::i;:::-;14654:239;14927:9;14910:41;;14919:6;14910:41;;;14938:4;:12;;;14910:41;;;;;;:::i;:::-;;;;;;;;14962:15;:13;:15::i;:::-;13903:1082;;;;;;:::o;8811:129::-;8876:16;;8865:8;:27;;;;8915:17;;8903:9;:29;;;;8811:129::o;1858:189::-;1944:7;1976:1;1972;:5;1979:12;1964:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2003:9;2019:1;2015;:5;;;;:::i;:::-;2003:17;;2038:1;2031:8;;;1858:189;;;;;:::o;1464:246::-;1522:7;1551:1;1546;:6;1542:47;;;1576:1;1569:8;;;;1542:47;1599:9;1615:1;1611;:5;;;;:::i;:::-;1599:17;;1644:1;1639;1635;:5;;;;:::i;:::-;:10;1627:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1701:1;1694:8;;;1464:246;;;;;:::o;1122:136::-;1180:7;1207:43;1211:1;1214;1207:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1200:50;;1122:136;;;;:::o;11825:451::-;11906:62;11923:4;11938:15;;;;;;;;;;;11956:11;11906:8;:62::i;:::-;12011:15;;;;;;;;;;;:31;;;12050:9;12083:4;12103:11;12129:1;12172;12215:10;;;;;;;;;;;12240:15;12011:257;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11825:451;;:::o;8578:221::-;8638:1;8625:9;;:14;:31;;;;;8655:1;8643:8;;:13;8625:31;8621:44;;;8658:7;;8621:44;8695:9;;8675:17;:29;;;;8734:8;;8715:16;:27;;;;8767:1;8755:9;:13;;;;8790:1;8779:8;:12;;;;8578:221;:::o;8240:330::-;8330:19;8340:8;8330:9;:19::i;:::-;8319:7;:30;;8310:40;;;;;;8383:32;8407:7;8383:9;:19;8393:8;8383:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;8361:9;:19;8371:8;8361:19;;;;;;;;;;;;;;;:54;;;;8436:20;8448:7;8436;;:11;;:20;;;;:::i;:::-;8426:7;:30;;;;8482:25;8499:7;8482:12;;:16;;:25;;;;:::i;:::-;8467:12;:40;;;;8550:1;8523:39;;8532:8;8523:39;;;8554:7;8523:39;;;;;;:::i;:::-;;;;;;;;8240:330;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;353:87;;;;:::o;446:143::-;503:5;534:6;528:13;519:22;;550:33;577:5;550:33;:::i;:::-;509:80;;;;:::o;595:262::-;654:6;703:2;691:9;682:7;678:23;674:32;671:2;;;719:1;716;709:12;671:2;762:1;787:53;832:7;823:6;812:9;808:22;787:53;:::i;:::-;777:63;;733:117;661:196;;;;:::o;863:284::-;933:6;982:2;970:9;961:7;957:23;953:32;950:2;;;998:1;995;988:12;950:2;1041:1;1066:64;1122:7;1113:6;1102:9;1098:22;1066:64;:::i;:::-;1056:74;;1012:128;940:207;;;;:::o;1153:407::-;1221:6;1229;1278:2;1266:9;1257:7;1253:23;1249:32;1246:2;;;1294:1;1291;1284:12;1246:2;1337:1;1362:53;1407:7;1398:6;1387:9;1383:22;1362:53;:::i;:::-;1352:63;;1308:117;1464:2;1490:53;1535:7;1526:6;1515:9;1511:22;1490:53;:::i;:::-;1480:63;;1435:118;1236:324;;;;;:::o;1566:552::-;1643:6;1651;1659;1708:2;1696:9;1687:7;1683:23;1679:32;1676:2;;;1724:1;1721;1714:12;1676:2;1767:1;1792:53;1837:7;1828:6;1817:9;1813:22;1792:53;:::i;:::-;1782:63;;1738:117;1894:2;1920:53;1965:7;1956:6;1945:9;1941:22;1920:53;:::i;:::-;1910:63;;1865:118;2022:2;2048:53;2093:7;2084:6;2073:9;2069:22;2048:53;:::i;:::-;2038:63;;1993:118;1666:452;;;;;:::o;2124:407::-;2192:6;2200;2249:2;2237:9;2228:7;2224:23;2220:32;2217:2;;;2265:1;2262;2255:12;2217:2;2308:1;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2279:117;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2207:324;;;;;:::o;2537:262::-;2596:6;2645:2;2633:9;2624:7;2620:23;2616:32;2613:2;;;2661:1;2658;2651:12;2613:2;2704:1;2729:53;2774:7;2765:6;2754:9;2750:22;2729:53;:::i;:::-;2719:63;;2675:117;2603:196;;;;:::o;2805:596::-;2893:6;2901;2909;2958:2;2946:9;2937:7;2933:23;2929:32;2926:2;;;2974:1;2971;2964:12;2926:2;3017:1;3042:64;3098:7;3089:6;3078:9;3074:22;3042:64;:::i;:::-;3032:74;;2988:128;3155:2;3181:64;3237:7;3228:6;3217:9;3213:22;3181:64;:::i;:::-;3171:74;;3126:129;3294:2;3320:64;3376:7;3367:6;3356:9;3352:22;3320:64;:::i;:::-;3310:74;;3265:129;2916:485;;;;;:::o;3407:179::-;3476:10;3497:46;3539:3;3531:6;3497:46;:::i;:::-;3575:4;3570:3;3566:14;3552:28;;3487:99;;;;:::o;3592:147::-;3687:45;3726:5;3687:45;:::i;:::-;3682:3;3675:58;3665:74;;:::o;3745:108::-;3822:24;3840:5;3822:24;:::i;:::-;3817:3;3810:37;3800:53;;:::o;3859:118::-;3946:24;3964:5;3946:24;:::i;:::-;3941:3;3934:37;3924:53;;:::o;4013:732::-;4132:3;4161:54;4209:5;4161:54;:::i;:::-;4231:86;4310:6;4305:3;4231:86;:::i;:::-;4224:93;;4341:56;4391:5;4341:56;:::i;:::-;4420:7;4451:1;4436:284;4461:6;4458:1;4455:13;4436:284;;;4537:6;4531:13;4564:63;4623:3;4608:13;4564:63;:::i;:::-;4557:70;;4650:60;4703:6;4650:60;:::i;:::-;4640:70;;4496:224;4483:1;4480;4476:9;4471:14;;4436:284;;;4440:14;4736:3;4729:10;;4137:608;;;;;;;:::o;4751:109::-;4832:21;4847:5;4832:21;:::i;:::-;4827:3;4820:34;4810:50;;:::o;4866:147::-;4961:45;5000:5;4961:45;:::i;:::-;4956:3;4949:58;4939:74;;:::o;5019:364::-;5107:3;5135:39;5168:5;5135:39;:::i;:::-;5190:71;5254:6;5249:3;5190:71;:::i;:::-;5183:78;;5270:52;5315:6;5310:3;5303:4;5296:5;5292:16;5270:52;:::i;:::-;5347:29;5369:6;5347:29;:::i;:::-;5342:3;5338:39;5331:46;;5111:272;;;;;:::o;5389:366::-;5531:3;5552:67;5616:2;5611:3;5552:67;:::i;:::-;5545:74;;5628:93;5717:3;5628:93;:::i;:::-;5746:2;5741:3;5737:12;5730:19;;5535:220;;;:::o;5761:366::-;5903:3;5924:67;5988:2;5983:3;5924:67;:::i;:::-;5917:74;;6000:93;6089:3;6000:93;:::i;:::-;6118:2;6113:3;6109:12;6102:19;;5907:220;;;:::o;6133:366::-;6275:3;6296:67;6360:2;6355:3;6296:67;:::i;:::-;6289:74;;6372:93;6461:3;6372:93;:::i;:::-;6490:2;6485:3;6481:12;6474:19;;6279:220;;;:::o;6505:366::-;6647:3;6668:67;6732:2;6727:3;6668:67;:::i;:::-;6661:74;;6744:93;6833:3;6744:93;:::i;:::-;6862:2;6857:3;6853:12;6846:19;;6651:220;;;:::o;6877:366::-;7019:3;7040:67;7104:2;7099:3;7040:67;:::i;:::-;7033:74;;7116:93;7205:3;7116:93;:::i;:::-;7234:2;7229:3;7225:12;7218:19;;7023:220;;;:::o;7249:366::-;7391:3;7412:67;7476:2;7471:3;7412:67;:::i;:::-;7405:74;;7488:93;7577:3;7488:93;:::i;:::-;7606:2;7601:3;7597:12;7590:19;;7395:220;;;:::o;7621:366::-;7763:3;7784:67;7848:2;7843:3;7784:67;:::i;:::-;7777:74;;7860:93;7949:3;7860:93;:::i;:::-;7978:2;7973:3;7969:12;7962:19;;7767:220;;;:::o;7993:366::-;8135:3;8156:67;8220:2;8215:3;8156:67;:::i;:::-;8149:74;;8232:93;8321:3;8232:93;:::i;:::-;8350:2;8345:3;8341:12;8334:19;;8139:220;;;:::o;8365:366::-;8507:3;8528:67;8592:2;8587:3;8528:67;:::i;:::-;8521:74;;8604:93;8693:3;8604:93;:::i;:::-;8722:2;8717:3;8713:12;8706:19;;8511:220;;;:::o;8737:366::-;8879:3;8900:67;8964:2;8959:3;8900:67;:::i;:::-;8893:74;;8976:93;9065:3;8976:93;:::i;:::-;9094:2;9089:3;9085:12;9078:19;;8883:220;;;:::o;9109:366::-;9251:3;9272:67;9336:2;9331:3;9272:67;:::i;:::-;9265:74;;9348:93;9437:3;9348:93;:::i;:::-;9466:2;9461:3;9457:12;9450:19;;9255:220;;;:::o;9481:366::-;9623:3;9644:67;9708:2;9703:3;9644:67;:::i;:::-;9637:74;;9720:93;9809:3;9720:93;:::i;:::-;9838:2;9833:3;9829:12;9822:19;;9627:220;;;:::o;9853:118::-;9940:24;9958:5;9940:24;:::i;:::-;9935:3;9928:37;9918:53;;:::o;9977:112::-;10060:22;10076:5;10060:22;:::i;:::-;10055:3;10048:35;10038:51;;:::o;10095:222::-;10188:4;10226:2;10215:9;10211:18;10203:26;;10239:71;10307:1;10296:9;10292:17;10283:6;10239:71;:::i;:::-;10193:124;;;;:::o;10323:823::-;10580:4;10618:3;10607:9;10603:19;10595:27;;10632:71;10700:1;10689:9;10685:17;10676:6;10632:71;:::i;:::-;10713:72;10781:2;10770:9;10766:18;10757:6;10713:72;:::i;:::-;10795:80;10871:2;10860:9;10856:18;10847:6;10795:80;:::i;:::-;10885;10961:2;10950:9;10946:18;10937:6;10885:80;:::i;:::-;10975:81;11051:3;11040:9;11036:19;11027:6;10975:81;:::i;:::-;11066:73;11134:3;11123:9;11119:19;11110:6;11066:73;:::i;:::-;10585:561;;;;;;;;;:::o;11152:210::-;11239:4;11277:2;11266:9;11262:18;11254:26;;11290:65;11352:1;11341:9;11337:17;11328:6;11290:65;:::i;:::-;11244:118;;;;:::o;11368:313::-;11481:4;11519:2;11508:9;11504:18;11496:26;;11568:9;11562:4;11558:20;11554:1;11543:9;11539:17;11532:47;11596:78;11669:4;11660:6;11596:78;:::i;:::-;11588:86;;11486:195;;;;:::o;11687:419::-;11853:4;11891:2;11880:9;11876:18;11868:26;;11940:9;11934:4;11930:20;11926:1;11915:9;11911:17;11904:47;11968:131;12094:4;11968:131;:::i;:::-;11960:139;;11858:248;;;:::o;12112:419::-;12278:4;12316:2;12305:9;12301:18;12293:26;;12365:9;12359:4;12355:20;12351:1;12340:9;12336:17;12329:47;12393:131;12519:4;12393:131;:::i;:::-;12385:139;;12283:248;;;:::o;12537:419::-;12703:4;12741:2;12730:9;12726:18;12718:26;;12790:9;12784:4;12780:20;12776:1;12765:9;12761:17;12754:47;12818:131;12944:4;12818:131;:::i;:::-;12810:139;;12708:248;;;:::o;12962:419::-;13128:4;13166:2;13155:9;13151:18;13143:26;;13215:9;13209:4;13205:20;13201:1;13190:9;13186:17;13179:47;13243:131;13369:4;13243:131;:::i;:::-;13235:139;;13133:248;;;:::o;13387:419::-;13553:4;13591:2;13580:9;13576:18;13568:26;;13640:9;13634:4;13630:20;13626:1;13615:9;13611:17;13604:47;13668:131;13794:4;13668:131;:::i;:::-;13660:139;;13558:248;;;:::o;13812:419::-;13978:4;14016:2;14005:9;14001:18;13993:26;;14065:9;14059:4;14055:20;14051:1;14040:9;14036:17;14029:47;14093:131;14219:4;14093:131;:::i;:::-;14085:139;;13983:248;;;:::o;14237:419::-;14403:4;14441:2;14430:9;14426:18;14418:26;;14490:9;14484:4;14480:20;14476:1;14465:9;14461:17;14454:47;14518:131;14644:4;14518:131;:::i;:::-;14510:139;;14408:248;;;:::o;14662:419::-;14828:4;14866:2;14855:9;14851:18;14843:26;;14915:9;14909:4;14905:20;14901:1;14890:9;14886:17;14879:47;14943:131;15069:4;14943:131;:::i;:::-;14935:139;;14833:248;;;:::o;15087:419::-;15253:4;15291:2;15280:9;15276:18;15268:26;;15340:9;15334:4;15330:20;15326:1;15315:9;15311:17;15304:47;15368:131;15494:4;15368:131;:::i;:::-;15360:139;;15258:248;;;:::o;15512:419::-;15678:4;15716:2;15705:9;15701:18;15693:26;;15765:9;15759:4;15755:20;15751:1;15740:9;15736:17;15729:47;15793:131;15919:4;15793:131;:::i;:::-;15785:139;;15683:248;;;:::o;15937:419::-;16103:4;16141:2;16130:9;16126:18;16118:26;;16190:9;16184:4;16180:20;16176:1;16165:9;16161:17;16154:47;16218:131;16344:4;16218:131;:::i;:::-;16210:139;;16108:248;;;:::o;16362:419::-;16528:4;16566:2;16555:9;16551:18;16543:26;;16615:9;16609:4;16605:20;16601:1;16590:9;16586:17;16579:47;16643:131;16769:4;16643:131;:::i;:::-;16635:139;;16533:248;;;:::o;16787:222::-;16880:4;16918:2;16907:9;16903:18;16895:26;;16931:71;16999:1;16988:9;16984:17;16975:6;16931:71;:::i;:::-;16885:124;;;;:::o;17015:831::-;17278:4;17316:3;17305:9;17301:19;17293:27;;17330:71;17398:1;17387:9;17383:17;17374:6;17330:71;:::i;:::-;17411:80;17487:2;17476:9;17472:18;17463:6;17411:80;:::i;:::-;17538:9;17532:4;17528:20;17523:2;17512:9;17508:18;17501:48;17566:108;17669:4;17660:6;17566:108;:::i;:::-;17558:116;;17684:72;17752:2;17741:9;17737:18;17728:6;17684:72;:::i;:::-;17766:73;17834:3;17823:9;17819:19;17810:6;17766:73;:::i;:::-;17283:563;;;;;;;;:::o;17852:214::-;17941:4;17979:2;17968:9;17964:18;17956:26;;17992:67;18056:1;18045:9;18041:17;18032:6;17992:67;:::i;:::-;17946:120;;;;:::o;18072:132::-;18139:4;18162:3;18154:11;;18192:4;18187:3;18183:14;18175:22;;18144:60;;;:::o;18210:114::-;18277:6;18311:5;18305:12;18295:22;;18284:40;;;:::o;18330:99::-;18382:6;18416:5;18410:12;18400:22;;18389:40;;;:::o;18435:113::-;18505:4;18537;18532:3;18528:14;18520:22;;18510:38;;;:::o;18554:184::-;18653:11;18687:6;18682:3;18675:19;18727:4;18722:3;18718:14;18703:29;;18665:73;;;;:::o;18744:169::-;18828:11;18862:6;18857:3;18850:19;18902:4;18897:3;18893:14;18878:29;;18840:73;;;;:::o;18919:305::-;18959:3;18978:20;18996:1;18978:20;:::i;:::-;18973:25;;19012:20;19030:1;19012:20;:::i;:::-;19007:25;;19166:1;19098:66;19094:74;19091:1;19088:81;19085:2;;;19172:18;;:::i;:::-;19085:2;19216:1;19213;19209:9;19202:16;;18963:261;;;;:::o;19230:185::-;19270:1;19287:20;19305:1;19287:20;:::i;:::-;19282:25;;19321:20;19339:1;19321:20;:::i;:::-;19316:25;;19360:1;19350:2;;19365:18;;:::i;:::-;19350:2;19407:1;19404;19400:9;19395:14;;19272:143;;;;:::o;19421:348::-;19461:7;19484:20;19502:1;19484:20;:::i;:::-;19479:25;;19518:20;19536:1;19518:20;:::i;:::-;19513:25;;19706:1;19638:66;19634:74;19631:1;19628:81;19623:1;19616:9;19609:17;19605:105;19602:2;;;19713:18;;:::i;:::-;19602:2;19761:1;19758;19754:9;19743:20;;19469:300;;;;:::o;19775:191::-;19815:4;19835:20;19853:1;19835:20;:::i;:::-;19830:25;;19869:20;19887:1;19869:20;:::i;:::-;19864:25;;19908:1;19905;19902:8;19899:2;;;19913:18;;:::i;:::-;19899:2;19958:1;19955;19951:9;19943:17;;19820:146;;;;:::o;19972:96::-;20009:7;20038:24;20056:5;20038:24;:::i;:::-;20027:35;;20017:51;;;:::o;20074:90::-;20108:7;20151:5;20144:13;20137:21;20126:32;;20116:48;;;:::o;20170:126::-;20207:7;20247:42;20240:5;20236:54;20225:65;;20215:81;;;:::o;20302:77::-;20339:7;20368:5;20357:16;;20347:32;;;:::o;20385:86::-;20420:7;20460:4;20453:5;20449:16;20438:27;;20428:43;;;:::o;20477:134::-;20535:9;20568:37;20599:5;20568:37;:::i;:::-;20555:50;;20545:66;;;:::o;20617:121::-;20675:9;20708:24;20726:5;20708:24;:::i;:::-;20695:37;;20685:53;;;:::o;20744:126::-;20794:9;20827:37;20858:5;20827:37;:::i;:::-;20814:50;;20804:66;;;:::o;20876:113::-;20926:9;20959:24;20977:5;20959:24;:::i;:::-;20946:37;;20936:53;;;:::o;20995:307::-;21063:1;21073:113;21087:6;21084:1;21081:13;21073:113;;;21172:1;21167:3;21163:11;21157:18;21153:1;21148:3;21144:11;21137:39;21109:2;21106:1;21102:10;21097:15;;21073:113;;;21204:6;21201:1;21198:13;21195:2;;;21284:1;21275:6;21270:3;21266:16;21259:27;21195:2;21044:258;;;;:::o;21308:180::-;21356:77;21353:1;21346:88;21453:4;21450:1;21443:15;21477:4;21474:1;21467:15;21494:180;21542:77;21539:1;21532:88;21639:4;21636:1;21629:15;21663:4;21660:1;21653:15;21680:102;21721:6;21772:2;21768:7;21763:2;21756:5;21752:14;21748:28;21738:38;;21728:54;;;:::o;21788:222::-;21928:34;21924:1;21916:6;21912:14;21905:58;21997:5;21992:2;21984:6;21980:15;21973:30;21894:116;:::o;22016:225::-;22156:34;22152:1;22144:6;22140:14;22133:58;22225:8;22220:2;22212:6;22208:15;22201:33;22122:119;:::o;22247:221::-;22387:34;22383:1;22375:6;22371:14;22364:58;22456:4;22451:2;22443:6;22439:15;22432:29;22353:115;:::o;22474:177::-;22614:29;22610:1;22602:6;22598:14;22591:53;22580:71;:::o;22657:289::-;22797:34;22793:1;22785:6;22781:14;22774:58;22866:34;22861:2;22853:6;22849:15;22842:59;22935:3;22930:2;22922:6;22918:15;22911:28;22763:183;:::o;22952:229::-;23092:34;23088:1;23080:6;23076:14;23069:58;23161:12;23156:2;23148:6;23144:15;23137:37;23058:123;:::o;23187:220::-;23327:34;23323:1;23315:6;23311:14;23304:58;23396:3;23391:2;23383:6;23379:15;23372:28;23293:114;:::o;23413:182::-;23553:34;23549:1;23541:6;23537:14;23530:58;23519:76;:::o;23601:228::-;23741:34;23737:1;23729:6;23725:14;23718:58;23810:11;23805:2;23797:6;23793:15;23786:36;23707:122;:::o;23835:224::-;23975:34;23971:1;23963:6;23959:14;23952:58;24044:7;24039:2;24031:6;24027:15;24020:32;23941:118;:::o;24065:179::-;24205:31;24201:1;24193:6;24189:14;24182:55;24171:73;:::o;24250:223::-;24390:34;24386:1;24378:6;24374:14;24367:58;24459:6;24454:2;24446:6;24442:15;24435:31;24356:117;:::o;24479:122::-;24552:24;24570:5;24552:24;:::i;:::-;24545:5;24542:35;24532:2;;24591:1;24588;24581:12;24532:2;24522:79;:::o;24607:122::-;24680:24;24698:5;24680:24;:::i;:::-;24673:5;24670:35;24660:2;;24719:1;24716;24709:12;24660:2;24650:79;:::o

Swarm Source

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