ETH Price: $3,825.45 (+5.75%)

Token

ERC-20: BURNING SAIYAN (BURNSAIYAN)
 

Overview

Max Total Supply

1,000,000,000,000 BURNSAIYAN

Holders

5

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
youneedtoshill.eth
Balance
4,489,934,852.063030827 BURNSAIYAN

Value
$0.00
0x0B9B2E8c82F9a7e45dBEde2971D567aF8dBd0f21
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:
BURNINGSAIYAN

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// tg,tw: @burningsaiyan

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

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


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

    uint256 private _totalSupply = 100 * 10**10 * 10**9; 
    uint256 public _maxbuy = 3 * 10**10 * 10**9; 
    uint256 public _maxwallet = 4 * 10**10 * 10**9; 
    uint256 private minimumTokensBeforeSwap = 1000 * 10**9;   
    uint256 public _totaltax = 0;
    uint256 public _cooldown = 0;

    address payable public marketingWallet = payable(0xc78621a1D7DDB6e0EEacf84a09A0a649763d42e5); 
    address payable public rewardsWallet = payable(0xc78621a1D7DDB6e0EEacf84a09A0a649763d42e5); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;

    string private _name = "BURNING SAIYAN";
    string private _symbol = "BURNSAIYAN";
    uint8 private _decimals = 9;

    uint256 public _autoliquidity = 0;
    uint256 public _marketing = 4;
    uint256 public _developer = 0;     
    uint256 public _antidump = 0;  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        uint256 totalBNBFee = _totaltax.sub(_autoliquidity.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_autoliquidity).div(totalBNBFee).div(2);
        uint256 amountBNBRewards = amountReceived.mul(_developer).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBRewards);

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

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

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

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

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

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

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

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_antidump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoliquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxwallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totaltax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setRewardsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newRewardsTax","type":"uint256"},{"internalType":"uint256","name":"newExtraFeeOnSell","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052683635c9adc5dea000006003556801a055690d9db8000060045568022b1c8c1227a0000060055564e8d4a510006006556000600755600060085573c78621a1d7ddb6e0eeacf84a09a0a649763d42e5600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c78621a1d7ddb6e0eeacf84a09a0a649763d42e5600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506040518060400160405280600e81526020017f4255524e494e472053414959414e000000000000000000000000000000000000815250600b908162000163919062000b74565b506040518060400160405280600a81526020017f4255524e53414959414e00000000000000000000000000000000000000000000815250600c9081620001aa919062000b74565b506009600d60006101000a81548160ff021916908360ff1602179055506000600e556004600f55600060105560006011556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200023957600080fd5b5060006200024c6200086660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000cc5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000403919062000cc5565b6040518363ffffffff1660e01b81526004016200042292919062000d08565b6020604051808303816000875af115801562000442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000468919062000cc5565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160146000620005a46200086e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200068660105462000672600f54600e546200089760201b620027761790919060201c565b6200089760201b620027761790919060201c565b600781905550620006aa6011546007546200089760201b620027761790919060201c565b600881905550600160156000620006c66200086e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060035460126000620007a86200086660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007f66200086660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000857919062000d46565b60405180910390a35062000e72565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008a8919062000d92565b905083811015620008f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e79062000e50565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200097c57607f821691505b60208210810362000992576200099162000934565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009bd565b62000a088683620009bd565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5562000a4f62000a498462000a20565b62000a2a565b62000a20565b9050919050565b6000819050919050565b62000a718362000a34565b62000a8962000a808262000a5c565b848454620009ca565b825550505050565b600090565b62000aa062000a91565b62000aad81848462000a66565b505050565b5b8181101562000ad55762000ac960008262000a96565b60018101905062000ab3565b5050565b601f82111562000b245762000aee8162000998565b62000af984620009ad565b8101602085101562000b09578190505b62000b2162000b1885620009ad565b83018262000ab2565b50505b505050565b600082821c905092915050565b600062000b496000198460080262000b29565b1980831691505092915050565b600062000b64838362000b36565b9150826002028217905092915050565b62000b7f82620008fa565b67ffffffffffffffff81111562000b9b5762000b9a62000905565b5b62000ba7825462000963565b62000bb482828562000ad9565b600060209050601f83116001811462000bec576000841562000bd7578287015190505b62000be3858262000b56565b86555062000c53565b601f19841662000bfc8662000998565b60005b8281101562000c265784890151825560018201915060208501945060208101905062000bff565b8683101562000c46578489015162000c42601f89168262000b36565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c8d8262000c60565b9050919050565b62000c9f8162000c80565b811462000cab57600080fd5b50565b60008151905062000cbf8162000c94565b92915050565b60006020828403121562000cde5762000cdd62000c5b565b5b600062000cee8482850162000cae565b91505092915050565b62000d028162000c80565b82525050565b600060408201905062000d1f600083018562000cf7565b62000d2e602083018462000cf7565b9392505050565b62000d408162000a20565b82525050565b600060208201905062000d5d600083018462000d35565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d9f8262000a20565b915062000dac8362000a20565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000de45762000de362000d63565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e38601b8362000def565b915062000e458262000e00565b602082019050919050565b6000602082019050818103600083015262000e6b8162000e29565b9050919050565b608051614c9b62000e9560003960008181610fb70152610fe30152614c9b6000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063aa660bea116100dc578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063dd62ed3e14610b04578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063aa660bea146109f4578063bfbeba0d14610a1f578063c49b9a8014610a4a578063c867d60b14610a73578063da00097d14610ab0578063dd46706414610adb5761030a565b8063a073d37f11610149578063a457c2d711610123578063a457c2d71461093a578063a5d69d1f14610977578063a69df4b5146109a0578063a9059cbb146109b75761030a565b8063a073d37f146108bd578063a12a7d61146108e8578063a1980430146109115761030a565b8063715018a6146107cf57806375f0a874146107e65780637a9d0758146108115780638da5cb5b1461083c57806392a40c341461086757806395d89b41146108925761030a565b806339b09d4a1161024f578063557ed1ba116102085780635d098b38116101e25780635d098b3814610713578063602bc62b1461073c57806362940cc41461076757806370a08231146107925761030a565b8063557ed1ba146106805780635881f3ef146106ab5780635b35f9c9146106e85761030a565b806339b09d4a146105705780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780635342acb4146106435761030a565b80632198cf6c116102bc57806327c8f8351161029657806327c8f835146104b25780632b112e49146104dd578063313ce5671461050857806339509351146105335761030a565b80632198cf6c1461042357806323b872dd1461044c5780632563ae83146104895761030a565b806306fdde031461030f578063095ea7b31461033a57806309e72cf614610377578063158ece13146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b6040516103319190613bff565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613cba565b610cdf565b60405161036e9190613d15565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190613d3f565b60405180910390f35b3480156103ae57600080fd5b506103b7610d03565b6040516103c49190613d3f565b60405180910390f35b3480156103d957600080fd5b506103e2610d09565b6040516103ef9190613db9565b60405180910390f35b34801561040457600080fd5b5061040d610d2f565b60405161041a9190613d3f565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613e00565b610d39565b005b34801561045857600080fd5b50610473600480360381019061046e9190613e40565b610e29565b6040516104809190613d15565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613e93565b610f03565b005b3480156104be57600080fd5b506104c7610fb5565b6040516104d49190613ecf565b60405180910390f35b3480156104e957600080fd5b506104f2610fd9565b6040516104ff9190613d3f565b60405180910390f35b34801561051457600080fd5b5061051d61101d565b60405161052a9190613f06565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190613cba565b611034565b6040516105679190613d15565b60405180910390f35b34801561057c57600080fd5b506105856110e7565b6040516105929190613d3f565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613f21565b6110ed565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613e00565b61118c565b005b3480156105f957600080fd5b5061060261127c565b60405161060f9190613ecf565b60405180910390f35b34801561062457600080fd5b5061062d6112a2565b60405161063a9190613d15565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613f4e565b6112b5565b6040516106779190613d15565b60405180910390f35b34801561068c57600080fd5b506106956112d5565b6040516106a29190613d3f565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613f4e565b6112dd565b6040516106df9190613ecf565b60405180910390f35b3480156106f457600080fd5b506106fd6116ec565b60405161070a9190613f9c565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613f4e565b611712565b005b34801561074857600080fd5b506107516117eb565b60405161075e9190613d3f565b60405180910390f35b34801561077357600080fd5b5061077c6117f5565b6040516107899190613d3f565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613f4e565b6117fb565b6040516107c69190613d3f565b60405180910390f35b3480156107db57600080fd5b506107e4611844565b005b3480156107f257600080fd5b506107fb611997565b6040516108089190613f9c565b60405180910390f35b34801561081d57600080fd5b506108266119bd565b6040516108339190613d3f565b60405180910390f35b34801561084857600080fd5b506108516119c3565b60405161085e9190613ecf565b60405180910390f35b34801561087357600080fd5b5061087c6119ec565b6040516108899190613d3f565b60405180910390f35b34801561089e57600080fd5b506108a76119f2565b6040516108b49190613bff565b60405180910390f35b3480156108c957600080fd5b506108d2611a84565b6040516108df9190613d3f565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190613fb7565b611a8e565b005b34801561091d57600080fd5b5061093860048036038101906109339190613f4e565b611b93565b005b34801561094657600080fd5b50610961600480360381019061095c9190613cba565b611c6c565b60405161096e9190613d15565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190613e93565b611d39565b005b3480156109ac57600080fd5b506109b5611deb565b005b3480156109c357600080fd5b506109de60048036038101906109d99190613cba565b611fbf565b6040516109eb9190613d15565b60405180910390f35b348015610a0057600080fd5b50610a09611fde565b604051610a169190613d3f565b60405180910390f35b348015610a2b57600080fd5b50610a34611fe4565b604051610a419190613d3f565b60405180910390f35b348015610a5657600080fd5b50610a716004803603810190610a6c9190613e93565b611fea565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190613f4e565b6120d3565b604051610aa79190613d15565b60405180910390f35b348015610abc57600080fd5b50610ac56120f3565b604051610ad29190613d15565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190613f21565b612106565b005b348015610b1057600080fd5b50610b2b6004803603810190610b26919061401e565b6122cd565b604051610b389190613d3f565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190613f21565b612354565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613e00565b6123f3565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613f21565b6124e3565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613f4e565b612582565b005b348015610bf157600080fd5b50610bfa612743565b604051610c079190613d15565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613f4e565b612756565b604051610c449190613d15565b60405180910390f35b6060600b8054610c5c9061408d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c889061408d565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec6127d4565b84846127dc565b6001905092915050565b60055481565b60115481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d416127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc59061410a565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e368484846129a5565b50610ef884610e436127d4565b610ef385604051806060016040528060288152602001614c1960289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea96127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b6127dc565b600190509392505050565b610f0b6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f9061410a565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110186110077f00000000000000000000000000000000000000000000000000000000000000006117fb565b6003546130e890919063ffffffff16565b905090565b6000600d60009054906101000a900460ff16905090565b60006110dd6110416127d4565b846110d885601360006110526127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b6127dc565b6001905092915050565b60085481565b6110f56127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061410a565b60405180910390fd5b8060068190555050565b6111946127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112189061410a565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006112e76127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b9061410a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e8919061413f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611473919061413f565b6040518363ffffffff1660e01b815260040161149092919061416c565b602060405180830381865afa1580156114ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d1919061413f565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611664578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611576919061413f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611601919061413f565b6040518363ffffffff1660e01b815260040161161e92919061416c565b6020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611661919061413f565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171a6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e9061410a565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b600f5481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61184c6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09061410a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6060600c8054611a019061408d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2d9061408d565b8015611a7a5780601f10611a4f57610100808354040283529160200191611a7a565b820191906000526020600020905b815481529060010190602001808311611a5d57829003601f168201915b5050505050905090565b6000600654905090565b611a966127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a9061410a565b60405180910390fd5b83600e8190555082600f819055508160108190555080601181905550611b6a601054611b5c600f54600e5461277690919063ffffffff16565b61277690919063ffffffff16565b600781905550611b8760115460075461277690919063ffffffff16565b60088190555050505050565b611b9b6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f9061410a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d2f611c796127d4565b84611d2a85604051806060016040528060258152602001614c416025913960136000611ca36127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b6127dc565b6001905092915050565b611d416127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc59061410a565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290614207565b60405180910390fd5b6002544211611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690614273565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611fd3611fcc6127d4565b84846129a5565b506001905092915050565b60075481565b600e5481565b611ff26127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120769061410a565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120c89190613d15565b60405180910390a150565b60156020528060005260406000206000915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b61210e6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929061410a565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261224991906142c2565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61235c6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09061410a565b60405180910390fd5b8060048190555050565b6123fb6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061410a565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124eb6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256f9061410a565b60405180910390fd5b8060058190555050565b61258a6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260e9061410a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9061438a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b600080828461278591906142c2565b9050838110156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c1906143f6565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361284b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284290614488565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b19061451a565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129989190613d3f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0c906145ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7b9061463e565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b285750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5e906146aa565b60405180910390fd5b60008211612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba19061473c565b60405180910390fd5b601860149054906101000a900460ff1615612bd157612bca848484613132565b905061307d565b612bd96119c3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612c475750612c176119c3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c9257600454821115612c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c88906147ce565b60405180910390fd5b5b6000612c9d306117fb565b905060006006548210159050808015612cc35750601860149054906101000a900460ff16155b8015612d1d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d355750601860159054906101000a900460ff165b15612d5f57601860169054906101000a900460ff1615612d555760065491505b612d5e82613305565b5b612de8846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ece5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee257612edd8787876134cc565b612ee4565b845b9050601860179054906101000a900460ff168015612f4c5750601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7b57600554612f6f82612f61896117fb565b61277690919063ffffffff16565b1115612f7a57600080fd5b5b612fcd81601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161306d9190613d3f565b60405180910390a3600193505050505b9392505050565b60008383111582906130cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c39190613bff565b60405180910390fd5b50600083856130db91906147ee565b9050809150509392505050565b600061312a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613084565b905092915050565b60006131bd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325282601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132f29190613d3f565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff021916908315150217905550600061335e6002613350600e546133426007548761369390919063ffffffff16565b6136dd90919063ffffffff16565b61369390919063ffffffff16565b9050600061337582846130e890919063ffffffff16565b905061338081613757565b600047905060006133b16133a06002600e5461369390919063ffffffff16565b6007546130e890919063ffffffff16565b905060006133ef60026133e1846133d3600e54886136dd90919063ffffffff16565b61369390919063ffffffff16565b61369390919063ffffffff16565b9050600061341a8361340c601054876136dd90919063ffffffff16565b61369390919063ffffffff16565b905060006134438261343585886130e890919063ffffffff16565b6130e890919063ffffffff16565b9050613471600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826139d3565b61349d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836139d3565b6134a78784613a1e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135515761354c606461353e600754866136dd90919063ffffffff16565b61369390919063ffffffff16565b61357a565b613579606461356b600854866136dd90919063ffffffff16565b61369390919063ffffffff16565b5b90506135ce81601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161366e9190613d3f565b60405180910390a361368981846130e890919063ffffffff16565b9150509392505050565b60006136d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b03565b905092915050565b60008083036136ef5760009050613751565b600082846136fd9190614822565b905082848261370c91906148ab565b1461374c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137439061494e565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137745761377361496e565b5b6040519080825280602002602001820160405280156137a25781602001602082028036833780820191505090505b50905030816000815181106137ba576137b961499d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613885919061413f565b816001815181106138995761389861499d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061390030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127dc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613964959493929190614ac5565b600060405180830381600087803b15801561397e57600080fd5b505af1158015613992573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516139c7929190614b1f565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a19573d6000803e3d6000fd5b505050565b613a4b30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127dc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a976119c3565b426040518863ffffffff1660e01b8152600401613ab996959493929190614b4f565b60606040518083038185885af1158015613ad7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613afc9190614bc5565b5050505050565b60008083118290613b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b419190613bff565b60405180910390fd5b5060008385613b5991906148ab565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ba0578082015181840152602081019050613b85565b83811115613baf576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bd182613b66565b613bdb8185613b71565b9350613beb818560208601613b82565b613bf481613bb5565b840191505092915050565b60006020820190508181036000830152613c198184613bc6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c5182613c26565b9050919050565b613c6181613c46565b8114613c6c57600080fd5b50565b600081359050613c7e81613c58565b92915050565b6000819050919050565b613c9781613c84565b8114613ca257600080fd5b50565b600081359050613cb481613c8e565b92915050565b60008060408385031215613cd157613cd0613c21565b5b6000613cdf85828601613c6f565b9250506020613cf085828601613ca5565b9150509250929050565b60008115159050919050565b613d0f81613cfa565b82525050565b6000602082019050613d2a6000830184613d06565b92915050565b613d3981613c84565b82525050565b6000602082019050613d546000830184613d30565b92915050565b6000819050919050565b6000613d7f613d7a613d7584613c26565b613d5a565b613c26565b9050919050565b6000613d9182613d64565b9050919050565b6000613da382613d86565b9050919050565b613db381613d98565b82525050565b6000602082019050613dce6000830184613daa565b92915050565b613ddd81613cfa565b8114613de857600080fd5b50565b600081359050613dfa81613dd4565b92915050565b60008060408385031215613e1757613e16613c21565b5b6000613e2585828601613c6f565b9250506020613e3685828601613deb565b9150509250929050565b600080600060608486031215613e5957613e58613c21565b5b6000613e6786828701613c6f565b9350506020613e7886828701613c6f565b9250506040613e8986828701613ca5565b9150509250925092565b600060208284031215613ea957613ea8613c21565b5b6000613eb784828501613deb565b91505092915050565b613ec981613c46565b82525050565b6000602082019050613ee46000830184613ec0565b92915050565b600060ff82169050919050565b613f0081613eea565b82525050565b6000602082019050613f1b6000830184613ef7565b92915050565b600060208284031215613f3757613f36613c21565b5b6000613f4584828501613ca5565b91505092915050565b600060208284031215613f6457613f63613c21565b5b6000613f7284828501613c6f565b91505092915050565b6000613f8682613c26565b9050919050565b613f9681613f7b565b82525050565b6000602082019050613fb16000830184613f8d565b92915050565b60008060008060808587031215613fd157613fd0613c21565b5b6000613fdf87828801613ca5565b9450506020613ff087828801613ca5565b935050604061400187828801613ca5565b925050606061401287828801613ca5565b91505092959194509250565b6000806040838503121561403557614034613c21565b5b600061404385828601613c6f565b925050602061405485828601613c6f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140a557607f821691505b6020821081036140b8576140b761405e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140f4602083613b71565b91506140ff826140be565b602082019050919050565b60006020820190508181036000830152614123816140e7565b9050919050565b60008151905061413981613c58565b92915050565b60006020828403121561415557614154613c21565b5b60006141638482850161412a565b91505092915050565b60006040820190506141816000830185613ec0565b61418e6020830184613ec0565b9392505050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b60006141f1602383613b71565b91506141fc82614195565b604082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b600061425d601f83613b71565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142cd82613c84565b91506142d883613c84565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561430d5761430c614293565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614374602683613b71565b915061437f82614318565b604082019050919050565b600060208201905081810360008301526143a381614367565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143e0601b83613b71565b91506143eb826143aa565b602082019050919050565b6000602082019050818103600083015261440f816143d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614472602483613b71565b915061447d82614416565b604082019050919050565b600060208201905081810360008301526144a181614465565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614504602283613b71565b915061450f826144a8565b604082019050919050565b60006020820190508181036000830152614533816144f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614596602583613b71565b91506145a18261453a565b604082019050919050565b600060208201905081810360008301526145c581614589565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614628602383613b71565b9150614633826145cc565b604082019050919050565b600060208201905081810360008301526146578161461b565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b6000614694601f83613b71565b915061469f8261465e565b602082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614726602983613b71565b9150614731826146ca565b604082019050919050565b6000602082019050818103600083015261475581614719565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006147b8602883613b71565b91506147c38261475c565b604082019050919050565b600060208201905081810360008301526147e7816147ab565b9050919050565b60006147f982613c84565b915061480483613c84565b92508282101561481757614816614293565b5b828203905092915050565b600061482d82613c84565b915061483883613c84565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561487157614870614293565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148b682613c84565b91506148c183613c84565b9250826148d1576148d061487c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614938602183613b71565b9150614943826148dc565b604082019050919050565b600060208201905081810360008301526149678161492b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149f16149ec6149e7846149cc565b613d5a565b613c84565b9050919050565b614a01816149d6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3c81613c46565b82525050565b6000614a4e8383614a33565b60208301905092915050565b6000602082019050919050565b6000614a7282614a07565b614a7c8185614a12565b9350614a8783614a23565b8060005b83811015614ab8578151614a9f8882614a42565b9750614aaa83614a5a565b925050600181019050614a8b565b5085935050505092915050565b600060a082019050614ada6000830188613d30565b614ae760208301876149f8565b8181036040830152614af98186614a67565b9050614b086060830185613ec0565b614b156080830184613d30565b9695505050505050565b6000604082019050614b346000830185613d30565b8181036020830152614b468184614a67565b90509392505050565b600060c082019050614b646000830189613ec0565b614b716020830188613d30565b614b7e60408301876149f8565b614b8b60608301866149f8565b614b986080830185613ec0565b614ba560a0830184613d30565b979650505050505050565b600081519050614bbf81613c8e565b92915050565b600080600060608486031215614bde57614bdd613c21565b5b6000614bec86828701614bb0565b9350506020614bfd86828701614bb0565b9250506040614c0e86828701614bb0565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220368db9cd95d97a2ff354ed1e89a15700a1b8d16d034b7e1b49ba2c0cbf836af364736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063715018a611610190578063aa660bea116100dc578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063dd62ed3e14610b04578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063aa660bea146109f4578063bfbeba0d14610a1f578063c49b9a8014610a4a578063c867d60b14610a73578063da00097d14610ab0578063dd46706414610adb5761030a565b8063a073d37f11610149578063a457c2d711610123578063a457c2d71461093a578063a5d69d1f14610977578063a69df4b5146109a0578063a9059cbb146109b75761030a565b8063a073d37f146108bd578063a12a7d61146108e8578063a1980430146109115761030a565b8063715018a6146107cf57806375f0a874146107e65780637a9d0758146108115780638da5cb5b1461083c57806392a40c341461086757806395d89b41146108925761030a565b806339b09d4a1161024f578063557ed1ba116102085780635d098b38116101e25780635d098b3814610713578063602bc62b1461073c57806362940cc41461076757806370a08231146107925761030a565b8063557ed1ba146106805780635881f3ef146106ab5780635b35f9c9146106e85761030a565b806339b09d4a146105705780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780635342acb4146106435761030a565b80632198cf6c116102bc57806327c8f8351161029657806327c8f835146104b25780632b112e49146104dd578063313ce5671461050857806339509351146105335761030a565b80632198cf6c1461042357806323b872dd1461044c5780632563ae83146104895761030a565b806306fdde031461030f578063095ea7b31461033a57806309e72cf614610377578063158ece13146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b6040516103319190613bff565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613cba565b610cdf565b60405161036e9190613d15565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190613d3f565b60405180910390f35b3480156103ae57600080fd5b506103b7610d03565b6040516103c49190613d3f565b60405180910390f35b3480156103d957600080fd5b506103e2610d09565b6040516103ef9190613db9565b60405180910390f35b34801561040457600080fd5b5061040d610d2f565b60405161041a9190613d3f565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613e00565b610d39565b005b34801561045857600080fd5b50610473600480360381019061046e9190613e40565b610e29565b6040516104809190613d15565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190613e93565b610f03565b005b3480156104be57600080fd5b506104c7610fb5565b6040516104d49190613ecf565b60405180910390f35b3480156104e957600080fd5b506104f2610fd9565b6040516104ff9190613d3f565b60405180910390f35b34801561051457600080fd5b5061051d61101d565b60405161052a9190613f06565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190613cba565b611034565b6040516105679190613d15565b60405180910390f35b34801561057c57600080fd5b506105856110e7565b6040516105929190613d3f565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613f21565b6110ed565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613e00565b61118c565b005b3480156105f957600080fd5b5061060261127c565b60405161060f9190613ecf565b60405180910390f35b34801561062457600080fd5b5061062d6112a2565b60405161063a9190613d15565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613f4e565b6112b5565b6040516106779190613d15565b60405180910390f35b34801561068c57600080fd5b506106956112d5565b6040516106a29190613d3f565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613f4e565b6112dd565b6040516106df9190613ecf565b60405180910390f35b3480156106f457600080fd5b506106fd6116ec565b60405161070a9190613f9c565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613f4e565b611712565b005b34801561074857600080fd5b506107516117eb565b60405161075e9190613d3f565b60405180910390f35b34801561077357600080fd5b5061077c6117f5565b6040516107899190613d3f565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613f4e565b6117fb565b6040516107c69190613d3f565b60405180910390f35b3480156107db57600080fd5b506107e4611844565b005b3480156107f257600080fd5b506107fb611997565b6040516108089190613f9c565b60405180910390f35b34801561081d57600080fd5b506108266119bd565b6040516108339190613d3f565b60405180910390f35b34801561084857600080fd5b506108516119c3565b60405161085e9190613ecf565b60405180910390f35b34801561087357600080fd5b5061087c6119ec565b6040516108899190613d3f565b60405180910390f35b34801561089e57600080fd5b506108a76119f2565b6040516108b49190613bff565b60405180910390f35b3480156108c957600080fd5b506108d2611a84565b6040516108df9190613d3f565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190613fb7565b611a8e565b005b34801561091d57600080fd5b5061093860048036038101906109339190613f4e565b611b93565b005b34801561094657600080fd5b50610961600480360381019061095c9190613cba565b611c6c565b60405161096e9190613d15565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190613e93565b611d39565b005b3480156109ac57600080fd5b506109b5611deb565b005b3480156109c357600080fd5b506109de60048036038101906109d99190613cba565b611fbf565b6040516109eb9190613d15565b60405180910390f35b348015610a0057600080fd5b50610a09611fde565b604051610a169190613d3f565b60405180910390f35b348015610a2b57600080fd5b50610a34611fe4565b604051610a419190613d3f565b60405180910390f35b348015610a5657600080fd5b50610a716004803603810190610a6c9190613e93565b611fea565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190613f4e565b6120d3565b604051610aa79190613d15565b60405180910390f35b348015610abc57600080fd5b50610ac56120f3565b604051610ad29190613d15565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190613f21565b612106565b005b348015610b1057600080fd5b50610b2b6004803603810190610b26919061401e565b6122cd565b604051610b389190613d3f565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190613f21565b612354565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613e00565b6123f3565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613f21565b6124e3565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613f4e565b612582565b005b348015610bf157600080fd5b50610bfa612743565b604051610c079190613d15565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613f4e565b612756565b604051610c449190613d15565b60405180910390f35b6060600b8054610c5c9061408d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c889061408d565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec6127d4565b84846127dc565b6001905092915050565b60055481565b60115481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d416127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc59061410a565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e368484846129a5565b50610ef884610e436127d4565b610ef385604051806060016040528060288152602001614c1960289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea96127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b6127dc565b600190509392505050565b610f0b6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f9061410a565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006110186110077f000000000000000000000000000000000000000000000000000000000000dead6117fb565b6003546130e890919063ffffffff16565b905090565b6000600d60009054906101000a900460ff16905090565b60006110dd6110416127d4565b846110d885601360006110526127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b6127dc565b6001905092915050565b60085481565b6110f56127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061410a565b60405180910390fd5b8060068190555050565b6111946127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112189061410a565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006112e76127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b9061410a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e8919061413f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611473919061413f565b6040518363ffffffff1660e01b815260040161149092919061416c565b602060405180830381865afa1580156114ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d1919061413f565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611664578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611576919061413f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611601919061413f565b6040518363ffffffff1660e01b815260040161161e92919061416c565b6020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611661919061413f565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171a6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e9061410a565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b600f5481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61184c6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09061410a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b6060600c8054611a019061408d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2d9061408d565b8015611a7a5780601f10611a4f57610100808354040283529160200191611a7a565b820191906000526020600020905b815481529060010190602001808311611a5d57829003601f168201915b5050505050905090565b6000600654905090565b611a966127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a9061410a565b60405180910390fd5b83600e8190555082600f819055508160108190555080601181905550611b6a601054611b5c600f54600e5461277690919063ffffffff16565b61277690919063ffffffff16565b600781905550611b8760115460075461277690919063ffffffff16565b60088190555050505050565b611b9b6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f9061410a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d2f611c796127d4565b84611d2a85604051806060016040528060258152602001614c416025913960136000611ca36127d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b6127dc565b6001905092915050565b611d416127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc59061410a565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290614207565b60405180910390fd5b6002544211611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690614273565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611fd3611fcc6127d4565b84846129a5565b506001905092915050565b60075481565b600e5481565b611ff26127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120769061410a565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120c89190613d15565b60405180910390a150565b60156020528060005260406000206000915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b61210e6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929061410a565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261224991906142c2565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61235c6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09061410a565b60405180910390fd5b8060048190555050565b6123fb6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061410a565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124eb6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256f9061410a565b60405180910390fd5b8060058190555050565b61258a6127d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260e9061410a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9061438a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b600080828461278591906142c2565b9050838110156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c1906143f6565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361284b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284290614488565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b19061451a565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129989190613d3f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0c906145ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7b9061463e565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b285750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5e906146aa565b60405180910390fd5b60008211612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba19061473c565b60405180910390fd5b601860149054906101000a900460ff1615612bd157612bca848484613132565b905061307d565b612bd96119c3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612c475750612c176119c3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c9257600454821115612c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c88906147ce565b60405180910390fd5b5b6000612c9d306117fb565b905060006006548210159050808015612cc35750601860149054906101000a900460ff16155b8015612d1d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d355750601860159054906101000a900460ff165b15612d5f57601860169054906101000a900460ff1615612d555760065491505b612d5e82613305565b5b612de8846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ece5750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee257612edd8787876134cc565b612ee4565b845b9050601860179054906101000a900460ff168015612f4c5750601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7b57600554612f6f82612f61896117fb565b61277690919063ffffffff16565b1115612f7a57600080fd5b5b612fcd81601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161306d9190613d3f565b60405180910390a3600193505050505b9392505050565b60008383111582906130cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c39190613bff565b60405180910390fd5b50600083856130db91906147ee565b9050809150509392505050565b600061312a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613084565b905092915050565b60006131bd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130849092919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325282601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132f29190613d3f565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff021916908315150217905550600061335e6002613350600e546133426007548761369390919063ffffffff16565b6136dd90919063ffffffff16565b61369390919063ffffffff16565b9050600061337582846130e890919063ffffffff16565b905061338081613757565b600047905060006133b16133a06002600e5461369390919063ffffffff16565b6007546130e890919063ffffffff16565b905060006133ef60026133e1846133d3600e54886136dd90919063ffffffff16565b61369390919063ffffffff16565b61369390919063ffffffff16565b9050600061341a8361340c601054876136dd90919063ffffffff16565b61369390919063ffffffff16565b905060006134438261343585886130e890919063ffffffff16565b6130e890919063ffffffff16565b9050613471600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826139d3565b61349d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836139d3565b6134a78784613a1e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135515761354c606461353e600754866136dd90919063ffffffff16565b61369390919063ffffffff16565b61357a565b613579606461356b600854866136dd90919063ffffffff16565b61369390919063ffffffff16565b5b90506135ce81601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277690919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161366e9190613d3f565b60405180910390a361368981846130e890919063ffffffff16565b9150509392505050565b60006136d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b03565b905092915050565b60008083036136ef5760009050613751565b600082846136fd9190614822565b905082848261370c91906148ab565b1461374c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137439061494e565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137745761377361496e565b5b6040519080825280602002602001820160405280156137a25781602001602082028036833780820191505090505b50905030816000815181106137ba576137b961499d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613885919061413f565b816001815181106138995761389861499d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061390030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127dc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613964959493929190614ac5565b600060405180830381600087803b15801561397e57600080fd5b505af1158015613992573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516139c7929190614b1f565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a19573d6000803e3d6000fd5b505050565b613a4b30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127dc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a976119c3565b426040518863ffffffff1660e01b8152600401613ab996959493929190614b4f565b60606040518083038185885af1158015613ad7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613afc9190614bc5565b5050505050565b60008083118290613b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b419190613bff565b60405180910390fd5b5060008385613b5991906148ab565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ba0578082015181840152602081019050613b85565b83811115613baf576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bd182613b66565b613bdb8185613b71565b9350613beb818560208601613b82565b613bf481613bb5565b840191505092915050565b60006020820190508181036000830152613c198184613bc6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c5182613c26565b9050919050565b613c6181613c46565b8114613c6c57600080fd5b50565b600081359050613c7e81613c58565b92915050565b6000819050919050565b613c9781613c84565b8114613ca257600080fd5b50565b600081359050613cb481613c8e565b92915050565b60008060408385031215613cd157613cd0613c21565b5b6000613cdf85828601613c6f565b9250506020613cf085828601613ca5565b9150509250929050565b60008115159050919050565b613d0f81613cfa565b82525050565b6000602082019050613d2a6000830184613d06565b92915050565b613d3981613c84565b82525050565b6000602082019050613d546000830184613d30565b92915050565b6000819050919050565b6000613d7f613d7a613d7584613c26565b613d5a565b613c26565b9050919050565b6000613d9182613d64565b9050919050565b6000613da382613d86565b9050919050565b613db381613d98565b82525050565b6000602082019050613dce6000830184613daa565b92915050565b613ddd81613cfa565b8114613de857600080fd5b50565b600081359050613dfa81613dd4565b92915050565b60008060408385031215613e1757613e16613c21565b5b6000613e2585828601613c6f565b9250506020613e3685828601613deb565b9150509250929050565b600080600060608486031215613e5957613e58613c21565b5b6000613e6786828701613c6f565b9350506020613e7886828701613c6f565b9250506040613e8986828701613ca5565b9150509250925092565b600060208284031215613ea957613ea8613c21565b5b6000613eb784828501613deb565b91505092915050565b613ec981613c46565b82525050565b6000602082019050613ee46000830184613ec0565b92915050565b600060ff82169050919050565b613f0081613eea565b82525050565b6000602082019050613f1b6000830184613ef7565b92915050565b600060208284031215613f3757613f36613c21565b5b6000613f4584828501613ca5565b91505092915050565b600060208284031215613f6457613f63613c21565b5b6000613f7284828501613c6f565b91505092915050565b6000613f8682613c26565b9050919050565b613f9681613f7b565b82525050565b6000602082019050613fb16000830184613f8d565b92915050565b60008060008060808587031215613fd157613fd0613c21565b5b6000613fdf87828801613ca5565b9450506020613ff087828801613ca5565b935050604061400187828801613ca5565b925050606061401287828801613ca5565b91505092959194509250565b6000806040838503121561403557614034613c21565b5b600061404385828601613c6f565b925050602061405485828601613c6f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140a557607f821691505b6020821081036140b8576140b761405e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140f4602083613b71565b91506140ff826140be565b602082019050919050565b60006020820190508181036000830152614123816140e7565b9050919050565b60008151905061413981613c58565b92915050565b60006020828403121561415557614154613c21565b5b60006141638482850161412a565b91505092915050565b60006040820190506141816000830185613ec0565b61418e6020830184613ec0565b9392505050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b60006141f1602383613b71565b91506141fc82614195565b604082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b600061425d601f83613b71565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142cd82613c84565b91506142d883613c84565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561430d5761430c614293565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614374602683613b71565b915061437f82614318565b604082019050919050565b600060208201905081810360008301526143a381614367565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143e0601b83613b71565b91506143eb826143aa565b602082019050919050565b6000602082019050818103600083015261440f816143d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614472602483613b71565b915061447d82614416565b604082019050919050565b600060208201905081810360008301526144a181614465565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614504602283613b71565b915061450f826144a8565b604082019050919050565b60006020820190508181036000830152614533816144f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614596602583613b71565b91506145a18261453a565b604082019050919050565b600060208201905081810360008301526145c581614589565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614628602383613b71565b9150614633826145cc565b604082019050919050565b600060208201905081810360008301526146578161461b565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b6000614694601f83613b71565b915061469f8261465e565b602082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614726602983613b71565b9150614731826146ca565b604082019050919050565b6000602082019050818103600083015261475581614719565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006147b8602883613b71565b91506147c38261475c565b604082019050919050565b600060208201905081810360008301526147e7816147ab565b9050919050565b60006147f982613c84565b915061480483613c84565b92508282101561481757614816614293565b5b828203905092915050565b600061482d82613c84565b915061483883613c84565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561487157614870614293565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148b682613c84565b91506148c183613c84565b9250826148d1576148d061487c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614938602183613b71565b9150614943826148dc565b604082019050919050565b600060208201905081810360008301526149678161492b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149f16149ec6149e7846149cc565b613d5a565b613c84565b9050919050565b614a01816149d6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3c81613c46565b82525050565b6000614a4e8383614a33565b60208301905092915050565b6000602082019050919050565b6000614a7282614a07565b614a7c8185614a12565b9350614a8783614a23565b8060005b83811015614ab8578151614a9f8882614a42565b9750614aaa83614a5a565b925050600181019050614a8b565b5085935050505092915050565b600060a082019050614ada6000830188613d30565b614ae760208301876149f8565b8181036040830152614af98186614a67565b9050614b086060830185613ec0565b614b156080830184613d30565b9695505050505050565b6000604082019050614b346000830185613d30565b8181036020830152614b468184614a67565b90509392505050565b600060c082019050614b646000830189613ec0565b614b716020830188613d30565b614b7e60408301876149f8565b614b8b60608301866149f8565b614b986080830185613ec0565b614ba560a0830184613d30565b979650505050505050565b600081519050614bbf81613c8e565b92915050565b600080600060608486031215614bde57614bdd613c21565b5b6000614bec86828701614bb0565b9350506020614bfd86828701614bb0565b9250506040614c0e86828701614bb0565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220368db9cd95d97a2ff354ed1e89a15700a1b8d16d034b7e1b49ba2c0cbf836af364736f6c634300080f0033

