ETH Price: $3,259.23 (-0.49%)
Gas: 2 Gwei

Token

Hikari INU (HIKARI)
 

Overview

Max Total Supply

600,000,000 HIKARI

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.691724661 HIKARI

Value
$0.00
0x55758e35398f46194384892b54d478a0588cf381
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:
HIKARI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-28
*/

/**

*/

/**
────────────────────────────────────────
────────────────────────────────────────
───────────████──███────────────────────
──────────█████─████────────────────────
────────███───███───████──███───────────
────────███───███───██████████──────────
────────███─────███───████──██──────────
─────────████───████───███──██──────────
──────────███─────██────██──██──────────
──────██████████────██──██──██──────────
─────████████████───██──██──██──────────
────███────────███──██──██──██──────────
────███─████───███──██──██──██──────────
───████─█████───██──██──██──██──────────
───██████───██──────██──────██──────────
─████████───██──────██─────███──────────
─██────██───██─────────────███──────────
─██─────███─██─────────────███──────────
─████───██████─────────────███──────────
───██───█████──────────────███──────────
────███──███───────────────███──────────
────███────────────────────███──────────
────███───────────────────███───────────
─────████────────────────███────────────
──────███────────────────███────────────
────────███─────────────███─────────────
────────████────────────██──────────────
──────────███───────────██──────────────
──────────████████████████──────────────
──────────████████████████──────────────
────────────────────────────────────────
────────────────────────────────────────
 100% SAFU

 HIKARI INU NEXT 1000X

/**

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;



abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; 
        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;

        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) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        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");

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

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

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 HIKARI is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Hikari INU";
    string private _symbol = "HIKARI";
    uint8 private _decimals = 9;

    address payable public Marketing = payable(0x48007cC7676D28b50F30D9A3FF94A1754884ac00);
    address payable public Team = payable(0x24aB1bDC351cc3C06C979B39b6b53b2a4e5335D9);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    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 isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 private _buyLiquidityFee = 1;
    uint256 private _buyHirakiMarketingFee = 1;
    uint256 private _buyHirakiTeamFee = 1;
    uint256 private _sellLiquidityFee = 1;
    uint256 private _sellHirakiMarketingFee = 1;
    uint256 private _sellHirakiTeamFee = 1;

    uint256 public _liquidityShare = 1;
    uint256 public _HirakiMarketingShare = 1;
    uint256 public _HirakiTeamShare = 1;

    uint256 public _totalTaxIfBuying = 3;
    uint256 public _totalTaxIfSelling = 3;
    uint256 public _totalDistributionShares = 3;

    uint256 private _totalSupply = 600 * 10**6 * 10**9;
    uint256 public _maxTxAmount = 6 * 10**6 * 10**9;
    uint256 public _walletMax = 6 * 10**6 * 10**9;
    uint256 public minimumTokensBeforeSwap = 25000 * 10**9; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    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); 

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

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

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyHirakiMarketingFee).add(_buyHirakiTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellHirakiMarketingFee).add(_sellHirakiTeamFee);
        _totalDistributionShares = _liquidityShare.add(_HirakiMarketingShare).add(_HirakiTeamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = 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, "BEP20: decreased allowance below zero"));
        return true;
    }

    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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function addMarketPair(address account) public onlyOwner {
        isMarketPair[account] = true;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    } 
         
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount <= (40 * 10**6 * 10**9), "Max wallet should be less or equal to 4% totalSupply");
        _maxTxAmount = 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 {
        _walletMax  = newLimit;
    }

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

    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)) 
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; 
        uniswapV2Router = _uniswapV2Router; 

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

    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, "BEP20: 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");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && 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) <= _walletMax);

            _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.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

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

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_HirakiTeamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(Marketing, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(Team, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

       
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    // contract creator :@cashmoneydev
}

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":"Marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Team","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_HirakiMarketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_HirakiTeamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","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":"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":[{"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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","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":[],"name":"minimumTokensBeforeSwap","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":[{"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":"setIsTxLimitExempt","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":"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":"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":"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":"uniswapPair","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":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600a81526020017f48696b61726920494e5500000000000000000000000000000000000000000000815250600290805190602001906200005192919062000b3d565b506040518060400160405280600681526020017f48494b4152490000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000b3d565b506009600460006101000a81548160ff021916908360ff1602179055507348007cc7676d28b50f30d9a3ff94a1754884ac00600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507324ab1bdc351cc3c06c979b39b6b53b2a4e5335d9600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506001600c556001600d556001600e556001600f5560016010556001601155600160125560016013556001601455600360155560036016556003601755670853a0d2313c0000601855661550f7dca70000601955661550f7dca70000601a556516bcc41e9000601b556001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff0219169083151502179055506001601d60176101000a81548160ff0219169083151502179055503480156200026157600080fd5b5060006200027462000aa960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037257600080fd5b505afa15801562000387573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ad919062000c57565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041057600080fd5b505afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000c57565b6040518363ffffffff1660e01b81526004016200046a92919062000c9a565b602060405180830381600087803b1580156200048557600080fd5b505af11580156200049a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c0919062000c57565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601854600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620005fc62000ab160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006de600e54620006ca600d54600c5462000ada60201b620022961790919060201c565b62000ada60201b620022961790919060201c565b6015819055506200071d60115462000709601054600f5462000ada60201b620022961790919060201c565b62000ada60201b620022961790919060201c565b6016819055506200075c6014546200074860135460125462000ada60201b620022961790919060201c565b62000ada60201b620022961790919060201c565b6017819055506001600960006200077862000ab160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620008b162000ab160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060185460066000620009eb62000aa960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a3962000aa960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000a9a919062000ce2565b60405180910390a35062000e73565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000aeb919062000d2e565b90508381101562000b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2a9062000dec565b60405180910390fd5b8091505092915050565b82805462000b4b9062000e3d565b90600052602060002090601f01602090048101928262000b6f576000855562000bbb565b82601f1062000b8a57805160ff191683800117855562000bbb565b8280016001018555821562000bbb579182015b8281111562000bba57825182559160200191906001019062000b9d565b5b50905062000bca919062000bce565b5090565b5b8082111562000be957600081600090555060010162000bcf565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c1f8262000bf2565b9050919050565b62000c318162000c12565b811462000c3d57600080fd5b50565b60008151905062000c518162000c26565b92915050565b60006020828403121562000c705762000c6f62000bed565b5b600062000c808482850162000c40565b91505092915050565b62000c948162000c12565b82525050565b600060408201905062000cb1600083018562000c89565b62000cc0602083018462000c89565b9392505050565b6000819050919050565b62000cdc8162000cc7565b82525050565b600060208201905062000cf9600083018462000cd1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d3b8262000cc7565b915062000d488362000cc7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d805762000d7f62000cff565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000dd4601b8362000d8b565b915062000de18262000d9c565b602082019050919050565b6000602082019050818103600083015262000e078162000dc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5657607f821691505b6020821081141562000e6d5762000e6c62000e0e565b5b50919050565b60805161459c62000e9660003960008181610e890152610eb5015261459c6000f3fe60806040526004361061028c5760003560e01c806382eefb431161015a578063d2d7ad83116100c1578063ef422a181161007a578063ef422a1814610a31578063f0cd1dac14610a5a578063f1d5f51714610a85578063f2fde38b14610aae578063f84ba65d14610ad7578063f872858a14610b0057610293565b8063d2d7ad8314610921578063da00097d1461094c578063db886f2314610977578063dd62ed3e146109a2578063e207a92b146109df578063ec28438a14610a0857610293565b8063a457c2d711610113578063a457c2d7146107ed578063a5d69d1f1461082a578063a9059cbb14610853578063c49b9a8014610890578063c816841b146108b9578063c867d60b146108e457610293565b806382eefb43146106ed5780638b42507f146107185780638da5cb5b14610755578063914eb66a1461078057806395d89b4114610797578063a08e671f146107c257610293565b80633b97084a116101fe5780635881f3ef116101b75780635881f3ef146105c75780635d7a4baf14610604578063639e01dd1461062f57806370a082311461065a5780637d1db4a514610697578063807c2d9c146106c257610293565b80633b97084a146104a35780633ecad271146104cc57806347d2b275146105095780634a74bb02146105345780635342acb41461055f57806357a5802f1461059c57610293565b806323b872dd1161025057806323b872dd1461037f5780632563ae83146103bc57806327c8f835146103e55780632b112e4914610410578063313ce5671461043b578063395093511461046657610293565b806306fdde0314610298578063095ea7b3146102c35780631694505e1461030057806318160ddd1461032b5780632198cf6c1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba91906136d0565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061378b565b610bbd565b6040516102f791906137e6565b60405180910390f35b34801561030c57600080fd5b50610315610bdb565b6040516103229190613860565b60405180910390f35b34801561033757600080fd5b50610340610c01565b60405161034d919061388a565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906138d1565b610c0b565b005b34801561038b57600080fd5b506103a660048036038101906103a19190613911565b610cfb565b6040516103b391906137e6565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190613964565b610dd5565b005b3480156103f157600080fd5b506103fa610e87565b60405161040791906139a0565b60405180910390f35b34801561041c57600080fd5b50610425610eab565b604051610432919061388a565b60405180910390f35b34801561044757600080fd5b50610450610eef565b60405161045d91906139d7565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061378b565b610f06565b60405161049a91906137e6565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c591906139f2565b610fb9565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190613a1f565b611058565b60405161050091906137e6565b60405180910390f35b34801561051557600080fd5b5061051e611078565b60405161052b919061388a565b60405180910390f35b34801561054057600080fd5b5061054961107e565b60405161055691906137e6565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190613a1f565b611091565b60405161059391906137e6565b60405180910390f35b3480156105a857600080fd5b506105b16110b1565b6040516105be919061388a565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613a1f565b6110b7565b6040516105fb91906139a0565b60405180910390f35b34801561061057600080fd5b50610619611615565b604051610626919061388a565b60405180910390f35b34801561063b57600080fd5b5061064461161b565b6040516106519190613a6d565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190613a1f565b611641565b60405161068e919061388a565b60405180910390f35b3480156106a357600080fd5b506106ac61168a565b6040516106b9919061388a565b60405180910390f35b3480156106ce57600080fd5b506106d7611690565b6040516106e4919061388a565b60405180910390f35b3480156106f957600080fd5b50610702611696565b60405161070f919061388a565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190613a1f565b61169c565b60405161074c91906137e6565b60405180910390f35b34801561076157600080fd5b5061076a6116bc565b60405161077791906139a0565b60405180910390f35b34801561078c57600080fd5b506107956116e5565b005b3480156107a357600080fd5b506107ac611838565b6040516107b991906136d0565b60405180910390f35b3480156107ce57600080fd5b506107d76118ca565b6040516107e4919061388a565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f919061378b565b6118d0565b60405161082191906137e6565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c9190613964565b61199d565b005b34801561085f57600080fd5b5061087a6004803603810190610875919061378b565b611a4f565b60405161088791906137e6565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613964565b611a6e565b005b3480156108c557600080fd5b506108ce611b57565b6040516108db91906139a0565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190613a1f565b611b7d565b60405161091891906137e6565b60405180910390f35b34801561092d57600080fd5b50610936611b9d565b604051610943919061388a565b60405180910390f35b34801561095857600080fd5b50610961611ba3565b60405161096e91906137e6565b60405180910390f35b34801561098357600080fd5b5061098c611bb6565b6040516109999190613a6d565b60405180910390f35b3480156109ae57600080fd5b506109c960048036038101906109c49190613a88565b611bdc565b6040516109d6919061388a565b60405180910390f35b3480156109eb57600080fd5b50610a066004803603810190610a019190613a1f565b611c63565b005b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906139f2565b611d53565b005b348015610a3d57600080fd5b50610a586004803603810190610a5391906138d1565b611e3c565b005b348015610a6657600080fd5b50610a6f611f2c565b604051610a7c919061388a565b60405180910390f35b348015610a9157600080fd5b50610aac6004803603810190610aa791906139f2565b611f32565b005b348015610aba57600080fd5b50610ad56004803603810190610ad09190613a1f565b611fd1565b005b348015610ae357600080fd5b50610afe6004803603810190610af991906138d1565b612193565b005b348015610b0c57600080fd5b50610b15612283565b604051610b2291906137e6565b60405180910390f35b606060028054610b3a90613af7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690613af7565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b6000610bd1610bca6122f4565b84846122fc565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610c136122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790613b75565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610d088484846124c7565b50610dca84610d156122f4565b610dc58560405180606001604052806028815260200161451a60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b6122fc565b600190509392505050565b610ddd6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613b75565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610eea610ed97f0000000000000000000000000000000000000000000000000000000000000000611641565b601854612b1090919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b6000610faf610f136122f4565b84610faa8560076000610f246122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b6122fc565b6001905092915050565b610fc16122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590613b75565b60405180910390fd5b80601b8190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60145481565b601d60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60125481565b60006110c16122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114590613b75565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190613baa565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b9190613baa565b6040518363ffffffff1660e01b8152600401611288929190613bd7565b60206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190613baa565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611499578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561135557600080fd5b505afa158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190613baa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ef57600080fd5b505afa158015611403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114279190613baa565b6040518363ffffffff1660e01b8152600401611444929190613bd7565b602060405180830381600087803b15801561145e57600080fd5b505af1158015611472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114969190613baa565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60135481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b60165481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116ed6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613b75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606003805461184790613af7565b80601f016020809104026020016040519081016040528092919081815260200182805461187390613af7565b80156118c05780601f10611895576101008083540402835291602001916118c0565b820191906000526020600020905b8154815290600101906020018083116118a357829003601f168201915b5050505050905090565b60175481565b60006119936118dd6122f4565b8461198e8560405180606001604052806025815260200161454260259139600760006119076122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b6122fc565b6001905092915050565b6119a56122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2990613b75565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b6000611a63611a5c6122f4565b84846124c7565b506001905092915050565b611a766122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613b75565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b4c91906137e6565b60405180910390a150565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b601b5481565b601d60169054906101000a900460ff1681565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c6b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef90613b75565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d5b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90613b75565b60405180910390fd5b668e1bc9bf040000811115611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613c72565b60405180910390fd5b8060198190555050565b611e446122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890613b75565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611f3a6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90613b75565b60405180910390fd5b80601a8190555050565b611fd96122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613b75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90613d04565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61219b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90613b75565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60179054906101000a900460ff1681565b60008082846122a59190613d53565b9050838110156122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190613df5565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561236c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236390613e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d390613f19565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124ba919061388a565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90613fab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f9061403d565b60405180910390fd5b601d60149054906101000a900460ff16156125cf576125c8848484612b5a565b9050612aa5565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126735750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126be576019548211156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b4906140cf565b60405180910390fd5b5b60006126c930611641565b90506000601b5482101590508080156126ef5750601d60149054906101000a900460ff16155b80156127455750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561275d5750601d60159054906101000a900460ff165b1561278757601d60169054906101000a900460ff161561277d57601b5491505b61278682612d2d565b5b612810846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128f65750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61290a57612905878787612f1e565b61290c565b845b9050601d60179054906101000a900460ff1680156129745750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129a357601a546129978261298989611641565b61229690919063ffffffff16565b11156129a257600080fd5b5b6129f581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a95919061388a565b60405180910390a3600193505050505b9392505050565b6000838311158290612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb91906136d0565b60405180910390fd5b5060008385612b0391906140ef565b9050809150509392505050565b6000612b5283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aac565b905092915050565b6000612be5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c7a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d1a919061388a565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000612d866002612d78601754612d6a6012548761314590919063ffffffff16565b6131c090919063ffffffff16565b6131c090919063ffffffff16565b90506000612d9d8284612b1090919063ffffffff16565b9050612da88161320a565b60004790506000612dd9612dc860026012546131c090919063ffffffff16565b601754612b1090919063ffffffff16565b90506000612e176002612e0984612dfb6012548861314590919063ffffffff16565b6131c090919063ffffffff16565b6131c090919063ffffffff16565b90506000612e4283612e346014548761314590919063ffffffff16565b6131c090919063ffffffff16565b90506000612e6b82612e5d8588612b1090919063ffffffff16565b612b1090919063ffffffff16565b90506000811115612ea357612ea2600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613495565b5b6000821115612ed957612ed8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613495565b5b600083118015612ee95750600087115b15612ef957612ef887846134e0565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fa657612f9f6064612f916015548661314590919063ffffffff16565b6131c090919063ffffffff16565b9050613024565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130235761302060646130126016548661314590919063ffffffff16565b6131c090919063ffffffff16565b90505b5b60008111156131285761307f81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161311f919061388a565b60405180910390a35b61313b8184612b1090919063ffffffff16565b9150509392505050565b60008083141561315857600090506131ba565b600082846131669190614123565b905082848261317591906141ac565b146131b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ac9061424f565b60405180910390fd5b809150505b92915050565b600061320283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d4565b905092915050565b6000600267ffffffffffffffff8111156132275761322661426f565b5b6040519080825280602002602001820160405280156132555781602001602082028036833780820191505090505b509050308160008151811061326d5761326c61429e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561330f57600080fd5b505afa158015613323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133479190613baa565b8160018151811061335b5761335a61429e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133c230601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122fc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134269594939291906143c6565b600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613489929190614420565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156134db573d6000803e3d6000fd5b505050565b61350d30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122fc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135596116bc565b426040518863ffffffff1660e01b815260040161357b96959493929190614450565b6060604051808303818588803b15801561359457600080fd5b505af11580156135a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135cd91906144c6565b5050505050565b6000808311829061361b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361291906136d0565b60405180910390fd5b506000838561362a91906141ac565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613671578082015181840152602081019050613656565b83811115613680576000848401525b50505050565b6000601f19601f8301169050919050565b60006136a282613637565b6136ac8185613642565b93506136bc818560208601613653565b6136c581613686565b840191505092915050565b600060208201905081810360008301526136ea8184613697565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613722826136f7565b9050919050565b61373281613717565b811461373d57600080fd5b50565b60008135905061374f81613729565b92915050565b6000819050919050565b61376881613755565b811461377357600080fd5b50565b6000813590506137858161375f565b92915050565b600080604083850312156137a2576137a16136f2565b5b60006137b085828601613740565b92505060206137c185828601613776565b9150509250929050565b60008115159050919050565b6137e0816137cb565b82525050565b60006020820190506137fb60008301846137d7565b92915050565b6000819050919050565b600061382661382161381c846136f7565b613801565b6136f7565b9050919050565b60006138388261380b565b9050919050565b600061384a8261382d565b9050919050565b61385a8161383f565b82525050565b60006020820190506138756000830184613851565b92915050565b61388481613755565b82525050565b600060208201905061389f600083018461387b565b92915050565b6138ae816137cb565b81146138b957600080fd5b50565b6000813590506138cb816138a5565b92915050565b600080604083850312156138e8576138e76136f2565b5b60006138f685828601613740565b9250506020613907858286016138bc565b9150509250929050565b60008060006060848603121561392a576139296136f2565b5b600061393886828701613740565b935050602061394986828701613740565b925050604061395a86828701613776565b9150509250925092565b60006020828403121561397a576139796136f2565b5b6000613988848285016138bc565b91505092915050565b61399a81613717565b82525050565b60006020820190506139b56000830184613991565b92915050565b600060ff82169050919050565b6139d1816139bb565b82525050565b60006020820190506139ec60008301846139c8565b92915050565b600060208284031215613a0857613a076136f2565b5b6000613a1684828501613776565b91505092915050565b600060208284031215613a3557613a346136f2565b5b6000613a4384828501613740565b91505092915050565b6000613a57826136f7565b9050919050565b613a6781613a4c565b82525050565b6000602082019050613a826000830184613a5e565b92915050565b60008060408385031215613a9f57613a9e6136f2565b5b6000613aad85828601613740565b9250506020613abe85828601613740565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0f57607f821691505b60208210811415613b2357613b22613ac8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5f602083613642565b9150613b6a82613b29565b602082019050919050565b60006020820190508181036000830152613b8e81613b52565b9050919050565b600081519050613ba481613729565b92915050565b600060208284031215613bc057613bbf6136f2565b5b6000613bce84828501613b95565b91505092915050565b6000604082019050613bec6000830185613991565b613bf96020830184613991565b9392505050565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065717560008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b6000613c5c603483613642565b9150613c6782613c00565b604082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cee602683613642565b9150613cf982613c92565b604082019050919050565b60006020820190508181036000830152613d1d81613ce1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d5e82613755565b9150613d6983613755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d9e57613d9d613d24565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ddf601b83613642565b9150613dea82613da9565b602082019050919050565b60006020820190508181036000830152613e0e81613dd2565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e71602483613642565b9150613e7c82613e15565b604082019050919050565b60006020820190508181036000830152613ea081613e64565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f03602283613642565b9150613f0e82613ea7565b604082019050919050565b60006020820190508181036000830152613f3281613ef6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f95602583613642565b9150613fa082613f39565b604082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614027602383613642565b915061403282613fcb565b604082019050919050565b600060208201905081810360008301526140568161401a565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006140b9602883613642565b91506140c48261405d565b604082019050919050565b600060208201905081810360008301526140e8816140ac565b9050919050565b60006140fa82613755565b915061410583613755565b92508282101561411857614117613d24565b5b828203905092915050565b600061412e82613755565b915061413983613755565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561417257614171613d24565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141b782613755565b91506141c283613755565b9250826141d2576141d161417d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614239602183613642565b9150614244826141dd565b604082019050919050565b600060208201905081810360008301526142688161422c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006142f26142ed6142e8846142cd565b613801565b613755565b9050919050565b614302816142d7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61433d81613717565b82525050565b600061434f8383614334565b60208301905092915050565b6000602082019050919050565b600061437382614308565b61437d8185614313565b935061438883614324565b8060005b838110156143b95781516143a08882614343565b97506143ab8361435b565b92505060018101905061438c565b5085935050505092915050565b600060a0820190506143db600083018861387b565b6143e860208301876142f9565b81810360408301526143fa8186614368565b90506144096060830185613991565b614416608083018461387b565b9695505050505050565b6000604082019050614435600083018561387b565b81810360208301526144478184614368565b90509392505050565b600060c0820190506144656000830189613991565b614472602083018861387b565b61447f60408301876142f9565b61448c60608301866142f9565b6144996080830185613991565b6144a660a083018461387b565b979650505050505050565b6000815190506144c08161375f565b92915050565b6000806000606084860312156144df576144de6136f2565b5b60006144ed868287016144b1565b93505060206144fe868287016144b1565b925050604061450f868287016144b1565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c9922fbf7dc8487de43a9a2c1351fe158529cc1c9730b10a50abafe0ea99a08364736f6c63430008090033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806382eefb431161015a578063d2d7ad83116100c1578063ef422a181161007a578063ef422a1814610a31578063f0cd1dac14610a5a578063f1d5f51714610a85578063f2fde38b14610aae578063f84ba65d14610ad7578063f872858a14610b0057610293565b8063d2d7ad8314610921578063da00097d1461094c578063db886f2314610977578063dd62ed3e146109a2578063e207a92b146109df578063ec28438a14610a0857610293565b8063a457c2d711610113578063a457c2d7146107ed578063a5d69d1f1461082a578063a9059cbb14610853578063c49b9a8014610890578063c816841b146108b9578063c867d60b146108e457610293565b806382eefb43146106ed5780638b42507f146107185780638da5cb5b14610755578063914eb66a1461078057806395d89b4114610797578063a08e671f146107c257610293565b80633b97084a116101fe5780635881f3ef116101b75780635881f3ef146105c75780635d7a4baf14610604578063639e01dd1461062f57806370a082311461065a5780637d1db4a514610697578063807c2d9c146106c257610293565b80633b97084a146104a35780633ecad271146104cc57806347d2b275146105095780634a74bb02146105345780635342acb41461055f57806357a5802f1461059c57610293565b806323b872dd1161025057806323b872dd1461037f5780632563ae83146103bc57806327c8f835146103e55780632b112e4914610410578063313ce5671461043b578063395093511461046657610293565b806306fdde0314610298578063095ea7b3146102c35780631694505e1461030057806318160ddd1461032b5780632198cf6c1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba91906136d0565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061378b565b610bbd565b6040516102f791906137e6565b60405180910390f35b34801561030c57600080fd5b50610315610bdb565b6040516103229190613860565b60405180910390f35b34801561033757600080fd5b50610340610c01565b60405161034d919061388a565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906138d1565b610c0b565b005b34801561038b57600080fd5b506103a660048036038101906103a19190613911565b610cfb565b6040516103b391906137e6565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190613964565b610dd5565b005b3480156103f157600080fd5b506103fa610e87565b60405161040791906139a0565b60405180910390f35b34801561041c57600080fd5b50610425610eab565b604051610432919061388a565b60405180910390f35b34801561044757600080fd5b50610450610eef565b60405161045d91906139d7565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061378b565b610f06565b60405161049a91906137e6565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c591906139f2565b610fb9565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190613a1f565b611058565b60405161050091906137e6565b60405180910390f35b34801561051557600080fd5b5061051e611078565b60405161052b919061388a565b60405180910390f35b34801561054057600080fd5b5061054961107e565b60405161055691906137e6565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190613a1f565b611091565b60405161059391906137e6565b60405180910390f35b3480156105a857600080fd5b506105b16110b1565b6040516105be919061388a565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613a1f565b6110b7565b6040516105fb91906139a0565b60405180910390f35b34801561061057600080fd5b50610619611615565b604051610626919061388a565b60405180910390f35b34801561063b57600080fd5b5061064461161b565b6040516106519190613a6d565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190613a1f565b611641565b60405161068e919061388a565b60405180910390f35b3480156106a357600080fd5b506106ac61168a565b6040516106b9919061388a565b60405180910390f35b3480156106ce57600080fd5b506106d7611690565b6040516106e4919061388a565b60405180910390f35b3480156106f957600080fd5b50610702611696565b60405161070f919061388a565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a9190613a1f565b61169c565b60405161074c91906137e6565b60405180910390f35b34801561076157600080fd5b5061076a6116bc565b60405161077791906139a0565b60405180910390f35b34801561078c57600080fd5b506107956116e5565b005b3480156107a357600080fd5b506107ac611838565b6040516107b991906136d0565b60405180910390f35b3480156107ce57600080fd5b506107d76118ca565b6040516107e4919061388a565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f919061378b565b6118d0565b60405161082191906137e6565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c9190613964565b61199d565b005b34801561085f57600080fd5b5061087a6004803603810190610875919061378b565b611a4f565b60405161088791906137e6565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613964565b611a6e565b005b3480156108c557600080fd5b506108ce611b57565b6040516108db91906139a0565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190613a1f565b611b7d565b60405161091891906137e6565b60405180910390f35b34801561092d57600080fd5b50610936611b9d565b604051610943919061388a565b60405180910390f35b34801561095857600080fd5b50610961611ba3565b60405161096e91906137e6565b60405180910390f35b34801561098357600080fd5b5061098c611bb6565b6040516109999190613a6d565b60405180910390f35b3480156109ae57600080fd5b506109c960048036038101906109c49190613a88565b611bdc565b6040516109d6919061388a565b60405180910390f35b3480156109eb57600080fd5b50610a066004803603810190610a019190613a1f565b611c63565b005b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906139f2565b611d53565b005b348015610a3d57600080fd5b50610a586004803603810190610a5391906138d1565b611e3c565b005b348015610a6657600080fd5b50610a6f611f2c565b604051610a7c919061388a565b60405180910390f35b348015610a9157600080fd5b50610aac6004803603810190610aa791906139f2565b611f32565b005b348015610aba57600080fd5b50610ad56004803603810190610ad09190613a1f565b611fd1565b005b348015610ae357600080fd5b50610afe6004803603810190610af991906138d1565b612193565b005b348015610b0c57600080fd5b50610b15612283565b604051610b2291906137e6565b60405180910390f35b606060028054610b3a90613af7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690613af7565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b6000610bd1610bca6122f4565b84846122fc565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610c136122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790613b75565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610d088484846124c7565b50610dca84610d156122f4565b610dc58560405180606001604052806028815260200161451a60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b6122fc565b600190509392505050565b610ddd6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613b75565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610eea610ed97f000000000000000000000000000000000000000000000000000000000000dead611641565b601854612b1090919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b6000610faf610f136122f4565b84610faa8560076000610f246122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b6122fc565b6001905092915050565b610fc16122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590613b75565b60405180910390fd5b80601b8190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60145481565b601d60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60125481565b60006110c16122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114590613b75565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190613baa565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b9190613baa565b6040518363ffffffff1660e01b8152600401611288929190613bd7565b60206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190613baa565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611499578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561135557600080fd5b505afa158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190613baa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ef57600080fd5b505afa158015611403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114279190613baa565b6040518363ffffffff1660e01b8152600401611444929190613bd7565b602060405180830381600087803b15801561145e57600080fd5b505af1158015611472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114969190613baa565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60135481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b60165481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116ed6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613b75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606003805461184790613af7565b80601f016020809104026020016040519081016040528092919081815260200182805461187390613af7565b80156118c05780601f10611895576101008083540402835291602001916118c0565b820191906000526020600020905b8154815290600101906020018083116118a357829003601f168201915b5050505050905090565b60175481565b60006119936118dd6122f4565b8461198e8560405180606001604052806025815260200161454260259139600760006119076122f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b6122fc565b6001905092915050565b6119a56122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2990613b75565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b6000611a63611a5c6122f4565b84846124c7565b506001905092915050565b611a766122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613b75565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b4c91906137e6565b60405180910390a150565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b601b5481565b601d60169054906101000a900460ff1681565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c6b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef90613b75565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d5b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90613b75565b60405180910390fd5b668e1bc9bf040000811115611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613c72565b60405180910390fd5b8060198190555050565b611e446122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890613b75565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611f3a6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90613b75565b60405180910390fd5b80601a8190555050565b611fd96122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613b75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90613d04565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61219b6122f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90613b75565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60179054906101000a900460ff1681565b60008082846122a59190613d53565b9050838110156122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190613df5565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561236c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236390613e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d390613f19565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124ba919061388a565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90613fab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f9061403d565b60405180910390fd5b601d60149054906101000a900460ff16156125cf576125c8848484612b5a565b9050612aa5565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126735750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126be576019548211156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b4906140cf565b60405180910390fd5b5b60006126c930611641565b90506000601b5482101590508080156126ef5750601d60149054906101000a900460ff16155b80156127455750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561275d5750601d60159054906101000a900460ff165b1561278757601d60169054906101000a900460ff161561277d57601b5491505b61278682612d2d565b5b612810846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128f65750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61290a57612905878787612f1e565b61290c565b845b9050601d60179054906101000a900460ff1680156129745750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129a357601a546129978261298989611641565b61229690919063ffffffff16565b11156129a257600080fd5b5b6129f581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a95919061388a565b60405180910390a3600193505050505b9392505050565b6000838311158290612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb91906136d0565b60405180910390fd5b5060008385612b0391906140ef565b9050809150509392505050565b6000612b5283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aac565b905092915050565b6000612be5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aac9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c7a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d1a919061388a565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000612d866002612d78601754612d6a6012548761314590919063ffffffff16565b6131c090919063ffffffff16565b6131c090919063ffffffff16565b90506000612d9d8284612b1090919063ffffffff16565b9050612da88161320a565b60004790506000612dd9612dc860026012546131c090919063ffffffff16565b601754612b1090919063ffffffff16565b90506000612e176002612e0984612dfb6012548861314590919063ffffffff16565b6131c090919063ffffffff16565b6131c090919063ffffffff16565b90506000612e4283612e346014548761314590919063ffffffff16565b6131c090919063ffffffff16565b90506000612e6b82612e5d8588612b1090919063ffffffff16565b612b1090919063ffffffff16565b90506000811115612ea357612ea2600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613495565b5b6000821115612ed957612ed8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613495565b5b600083118015612ee95750600087115b15612ef957612ef887846134e0565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fa657612f9f6064612f916015548661314590919063ffffffff16565b6131c090919063ffffffff16565b9050613024565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130235761302060646130126016548661314590919063ffffffff16565b6131c090919063ffffffff16565b90505b5b60008111156131285761307f81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161311f919061388a565b60405180910390a35b61313b8184612b1090919063ffffffff16565b9150509392505050565b60008083141561315857600090506131ba565b600082846131669190614123565b905082848261317591906141ac565b146131b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ac9061424f565b60405180910390fd5b809150505b92915050565b600061320283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d4565b905092915050565b6000600267ffffffffffffffff8111156132275761322661426f565b5b6040519080825280602002602001820160405280156132555781602001602082028036833780820191505090505b509050308160008151811061326d5761326c61429e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561330f57600080fd5b505afa158015613323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133479190613baa565b8160018151811061335b5761335a61429e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133c230601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122fc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134269594939291906143c6565b600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613489929190614420565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156134db573d6000803e3d6000fd5b505050565b61350d30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122fc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135596116bc565b426040518863ffffffff1660e01b815260040161357b96959493929190614450565b6060604051808303818588803b15801561359457600080fd5b505af11580156135a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135cd91906144c6565b5050505050565b6000808311829061361b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361291906136d0565b60405180910390fd5b506000838561362a91906141ac565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613671578082015181840152602081019050613656565b83811115613680576000848401525b50505050565b6000601f19601f8301169050919050565b60006136a282613637565b6136ac8185613642565b93506136bc818560208601613653565b6136c581613686565b840191505092915050565b600060208201905081810360008301526136ea8184613697565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613722826136f7565b9050919050565b61373281613717565b811461373d57600080fd5b50565b60008135905061374f81613729565b92915050565b6000819050919050565b61376881613755565b811461377357600080fd5b50565b6000813590506137858161375f565b92915050565b600080604083850312156137a2576137a16136f2565b5b60006137b085828601613740565b92505060206137c185828601613776565b9150509250929050565b60008115159050919050565b6137e0816137cb565b82525050565b60006020820190506137fb60008301846137d7565b92915050565b6000819050919050565b600061382661382161381c846136f7565b613801565b6136f7565b9050919050565b60006138388261380b565b9050919050565b600061384a8261382d565b9050919050565b61385a8161383f565b82525050565b60006020820190506138756000830184613851565b92915050565b61388481613755565b82525050565b600060208201905061389f600083018461387b565b92915050565b6138ae816137cb565b81146138b957600080fd5b50565b6000813590506138cb816138a5565b92915050565b600080604083850312156138e8576138e76136f2565b5b60006138f685828601613740565b9250506020613907858286016138bc565b9150509250929050565b60008060006060848603121561392a576139296136f2565b5b600061393886828701613740565b935050602061394986828701613740565b925050604061395a86828701613776565b9150509250925092565b60006020828403121561397a576139796136f2565b5b6000613988848285016138bc565b91505092915050565b61399a81613717565b82525050565b60006020820190506139b56000830184613991565b92915050565b600060ff82169050919050565b6139d1816139bb565b82525050565b60006020820190506139ec60008301846139c8565b92915050565b600060208284031215613a0857613a076136f2565b5b6000613a1684828501613776565b91505092915050565b600060208284031215613a3557613a346136f2565b5b6000613a4384828501613740565b91505092915050565b6000613a57826136f7565b9050919050565b613a6781613a4c565b82525050565b6000602082019050613a826000830184613a5e565b92915050565b60008060408385031215613a9f57613a9e6136f2565b5b6000613aad85828601613740565b9250506020613abe85828601613740565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0f57607f821691505b60208210811415613b2357613b22613ac8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5f602083613642565b9150613b6a82613b29565b602082019050919050565b60006020820190508181036000830152613b8e81613b52565b9050919050565b600081519050613ba481613729565b92915050565b600060208284031215613bc057613bbf6136f2565b5b6000613bce84828501613b95565b91505092915050565b6000604082019050613bec6000830185613991565b613bf96020830184613991565b9392505050565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065717560008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b6000613c5c603483613642565b9150613c6782613c00565b604082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cee602683613642565b9150613cf982613c92565b604082019050919050565b60006020820190508181036000830152613d1d81613ce1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d5e82613755565b9150613d6983613755565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d9e57613d9d613d24565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ddf601b83613642565b9150613dea82613da9565b602082019050919050565b60006020820190508181036000830152613e0e81613dd2565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e71602483613642565b9150613e7c82613e15565b604082019050919050565b60006020820190508181036000830152613ea081613e64565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f03602283613642565b9150613f0e82613ea7565b604082019050919050565b60006020820190508181036000830152613f3281613ef6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f95602583613642565b9150613fa082613f39565b604082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614027602383613642565b915061403282613fcb565b604082019050919050565b600060208201905081810360008301526140568161401a565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006140b9602883613642565b91506140c48261405d565b604082019050919050565b600060208201905081810360008301526140e8816140ac565b9050919050565b60006140fa82613755565b915061410583613755565b92508282101561411857614117613d24565b5b828203905092915050565b600061412e82613755565b915061413983613755565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561417257614171613d24565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141b782613755565b91506141c283613755565b9250826141d2576141d161417d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614239602183613642565b9150614244826141dd565b604082019050919050565b600060208201905081810360008301526142688161422c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006142f26142ed6142e8846142cd565b613801565b613755565b9050919050565b614302816142d7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61433d81613717565b82525050565b600061434f8383614334565b60208301905092915050565b6000602082019050919050565b600061437382614308565b61437d8185614313565b935061438883614324565b8060005b838110156143b95781516143a08882614343565b97506143ab8361435b565b92505060018101905061438c565b5085935050505092915050565b600060a0820190506143db600083018861387b565b6143e860208301876142f9565b81810360408301526143fa8186614368565b90506144096060830185613991565b614416608083018461387b565b9695505050505050565b6000604082019050614435600083018561387b565b81810360208301526144478184614368565b90509392505050565b600060c0820190506144656000830189613991565b614472602083018861387b565b61447f60408301876142f9565b61448c60608301866142f9565b6144996080830185613991565b6144a660a083018461387b565b979650505050505050565b6000815190506144c08161375f565b92915050565b6000806000606084860312156144df576144de6136f2565b5b60006144ed868287016144b1565b93505060206144fe868287016144b1565b925050604061450f868287016144b1565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c9922fbf7dc8487de43a9a2c1351fe158529cc1c9730b10a50abafe0ea99a08364736f6c63430008090033

Deployed Bytecode Sourcemap

17623:13055:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21290:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22456:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19271:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21567:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23725:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25657:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23604:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18050:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24426:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21476:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21953:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23978:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18442:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18861:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19386:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18271:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18773:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24700:737;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18814:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17962:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21675:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19101:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19155:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18948:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18387:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9162:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9387:145;;;;;;;;;;;;;:::i;:::-;;21381:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18992:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22179:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24289:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25482:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24110:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19319:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18328:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19207:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19433:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17869:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21802:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22970:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23374:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23221:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18905:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23868:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9540:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23082:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19485:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21290:83;21327:13;21360:5;21353:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21290:83;:::o;22456:161::-;22531:4;22548:39;22557:12;:10;:12::i;:::-;22571:7;22580:6;22548:8;:39::i;:::-;22605:4;22598:11;;22456:161;;;;:::o;19271:41::-;;;;;;;;;;;;;:::o;21567:100::-;21620:7;21647:12;;21640:19;;21567:100;:::o;23725:135::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23846:6:::1;23816:19;:27;23836:6;23816:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;23725:135:::0;;:::o;25657:313::-;25755:4;25772:36;25782:6;25790:9;25801:6;25772:9;:36::i;:::-;;25819:121;25828:6;25836:12;:10;:12::i;:::-;25850:89;25888:6;25850:89;;;;;;;;;;;;;;;;;:11;:19;25862:6;25850:19;;;;;;;;;;;;;;;:33;25870:12;:10;:12::i;:::-;25850:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;25819:8;:121::i;:::-;25958:4;25951:11;;25657:313;;;;;:::o;23604:113::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23701:8:::1;23682:16;;:27;;;;;;;;;;;;;;;;;;23604:113:::0;:::o;18050:81::-;;;:::o;24426:128::-;24479:7;24506:40;24523:22;24533:11;24523:9;:22::i;:::-;24506:12;;:16;;:40;;;;:::i;:::-;24499:47;;24426:128;:::o;21476:83::-;21517:5;21542:9;;;;;;;;;;;21535:16;;21476:83;:::o;21953:218::-;22041:4;22058:83;22067:12;:10;:12::i;:::-;22081:7;22090:50;22129:10;22090:11;:25;22102:12;:10;:12::i;:::-;22090:25;;;;;;;;;;;;;;;:34;22116:7;22090:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22058:8;:83::i;:::-;22159:4;22152:11;;21953:218;;;;:::o;23978:124::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24086:8:::1;24060:23;:34;;;;23978:124:::0;:::o;18442:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;18861:35::-;;;;:::o;19386:40::-;;;;;;;;;;;;;:::o;18271:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;18773:34::-;;;;:::o;24700:737::-;24780:22;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24817:35:::1;24874:16;24817:74;;24940:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24922:53;;;24984:4;24991:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24922:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24905:110;;25057:1;25031:28;;:14;:28;;;25028:201;;;25121:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25103:74;;;25186:4;25193:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25103:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25086:131;;25028:201;25255:14;25241:11;;:28;;;;;;;;;;;;;;;;;;25299:16;25281:15;;:34;;;;;;;;;;;;;;;;;;25373:4;25329:19;:41;25357:11;;;;;;;;;;;25329:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;25425:4;25388:12;:34;25409:11;;;;;;;;;;;25388:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;24804:633;24700:737:::0;;;:::o;18814:40::-;;;;:::o;17962:81::-;;;;;;;;;;;;;:::o;21675:119::-;21741:7;21768:9;:18;21778:7;21768:18;;;;;;;;;;;;;;;;21761:25;;21675:119;;;:::o;19101:47::-;;;;:::o;19155:45::-;;;;:::o;18948:37::-;;;;:::o;18387:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;9162:79::-;9200:7;9227:6;;;;;;;;;;;9220:13;;9162:79;:::o;9387:145::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9491:1:::1;9454:40;;9475:6;::::0;::::1;;;;;;;;9454:40;;;;;;;;;;;;9522:1;9505:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9387:145::o:0;21381:87::-;21420:13;21453:7;21446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21381:87;:::o;18992:43::-;;;;:::o;22179:269::-;22272:4;22289:129;22298:12;:10;:12::i;:::-;22312:7;22321:96;22360:15;22321:96;;;;;;;;;;;;;;;;;:11;:25;22333:12;:10;:12::i;:::-;22321:25;;;;;;;;;;;;;;;:34;22347:7;22321:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22289:8;:129::i;:::-;22436:4;22429:11;;22179:269;;;;:::o;24289:125::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24398:8:::1;24370:25;;:36;;;;;;;;;;;;;;;;;;24289:125:::0;:::o;25482:167::-;25560:4;25577:42;25587:12;:10;:12::i;:::-;25601:9;25612:6;25577:9;:42::i;:::-;;25637:4;25630:11;;25482:167;;;;:::o;24110:171::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24211:8:::1;24187:21;;:32;;;;;;;;;;;;;;;;;;24235:38;24264:8;24235:38;;;;;;:::i;:::-;;;;;;;;24110:171:::0;:::o;19319:26::-;;;;;;;;;;;;;:::o;18328:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19207:54::-;;;;:::o;19433:45::-;;;;;;;;;;;;;:::o;17869:86::-;;;;;;;;;;;;;:::o;21802:143::-;21883:7;21910:11;:18;21922:5;21910:18;;;;;;;;;;;;;;;:27;21929:7;21910:27;;;;;;;;;;;;;;;;21903:34;;21802:143;;;;:::o;22970:104::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23062:4:::1;23038:12;:21;23051:7;23038:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22970:104:::0;:::o;23374:222::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23475:18:::1;23459:11;:35;;23451:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23577:11;23562:12;:26;;;;23374:222:::0;:::o;23221:135::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23340:8:::1;23311:17;:26;23329:7;23311:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23221:135:::0;;:::o;18905:36::-;;;;:::o;23868:102::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23954:8:::1;23940:10;:22;;;;23868:102:::0;:::o;9540:244::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9649:1:::1;9629:22;;:8;:22;;;;9621:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9739:8;9710:38;;9731:6;::::0;::::1;;;;;;;;9710:38;;;;;;;;;;;;9768:8;9759:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9540:244:::0;:::o;23082:127::-;9306:12;:10;:12::i;:::-;9296:22;;:6;;;;;;;;;;:22;;;9288:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23195:6:::1;23169:15;:23;23185:6;23169:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23082:127:::0;;:::o;19485:35::-;;;;;;;;;;;;;:::o;5031:181::-;5089:7;5109:9;5125:1;5121;:5;;;;:::i;:::-;5109:17;;5150:1;5145;:6;;5137:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5203:1;5196:8;;;5031:181;;;;:::o;4081:115::-;4134:15;4177:10;4162:26;;4081:115;:::o;22625:337::-;22735:1;22718:19;;:5;:19;;;;22710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22816:1;22797:21;;:7;:21;;;;22789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22900:6;22870:11;:18;22882:5;22870:18;;;;;;;;;;;;;;;:27;22889:7;22870:27;;;;;;;;;;;;;;;:36;;;;22938:7;22922:32;;22931:5;22922:32;;;22947:6;22922:32;;;;;;:::i;:::-;;;;;;;;22625:337;;;:::o;25978:1707::-;26065:4;26110:1;26092:20;;:6;:20;;;;26084:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26194:1;26173:23;;:9;:23;;;;26165:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26252:16;;;;;;;;;;;26249:1429;;;26302:41;26317:6;26325:9;26336:6;26302:14;:41::i;:::-;26295:48;;;;26249:1429;26399:15;:23;26415:6;26399:23;;;;;;;;;;;;;;;;;;;;;;;;;26398:24;:55;;;;;26427:15;:26;26443:9;26427:26;;;;;;;;;;;;;;;;;;;;;;;;;26426:27;26398:55;26395:170;;;26492:12;;26482:6;:22;;26474:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26395:170;26593:28;26624:24;26642:4;26624:9;:24::i;:::-;26593:55;;26663:28;26718:23;;26694:20;:47;;26663:78;;26774:23;:44;;;;;26802:16;;;;;;;;;;;26801:17;26774:44;:69;;;;;26823:12;:20;26836:6;26823:20;;;;;;;;;;;;;;;;;;;;;;;;;26822:21;26774:69;:94;;;;;26847:21;;;;;;;;;;;26774:94;26770:305;;;26906:25;;;;;;;;;;;26903:97;;;26977:23;;26954:46;;26903:97;27019:36;27034:20;27019:14;:36::i;:::-;26770:305;27111:53;27133:6;27111:53;;;;;;;;;;;;;;;;;:9;:17;27121:6;27111:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27091:9;:17;27101:6;27091:17;;;;;;;;;;;;;;;:73;;;;27181:19;27204:17;:25;27222:6;27204:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;27233:17;:28;27251:9;27233:28;;;;;;;;;;;;;;;;;;;;;;;;;27204:57;27203:148;;27317:34;27325:6;27333:9;27344:6;27317:7;:34::i;:::-;27203:148;;;27308:6;27203:148;27181:170;;27371:16;;;;;;;;;;;:51;;;;;27392:19;:30;27412:9;27392:30;;;;;;;;;;;;;;;;;;;;;;;;;27391:31;27371:51;27368:133;;;27490:10;;27449:37;27474:11;27449:20;27459:9;27449;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;27441:60;;;;;;27368:133;27541:37;27566:11;27541:9;:20;27551:9;27541:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;27518:9;:20;27528:9;27518:20;;;;;;;;;;;;;;;:60;;;;27617:9;27600:40;;27609:6;27600:40;;;27628:11;27600:40;;;;;;:::i;:::-;;;;;;;;27662:4;27655:11;;;;;25978:1707;;;;;;:::o;5364:192::-;5450:7;5483:1;5478;:6;;5486:12;5470:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5510:9;5526:1;5522;:5;;;;:::i;:::-;5510:17;;5547:1;5540:8;;;5364:192;;;;;:::o;5220:136::-;5278:7;5305:43;5309:1;5312;5305:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5298:50;;5220:136;;;;:::o;27693:330::-;27786:4;27823:53;27845:6;27823:53;;;;;;;;;;;;;;;;;:9;:17;27833:6;27823:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27803:9;:17;27813:6;27803:17;;;;;;;;;;;;;;;:73;;;;27910:32;27935:6;27910:9;:20;27920:9;27910:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27887:9;:20;27897:9;27887:20;;;;;;;;;;;;;;;:55;;;;27975:9;27958:35;;27967:6;27958:35;;;27986:6;27958:35;;;;;;:::i;:::-;;;;;;;;28011:4;28004:11;;27693:330;;;;;:::o;28031:1028::-;19968:4;19949:16;;:23;;;;;;;;;;;;;;;;;;28113:19:::1;28135:65;28198:1;28135:58;28168:24;;28135:28;28147:15;;28135:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;28113:87;;28211:21;28235:24;28247:11;28235:7;:11;;:24;;;;:::i;:::-;28211:48;;28272:31;28289:13;28272:16;:31::i;:::-;28314:22;28339:21;28314:46;;28373:19;28395:52;28424:22;28444:1;28424:15;;:19;;:22;;;;:::i;:::-;28395:24;;:28;;:52;;;;:::i;:::-;28373:74;;28468:26;28497:59;28554:1;28497:52;28537:11;28497:35;28516:15;;28497:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28468:88;;28567:21;28591:53;28632:11;28591:36;28610:16;;28591:14;:18;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;28567:77;;28655:26;28684:57;28727:13;28684:38;28703:18;28684:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;28655:86;;28778:1;28757:18;:22;28754:91;;;28794:51;28815:9;;;;;;;;;;;28826:18;28794:20;:51::i;:::-;28754:91;28877:1;28861:13;:17;28858:76;;;28893:41;28914:4;;;;;;;;;;;28920:13;28893:20;:41::i;:::-;28858:76;28971:1;28950:18;:22;:41;;;;;28990:1;28976:11;:15;28950:41;28947:104;;;29006:45;29019:11;29032:18;29006:12;:45::i;:::-;28947:104;28092:967;;;;;;;20014:5:::0;19995:16;;:24;;;;;;;;;;;;;;;;;;28031:1028;:::o;30013:622::-;30099:7;30129:17;30149:1;30129:21;;30174:12;:20;30187:6;30174:20;;;;;;;;;;;;;;;;;;;;;;;;;30171:223;;;30223:38;30257:3;30223:29;30234:17;;30223:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;30211:50;;30171:223;;;30291:12;:23;30304:9;30291:23;;;;;;;;;;;;;;;;;;;;;;;;;30288:106;;;30343:39;30378:3;30343:30;30354:18;;30343:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;30331:51;;30288:106;30171:223;30429:1;30417:9;:13;30414:173;;;30474:39;30503:9;30474;:24;30492:4;30474:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30447:9;:24;30465:4;30447:24;;;;;;;;;;;;;;;:66;;;;30558:4;30533:42;;30542:6;30533:42;;;30565:9;30533:42;;;;;;:::i;:::-;;;;;;;;30414:173;30606:21;30617:9;30606:6;:10;;:21;;;;:::i;:::-;30599:28;;;30013:622;;;;;:::o;5564:250::-;5622:7;5651:1;5646;:6;5642:47;;;5676:1;5669:8;;;;5642:47;5701:9;5717:1;5713;:5;;;;:::i;:::-;5701:17;;5746:1;5741;5737;:5;;;;:::i;:::-;:10;5729:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5805:1;5798:8;;;5564:250;;;;;:::o;5822:132::-;5880:7;5907:39;5911:1;5914;5907:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5900:46;;5822:132;;;;:::o;29071:547::-;29139:21;29177:1;29163:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29139:40;;29208:4;29190;29195:1;29190:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29234:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29224:4;29229:1;29224:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29269:62;29286:4;29301:15;;;;;;;;;;;29319:11;29269:8;:62::i;:::-;29351:15;;;;;;;;;;;:66;;;29432:11;29458:1;29475:4;29502;29523:15;29351:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29575:35;29592:11;29605:4;29575:35;;;;;;;:::i;:::-;;;;;;;;29126:492;29071:547;:::o;24562:126::-;24654:9;:18;;:26;24673:6;24654:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24562:126;;:::o;29626:381::-;29715:62;29732:4;29747:15;;;;;;;;;;;29765:11;29715:8;:62::i;:::-;29799:15;;;;;;;;;;;:31;;;29838:9;29871:4;29891:11;29917:1;29934;29951:7;:5;:7::i;:::-;29973:15;29799:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29626:381;;:::o;5962:191::-;6048:7;6080:1;6076;:5;6083:12;6068:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6107:9;6123:1;6119;:5;;;;:::i;:::-;6107:17;;6144:1;6137:8;;;5962:191;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:116::-;4894:21;4909:5;4894:21;:::i;:::-;4887:5;4884:32;4874:60;;4930:1;4927;4920:12;4874:60;4824:116;:::o;4946:133::-;4989:5;5027:6;5014:20;5005:29;;5043:30;5067:5;5043:30;:::i;:::-;4946:133;;;;:::o;5085:468::-;5150:6;5158;5207:2;5195:9;5186:7;5182:23;5178:32;5175:119;;;5213:79;;:::i;:::-;5175:119;5333:1;5358:53;5403:7;5394:6;5383:9;5379:22;5358:53;:::i;:::-;5348:63;;5304:117;5460:2;5486:50;5528:7;5519:6;5508:9;5504:22;5486:50;:::i;:::-;5476:60;;5431:115;5085:468;;;;;:::o;5559:619::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:119;;;5707:79;;:::i;:::-;5669:119;5827:1;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;:::i;:::-;5842:63;;5798:117;5954:2;5980:53;6025:7;6016:6;6005:9;6001:22;5980:53;:::i;:::-;5970:63;;5925:118;6082:2;6108:53;6153:7;6144:6;6133:9;6129:22;6108:53;:::i;:::-;6098:63;;6053:118;5559:619;;;;;:::o;6184:323::-;6240:6;6289:2;6277:9;6268:7;6264:23;6260:32;6257:119;;;6295:79;;:::i;:::-;6257:119;6415:1;6440:50;6482:7;6473:6;6462:9;6458:22;6440:50;:::i;:::-;6430:60;;6386:114;6184:323;;;;:::o;6513:118::-;6600:24;6618:5;6600:24;:::i;:::-;6595:3;6588:37;6513:118;;:::o;6637:222::-;6730:4;6768:2;6757:9;6753:18;6745:26;;6781:71;6849:1;6838:9;6834:17;6825:6;6781:71;:::i;:::-;6637:222;;;;:::o;6865:86::-;6900:7;6940:4;6933:5;6929:16;6918:27;;6865:86;;;:::o;6957:112::-;7040:22;7056:5;7040:22;:::i;:::-;7035:3;7028:35;6957:112;;:::o;7075:214::-;7164:4;7202:2;7191:9;7187:18;7179:26;;7215:67;7279:1;7268:9;7264:17;7255:6;7215:67;:::i;:::-;7075:214;;;;:::o;7295:329::-;7354:6;7403:2;7391:9;7382:7;7378:23;7374:32;7371:119;;;7409:79;;:::i;:::-;7371:119;7529:1;7554:53;7599:7;7590:6;7579:9;7575:22;7554:53;:::i;:::-;7544:63;;7500:117;7295:329;;;;:::o;7630:::-;7689:6;7738:2;7726:9;7717:7;7713:23;7709:32;7706:119;;;7744:79;;:::i;:::-;7706:119;7864:1;7889:53;7934:7;7925:6;7914:9;7910:22;7889:53;:::i;:::-;7879:63;;7835:117;7630:329;;;;:::o;7965:104::-;8010:7;8039:24;8057:5;8039:24;:::i;:::-;8028:35;;7965:104;;;:::o;8075:142::-;8178:32;8204:5;8178:32;:::i;:::-;8173:3;8166:45;8075:142;;:::o;8223:254::-;8332:4;8370:2;8359:9;8355:18;8347:26;;8383:87;8467:1;8456:9;8452:17;8443:6;8383:87;:::i;:::-;8223:254;;;;:::o;8483:474::-;8551:6;8559;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:53;8804:7;8795:6;8784:9;8780:22;8759:53;:::i;:::-;8749:63;;8705:117;8861:2;8887:53;8932:7;8923:6;8912:9;8908:22;8887:53;:::i;:::-;8877:63;;8832:118;8483:474;;;;;:::o;8963:180::-;9011:77;9008:1;9001:88;9108:4;9105:1;9098:15;9132:4;9129:1;9122:15;9149:320;9193:6;9230:1;9224:4;9220:12;9210:22;;9277:1;9271:4;9267:12;9298:18;9288:81;;9354:4;9346:6;9342:17;9332:27;;9288:81;9416:2;9408:6;9405:14;9385:18;9382:38;9379:84;;;9435:18;;:::i;:::-;9379:84;9200:269;9149:320;;;:::o;9475:182::-;9615:34;9611:1;9603:6;9599:14;9592:58;9475:182;:::o;9663:366::-;9805:3;9826:67;9890:2;9885:3;9826:67;:::i;:::-;9819:74;;9902:93;9991:3;9902:93;:::i;:::-;10020:2;10015:3;10011:12;10004:19;;9663:366;;;:::o;10035:419::-;10201:4;10239:2;10228:9;10224:18;10216:26;;10288:9;10282:4;10278:20;10274:1;10263:9;10259:17;10252:47;10316:131;10442:4;10316:131;:::i;:::-;10308:139;;10035:419;;;:::o;10460:143::-;10517:5;10548:6;10542:13;10533:22;;10564:33;10591:5;10564:33;:::i;:::-;10460:143;;;;:::o;10609:351::-;10679:6;10728:2;10716:9;10707:7;10703:23;10699:32;10696:119;;;10734:79;;:::i;:::-;10696:119;10854:1;10879:64;10935:7;10926:6;10915:9;10911:22;10879:64;:::i;:::-;10869:74;;10825:128;10609:351;;;;:::o;10966:332::-;11087:4;11125:2;11114:9;11110:18;11102:26;;11138:71;11206:1;11195:9;11191:17;11182:6;11138:71;:::i;:::-;11219:72;11287:2;11276:9;11272:18;11263:6;11219:72;:::i;:::-;10966:332;;;;;:::o;11304:239::-;11444:34;11440:1;11432:6;11428:14;11421:58;11513:22;11508:2;11500:6;11496:15;11489:47;11304:239;:::o;11549:366::-;11691:3;11712:67;11776:2;11771:3;11712:67;:::i;:::-;11705:74;;11788:93;11877:3;11788:93;:::i;:::-;11906:2;11901:3;11897:12;11890:19;;11549:366;;;:::o;11921:419::-;12087:4;12125:2;12114:9;12110:18;12102:26;;12174:9;12168:4;12164:20;12160:1;12149:9;12145:17;12138:47;12202:131;12328:4;12202:131;:::i;:::-;12194:139;;11921:419;;;:::o;12346:225::-;12486:34;12482:1;12474:6;12470:14;12463:58;12555:8;12550:2;12542:6;12538:15;12531:33;12346:225;:::o;12577:366::-;12719:3;12740:67;12804:2;12799:3;12740:67;:::i;:::-;12733:74;;12816:93;12905:3;12816:93;:::i;:::-;12934:2;12929:3;12925:12;12918:19;;12577:366;;;:::o;12949:419::-;13115:4;13153:2;13142:9;13138:18;13130:26;;13202:9;13196:4;13192:20;13188:1;13177:9;13173:17;13166:47;13230:131;13356:4;13230:131;:::i;:::-;13222:139;;12949:419;;;:::o;13374:180::-;13422:77;13419:1;13412:88;13519:4;13516:1;13509:15;13543:4;13540:1;13533:15;13560:305;13600:3;13619:20;13637:1;13619:20;:::i;:::-;13614:25;;13653:20;13671:1;13653:20;:::i;:::-;13648:25;;13807:1;13739:66;13735:74;13732:1;13729:81;13726:107;;;13813:18;;:::i;:::-;13726:107;13857:1;13854;13850:9;13843:16;;13560:305;;;;:::o;13871:177::-;14011:29;14007:1;13999:6;13995:14;13988:53;13871:177;:::o;14054:366::-;14196:3;14217:67;14281:2;14276:3;14217:67;:::i;:::-;14210:74;;14293:93;14382:3;14293:93;:::i;:::-;14411:2;14406:3;14402:12;14395:19;;14054:366;;;:::o;14426:419::-;14592:4;14630:2;14619:9;14615:18;14607:26;;14679:9;14673:4;14669:20;14665:1;14654:9;14650:17;14643:47;14707:131;14833:4;14707:131;:::i;:::-;14699:139;;14426:419;;;:::o;14851:223::-;14991:34;14987:1;14979:6;14975:14;14968:58;15060:6;15055:2;15047:6;15043:15;15036:31;14851:223;:::o;15080:366::-;15222:3;15243:67;15307:2;15302:3;15243:67;:::i;:::-;15236:74;;15319:93;15408:3;15319:93;:::i;:::-;15437:2;15432:3;15428:12;15421:19;;15080:366;;;:::o;15452:419::-;15618:4;15656:2;15645:9;15641:18;15633:26;;15705:9;15699:4;15695:20;15691:1;15680:9;15676:17;15669:47;15733:131;15859:4;15733:131;:::i;:::-;15725:139;;15452:419;;;:::o;15877:221::-;16017:34;16013:1;16005:6;16001:14;15994:58;16086:4;16081:2;16073:6;16069:15;16062:29;15877:221;:::o;16104:366::-;16246:3;16267:67;16331:2;16326:3;16267:67;:::i;:::-;16260:74;;16343:93;16432:3;16343:93;:::i;:::-;16461:2;16456:3;16452:12;16445:19;;16104:366;;;:::o;16476:419::-;16642:4;16680:2;16669:9;16665:18;16657:26;;16729:9;16723:4;16719:20;16715:1;16704:9;16700:17;16693:47;16757:131;16883:4;16757:131;:::i;:::-;16749:139;;16476:419;;;:::o;16901:224::-;17041:34;17037:1;17029:6;17025:14;17018:58;17110:7;17105:2;17097:6;17093:15;17086:32;16901:224;:::o;17131:366::-;17273:3;17294:67;17358:2;17353:3;17294:67;:::i;:::-;17287:74;;17370:93;17459:3;17370:93;:::i;:::-;17488:2;17483:3;17479:12;17472:19;;17131:366;;;:::o;17503:419::-;17669:4;17707:2;17696:9;17692:18;17684:26;;17756:9;17750:4;17746:20;17742:1;17731:9;17727:17;17720:47;17784:131;17910:4;17784:131;:::i;:::-;17776:139;;17503:419;;;:::o;17928:222::-;18068:34;18064:1;18056:6;18052:14;18045:58;18137:5;18132:2;18124:6;18120:15;18113:30;17928:222;:::o;18156:366::-;18298:3;18319:67;18383:2;18378:3;18319:67;:::i;:::-;18312:74;;18395:93;18484:3;18395:93;:::i;:::-;18513:2;18508:3;18504:12;18497:19;;18156:366;;;:::o;18528:419::-;18694:4;18732:2;18721:9;18717:18;18709:26;;18781:9;18775:4;18771:20;18767:1;18756:9;18752:17;18745:47;18809:131;18935:4;18809:131;:::i;:::-;18801:139;;18528:419;;;:::o;18953:227::-;19093:34;19089:1;19081:6;19077:14;19070:58;19162:10;19157:2;19149:6;19145:15;19138:35;18953:227;:::o;19186:366::-;19328:3;19349:67;19413:2;19408:3;19349:67;:::i;:::-;19342:74;;19425:93;19514:3;19425:93;:::i;:::-;19543:2;19538:3;19534:12;19527:19;;19186:366;;;:::o;19558:419::-;19724:4;19762:2;19751:9;19747:18;19739:26;;19811:9;19805:4;19801:20;19797:1;19786:9;19782:17;19775:47;19839:131;19965:4;19839:131;:::i;:::-;19831:139;;19558:419;;;:::o;19983:191::-;20023:4;20043:20;20061:1;20043:20;:::i;:::-;20038:25;;20077:20;20095:1;20077:20;:::i;:::-;20072:25;;20116:1;20113;20110:8;20107:34;;;20121:18;;:::i;:::-;20107:34;20166:1;20163;20159:9;20151:17;;19983:191;;;;:::o;20180:348::-;20220:7;20243:20;20261:1;20243:20;:::i;:::-;20238:25;;20277:20;20295:1;20277:20;:::i;:::-;20272:25;;20465:1;20397:66;20393:74;20390:1;20387:81;20382:1;20375:9;20368:17;20364:105;20361:131;;;20472:18;;:::i;:::-;20361:131;20520:1;20517;20513:9;20502:20;;20180:348;;;;:::o;20534:180::-;20582:77;20579:1;20572:88;20679:4;20676:1;20669:15;20703:4;20700:1;20693:15;20720:185;20760:1;20777:20;20795:1;20777:20;:::i;:::-;20772:25;;20811:20;20829:1;20811:20;:::i;:::-;20806:25;;20850:1;20840:35;;20855:18;;:::i;:::-;20840:35;20897:1;20894;20890:9;20885:14;;20720:185;;;;:::o;20911:220::-;21051:34;21047:1;21039:6;21035:14;21028:58;21120:3;21115:2;21107:6;21103:15;21096:28;20911:220;:::o;21137:366::-;21279:3;21300:67;21364:2;21359:3;21300:67;:::i;:::-;21293:74;;21376:93;21465:3;21376:93;:::i;:::-;21494:2;21489:3;21485:12;21478:19;;21137:366;;;:::o;21509:419::-;21675:4;21713:2;21702:9;21698:18;21690:26;;21762:9;21756:4;21752:20;21748:1;21737:9;21733:17;21726:47;21790:131;21916:4;21790:131;:::i;:::-;21782:139;;21509:419;;;:::o;21934:180::-;21982:77;21979:1;21972:88;22079:4;22076:1;22069:15;22103:4;22100:1;22093:15;22120:180;22168:77;22165:1;22158:88;22265:4;22262:1;22255:15;22289:4;22286:1;22279:15;22306:85;22351:7;22380:5;22369:16;;22306:85;;;:::o;22397:158::-;22455:9;22488:61;22506:42;22515:32;22541:5;22515:32;:::i;:::-;22506:42;:::i;:::-;22488:61;:::i;:::-;22475:74;;22397:158;;;:::o;22561:147::-;22656:45;22695:5;22656:45;:::i;:::-;22651:3;22644:58;22561:147;;:::o;22714:114::-;22781:6;22815:5;22809:12;22799:22;;22714:114;;;:::o;22834:184::-;22933:11;22967:6;22962:3;22955:19;23007:4;23002:3;22998:14;22983:29;;22834:184;;;;:::o;23024:132::-;23091:4;23114:3;23106:11;;23144:4;23139:3;23135:14;23127:22;;23024:132;;;:::o;23162:108::-;23239:24;23257:5;23239:24;:::i;:::-;23234:3;23227:37;23162:108;;:::o;23276:179::-;23345:10;23366:46;23408:3;23400:6;23366:46;:::i;:::-;23444:4;23439:3;23435:14;23421:28;;23276:179;;;;:::o;23461:113::-;23531:4;23563;23558:3;23554:14;23546:22;;23461:113;;;:::o;23610:732::-;23729:3;23758:54;23806:5;23758:54;:::i;:::-;23828:86;23907:6;23902:3;23828:86;:::i;:::-;23821:93;;23938:56;23988:5;23938:56;:::i;:::-;24017:7;24048:1;24033:284;24058:6;24055:1;24052:13;24033:284;;;24134:6;24128:13;24161:63;24220:3;24205:13;24161:63;:::i;:::-;24154:70;;24247:60;24300:6;24247:60;:::i;:::-;24237:70;;24093:224;24080:1;24077;24073:9;24068:14;;24033:284;;;24037:14;24333:3;24326:10;;23734:608;;;23610:732;;;;:::o;24348:831::-;24611:4;24649:3;24638:9;24634:19;24626:27;;24663:71;24731:1;24720:9;24716:17;24707:6;24663:71;:::i;:::-;24744:80;24820:2;24809:9;24805:18;24796:6;24744:80;:::i;:::-;24871:9;24865:4;24861:20;24856:2;24845:9;24841:18;24834:48;24899:108;25002:4;24993:6;24899:108;:::i;:::-;24891:116;;25017:72;25085:2;25074:9;25070:18;25061:6;25017:72;:::i;:::-;25099:73;25167:3;25156:9;25152:19;25143:6;25099:73;:::i;:::-;24348:831;;;;;;;;:::o;25185:483::-;25356:4;25394:2;25383:9;25379:18;25371:26;;25407:71;25475:1;25464:9;25460:17;25451:6;25407:71;:::i;:::-;25525:9;25519:4;25515:20;25510:2;25499:9;25495:18;25488:48;25553:108;25656:4;25647:6;25553:108;:::i;:::-;25545:116;;25185:483;;;;;:::o;25674:807::-;25923:4;25961:3;25950:9;25946:19;25938:27;;25975:71;26043:1;26032:9;26028:17;26019:6;25975:71;:::i;:::-;26056:72;26124:2;26113:9;26109:18;26100:6;26056:72;:::i;:::-;26138:80;26214:2;26203:9;26199:18;26190:6;26138:80;:::i;:::-;26228;26304:2;26293:9;26289:18;26280:6;26228:80;:::i;:::-;26318:73;26386:3;26375:9;26371:19;26362:6;26318:73;:::i;:::-;26401;26469:3;26458:9;26454:19;26445:6;26401:73;:::i;:::-;25674:807;;;;;;;;;:::o;26487:143::-;26544:5;26575:6;26569:13;26560:22;;26591:33;26618:5;26591:33;:::i;:::-;26487:143;;;;:::o;26636:663::-;26724:6;26732;26740;26789:2;26777:9;26768:7;26764:23;26760:32;26757:119;;;26795:79;;:::i;:::-;26757:119;26915:1;26940:64;26996:7;26987:6;26976:9;26972:22;26940:64;:::i;:::-;26930:74;;26886:128;27053:2;27079:64;27135:7;27126:6;27115:9;27111:22;27079:64;:::i;:::-;27069:74;;27024:129;27192:2;27218:64;27274:7;27265:6;27254:9;27250:22;27218:64;:::i;:::-;27208:74;;27163:129;26636:663;;;;;:::o

Swarm Source

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