ETH Price: $3,163.42 (-8.27%)
Gas: 3 Gwei

Token

KIBACULT (KIBACULT)
 

Overview

Max Total Supply

1,000,000,000,000 KIBACULT

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,800,000,000 KIBACULT

Value
$0.00
0xa01257a31a8b54d469e2646e0f94adab60292122
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KIBACULT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// TG: https://t.me/kibacult, SLIPPAGE 14-17%

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

abstract contract Context {

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

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

interface IERC20 {

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

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

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

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

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


contract KIBACULT is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;

    uint256 private _totalSupply = 100 * 10**10 * 10**9; // supply : 1,000,000,000,000 
    uint256 public _maxbuy = 2 * 10**10 * 10**9; // maxtransaction 2% 
    uint256 public _maxwallet = 2 * 10**10 * 10**9; //maxwallet 2% 
    uint256 private minimumTokensBeforeSwap = 1000 * 10**9;  

    uint256 public _totaltax = 0;
    uint256 public _cooldown = 0;
    uint256 public _antidump = 0;  
    address payable public marketingWallet = payable(0x15754b3b85010F8b131D4d69a6743aE259be24D2); 
    address payable public rewardsWallet = payable(0x1b712966625BACC3D108FC9E15e21D09e4BD2ecE); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;

    string private _name = "KIBACULT";
    string private _symbol = "KIBACULT";
    uint8 private _decimals = 9;

    uint256 public _autoliquidity = 2;
    uint256 public _marketing = 6;
    uint256 public _developer = 4;     


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isBlacklisted;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totaltax = _autoliquidity.add(_marketing).add(_developer);
        _cooldown = _totaltax.add(_antidump);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapV2Pair)] = true;

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

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    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 blacklistAddress(address account, bool newValue) public onlyOwner {
        isBlacklisted[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newRewardsTax, uint256 newExtraFeeOnSell) external onlyOwner() {
        _autoliquidity = newLiquidityTax;
        _marketing = newMarketingTax;
        _developer = newRewardsTax;
        _antidump = newExtraFeeOnSell;

        _totaltax = _autoliquidity.add(_marketing).add(_developer);
        _cooldown = _totaltax.add(_antidump);
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxbuy = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _maxwallet  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWallet(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setRewardsWallet(address newAddress) external onlyOwner() {
        rewardsWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

        uniswapV2Pair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!isBlacklisted[sender] && !isBlacklisted[recipient], "To/from address is blacklisted!");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(sender != owner() && recipient != owner()) {
                require(amount <= _maxbuy, "Transfer amount exceeds the maxTxAmount.");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _maxwallet);

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

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
       
        uint256 tokensForLP = tAmount.div(_totaltax).mul(_autoliquidity).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = _totaltax.sub(_autoliquidity.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_autoliquidity).div(totalETHFee).div(2);
        uint256 amountETHRewards = amountReceived.mul(_developer).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHRewards);

        transferToAddressETH(marketingWallet, amountETHMarketing);
        transferToAddressETH(rewardsWallet, amountETHRewards);
        addLiquidity(tokensForLP, amountETHLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(_cooldown).div(100) 
                                : amount.mul(_totaltax).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_antidump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoliquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxwallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totaltax","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setRewardsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newRewardsTax","type":"uint256"},{"internalType":"uint256","name":"newExtraFeeOnSell","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052683635c9adc5dea000006003556801158e460913d000006004556801158e460913d0000060055564e8d4a510006006556000600755600060085560006009557315754b3b85010f8b131d4d69a6743ae259be24d2600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731b712966625bacc3d108fc9e15e21d09e4bd2ece600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506040518060400160405280600881526020017f4b49424143554c54000000000000000000000000000000000000000000000000815250600c9080519060200190620001729291906200093b565b506040518060400160405280600881526020017f4b49424143554c54000000000000000000000000000000000000000000000000815250600d9080519060200190620001c09291906200093b565b506009600e60006101000a81548160ff021916908360ff1602179055506002600f55600660105560046011556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200024a57600080fd5b5060006200025d620008a760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035b57600080fd5b505afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000a02565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f957600080fd5b505afa1580156200040e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000434919062000a02565b6040518363ffffffff1660e01b81526004016200045392919062000a7d565b602060405180830381600087803b1580156200046e57600080fd5b505af115801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a9919062000a02565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160146000620005e5620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c7601154620006b3601054600f54620008d860201b620027d21790919060201c565b620008d860201b620027d21790919060201c565b600781905550620006eb600954600754620008d860201b620027d21790919060201c565b60088190555060016015600062000707620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060035460126000620007e9620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000837620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000898919062000acc565b60405180910390a35062000c71565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008e9919062000afa565b90508381101562000931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009289062000aaa565b60405180910390fd5b8091505092915050565b828054620009499062000b95565b90600052602060002090601f0160209004810192826200096d5760008555620009b9565b82601f106200098857805160ff1916838001178555620009b9565b82800160010185558215620009b9579182015b82811115620009b85782518255916020019190600101906200099b565b5b509050620009c89190620009cc565b5090565b5b80821115620009e7576000816000905550600101620009cd565b5090565b600081519050620009fc8162000c57565b92915050565b60006020828403121562000a1b5762000a1a62000c29565b5b600062000a2b84828501620009eb565b91505092915050565b62000a3f8162000b57565b82525050565b600062000a54601b8362000ae9565b915062000a618262000c2e565b602082019050919050565b62000a778162000b8b565b82525050565b600060408201905062000a94600083018562000a34565b62000aa3602083018462000a34565b9392505050565b6000602082019050818103600083015262000ac58162000a45565b9050919050565b600060208201905062000ae3600083018462000a6c565b92915050565b600082825260208201905092915050565b600062000b078262000b8b565b915062000b148362000b8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4c5762000b4b62000bcb565b5b828201905092915050565b600062000b648262000b6b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000bae57607f821691505b6020821081141562000bc55762000bc462000bfa565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c628162000b57565b811462000c6e57600080fd5b50565b60805160601c614ce762000c9760003960008181610fb70152610fe30152614ce76000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063aa660bea116100dc578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063dd62ed3e14610b04578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063aa660bea146109f4578063bfbeba0d14610a1f578063c49b9a8014610a4a578063c867d60b14610a73578063da00097d14610ab0578063dd46706414610adb5761030a565b8063a073d37f11610149578063a457c2d711610123578063a457c2d71461093a578063a5d69d1f14610977578063a69df4b5146109a0578063a9059cbb146109b75761030a565b8063a073d37f146108bd578063a12a7d61146108e8578063a1980430146109115761030a565b8063715018a6146107cf57806375f0a874146107e65780637a9d0758146108115780638da5cb5b1461083c57806392a40c341461086757806395d89b41146108925761030a565b806339b09d4a1161024f578063557ed1ba116102085780635d098b38116101e25780635d098b3814610713578063602bc62b1461073c57806362940cc41461076757806370a08231146107925761030a565b8063557ed1ba146106805780635881f3ef146106ab5780635b35f9c9146106e85761030a565b806339b09d4a146105705780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780635342acb4146106435761030a565b80632198cf6c116102bc57806327c8f8351161029657806327c8f835146104b25780632b112e49146104dd578063313ce5671461050857806339509351146105335761030a565b80632198cf6c1461042357806323b872dd1461044c5780632563ae83146104895761030a565b806306fdde031461030f578063095ea7b31461033a57806309e72cf614610377578063158ece13146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190614475565b60405180910390f35b3480156103ae57600080fd5b506103b7610d03565b6040516103c49190614475565b60405180910390f35b3480156103d957600080fd5b506103e2610d09565b6040516103ef9190614298565b60405180910390f35b34801561040457600080fd5b5061040d610d2f565b60405161041a9190614475565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613d3b565b610d39565b005b34801561045857600080fd5b50610473600480360381019061046e9190613ce8565b610e29565b604051610480919061427d565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613dbb565b610f03565b005b3480156104be57600080fd5b506104c7610fb5565b6040516104d491906141bd565b60405180910390f35b3480156104e957600080fd5b506104f2610fd9565b6040516104ff9190614475565b60405180910390f35b34801561051457600080fd5b5061051d61101d565b60405161052a919061451a565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190613d7b565b611034565b604051610567919061427d565b60405180910390f35b34801561057c57600080fd5b506105856110e7565b6040516105929190614475565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613de8565b6110ed565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613d3b565b61118c565b005b3480156105f957600080fd5b5061060261127c565b60405161060f91906141bd565b60405180910390f35b34801561062457600080fd5b5061062d6112a2565b60405161063a919061427d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613c4e565b6112b5565b604051610677919061427d565b60405180910390f35b34801561068c57600080fd5b506106956112d5565b6040516106a29190614475565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613c4e565b6112dd565b6040516106df91906141bd565b60405180910390f35b3480156106f457600080fd5b506106fd611747565b60405161070a91906141d8565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613c4e565b61176d565b005b34801561074857600080fd5b50610751611846565b60405161075e9190614475565b60405180910390f35b34801561077357600080fd5b5061077c611850565b6040516107899190614475565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613c4e565b611856565b6040516107c69190614475565b60405180910390f35b3480156107db57600080fd5b506107e461189f565b005b3480156107f257600080fd5b506107fb6119f2565b60405161080891906141d8565b60405180910390f35b34801561081d57600080fd5b50610826611a18565b6040516108339190614475565b60405180910390f35b34801561084857600080fd5b50610851611a1e565b60405161085e91906141bd565b60405180910390f35b34801561087357600080fd5b5061087c611a47565b6040516108899190614475565b60405180910390f35b34801561089e57600080fd5b506108a7611a4d565b6040516108b491906142b3565b60405180910390f35b3480156108c957600080fd5b506108d2611adf565b6040516108df9190614475565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190613e68565b611ae9565b005b34801561091d57600080fd5b5061093860048036038101906109339190613c4e565b611bee565b005b34801561094657600080fd5b50610961600480360381019061095c9190613d7b565b611cc7565b60405161096e919061427d565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190613dbb565b611d94565b005b3480156109ac57600080fd5b506109b5611e46565b005b3480156109c357600080fd5b506109de60048036038101906109d99190613d7b565b61201a565b6040516109eb919061427d565b60405180910390f35b348015610a0057600080fd5b50610a09612039565b604051610a169190614475565b60405180910390f35b348015610a2b57600080fd5b50610a3461203f565b604051610a419190614475565b60405180910390f35b348015610a5657600080fd5b50610a716004803603810190610a6c9190613dbb565b612045565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190613c4e565b61212e565b604051610aa7919061427d565b60405180910390f35b348015610abc57600080fd5b50610ac561214e565b604051610ad2919061427d565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190613de8565b612161565b005b348015610b1057600080fd5b50610b2b6004803603810190610b269190613ca8565b612328565b604051610b389190614475565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190613de8565b6123af565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613d3b565b61244e565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613de8565b61253e565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613c4e565b6125dd565b005b348015610bf157600080fd5b50610bfa61279f565b604051610c07919061427d565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613c4e565b6127b2565b604051610c44919061427d565b60405180910390f35b6060600c8054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b60055481565b60095481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d41612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906143b5565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e36848484612a03565b50610ef884610e43612830565b610ef385604051806060016040528060288152602001614c6560289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea9612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b610f0b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110186110077f0000000000000000000000000000000000000000000000000000000000000000611856565b60035461314890919063ffffffff16565b905090565b6000600e60009054906101000a900460ff16905090565b60006110dd611041612830565b846110d88560136000611052612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b60085481565b6110f5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906143b5565b60405180910390fd5b8060068190555050565b611194612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906143b5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006112e7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bf57600080fd5b505afa1580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f79190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561145957600080fd5b505afa15801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190613c7b565b6040518363ffffffff1660e01b81526004016114ae9291906141f3565b60206040518083038186803b1580156114c657600080fd5b505afa1580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe9190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bf578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561157b57600080fd5b505afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561161557600080fd5b505afa158015611629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164d9190613c7b565b6040518363ffffffff1660e01b815260040161166a9291906141f3565b602060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611775612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906143b5565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b60105481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6060600d8054611a5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8890614781565b8015611ad55780601f10611aaa57610100808354040283529160200191611ad5565b820191906000526020600020905b815481529060010190602001808311611ab857829003601f168201915b5050505050905090565b6000600654905090565b611af1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906143b5565b60405180910390fd5b83600f81905550826010819055508160118190555080600981905550611bc5601154611bb7601054600f546127d290919063ffffffff16565b6127d290919063ffffffff16565b600781905550611be26009546007546127d290919063ffffffff16565b60088190555050505050565b611bf6612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a906143b5565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d8a611cd4612830565b84611d8585604051806060016040528060258152602001614c8d6025913960136000611cfe612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611d9c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e20906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90614455565b60405180910390fd5b6002544211611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061202e612027612830565b8484612a03565b506001905092915050565b60075481565b600f5481565b61204d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612123919061427d565b60405180910390a150565b60156020528060005260406000206000915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b612169612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122a4919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123b7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b906143b5565b60405180910390fd5b8060048190555050565b612456612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906143b5565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612546612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906143b5565b60405180910390fd5b8060058190555050565b6125e5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612669906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611a1e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611a1e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257600454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd30611856565b905060006006548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760065491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57600554612fcf82612fc189611856565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600f546133a2600754876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600f546136f390919063ffffffff16565b60075461314890919063ffffffff16565b9050600061344f600261344184613433600f548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6011548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6007548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6008548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b07611a1e565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017bc661e031c867a6d284831013c2122058c461239bce6a74286c83cda49750364736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063715018a611610190578063aa660bea116100dc578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063dd62ed3e14610b04578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063aa660bea146109f4578063bfbeba0d14610a1f578063c49b9a8014610a4a578063c867d60b14610a73578063da00097d14610ab0578063dd46706414610adb5761030a565b8063a073d37f11610149578063a457c2d711610123578063a457c2d71461093a578063a5d69d1f14610977578063a69df4b5146109a0578063a9059cbb146109b75761030a565b8063a073d37f146108bd578063a12a7d61146108e8578063a1980430146109115761030a565b8063715018a6146107cf57806375f0a874146107e65780637a9d0758146108115780638da5cb5b1461083c57806392a40c341461086757806395d89b41146108925761030a565b806339b09d4a1161024f578063557ed1ba116102085780635d098b38116101e25780635d098b3814610713578063602bc62b1461073c57806362940cc41461076757806370a08231146107925761030a565b8063557ed1ba146106805780635881f3ef146106ab5780635b35f9c9146106e85761030a565b806339b09d4a146105705780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780635342acb4146106435761030a565b80632198cf6c116102bc57806327c8f8351161029657806327c8f835146104b25780632b112e49146104dd578063313ce5671461050857806339509351146105335761030a565b80632198cf6c1461042357806323b872dd1461044c5780632563ae83146104895761030a565b806306fdde031461030f578063095ea7b31461033a57806309e72cf614610377578063158ece13146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190614475565b60405180910390f35b3480156103ae57600080fd5b506103b7610d03565b6040516103c49190614475565b60405180910390f35b3480156103d957600080fd5b506103e2610d09565b6040516103ef9190614298565b60405180910390f35b34801561040457600080fd5b5061040d610d2f565b60405161041a9190614475565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613d3b565b610d39565b005b34801561045857600080fd5b50610473600480360381019061046e9190613ce8565b610e29565b604051610480919061427d565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613dbb565b610f03565b005b3480156104be57600080fd5b506104c7610fb5565b6040516104d491906141bd565b60405180910390f35b3480156104e957600080fd5b506104f2610fd9565b6040516104ff9190614475565b60405180910390f35b34801561051457600080fd5b5061051d61101d565b60405161052a919061451a565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190613d7b565b611034565b604051610567919061427d565b60405180910390f35b34801561057c57600080fd5b506105856110e7565b6040516105929190614475565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613de8565b6110ed565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613d3b565b61118c565b005b3480156105f957600080fd5b5061060261127c565b60405161060f91906141bd565b60405180910390f35b34801561062457600080fd5b5061062d6112a2565b60405161063a919061427d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613c4e565b6112b5565b604051610677919061427d565b60405180910390f35b34801561068c57600080fd5b506106956112d5565b6040516106a29190614475565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613c4e565b6112dd565b6040516106df91906141bd565b60405180910390f35b3480156106f457600080fd5b506106fd611747565b60405161070a91906141d8565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613c4e565b61176d565b005b34801561074857600080fd5b50610751611846565b60405161075e9190614475565b60405180910390f35b34801561077357600080fd5b5061077c611850565b6040516107899190614475565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613c4e565b611856565b6040516107c69190614475565b60405180910390f35b3480156107db57600080fd5b506107e461189f565b005b3480156107f257600080fd5b506107fb6119f2565b60405161080891906141d8565b60405180910390f35b34801561081d57600080fd5b50610826611a18565b6040516108339190614475565b60405180910390f35b34801561084857600080fd5b50610851611a1e565b60405161085e91906141bd565b60405180910390f35b34801561087357600080fd5b5061087c611a47565b6040516108899190614475565b60405180910390f35b34801561089e57600080fd5b506108a7611a4d565b6040516108b491906142b3565b60405180910390f35b3480156108c957600080fd5b506108d2611adf565b6040516108df9190614475565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190613e68565b611ae9565b005b34801561091d57600080fd5b5061093860048036038101906109339190613c4e565b611bee565b005b34801561094657600080fd5b50610961600480360381019061095c9190613d7b565b611cc7565b60405161096e919061427d565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190613dbb565b611d94565b005b3480156109ac57600080fd5b506109b5611e46565b005b3480156109c357600080fd5b506109de60048036038101906109d99190613d7b565b61201a565b6040516109eb919061427d565b60405180910390f35b348015610a0057600080fd5b50610a09612039565b604051610a169190614475565b60405180910390f35b348015610a2b57600080fd5b50610a3461203f565b604051610a419190614475565b60405180910390f35b348015610a5657600080fd5b50610a716004803603810190610a6c9190613dbb565b612045565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190613c4e565b61212e565b604051610aa7919061427d565b60405180910390f35b348015610abc57600080fd5b50610ac561214e565b604051610ad2919061427d565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190613de8565b612161565b005b348015610b1057600080fd5b50610b2b6004803603810190610b269190613ca8565b612328565b604051610b389190614475565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190613de8565b6123af565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613d3b565b61244e565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613de8565b61253e565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613c4e565b6125dd565b005b348015610bf157600080fd5b50610bfa61279f565b604051610c07919061427d565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613c4e565b6127b2565b604051610c44919061427d565b60405180910390f35b6060600c8054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b60055481565b60095481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d41612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906143b5565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e36848484612a03565b50610ef884610e43612830565b610ef385604051806060016040528060288152602001614c6560289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea9612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b610f0b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006110186110077f000000000000000000000000000000000000000000000000000000000000dead611856565b60035461314890919063ffffffff16565b905090565b6000600e60009054906101000a900460ff16905090565b60006110dd611041612830565b846110d88560136000611052612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b60085481565b6110f5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906143b5565b60405180910390fd5b8060068190555050565b611194612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906143b5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006112e7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bf57600080fd5b505afa1580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f79190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561145957600080fd5b505afa15801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190613c7b565b6040518363ffffffff1660e01b81526004016114ae9291906141f3565b60206040518083038186803b1580156114c657600080fd5b505afa1580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe9190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bf578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561157b57600080fd5b505afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561161557600080fd5b505afa158015611629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164d9190613c7b565b6040518363ffffffff1660e01b815260040161166a9291906141f3565b602060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611775612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906143b5565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b60105481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6060600d8054611a5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8890614781565b8015611ad55780601f10611aaa57610100808354040283529160200191611ad5565b820191906000526020600020905b815481529060010190602001808311611ab857829003601f168201915b5050505050905090565b6000600654905090565b611af1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906143b5565b60405180910390fd5b83600f81905550826010819055508160118190555080600981905550611bc5601154611bb7601054600f546127d290919063ffffffff16565b6127d290919063ffffffff16565b600781905550611be26009546007546127d290919063ffffffff16565b60088190555050505050565b611bf6612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a906143b5565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d8a611cd4612830565b84611d8585604051806060016040528060258152602001614c8d6025913960136000611cfe612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611d9c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e20906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90614455565b60405180910390fd5b6002544211611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061202e612027612830565b8484612a03565b506001905092915050565b60075481565b600f5481565b61204d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612123919061427d565b60405180910390a150565b60156020528060005260406000206000915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b612169612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122a4919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123b7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b906143b5565b60405180910390fd5b8060048190555050565b612456612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906143b5565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612546612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906143b5565b60405180910390fd5b8060058190555050565b6125e5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612669906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611a1e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611a1e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257600454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd30611856565b905060006006548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760065491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57600554612fcf82612fc189611856565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600f546133a2600754876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600f546136f390919063ffffffff16565b60075461314890919063ffffffff16565b9050600061344f600261344184613433600f548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6011548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6007548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6008548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b07611a1e565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017bc661e031c867a6d284831013c2122058c461239bce6a74286c83cda49750364736f6c63430008070033

Deployed Bytecode Sourcemap

15080:13027:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18054:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19354:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15367:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15571:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16427:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18331:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20813:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23023:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20692:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15806:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21776:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18240:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18723:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15536:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21066:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19868:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16475:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16544:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16256:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6586:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22050:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15708:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21198:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6484:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16054:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18439:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6076:148;;;;;;;;;;;;;:::i;:::-;;15608:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16090:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5851:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15295:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18145:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19226:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20146:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21331:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18949:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21639:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6922:305;;;;;;;;;;;;;:::i;:::-;;22848:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15501:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16014:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21460:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16313:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16591:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6684:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18572:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20578:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20003:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20956:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6232:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16643:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16372:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18054:83;18091:13;18124:5;18117:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18054:83;:::o;19354:161::-;19429:4;19446:39;19455:12;:10;:12::i;:::-;19469:7;19478:6;19446:8;:39::i;:::-;19503:4;19496:11;;19354:161;;;;:::o;15367:46::-;;;;:::o;15571:28::-;;;;:::o;16427:41::-;;;;;;;;;;;;;:::o;18331:100::-;18384:7;18411:12;;18404:19;;18331:100;:::o;20813:135::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20934:6:::1;20904:19;:27;20924:6;20904:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20813:135:::0;;:::o;23023:313::-;23121:4;23138:36;23148:6;23156:9;23167:6;23138:9;:36::i;:::-;;23185:121;23194:6;23202:12;:10;:12::i;:::-;23216:89;23254:6;23216:89;;;;;;;;;;;;;;;;;:11;:19;23228:6;23216:19;;;;;;;;;;;;;;;:33;23236:12;:10;:12::i;:::-;23216:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23185:8;:121::i;:::-;23324:4;23317:11;;23023:313;;;;;:::o;20692:113::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20789:8:::1;20770:16;;:27;;;;;;;;;;;;;;;;;;20692:113:::0;:::o;15806:81::-;;;:::o;21776:128::-;21829:7;21856:40;21873:22;21883:11;21873:9;:22::i;:::-;21856:12;;:16;;:40;;;;:::i;:::-;21849:47;;21776:128;:::o;18240:83::-;18281:5;18306:9;;;;;;;;;;;18299:16;;18240:83;:::o;18723:218::-;18811:4;18828:83;18837:12;:10;:12::i;:::-;18851:7;18860:50;18899:10;18860:11;:25;18872:12;:10;:12::i;:::-;18860:25;;;;;;;;;;;;;;;:34;18886:7;18860:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18828:8;:83::i;:::-;18929:4;18922:11;;18723:218;;;;:::o;15536:28::-;;;;:::o;21066:124::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21174:8:::1;21148:23;:34;;;;21066:124:::0;:::o;19868:127::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19979:8:::1;19954:13;:22;19968:7;19954:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19868:127:::0;;:::o;16475:28::-;;;;;;;;;;;;;:::o;16544:40::-;;;;;;;;;;;;;:::o;16256:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6586:90::-;6626:7;6653:15;6646:22;;6586:90;:::o;22050:696::-;22130:22;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22167:35:::1;22224:16;22167:74;;22290:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22272:53;;;22334:4;22341:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22272:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22255:110;;22407:1;22381:28;;:14;:28;;;22378:225;;;22495:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22477:74;;;22560:4;22567:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22477:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22460:131;;22378:225;22631:14;22615:13;;:30;;;;;;;;;;;;;;;;;;22697:16;22679:15;;:34;;;;;;;;;;;;;;;;;;22154:592;22050:696:::0;;;:::o;15708:90::-;;;;;;;;;;;;;:::o;21198:125::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21304:10:::1;21278:15;;:37;;;;;;;;;;;;;;;;;;21198:125:::0;:::o;6484:90::-;6530:7;6557:9;;6550:16;;6484:90;:::o;16054:29::-;;;;:::o;18439:119::-;18505:7;18532:9;:18;18542:7;18532:18;;;;;;;;;;;;;;;;18525:25;;18439:119;;;:::o;6076:148::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:1:::1;6146:40;;6167:6;::::0;::::1;;;;;;;;6146:40;;;;;;;;;;;;6214:1;6197:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6076:148::o:0;15608:92::-;;;;;;;;;;;;;:::o;16090:29::-;;;;:::o;5851:79::-;5889:7;5916:6;;;;;;;;;;;5909:13;;5851:79;:::o;15295:43::-;;;;:::o;18145:87::-;18184:13;18217:7;18210:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18145:87;:::o;19226:120::-;19288:7;19315:23;;19308:30;;19226:120;:::o;20146:424::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20313:15:::1;20296:14;:32;;;;20352:15;20339:10;:28;;;;20391:13;20378:10;:26;;;;20427:17;20415:9;:29;;;;20469:46;20504:10;;20469:30;20488:10;;20469:14;;:18;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;20457:9;:58;;;;20538:24;20552:9;;20538;;:13;;:24;;;;:::i;:::-;20526:9;:36;;;;20146:424:::0;;;;:::o;21331:121::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21433:10:::1;21409:13;;:35;;;;;;;;;;;;;;;;;;21331:121:::0;:::o;18949:269::-;19042:4;19059:129;19068:12;:10;:12::i;:::-;19082:7;19091:96;19130:15;19091:96;;;;;;;;;;;;;;;;;:11;:25;19103:12;:10;:12::i;:::-;19091:25;;;;;;;;;;;;;;;:34;19117:7;19091:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19059:8;:129::i;:::-;19206:4;19199:11;;18949:269;;;;:::o;21639:125::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21748:8:::1;21720:25;;:36;;;;;;;;;;;;;;;;;;21639:125:::0;:::o;6922:305::-;6992:10;6974:28;;:14;;;;;;;;;;;:28;;;6966:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7079:9;;7061:15;:27;7053:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7170:14;;;;;;;;;;;7141:44;;7162:6;;;;;;;;;;7141:44;;;;;;;;;;;;7205:14;;;;;;;;;;;7196:6;;:23;;;;;;;;;;;;;;;;;;6922:305::o;22848:167::-;22926:4;22943:42;22953:12;:10;:12::i;:::-;22967:9;22978:6;22943:9;:42::i;:::-;;23003:4;22996:11;;22848:167;;;;:::o;15501:28::-;;;;:::o;16014:33::-;;;;:::o;21460:171::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21561:8:::1;21537:21;;:32;;;;;;;;;;;;;;;;;;21585:38;21614:8;21585:38;;;;;;:::i;:::-;;;;;;;;21460:171:::0;:::o;16313:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16591:45::-;;;;;;;;;;;;;:::o;6684:226::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6765:6:::1;::::0;::::1;;;;;;;;6748:14;;:23;;;;;;;;;;;;;;;;;;6799:1;6782:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6842:4;6824:15;:22;;;;:::i;:::-;6812:9;:34;;;;6899:1;6862:40;;6883:6;::::0;::::1;;;;;;;;6862:40;;;;;;;;;;;;6684:226:::0;:::o;18572:143::-;18653:7;18680:11;:18;18692:5;18680:18;;;;;;;;;;;;;;;:27;18699:7;18680:27;;;;;;;;;;;;;;;;18673:34;;18572:143;;;;:::o;20578:106::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20665:11:::1;20655:7;:21;;;;20578:106:::0;:::o;20003:135::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20122:8:::1;20093:17;:26;20111:7;20093:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20003:135:::0;;:::o;20956:102::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21042:8:::1;21028:10;:22;;;;20956:102:::0;:::o;6232:244::-;5995:12;:10;:12::i;:::-;5985:22;;:6;;;;;;;;;;:22;;;5977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6341:1:::1;6321:22;;:8;:22;;;;6313:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6431:8;6402:38;;6423:6;::::0;::::1;;;;;;;;6402:38;;;;;;;;;;;;6460:8;6451:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6232:244:::0;:::o;16643:35::-;;;;;;;;;;;;;:::o;16372:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;1221:181::-;1279:7;1299:9;1315:1;1311;:5;;;;:::i;:::-;1299:17;;1340:1;1335;:6;;1327:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1393:1;1386:8;;;1221:181;;;;:::o;153:115::-;206:15;249:10;234:26;;153:115;:::o;19523:337::-;19633:1;19616:19;;:5;:19;;;;19608:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19714:1;19695:21;;:7;:21;;;;19687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19798:6;19768:11;:18;19780:5;19768:18;;;;;;;;;;;;;;;:27;19787:7;19768:27;;;;;;;;;;;;;;;:36;;;;19836:7;19820:32;;19829:5;19820:32;;;19845:6;19820:32;;;;;;:::i;:::-;;;;;;;;19523:337;;;:::o;23344:1879::-;23431:4;23476:1;23458:20;;:6;:20;;;;23450:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23560:1;23539:23;;:9;:23;;;;23531:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23622:13;:21;23636:6;23622:21;;;;;;;;;;;;;;;;;;;;;;;;;23621:22;:51;;;;;23648:13;:24;23662:9;23648:24;;;;;;;;;;;;;;;;;;;;;;;;;23647:25;23621:51;23613:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;23736:1;23727:6;:10;23719:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23807:16;;;;;;;;;;;23804:1412;;;23857:41;23872:6;23880:9;23891:6;23857:14;:41::i;:::-;23850:48;;;;23804:1412;23963:7;:5;:7::i;:::-;23953:17;;:6;:17;;;;:41;;;;;23987:7;:5;:7::i;:::-;23974:20;;:9;:20;;;;23953:41;23950:151;;;24033:7;;24023:6;:17;;24015:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23950:151;24129:28;24160:24;24178:4;24160:9;:24::i;:::-;24129:55;;24199:28;24254:23;;24230:20;:47;;24199:78;;24310:23;:44;;;;;24338:16;;;;;;;;;;;24337:17;24310:44;:71;;;;;24368:13;;;;;;;;;;;24358:23;;:6;:23;;;;24310:71;:96;;;;;24385:21;;;;;;;;;;;24310:96;24306:307;;;24444:25;;;;;;;;;;;24441:97;;;24515:23;;24492:46;;24441:97;24557:36;24572:20;24557:14;:36::i;:::-;24306:307;24649:53;24671:6;24649:53;;;;;;;;;;;;;;;;;:9;:17;24659:6;24649:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24629:9;:17;24639:6;24629:17;;;;;;;;;;;;;;;:73;;;;24719:19;24742:17;:25;24760:6;24742:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24771:17;:28;24789:9;24771:28;;;;;;;;;;;;;;;;;;;;;;;;;24742:57;24741:148;;24855:34;24863:6;24871:9;24882:6;24855:7;:34::i;:::-;24741:148;;;24846:6;24741:148;24719:170;;24909:16;;;;;;;;;;;:51;;;;;24930:19;:30;24950:9;24930:30;;;;;;;;;;;;;;;;;;;;;;;;;24929:31;24909:51;24906:133;;;25028:10;;24987:37;25012:11;24987:20;24997:9;24987;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24979:60;;;;;;24906:133;25079:37;25104:11;25079:9;:20;25089:9;25079:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25056:9;:20;25066:9;25056:20;;;;;;;;;;;;;;;:60;;;;25155:9;25138:40;;25147:6;25138:40;;;25166:11;25138:40;;;;;;:::i;:::-;;;;;;;;25200:4;25193:11;;;;;23344:1879;;;;;;:::o;1554:192::-;1640:7;1673:1;1668;:6;;1676:12;1660:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1700:9;1716:1;1712;:5;;;;:::i;:::-;1700:17;;1737:1;1730:8;;;1554:192;;;;;:::o;1410:136::-;1468:7;1495:43;1499:1;1502;1495:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1488:50;;1410:136;;;;:::o;25231:330::-;25324:4;25361:53;25383:6;25361:53;;;;;;;;;;;;;;;;;:9;:17;25371:6;25361:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25341:9;:17;25351:6;25341:17;;;;;;;;;;;;;;;:73;;;;25448:32;25473:6;25448:9;:20;25458:9;25448:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25425:9;:20;25435:9;25425:20;;;;;;;;;;;;;;;:55;;;;25513:9;25496:35;;25505:6;25496:35;;;25524:6;25496:35;;;;;;:::i;:::-;;;;;;;;25549:4;25542:11;;25231:330;;;;;:::o;25569:874::-;17120:4;17101:16;;:23;;;;;;;;;;;;;;;;;;25650:19:::1;25672:49;25719:1;25672:42;25699:14;;25672:22;25684:9;;25672:7;:11;;:22;;;;:::i;:::-;:26;;:42;;;;:::i;:::-;:46;;:49;;;;:::i;:::-;25650:71;;25732:21;25756:24;25768:11;25756:7;:11;;:24;;;;:::i;:::-;25732:48;;25793:31;25810:13;25793:16;:31::i;:::-;25835:22;25860:21;25835:46;;25894:19;25916:36;25930:21;25949:1;25930:14;;:18;;:21;;;;:::i;:::-;25916:9;;:13;;:36;;;;:::i;:::-;25894:58;;25973:26;26002:58;26058:1;26002:51;26041:11;26002:34;26021:14;;26002;:18;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;25973:87;;26071:24;26098:47;26133:11;26098:30;26117:10;;26098:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;26071:74;;26156:26;26185:60;26228:16;26185:38;26204:18;26185:14;:18;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;26156:89;;26258:57;26279:15;;;;;;;;;;;26296:18;26258:20;:57::i;:::-;26326:53;26347:13;;;;;;;;;;;26362:16;26326:20;:53::i;:::-;26390:45;26403:11;26416:18;26390:12;:45::i;:::-;25630:813;;;;;;;17166:5:::0;17147:16;;:24;;;;;;;;;;;;;;;;;;25569:874;:::o;27650:448::-;27736:7;27766:17;27799:13;;;;;;;;;;;27786:26;;:9;:26;;;:126;;27882:30;27908:3;27882:21;27893:9;;27882:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27786:126;;;27815:30;27841:3;27815:21;27826:9;;27815:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27786:126;27766:146;;27952:39;27981:9;27952;:24;27970:4;27952:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27925:9;:24;27943:4;27925:24;;;;;;;;;;;;;;;:66;;;;28032:4;28007:42;;28016:6;28007:42;;;28039:9;28007:42;;;;;;:::i;:::-;;;;;;;;28069:21;28080:9;28069:6;:10;;:21;;;;:::i;:::-;28062:28;;;27650:448;;;;;:::o;2012:132::-;2070:7;2097:39;2101:1;2104;2097:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2090:46;;2012:132;;;;:::o;1754:250::-;1812:7;1841:1;1836;:6;1832:47;;;1866:1;1859:8;;;;1832:47;1891:9;1907:1;1903;:5;;;;:::i;:::-;1891:17;;1936:1;1931;1927;:5;;;;:::i;:::-;:10;1919:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:1;1988:8;;;1754:250;;;;;:::o;26455:666::-;26581:21;26619:1;26605:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26581:40;;26650:4;26632;26637:1;26632:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26676:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26666:4;26671:1;26666:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26711:62;26728:4;26743:15;;;;;;;;;;;26761:11;26711:8;:62::i;:::-;26812:15;;;;;;;;;;;:66;;;26893:11;26919:1;26963:4;26990;27026:15;26812:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27078:35;27095:11;27108:4;27078:35;;;;;;;:::i;:::-;;;;;;;;26510:611;26455:666;:::o;21912:126::-;22004:9;:18;;:26;22023:6;22004:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21912:126;;:::o;27129:513::-;27277:62;27294:4;27309:15;;;;;;;;;;;27327:11;27277:8;:62::i;:::-;27382:15;;;;;;;;;;;:31;;;27421:9;27454:4;27474:11;27500:1;27543;27586:7;:5;:7::i;:::-;27608:15;27382:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27129:513;;:::o;2152:278::-;2238:7;2270:1;2266;:5;2273:12;2258:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2297:9;2313:1;2309;:5;;;;:::i;:::-;2297:17;;2421:1;2414:8;;;2152:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:323::-;3541:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:119;;;3596:79;;:::i;:::-;3558:119;3716:1;3741:50;3783:7;3774:6;3763:9;3759:22;3741:50;:::i;:::-;3731:60;;3687:114;3485:323;;;;:::o;3814:329::-;3873:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:119;;;3928:79;;:::i;:::-;3890:119;4048:1;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4019:117;3814:329;;;;:::o;4149:663::-;4237:6;4245;4253;4302:2;4290:9;4281:7;4277:23;4273:32;4270:119;;;4308:79;;:::i;:::-;4270:119;4428:1;4453:64;4509:7;4500:6;4489:9;4485:22;4453:64;:::i;:::-;4443:74;;4399:128;4566:2;4592:64;4648:7;4639:6;4628:9;4624:22;4592:64;:::i;:::-;4582:74;;4537:129;4705:2;4731:64;4787:7;4778:6;4767:9;4763:22;4731:64;:::i;:::-;4721:74;;4676:129;4149:663;;;;;:::o;4818:765::-;4904:6;4912;4920;4928;4977:3;4965:9;4956:7;4952:23;4948:33;4945:120;;;4984:79;;:::i;:::-;4945:120;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;5231:2;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5202:118;5359:2;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5330:118;5487:2;5513:53;5558:7;5549:6;5538:9;5534:22;5513:53;:::i;:::-;5503:63;;5458:118;4818:765;;;;;;;:::o;5589:179::-;5658:10;5679:46;5721:3;5713:6;5679:46;:::i;:::-;5757:4;5752:3;5748:14;5734:28;;5589:179;;;;:::o;5774:142::-;5877:32;5903:5;5877:32;:::i;:::-;5872:3;5865:45;5774:142;;:::o;5922:108::-;5999:24;6017:5;5999:24;:::i;:::-;5994:3;5987:37;5922:108;;:::o;6036:118::-;6123:24;6141:5;6123:24;:::i;:::-;6118:3;6111:37;6036:118;;:::o;6190:732::-;6309:3;6338:54;6386:5;6338:54;:::i;:::-;6408:86;6487:6;6482:3;6408:86;:::i;:::-;6401:93;;6518:56;6568:5;6518:56;:::i;:::-;6597:7;6628:1;6613:284;6638:6;6635:1;6632:13;6613:284;;;6714:6;6708:13;6741:63;6800:3;6785:13;6741:63;:::i;:::-;6734:70;;6827:60;6880:6;6827:60;:::i;:::-;6817:70;;6673:224;6660:1;6657;6653:9;6648:14;;6613:284;;;6617:14;6913:3;6906:10;;6314:608;;;6190:732;;;;:::o;6928:109::-;7009:21;7024:5;7009:21;:::i;:::-;7004:3;6997:34;6928:109;;:::o;7043:185::-;7157:64;7215:5;7157:64;:::i;:::-;7152:3;7145:77;7043:185;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7234:147;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;7387:364;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7757:366;;;:::o;8129:::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8129:366;;;:::o;8501:::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8501:366;;;:::o;8873:::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;8873:366;;;:::o;9245:::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9245:366;;;:::o;9617:::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9617:366;;;:::o;9989:::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;9989:366;;;:::o;10361:::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10361:366;;;:::o;10733:::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10733:366;;;:::o;11105:::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11105:366;;;:::o;11477:::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11477:366;;;:::o;11849:::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11849:366;;;:::o;12221:::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12221:366;;;:::o;12593:118::-;12680:24;12698:5;12680:24;:::i;:::-;12675:3;12668:37;12593:118;;:::o;12717:112::-;12800:22;12816:5;12800:22;:::i;:::-;12795:3;12788:35;12717:112;;:::o;12835:222::-;12928:4;12966:2;12955:9;12951:18;12943:26;;12979:71;13047:1;13036:9;13032:17;13023:6;12979:71;:::i;:::-;12835:222;;;;:::o;13063:254::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13223:87;13307:1;13296:9;13292:17;13283:6;13223:87;:::i;:::-;13063:254;;;;:::o;13323:332::-;13444:4;13482:2;13471:9;13467:18;13459:26;;13495:71;13563:1;13552:9;13548:17;13539:6;13495:71;:::i;:::-;13576:72;13644:2;13633:9;13629:18;13620:6;13576:72;:::i;:::-;13323:332;;;;;:::o;13661:807::-;13910:4;13948:3;13937:9;13933:19;13925:27;;13962:71;14030:1;14019:9;14015:17;14006:6;13962:71;:::i;:::-;14043:72;14111:2;14100:9;14096:18;14087:6;14043:72;:::i;:::-;14125:80;14201:2;14190:9;14186:18;14177:6;14125:80;:::i;:::-;14215;14291:2;14280:9;14276:18;14267:6;14215:80;:::i;:::-;14305:73;14373:3;14362:9;14358:19;14349:6;14305:73;:::i;:::-;14388;14456:3;14445:9;14441:19;14432:6;14388:73;:::i;:::-;13661:807;;;;;;;;;:::o;14474:210::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14612:65;14674:1;14663:9;14659:17;14650:6;14612:65;:::i;:::-;14474:210;;;;:::o;14690:276::-;14810:4;14848:2;14837:9;14833:18;14825:26;;14861:98;14956:1;14945:9;14941:17;14932:6;14861:98;:::i;:::-;14690:276;;;;:::o;14972:313::-;15085:4;15123:2;15112:9;15108:18;15100:26;;15172:9;15166:4;15162:20;15158:1;15147:9;15143:17;15136:47;15200:78;15273:4;15264:6;15200:78;:::i;:::-;15192:86;;14972:313;;;;:::o;15291:419::-;15457:4;15495:2;15484:9;15480:18;15472:26;;15544:9;15538:4;15534:20;15530:1;15519:9;15515:17;15508:47;15572:131;15698:4;15572:131;:::i;:::-;15564:139;;15291:419;;;:::o;15716:::-;15882:4;15920:2;15909:9;15905:18;15897:26;;15969:9;15963:4;15959:20;15955:1;15944:9;15940:17;15933:47;15997:131;16123:4;15997:131;:::i;:::-;15989:139;;15716:419;;;:::o;16141:::-;16307:4;16345:2;16334:9;16330:18;16322:26;;16394:9;16388:4;16384:20;16380:1;16369:9;16365:17;16358:47;16422:131;16548:4;16422:131;:::i;:::-;16414:139;;16141:419;;;:::o;16566:::-;16732:4;16770:2;16759:9;16755:18;16747:26;;16819:9;16813:4;16809:20;16805:1;16794:9;16790:17;16783:47;16847:131;16973:4;16847:131;:::i;:::-;16839:139;;16566:419;;;:::o;16991:::-;17157:4;17195:2;17184:9;17180:18;17172:26;;17244:9;17238:4;17234:20;17230:1;17219:9;17215:17;17208:47;17272:131;17398:4;17272:131;:::i;:::-;17264:139;;16991:419;;;:::o;17416:::-;17582:4;17620:2;17609:9;17605:18;17597:26;;17669:9;17663:4;17659:20;17655:1;17644:9;17640:17;17633:47;17697:131;17823:4;17697:131;:::i;:::-;17689:139;;17416:419;;;:::o;17841:::-;18007:4;18045:2;18034:9;18030:18;18022:26;;18094:9;18088:4;18084:20;18080:1;18069:9;18065:17;18058:47;18122:131;18248:4;18122:131;:::i;:::-;18114:139;;17841:419;;;:::o;18266:::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:::-;18857:4;18895:2;18884:9;18880:18;18872:26;;18944:9;18938:4;18934:20;18930:1;18919:9;18915:17;18908:47;18972:131;19098:4;18972:131;:::i;:::-;18964:139;;18691:419;;;:::o;19116:::-;19282:4;19320:2;19309:9;19305:18;19297:26;;19369:9;19363:4;19359:20;19355:1;19344:9;19340:17;19333:47;19397:131;19523:4;19397:131;:::i;:::-;19389:139;;19116:419;;;:::o;19541:::-;19707:4;19745:2;19734:9;19730:18;19722:26;;19794:9;19788:4;19784:20;19780:1;19769:9;19765:17;19758:47;19822:131;19948:4;19822:131;:::i;:::-;19814:139;;19541:419;;;:::o;19966:::-;20132:4;20170:2;20159:9;20155:18;20147:26;;20219:9;20213:4;20209:20;20205:1;20194:9;20190:17;20183:47;20247:131;20373:4;20247:131;:::i;:::-;20239:139;;19966:419;;;:::o;20391:::-;20557:4;20595:2;20584:9;20580:18;20572:26;;20644:9;20638:4;20634:20;20630:1;20619:9;20615:17;20608:47;20672:131;20798:4;20672:131;:::i;:::-;20664:139;;20391:419;;;:::o;20816:222::-;20909:4;20947:2;20936:9;20932:18;20924:26;;20960:71;21028:1;21017:9;21013:17;21004:6;20960:71;:::i;:::-;20816:222;;;;:::o;21044:483::-;21215:4;21253:2;21242:9;21238:18;21230:26;;21266:71;21334:1;21323:9;21319:17;21310:6;21266:71;:::i;:::-;21384:9;21378:4;21374:20;21369:2;21358:9;21354:18;21347:48;21412:108;21515:4;21506:6;21412:108;:::i;:::-;21404:116;;21044:483;;;;;:::o;21533:831::-;21796:4;21834:3;21823:9;21819:19;21811:27;;21848:71;21916:1;21905:9;21901:17;21892:6;21848:71;:::i;:::-;21929:80;22005:2;21994:9;21990:18;21981:6;21929:80;:::i;:::-;22056:9;22050:4;22046:20;22041:2;22030:9;22026:18;22019:48;22084:108;22187:4;22178:6;22084:108;:::i;:::-;22076:116;;22202:72;22270:2;22259:9;22255:18;22246:6;22202:72;:::i;:::-;22284:73;22352:3;22341:9;22337:19;22328:6;22284:73;:::i;:::-;21533:831;;;;;;;;:::o;22370:214::-;22459:4;22497:2;22486:9;22482:18;22474:26;;22510:67;22574:1;22563:9;22559:17;22550:6;22510:67;:::i;:::-;22370:214;;;;:::o;22671:132::-;22738:4;22761:3;22753:11;;22791:4;22786:3;22782:14;22774:22;;22671:132;;;:::o;22809:114::-;22876:6;22910:5;22904:12;22894:22;;22809:114;;;:::o;22929:99::-;22981:6;23015:5;23009:12;22999:22;;22929:99;;;:::o;23034:113::-;23104:4;23136;23131:3;23127:14;23119:22;;23034:113;;;:::o;23153:184::-;23252:11;23286:6;23281:3;23274:19;23326:4;23321:3;23317:14;23302:29;;23153:184;;;;:::o;23343:169::-;23427:11;23461:6;23456:3;23449:19;23501:4;23496:3;23492:14;23477:29;;23343:169;;;;:::o;23518:305::-;23558:3;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23611:20;23629:1;23611:20;:::i;:::-;23606:25;;23765:1;23697:66;23693:74;23690:1;23687:81;23684:107;;;23771:18;;:::i;:::-;23684:107;23815:1;23812;23808:9;23801:16;;23518:305;;;;:::o;23829:185::-;23869:1;23886:20;23904:1;23886:20;:::i;:::-;23881:25;;23920:20;23938:1;23920:20;:::i;:::-;23915:25;;23959:1;23949:35;;23964:18;;:::i;:::-;23949:35;24006:1;24003;23999:9;23994:14;;23829:185;;;;:::o;24020:348::-;24060:7;24083:20;24101:1;24083:20;:::i;:::-;24078:25;;24117:20;24135:1;24117:20;:::i;:::-;24112:25;;24305:1;24237:66;24233:74;24230:1;24227:81;24222:1;24215:9;24208:17;24204:105;24201:131;;;24312:18;;:::i;:::-;24201:131;24360:1;24357;24353:9;24342:20;;24020:348;;;;:::o;24374:191::-;24414:4;24434:20;24452:1;24434:20;:::i;:::-;24429:25;;24468:20;24486:1;24468:20;:::i;:::-;24463:25;;24507:1;24504;24501:8;24498:34;;;24512:18;;:::i;:::-;24498:34;24557:1;24554;24550:9;24542:17;;24374:191;;;;:::o;24571:96::-;24608:7;24637:24;24655:5;24637:24;:::i;:::-;24626:35;;24571:96;;;:::o;24673:104::-;24718:7;24747:24;24765:5;24747:24;:::i;:::-;24736:35;;24673:104;;;:::o;24783:90::-;24817:7;24860:5;24853:13;24846:21;24835:32;;24783:90;;;:::o;24879:126::-;24916:7;24956:42;24949:5;24945:54;24934:65;;24879:126;;;:::o;25011:77::-;25048:7;25077:5;25066:16;;25011:77;;;:::o;25094:86::-;25129:7;25169:4;25162:5;25158:16;25147:27;;25094:86;;;:::o;25186:153::-;25263:9;25296:37;25327:5;25296:37;:::i;:::-;25283:50;;25186:153;;;:::o;25345:121::-;25403:9;25436:24;25454:5;25436:24;:::i;:::-;25423:37;;25345:121;;;:::o;25472:126::-;25522:9;25555:37;25586:5;25555:37;:::i;:::-;25542:50;;25472:126;;;:::o;25604:113::-;25654:9;25687:24;25705:5;25687:24;:::i;:::-;25674:37;;25604:113;;;:::o;25723:307::-;25791:1;25801:113;25815:6;25812:1;25809:13;25801:113;;;25900:1;25895:3;25891:11;25885:18;25881:1;25876:3;25872:11;25865:39;25837:2;25834:1;25830:10;25825:15;;25801:113;;;25932:6;25929:1;25926:13;25923:101;;;26012:1;26003:6;25998:3;25994:16;25987:27;25923:101;25772:258;25723:307;;;:::o;26036:320::-;26080:6;26117:1;26111:4;26107:12;26097:22;;26164:1;26158:4;26154:12;26185:18;26175:81;;26241:4;26233:6;26229:17;26219:27;;26175:81;26303:2;26295:6;26292:14;26272:18;26269:38;26266:84;;;26322:18;;:::i;:::-;26266:84;26087:269;26036:320;;;:::o;26362:180::-;26410:77;26407:1;26400:88;26507:4;26504:1;26497:15;26531:4;26528:1;26521:15;26548:180;26596:77;26593:1;26586:88;26693:4;26690:1;26683:15;26717:4;26714:1;26707:15;26734:180;26782:77;26779:1;26772:88;26879:4;26876:1;26869:15;26903:4;26900:1;26893:15;26920:180;26968:77;26965:1;26958:88;27065:4;27062:1;27055:15;27089:4;27086:1;27079:15;27106:180;27154:77;27151:1;27144:88;27251:4;27248:1;27241:15;27275:4;27272:1;27265:15;27415:117;27524:1;27521;27514:12;27538:102;27579:6;27630:2;27626:7;27621:2;27614:5;27610:14;27606:28;27596:38;;27538:102;;;:::o;27646:222::-;27786:34;27782:1;27774:6;27770:14;27763:58;27855:5;27850:2;27842:6;27838:15;27831:30;27646:222;:::o;27874:225::-;28014:34;28010:1;28002:6;27998:14;27991:58;28083:8;28078:2;28070:6;28066:15;28059:33;27874:225;:::o;28105:221::-;28245:34;28241:1;28233:6;28229:14;28222:58;28314:4;28309:2;28301:6;28297:15;28290:29;28105:221;:::o;28332:177::-;28472:29;28468:1;28460:6;28456:14;28449:53;28332:177;:::o;28515:181::-;28655:33;28651:1;28643:6;28639:14;28632:57;28515:181;:::o;28702:227::-;28842:34;28838:1;28830:6;28826:14;28819:58;28911:10;28906:2;28898:6;28894:15;28887:35;28702:227;:::o;28935:220::-;29075:34;29071:1;29063:6;29059:14;29052:58;29144:3;29139:2;29131:6;29127:15;29120:28;28935:220;:::o;29161:182::-;29301:34;29297:1;29289:6;29285:14;29278:58;29161:182;:::o;29349:228::-;29489:34;29485:1;29477:6;29473:14;29466:58;29558:11;29553:2;29545:6;29541:15;29534:36;29349:228;:::o;29583:224::-;29723:34;29719:1;29711:6;29707:14;29700:58;29792:7;29787:2;29779:6;29775:15;29768:32;29583:224;:::o;29813:223::-;29953:34;29949:1;29941:6;29937:14;29930:58;30022:6;30017:2;30009:6;30005:15;29998:31;29813:223;:::o;30042:181::-;30182:33;30178:1;30170:6;30166:14;30159:57;30042:181;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:122::-;30530:24;30548:5;30530:24;:::i;:::-;30523:5;30520:35;30510:63;;30569:1;30566;30559:12;30510:63;30457:122;:::o;30585:116::-;30655:21;30670:5;30655:21;:::i;:::-;30648:5;30645:32;30635:60;;30691:1;30688;30681:12;30635:60;30585:116;:::o;30707:122::-;30780:24;30798:5;30780:24;:::i;:::-;30773:5;30770:35;30760:63;;30819:1;30816;30809:12;30760:63;30707:122;:::o

Swarm Source

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