Deployed Bytecode Sourcemap

15059:12973:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17979:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19279:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15300:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16021:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16352:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18256:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20738:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22948:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20617:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15688:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21701:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18165:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18648:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15453:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20991:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19793:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16400:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16469:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16181:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6565:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21975:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21123:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6463:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15944:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18364:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6055:148;;;;;;;;;;;;;:::i;:::-;;15490:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15980:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5830:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15249:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18070:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19151:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20071:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21256:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18874:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21564:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6901:305;;;;;;;;;;;;;:::i;:::-;;22773:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15418:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15904:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21385:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16238:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16516:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6663:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18497:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20503:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19928:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20881:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6211:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16568:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16297:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17979:83;18016:13;18049:5;18042:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17979:83;:::o;19279:161::-;19354:4;19371:39;19380:12;:10;:12::i;:::-;19394:7;19403:6;19371:8;:39::i;:::-;19428:4;19421:11;;19279:161;;;;:::o;15300:46::-;;;;:::o;16021:28::-;;;;:::o;16352:41::-;;;;;;;;;;;;;:::o;18256:100::-;18309:7;18336:12;;18329:19;;18256:100;:::o;20738:135::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20859:6:::1;20829:19;:27;20849:6;20829:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20738:135:::0;;:::o;22948:313::-;23046:4;23063:36;23073:6;23081:9;23092:6;23063:9;:36::i;:::-;;23110:121;23119:6;23127:12;:10;:12::i;:::-;23141:89;23179:6;23141:89;;;;;;;;;;;;;;;;;:11;:19;23153:6;23141:19;;;;;;;;;;;;;;;:33;23161:12;:10;:12::i;:::-;23141:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23110:8;:121::i;:::-;23249:4;23242:11;;22948:313;;;;;:::o;20617:113::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20714:8:::1;20695:16;;:27;;;;;;;;;;;;;;;;;;20617:113:::0;:::o;15688:81::-;;;:::o;21701:128::-;21754:7;21781:40;21798:22;21808:11;21798:9;:22::i;:::-;21781:12;;:16;;:40;;;;:::i;:::-;21774:47;;21701:128;:::o;18165:83::-;18206:5;18231:9;;;;;;;;;;;18224:16;;18165:83;:::o;18648:218::-;18736:4;18753:83;18762:12;:10;:12::i;:::-;18776:7;18785:50;18824:10;18785:11;:25;18797:12;:10;:12::i;:::-;18785:25;;;;;;;;;;;;;;;:34;18811:7;18785:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18753:8;:83::i;:::-;18854:4;18847:11;;18648:218;;;;:::o;15453:28::-;;;;:::o;20991:124::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21099:8:::1;21073:23;:34;;;;20991:124:::0;:::o;19793:127::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19904:8:::1;19879:13;:22;19893:7;19879:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19793:127:::0;;:::o;16400:28::-;;;;;;;;;;;;;:::o;16469:40::-;;;;;;;;;;;;;:::o;16181:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6565:90::-;6605:7;6632:15;6625:22;;6565:90;:::o;21975:696::-;22055:22;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22092:35:::1;22149:16;22092:74;;22215:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22197:53;;;22259:4;22266:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22197:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22180:110;;22332:1;22306:28;;:14;:28;;::::0;22303:225:::1;;22420:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22402:74;;;22485:4;22492:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22402:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22385:131;;22303:225;22556:14;22540:13;;:30;;;;;;;;;;;;;;;;;;22622:16;22604:15;;:34;;;;;;;;;;;;;;;;;;22079:592;21975:696:::0;;;:::o;15590:90::-;;;;;;;;;;;;;:::o;21123:125::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21229:10:::1;21203:15;;:37;;;;;;;;;;;;;;;;;;21123:125:::0;:::o;6463:90::-;6509:7;6536:9;;6529:16;;6463:90;:::o;15944:29::-;;;;:::o;18364:119::-;18430:7;18457:9;:18;18467:7;18457:18;;;;;;;;;;;;;;;;18450:25;;18364:119;;;:::o;6055:148::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6162:1:::1;6125:40;;6146:6;::::0;::::1;;;;;;;;6125:40;;;;;;;;;;;;6193:1;6176:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6055:148::o:0;15490:92::-;;;;;;;;;;;;;:::o;15980:29::-;;;;:::o;5830:79::-;5868:7;5895:6;;;;;;;;;;;5888:13;;5830:79;:::o;15249:43::-;;;;:::o;18070:87::-;18109:13;18142:7;18135:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18070:87;:::o;19151:120::-;19213:7;19240:23;;19233:30;;19151:120;:::o;20071:424::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20238:15:::1;20221:14;:32;;;;20277:15;20264:10;:28;;;;20316:13;20303:10;:26;;;;20352:17;20340:9;:29;;;;20394:46;20429:10;;20394:30;20413:10;;20394:14;;:18;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;20382:9;:58;;;;20463:24;20477:9;;20463;;:13;;:24;;;;:::i;:::-;20451:9;:36;;;;20071:424:::0;;;;:::o;21256:121::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21358:10:::1;21334:13;;:35;;;;;;;;;;;;;;;;;;21256:121:::0;:::o;18874:269::-;18967:4;18984:129;18993:12;:10;:12::i;:::-;19007:7;19016:96;19055:15;19016:96;;;;;;;;;;;;;;;;;:11;:25;19028:12;:10;:12::i;:::-;19016:25;;;;;;;;;;;;;;;:34;19042:7;19016:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18984:8;:129::i;:::-;19131:4;19124:11;;18874:269;;;;:::o;21564:125::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21673:8:::1;21645:25;;:36;;;;;;;;;;;;;;;;;;21564:125:::0;:::o;6901:305::-;6971:10;6953:28;;:14;;;;;;;;;;;:28;;;6945:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:9;;7040:15;:27;7032:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7149:14;;;;;;;;;;;7120:44;;7141:6;;;;;;;;;;7120:44;;;;;;;;;;;;7184:14;;;;;;;;;;;7175:6;;:23;;;;;;;;;;;;;;;;;;6901:305::o;22773:167::-;22851:4;22868:42;22878:12;:10;:12::i;:::-;22892:9;22903:6;22868:9;:42::i;:::-;;22928:4;22921:11;;22773:167;;;;:::o;15418:28::-;;;;:::o;15904:33::-;;;;:::o;21385:171::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21486:8:::1;21462:21;;:32;;;;;;;;;;;;;;;;;;21510:38;21539:8;21510:38;;;;;;:::i;:::-;;;;;;;;21385:171:::0;:::o;16238:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16516:45::-;;;;;;;;;;;;;:::o;6663:226::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6744:6:::1;::::0;::::1;;;;;;;;6727:14;;:23;;;;;;;;;;;;;;;;;;6778:1;6761:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6821:4;6803:15;:22;;;;:::i;:::-;6791:9;:34;;;;6878:1;6841:40;;6862:6;::::0;::::1;;;;;;;;6841:40;;;;;;;;;;;;6663:226:::0;:::o;18497:143::-;18578:7;18605:11;:18;18617:5;18605:18;;;;;;;;;;;;;;;:27;18624:7;18605:27;;;;;;;;;;;;;;;;18598:34;;18497:143;;;;:::o;20503:106::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:11:::1;20580:7;:21;;;;20503:106:::0;:::o;19928:135::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20047:8:::1;20018:17;:26;20036:7;20018:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19928:135:::0;;:::o;20881:102::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20967:8:::1;20953:10;:22;;;;20881:102:::0;:::o;6211:244::-;5974:12;:10;:12::i;:::-;5964:22;;:6;;;;;;;;;;:22;;;5956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6320:1:::1;6300:22;;:8;:22;;::::0;6292:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6410:8;6381:38;;6402:6;::::0;::::1;;;;;;;;6381:38;;;;;;;;;;;;6439:8;6430:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6211:244:::0;:::o;16568:35::-;;;;;;;;;;;;;:::o;16297:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;1200:181::-;1258:7;1278:9;1294:1;1290;:5;;;;:::i;:::-;1278:17;;1319:1;1314;:6;;1306:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1372:1;1365:8;;;1200:181;;;;:::o;132:115::-;185:15;228:10;213:26;;132:115;:::o;19448:337::-;19558:1;19541:19;;:5;:19;;;19533:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19639:1;19620:21;;:7;:21;;;19612:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19723:6;19693:11;:18;19705:5;19693:18;;;;;;;;;;;;;;;:27;19712:7;19693:27;;;;;;;;;;;;;;;:36;;;;19761:7;19745:32;;19754:5;19745:32;;;19770:6;19745:32;;;;;;:::i;:::-;;;;;;;;19448:337;;;:::o;23269:1879::-;23356:4;23401:1;23383:20;;:6;:20;;;23375:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23485:1;23464:23;;:9;:23;;;23456:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23547:13;:21;23561:6;23547:21;;;;;;;;;;;;;;;;;;;;;;;;;23546:22;:51;;;;;23573:13;:24;23587:9;23573:24;;;;;;;;;;;;;;;;;;;;;;;;;23572:25;23546:51;23538:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;23661:1;23652:6;:10;23644:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23732:16;;;;;;;;;;;23729:1412;;;23782:41;23797:6;23805:9;23816:6;23782:14;:41::i;:::-;23775:48;;;;23729:1412;23888:7;:5;:7::i;:::-;23878:17;;:6;:17;;;;:41;;;;;23912:7;:5;:7::i;:::-;23899:20;;:9;:20;;;;23878:41;23875:151;;;23958:7;;23948:6;:17;;23940:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23875:151;24054:28;24085:24;24103:4;24085:9;:24::i;:::-;24054:55;;24124:28;24179:23;;24155:20;:47;;24124:78;;24235:23;:44;;;;;24263:16;;;;;;;;;;;24262:17;24235:44;:71;;;;;24293:13;;;;;;;;;;;24283:23;;:6;:23;;;;24235:71;:96;;;;;24310:21;;;;;;;;;;;24235:96;24231:307;;;24369:25;;;;;;;;;;;24366:97;;;24440:23;;24417:46;;24366:97;24482:36;24497:20;24482:14;:36::i;:::-;24231:307;24574:53;24596:6;24574:53;;;;;;;;;;;;;;;;;:9;:17;24584:6;24574:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24554:9;:17;24564:6;24554:17;;;;;;;;;;;;;;;:73;;;;24644:19;24667:17;:25;24685:6;24667:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24696:17;:28;24714:9;24696:28;;;;;;;;;;;;;;;;;;;;;;;;;24667:57;24666:148;;24780:34;24788:6;24796:9;24807:6;24780:7;:34::i;:::-;24666:148;;;24771:6;24666:148;24644:170;;24834:16;;;;;;;;;;;:51;;;;;24855:19;:30;24875:9;24855:30;;;;;;;;;;;;;;;;;;;;;;;;;24854:31;24834:51;24831:133;;;24953:10;;24912:37;24937:11;24912:20;24922:9;24912;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24904:60;;;;;;24831:133;25004:37;25029:11;25004:9;:20;25014:9;25004:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24981:9;:20;24991:9;24981:20;;;;;;;;;;;;;;;:60;;;;25080:9;25063:40;;25072:6;25063:40;;;25091:11;25063:40;;;;;;:::i;:::-;;;;;;;;25125:4;25118:11;;;;;23269:1879;;;;;;:::o;1533:192::-;1619:7;1652:1;1647;:6;;1655:12;1639:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1679:9;1695:1;1691;:5;;;;:::i;:::-;1679:17;;1716:1;1709:8;;;1533:192;;;;;:::o;1389:136::-;1447:7;1474:43;1478:1;1481;1474:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1467:50;;1389:136;;;;:::o;25156:330::-;25249:4;25286:53;25308:6;25286:53;;;;;;;;;;;;;;;;;:9;:17;25296:6;25286:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25266:9;:17;25276:6;25266:17;;;;;;;;;;;;;;;:73;;;;25373:32;25398:6;25373:9;:20;25383:9;25373:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25350:9;:20;25360:9;25350:20;;;;;;;;;;;;;;;:55;;;;25438:9;25421:35;;25430:6;25421:35;;;25449:6;25421:35;;;;;;:::i;:::-;;;;;;;;25474:4;25467:11;;25156:330;;;;;:::o;25494:874::-;17045:4;17026:16;;:23;;;;;;;;;;;;;;;;;;25575:19:::1;25597:49;25644:1;25597:42;25624:14;;25597:22;25609:9;;25597:7;:11;;:22;;;;:::i;:::-;:26;;:42;;;;:::i;:::-;:46;;:49;;;;:::i;:::-;25575:71;;25657:21;25681:24;25693:11;25681:7;:11;;:24;;;;:::i;:::-;25657:48;;25718:31;25735:13;25718:16;:31::i;:::-;25760:22;25785:21;25760:46;;25819:19;25841:36;25855:21;25874:1;25855:14;;:18;;:21;;;;:::i;:::-;25841:9;;:13;;:36;;;;:::i;:::-;25819:58;;25898:26;25927:58;25983:1;25927:51;25966:11;25927:34;25946:14;;25927;:18;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;25898:87;;25996:24;26023:47;26058:11;26023:30;26042:10;;26023:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;25996:74;;26081:26;26110:60;26153:16;26110:38;26129:18;26110:14;:18;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;26081:89;;26183:57;26204:15;;;;;;;;;;;26221:18;26183:20;:57::i;:::-;26251:53;26272:13;;;;;;;;;;;26287:16;26251:20;:53::i;:::-;26315:45;26328:11;26341:18;26315:12;:45::i;:::-;25555:813;;;;;;;17091:5:::0;17072:16;;:24;;;;;;;;;;;;;;;;;;25494:874;:::o;27575:448::-;27661:7;27691:17;27724:13;;;;;;;;;;;27711:26;;:9;:26;;;:126;;27807:30;27833:3;27807:21;27818:9;;27807:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27711:126;;;27740:30;27766:3;27740:21;27751:9;;27740:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27711:126;27691:146;;27877:39;27906:9;27877;:24;27895:4;27877:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27850:9;:24;27868:4;27850:24;;;;;;;;;;;;;;;:66;;;;27957:4;27932:42;;27941:6;27932:42;;;27964:9;27932:42;;;;;;:::i;:::-;;;;;;;;27994:21;28005:9;27994:6;:10;;:21;;;;:::i;:::-;27987:28;;;27575:448;;;;;:::o;1991:132::-;2049:7;2076:39;2080:1;2083;2076:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2069:46;;1991:132;;;;:::o;1733:250::-;1791:7;1820:1;1815;:6;1811:47;;1845:1;1838:8;;;;1811:47;1870:9;1886:1;1882;:5;;;;:::i;:::-;1870:17;;1915:1;1910;1906;:5;;;;:::i;:::-;:10;1898:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1974:1;1967:8;;;1733:250;;;;;:::o;26380:666::-;26506:21;26544:1;26530:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26506:40;;26575:4;26557;26562:1;26557:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26601:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26591:4;26596:1;26591:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26636:62;26653:4;26668:15;;;;;;;;;;;26686:11;26636:8;:62::i;:::-;26737:15;;;;;;;;;;;:66;;;26818:11;26844:1;26888:4;26915;26951:15;26737:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27003:35;27020:11;27033:4;27003:35;;;;;;;:::i;:::-;;;;;;;;26435:611;26380:666;:::o;21837:126::-;21929:9;:18;;:26;21948:6;21929:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21837:126;;:::o;27054:513::-;27202:62;27219:4;27234:15;;;;;;;;;;;27252:11;27202:8;:62::i;:::-;27307:15;;;;;;;;;;;:31;;;27346:9;27379:4;27399:11;27425:1;27468;27511:7;:5;:7::i;:::-;27533:15;27307:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27054:513;;:::o;2131:278::-;2217:7;2249:1;2245;:5;2252:12;2237:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2276:9;2292:1;2288;:5;;;;:::i;:::-;2276:17;;2400:1;2393:8;;;2131:278;;;;;:::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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:153::-;4269:9;4302:37;4333:5;4302:37;:::i;:::-;4289:50;;4192:153;;;:::o;4351:185::-;4465:64;4523:5;4465:64;:::i;:::-;4460:3;4453:77;4351:185;;:::o;4542:276::-;4662:4;4700:2;4689:9;4685:18;4677:26;;4713:98;4808:1;4797:9;4793:17;4784:6;4713:98;:::i;:::-;4542:276;;;;:::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:765::-;8569:6;8577;8585;8593;8642:3;8630:9;8621:7;8617:23;8613:33;8610:120;;;8649:79;;:::i;:::-;8610:120;8769:1;8794:53;8839:7;8830:6;8819:9;8815:22;8794:53;:::i;:::-;8784:63;;8740:117;8896:2;8922:53;8967:7;8958:6;8947:9;8943:22;8922:53;:::i;:::-;8912:63;;8867:118;9024:2;9050:53;9095:7;9086:6;9075:9;9071:22;9050:53;:::i;:::-;9040:63;;8995:118;9152:2;9178:53;9223:7;9214:6;9203:9;9199:22;9178:53;:::i;:::-;9168:63;;9123:118;8483:765;;;;;;;:::o;9254:474::-;9322:6;9330;9379:2;9367:9;9358:7;9354:23;9350:32;9347:119;;;9385:79;;:::i;:::-;9347:119;9505:1;9530:53;9575:7;9566:6;9555:9;9551:22;9530:53;:::i;:::-;9520:63;;9476:117;9632:2;9658:53;9703:7;9694:6;9683:9;9679:22;9658:53;:::i;:::-;9648:63;;9603:118;9254:474;;;;;:::o;9734:180::-;9782:77;9779:1;9772:88;9879:4;9876:1;9869:15;9903:4;9900:1;9893:15;9920:320;9964:6;10001:1;9995:4;9991:12;9981:22;;10048:1;10042:4;10038:12;10069:18;10059:81;;10125:4;10117:6;10113:17;10103:27;;10059:81;10187:2;10179:6;10176:14;10156:18;10153:38;10150:84;;10206:18;;:::i;:::-;10150:84;9971:269;9920:320;;;:::o;10246:182::-;10386:34;10382:1;10374:6;10370:14;10363:58;10246:182;:::o;10434:366::-;10576:3;10597:67;10661:2;10656:3;10597:67;:::i;:::-;10590:74;;10673:93;10762:3;10673:93;:::i;:::-;10791:2;10786:3;10782:12;10775:19;;10434:366;;;:::o;10806:419::-;10972:4;11010:2;10999:9;10995:18;10987:26;;11059:9;11053:4;11049:20;11045:1;11034:9;11030:17;11023:47;11087:131;11213:4;11087:131;:::i;:::-;11079:139;;10806:419;;;:::o;11231:143::-;11288:5;11319:6;11313:13;11304:22;;11335:33;11362:5;11335:33;:::i;:::-;11231:143;;;;:::o;11380:351::-;11450:6;11499:2;11487:9;11478:7;11474:23;11470:32;11467:119;;;11505:79;;:::i;:::-;11467:119;11625:1;11650:64;11706:7;11697:6;11686:9;11682:22;11650:64;:::i;:::-;11640:74;;11596:128;11380:351;;;;:::o;11737:332::-;11858:4;11896:2;11885:9;11881:18;11873:26;;11909:71;11977:1;11966:9;11962:17;11953:6;11909:71;:::i;:::-;11990:72;12058:2;12047:9;12043:18;12034:6;11990:72;:::i;:::-;11737:332;;;;;:::o;12075:222::-;12215:34;12211:1;12203:6;12199:14;12192:58;12284:5;12279:2;12271:6;12267:15;12260:30;12075:222;:::o;12303:366::-;12445:3;12466:67;12530:2;12525:3;12466:67;:::i;:::-;12459:74;;12542:93;12631:3;12542:93;:::i;:::-;12660:2;12655:3;12651:12;12644:19;;12303:366;;;:::o;12675:419::-;12841:4;12879:2;12868:9;12864:18;12856:26;;12928:9;12922:4;12918:20;12914:1;12903:9;12899:17;12892:47;12956:131;13082:4;12956:131;:::i;:::-;12948:139;;12675:419;;;:::o;13100:181::-;13240:33;13236:1;13228:6;13224:14;13217:57;13100:181;:::o;13287:366::-;13429:3;13450:67;13514:2;13509:3;13450:67;:::i;:::-;13443:74;;13526:93;13615:3;13526:93;:::i;:::-;13644:2;13639:3;13635:12;13628:19;;13287:366;;;:::o;13659:419::-;13825:4;13863:2;13852:9;13848:18;13840:26;;13912:9;13906:4;13902:20;13898:1;13887:9;13883:17;13876:47;13940:131;14066:4;13940:131;:::i;:::-;13932:139;;13659:419;;;:::o;14084:180::-;14132:77;14129:1;14122:88;14229:4;14226:1;14219:15;14253:4;14250:1;14243:15;14270:305;14310:3;14329:20;14347:1;14329:20;:::i;:::-;14324:25;;14363:20;14381:1;14363:20;:::i;:::-;14358:25;;14517:1;14449:66;14445:74;14442:1;14439:81;14436:107;;;14523:18;;:::i;:::-;14436:107;14567:1;14564;14560:9;14553:16;;14270:305;;;;:::o;14581:225::-;14721:34;14717:1;14709:6;14705:14;14698:58;14790:8;14785:2;14777:6;14773:15;14766:33;14581:225;:::o;14812:366::-;14954:3;14975:67;15039:2;15034:3;14975:67;:::i;:::-;14968:74;;15051:93;15140:3;15051:93;:::i;:::-;15169:2;15164:3;15160:12;15153:19;;14812:366;;;:::o;15184:419::-;15350:4;15388:2;15377:9;15373:18;15365:26;;15437:9;15431:4;15427:20;15423:1;15412:9;15408:17;15401:47;15465:131;15591:4;15465:131;:::i;:::-;15457:139;;15184:419;;;:::o;15609:177::-;15749:29;15745:1;15737:6;15733:14;15726:53;15609:177;:::o;15792:366::-;15934:3;15955:67;16019:2;16014:3;15955:67;:::i;:::-;15948:74;;16031:93;16120:3;16031:93;:::i;:::-;16149:2;16144:3;16140:12;16133:19;;15792:366;;;:::o;16164:419::-;16330:4;16368:2;16357:9;16353:18;16345:26;;16417:9;16411:4;16407:20;16403:1;16392:9;16388:17;16381:47;16445:131;16571:4;16445:131;:::i;:::-;16437:139;;16164:419;;;:::o;16589:223::-;16729:34;16725:1;16717:6;16713:14;16706:58;16798:6;16793:2;16785:6;16781:15;16774:31;16589:223;:::o;16818:366::-;16960:3;16981:67;17045:2;17040:3;16981:67;:::i;:::-;16974:74;;17057:93;17146:3;17057:93;:::i;:::-;17175:2;17170:3;17166:12;17159:19;;16818:366;;;:::o;17190:419::-;17356:4;17394:2;17383:9;17379:18;17371:26;;17443:9;17437:4;17433:20;17429:1;17418:9;17414:17;17407:47;17471:131;17597:4;17471:131;:::i;:::-;17463:139;;17190:419;;;:::o;17615:221::-;17755:34;17751:1;17743:6;17739:14;17732:58;17824:4;17819:2;17811:6;17807:15;17800:29;17615:221;:::o;17842:366::-;17984:3;18005:67;18069:2;18064:3;18005:67;:::i;:::-;17998:74;;18081:93;18170:3;18081:93;:::i;:::-;18199:2;18194:3;18190:12;18183:19;;17842:366;;;:::o;18214:419::-;18380:4;18418:2;18407:9;18403:18;18395:26;;18467:9;18461:4;18457:20;18453:1;18442:9;18438:17;18431:47;18495:131;18621:4;18495:131;:::i;:::-;18487:139;;18214:419;;;:::o;18639:224::-;18779:34;18775:1;18767:6;18763:14;18756:58;18848:7;18843:2;18835:6;18831:15;18824:32;18639:224;:::o;18869:366::-;19011:3;19032:67;19096:2;19091:3;19032:67;:::i;:::-;19025:74;;19108:93;19197:3;19108:93;:::i;:::-;19226:2;19221:3;19217:12;19210:19;;18869:366;;;:::o;19241:419::-;19407:4;19445:2;19434:9;19430:18;19422:26;;19494:9;19488:4;19484:20;19480:1;19469:9;19465:17;19458:47;19522:131;19648:4;19522:131;:::i;:::-;19514:139;;19241:419;;;:::o;19666:222::-;19806:34;19802:1;19794:6;19790:14;19783:58;19875:5;19870:2;19862:6;19858:15;19851:30;19666:222;:::o;19894:366::-;20036:3;20057:67;20121:2;20116:3;20057:67;:::i;:::-;20050:74;;20133:93;20222:3;20133:93;:::i;:::-;20251:2;20246:3;20242:12;20235:19;;19894:366;;;:::o;20266:419::-;20432:4;20470:2;20459:9;20455:18;20447:26;;20519:9;20513:4;20509:20;20505:1;20494:9;20490:17;20483:47;20547:131;20673:4;20547:131;:::i;:::-;20539:139;;20266:419;;;:::o;20691:181::-;20831:33;20827:1;20819:6;20815:14;20808:57;20691:181;:::o;20878:366::-;21020:3;21041:67;21105:2;21100:3;21041:67;:::i;:::-;21034:74;;21117:93;21206:3;21117:93;:::i;:::-;21235:2;21230:3;21226:12;21219:19;;20878:366;;;:::o;21250:419::-;21416:4;21454:2;21443:9;21439:18;21431:26;;21503:9;21497:4;21493:20;21489:1;21478:9;21474:17;21467:47;21531:131;21657:4;21531:131;:::i;:::-;21523:139;;21250:419;;;:::o;21675:228::-;21815:34;21811:1;21803:6;21799:14;21792:58;21884:11;21879:2;21871:6;21867:15;21860:36;21675:228;:::o;21909:366::-;22051:3;22072:67;22136:2;22131:3;22072:67;:::i;:::-;22065:74;;22148:93;22237:3;22148:93;:::i;:::-;22266:2;22261:3;22257:12;22250:19;;21909:366;;;:::o;22281:419::-;22447:4;22485:2;22474:9;22470:18;22462:26;;22534:9;22528:4;22524:20;22520:1;22509:9;22505:17;22498:47;22562:131;22688:4;22562:131;:::i;:::-;22554:139;;22281:419;;;:::o;22706:227::-;22846:34;22842:1;22834:6;22830:14;22823:58;22915:10;22910:2;22902:6;22898:15;22891:35;22706:227;:::o;22939:366::-;23081:3;23102:67;23166:2;23161:3;23102:67;:::i;:::-;23095:74;;23178:93;23267:3;23178:93;:::i;:::-;23296:2;23291:3;23287:12;23280:19;;22939:366;;;:::o;23311:419::-;23477:4;23515:2;23504:9;23500:18;23492:26;;23564:9;23558:4;23554:20;23550:1;23539:9;23535:17;23528:47;23592:131;23718:4;23592:131;:::i;:::-;23584:139;;23311:419;;;:::o;23736:191::-;23776:4;23796:20;23814:1;23796:20;:::i;:::-;23791:25;;23830:20;23848:1;23830:20;:::i;:::-;23825:25;;23869:1;23866;23863:8;23860:34;;;23874:18;;:::i;:::-;23860:34;23919:1;23916;23912:9;23904:17;;23736:191;;;;:::o;23933:348::-;23973:7;23996:20;24014:1;23996:20;:::i;:::-;23991:25;;24030:20;24048:1;24030:20;:::i;:::-;24025:25;;24218:1;24150:66;24146:74;24143:1;24140:81;24135:1;24128:9;24121:17;24117:105;24114:131;;;24225:18;;:::i;:::-;24114:131;24273:1;24270;24266:9;24255:20;;23933:348;;;;:::o;24287:180::-;24335:77;24332:1;24325:88;24432:4;24429:1;24422:15;24456:4;24453:1;24446:15;24473:185;24513:1;24530:20;24548:1;24530:20;:::i;:::-;24525:25;;24564:20;24582:1;24564:20;:::i;:::-;24559:25;;24603:1;24593:35;;24608:18;;:::i;:::-;24593:35;24650:1;24647;24643:9;24638:14;;24473:185;;;;:::o;24664:220::-;24804:34;24800:1;24792:6;24788:14;24781:58;24873:3;24868:2;24860:6;24856:15;24849:28;24664:220;:::o;24890:366::-;25032:3;25053:67;25117:2;25112:3;25053:67;:::i;:::-;25046:74;;25129:93;25218:3;25129:93;:::i;:::-;25247:2;25242:3;25238:12;25231:19;;24890:366;;;:::o;25262:419::-;25428:4;25466:2;25455:9;25451:18;25443:26;;25515:9;25509:4;25505:20;25501:1;25490:9;25486:17;25479:47;25543:131;25669:4;25543:131;:::i;:::-;25535:139;;25262:419;;;:::o;25687:180::-;25735:77;25732:1;25725:88;25832:4;25829:1;25822:15;25856:4;25853:1;25846:15;25873:180;25921:77;25918:1;25911:88;26018:4;26015:1;26008:15;26042:4;26039:1;26032:15;26059:85;26104:7;26133:5;26122:16;;26059:85;;;:::o;26150:158::-;26208:9;26241:61;26259:42;26268:32;26294:5;26268:32;:::i;:::-;26259:42;:::i;:::-;26241:61;:::i;:::-;26228:74;;26150:158;;;:::o;26314:147::-;26409:45;26448:5;26409:45;:::i;:::-;26404:3;26397:58;26314:147;;:::o;26467:114::-;26534:6;26568:5;26562:12;26552:22;;26467:114;;;:::o;26587:184::-;26686:11;26720:6;26715:3;26708:19;26760:4;26755:3;26751:14;26736:29;;26587:184;;;;:::o;26777:132::-;26844:4;26867:3;26859:11;;26897:4;26892:3;26888:14;26880:22;;26777:132;;;:::o;26915:108::-;26992:24;27010:5;26992:24;:::i;:::-;26987:3;26980:37;26915:108;;:::o;27029:179::-;27098:10;27119:46;27161:3;27153:6;27119:46;:::i;:::-;27197:4;27192:3;27188:14;27174:28;;27029:179;;;;:::o;27214:113::-;27284:4;27316;27311:3;27307:14;27299:22;;27214:113;;;:::o;27363:732::-;27482:3;27511:54;27559:5;27511:54;:::i;:::-;27581:86;27660:6;27655:3;27581:86;:::i;:::-;27574:93;;27691:56;27741:5;27691:56;:::i;:::-;27770:7;27801:1;27786:284;27811:6;27808:1;27805:13;27786:284;;;27887:6;27881:13;27914:63;27973:3;27958:13;27914:63;:::i;:::-;27907:70;;28000:60;28053:6;28000:60;:::i;:::-;27990:70;;27846:224;27833:1;27830;27826:9;27821:14;;27786:284;;;27790:14;28086:3;28079:10;;27487:608;;;27363:732;;;;:::o;28101:831::-;28364:4;28402:3;28391:9;28387:19;28379:27;;28416:71;28484:1;28473:9;28469:17;28460:6;28416:71;:::i;:::-;28497:80;28573:2;28562:9;28558:18;28549:6;28497:80;:::i;:::-;28624:9;28618:4;28614:20;28609:2;28598:9;28594:18;28587:48;28652:108;28755:4;28746:6;28652:108;:::i;:::-;28644:116;;28770:72;28838:2;28827:9;28823:18;28814:6;28770:72;:::i;:::-;28852:73;28920:3;28909:9;28905:19;28896:6;28852:73;:::i;:::-;28101:831;;;;;;;;:::o;28938:483::-;29109:4;29147:2;29136:9;29132:18;29124:26;;29160:71;29228:1;29217:9;29213:17;29204:6;29160:71;:::i;:::-;29278:9;29272:4;29268:20;29263:2;29252:9;29248:18;29241:48;29306:108;29409:4;29400:6;29306:108;:::i;:::-;29298:116;;28938:483;;;;;:::o;29427:807::-;29676:4;29714:3;29703:9;29699:19;29691:27;;29728:71;29796:1;29785:9;29781:17;29772:6;29728:71;:::i;:::-;29809:72;29877:2;29866:9;29862:18;29853:6;29809:72;:::i;:::-;29891:80;29967:2;29956:9;29952:18;29943:6;29891:80;:::i;:::-;29981;30057:2;30046:9;30042:18;30033:6;29981:80;:::i;:::-;30071:73;30139:3;30128:9;30124:19;30115:6;30071:73;:::i;:::-;30154;30222:3;30211:9;30207:19;30198:6;30154:73;:::i;:::-;29427:807;;;;;;;;;:::o;30240:143::-;30297:5;30328:6;30322:13;30313:22;;30344:33;30371:5;30344:33;:::i;:::-;30240:143;;;;:::o;30389:663::-;30477:6;30485;30493;30542:2;30530:9;30521:7;30517:23;30513:32;30510:119;;;30548:79;;:::i;:::-;30510:119;30668:1;30693:64;30749:7;30740:6;30729:9;30725:22;30693:64;:::i;:::-;30683:74;;30639:128;30806:2;30832:64;30888:7;30879:6;30868:9;30864:22;30832:64;:::i;:::-;30822:74;;30777:129;30945:2;30971:64;31027:7;31018:6;31007:9;31003:22;30971:64;:::i;:::-;30961:74;;30916:129;30389:663;;;;;:::o

Swarm Source

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