ETH Price: $2,708.68 (+5.24%)
 

Overview

Max Total Supply

10,000,000,000 STHINGS

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,195,780.55132833 STHINGS

Value
$0.00
0x753214e5c0003585678389be290113d1e020dA6d
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:
StrangerThings

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*


     ██████ ▄▄▄█████▓ ██▀███   ▄▄▄       ███▄    █   ▄████ ▓█████  ██▀███     ▄▄▄█████▓ ██░ ██  ██▓ ███▄    █   ▄████   ██████ 
   ▒██    ▒ ▓  ██▒ ▓▒▓██ ▒ ██▒▒████▄     ██ ▀█   █  ██▒ ▀█▒▓█   ▀ ▓██ ▒ ██▒   ▓  ██▒ ▓▒▓██░ ██▒▓██▒ ██ ▀█   █  ██▒ ▀█▒▒██    ▒ 
   ░ ▓██▄   ▒ ▓██░ ▒░▓██ ░▄█ ▒▒██  ▀█▄  ▓██  ▀█ ██▒▒██░▄▄▄░▒███   ▓██ ░▄█ ▒   ▒ ▓██░ ▒░▒██▀▀██░▒██▒▓██  ▀█ ██▒▒██░▄▄▄░░ ▓██▄   
     ▒   ██▒░ ▓██▓ ░ ▒██▀▀█▄  ░██▄▄▄▄██ ▓██▒  ▐▌██▒░▓█  ██▓▒▓█  ▄ ▒██▀▀█▄     ░ ▓██▓ ░ ░▓█ ░██ ░██░▓██▒  ▐▌██▒░▓█  ██▓  ▒   ██▒
   ▒██████▒▒  ▒██▒ ░ ░██▓ ▒██▒ ▓█   ▓██▒▒██░   ▓██░░▒▓███▀▒░▒████▒░██▓ ▒██▒     ▒██▒ ░ ░▓█▒░██▓░██░▒██░   ▓██░░▒▓███▀▒▒██████▒▒
   ▒ ▒▓▒ ▒ ░  ▒ ░░   ░ ▒▓ ░▒▓░ ▒▒   ▓▒█░░ ▒░   ▒ ▒  ░▒   ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░     ▒ ░░    ▒ ░░▒░▒░▓  ░ ▒░   ▒ ▒  ░▒   ▒ ▒ ▒▓▒ ▒ ░
   ░ ░▒  ░ ░    ░      ░▒ ░ ▒░  ▒   ▒▒ ░░ ░░   ░ ▒░  ░   ░  ░ ░  ░  ░▒ ░ ▒░       ░     ▒ ░▒░ ░ ▒ ░░ ░░   ░ ▒░  ░   ░ ░ ░▒  ░ ░
   ░  ░  ░    ░        ░░   ░   ░   ▒      ░   ░ ░ ░ ░   ░    ░     ░░   ░      ░       ░  ░░ ░ ▒ ░   ░   ░ ░ ░ ░   ░ ░  ░  ░  
         ░              ░           ░  ░         ░       ░    ░  ░   ░                  ░  ░  ░ ░           ░       ░       ░  

* Website: strangerthingseth.com                                                                                                                           
                                                                                                                             
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

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


interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
   
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
   
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
  
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

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) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

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

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

contract Ownable is Context {

    address private _owner;

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

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

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

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

}

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract StrangerThings is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    IERC721 public STHING_NFT;

    string private _name = "STRANGER THINGS";
    string private _symbol = "STHINGS";
    uint8 private _decimals = 9;

    address public marketingWalletAddress = payable(0xcfb4F62fC5Cf8b362cC1834Da937ed1A5E67D813);
    address public rewardWalletAddress = payable(0xa92977cBA36D3b7F84D2D28f0d8FFE23ba83B5Fa);

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public blacklisted;
    mapping (address => bool) private _isSniper;

    uint256 _buyLiquidityFee = 20;
    uint256 _buyMarketingFee = 20;
    uint256 _buyRewardFee = 20;
    
    uint256 _sellLiquidityFee = 20;
    uint256 _sellMarketingFee = 20;
    uint256 _sellRewardFee = 20;

    uint256 public constant MAX_TAX_LIMIT = 60;

    uint256 denominator = 1000;

    uint256 private _totalSupply = 10_000_000_000 * 10**_decimals;   //1000 B

    uint256 private minimumTokensBeforeSwap = 1000 * 10**_decimals;
    uint256 public _maxTxAmount =  _totalSupply.mul(5).div(denominator);     //0.5%
    uint256 public _walletMax = _totalSupply.mul(20).div(denominator);    //2%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool tradingActive = false;
    bool NFTTAX = true;
    bool checkWalletLimit = true;
    uint256 _launchTime;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

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

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

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

        STHING_NFT = IERC721(0xCC41d43fcCd016B73B72839979C2b42258a7e6DE);

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[marketingWalletAddress] = true;
        isExcludedFromFee[rewardWalletAddress] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //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(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[sender], "Your address has been marked as a sniper, you are unable to transfer or swap.");
        require(!blacklisted[sender] || !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {    

            if(!tradingActive){
                require(isExcludedFromFee[sender] || isExcludedFromFee[recipient], "Trading is not active yet.");
            }

            if (block.timestamp <= _launchTime + 1 minutes) {
                _isSniper[recipient] = true;
                return true;
            }


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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

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

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

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

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

    function swapAndLiquify() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 half = contractBalance.div(2);
        uint256 otherhalf = contractBalance.sub(half);
        uint256 initalBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 recieveETH = address(this).balance.sub(initalBalance);
        addLiquidity(otherhalf,recieveETH);
    }

    
    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 shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        if (NFTTAX) {
            if(isMarketPair[sender]){   //buy
                return STHING_NFT.balanceOf(recipient) > 0;
            }
            else if (isMarketPair[recipient]) {   //sell
                return STHING_NFT.balanceOf(sender) > 0;
            }
        }
        return false;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;
        uint MFEE;
        uint RFEE;
        uint LFEE;

        unchecked {

            if(isMarketPair[sender]) {
                
                MFEE = amount.div(denominator).mul(_buyMarketingFee);
                RFEE = amount.div(denominator).mul(_buyRewardFee);
                LFEE = amount.div(denominator).mul(_buyLiquidityFee);
                feeAmount = MFEE + RFEE + LFEE;
            }
            else if(isMarketPair[recipient]) {

                MFEE = amount.div(denominator).mul(_sellMarketingFee);
                RFEE = amount.div(denominator).mul(_sellRewardFee);
                LFEE = amount.div(denominator).mul(_sellLiquidityFee);
                feeAmount = MFEE + RFEE + LFEE;
                
            }     

            _balances[marketingWalletAddress] = _balances[marketingWalletAddress] + MFEE;
            _balances[rewardWalletAddress] = _balances[rewardWalletAddress] + RFEE;

            if(LFEE > 0) {
                _balances[address(this)] = _balances[address(this)] + LFEE;
                emit Transfer(sender, address(this), LFEE);
            }

            return amount - feeAmount;
        }
        
    }

    //To Block Bots to trade
    function blacklistBot(address _adr,bool _status) public onlyOwner {
        require(Address.isContract(_adr),"Error: BlackList Applicable For Bot/Contracts!!");
        blacklisted[_adr] = _status;
    }

    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function setNFT(address _nft) public onlyOwner {
        STHING_NFT = IERC721(_nft);
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapAndLiquifyEnabled = true;
        _launchTime = block.timestamp;
    }
    
    function isSniper(address addr) public view returns (bool) {
        return _isSniper[addr];
    }

    function setsSniper(address addr, bool _status) public onlyOwner {
        _isSniper[addr] = _status;
    }

    function setBuyFee(uint _newLP , uint _newMarket , uint _newReward) public onlyOwner {
        uint subtotal = _newLP.add(_newMarket).add(_newReward);
        require(subtotal <= MAX_TAX_LIMIT,"Error: Cannot Set More then 6%!!");
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buyRewardFee = _newReward;
    }

    function setSellFee(uint _newLP , uint _newMarket , uint _newReward) public onlyOwner {
        uint subtotal = _newLP.add(_newMarket).add(_newReward);
        require(subtotal <= MAX_TAX_LIMIT,"Error: Cannot Set More then 6%!!");
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellRewardFee = _newReward;
    }

    function setWallets(address _market,address _reward) public onlyOwner {
        marketingWalletAddress = _market;
        rewardWalletAddress = _reward;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

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

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

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

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

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

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

}

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":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MAX_TAX_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STHING_NFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address","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":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"}],"name":"setNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_reward","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setsSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600f81526020017f535452414e474552205448494e47530000000000000000000000000000000000815250600290805190602001906200005192919062000d1a565b506040518060400160405280600781526020017f535448494e475300000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000d1a565b506009600460006101000a81548160ff021916908360ff16021790555073cfb4f62fc5cf8b362cc1834da937ed1a5e67d813600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a92977cba36d3b7f84d2d28f0d8ffe23ba83b5fa600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506014600e556014600f5560146010556014601155601460125560146013556103e8601455600460009054906101000a900460ff16600a62000217919062000fdc565b6402540be40062000229919062001119565b601555600460009054906101000a900460ff16600a6200024a919062000fdc565b6103e862000259919062001119565b6016556200029460145462000280600560155462000bd460201b62002e681790919060201c565b62000c5860201b62002ee31790919060201c565b601755620002cf601454620002bb601460155462000bd460201b62002e681790919060201c565b62000c5860201b62002ee31790919060201c565b6018556000601a60146101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff0219169083151502179055506001601a60166101000a81548160ff0219169083151502179055506000601c60016101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000caa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062000de1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000de1565b6040518363ffffffff1660e01b81526004016200055492919062000e9d565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000de1565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cc41d43fccd016b73b72839979c2b42258a7e6de600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000bc5919062000f10565b60405180910390a3506200134a565b60008083141562000be9576000905062000c52565b6000828462000bf9919062001119565b905082848262000c0a919062000f49565b1462000c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c449062000eee565b60405180910390fd5b809150505b92915050565b600062000ca283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cb260201b60201c565b905092915050565b600033905090565b6000808311829062000cfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cf3919062000eca565b60405180910390fd5b506000838562000d0d919062000f49565b9050809150509392505050565b82805462000d2890620011fb565b90600052602060002090601f01602090048101928262000d4c576000855562000d98565b82601f1062000d6757805160ff191683800117855562000d98565b8280016001018555821562000d98579182015b8281111562000d9757825182559160200191906001019062000d7a565b5b50905062000da7919062000dab565b5090565b5b8082111562000dc657600081600090555060010162000dac565b5090565b60008151905062000ddb8162001330565b92915050565b60006020828403121562000dfa5762000df9620012be565b5b600062000e0a8482850162000dca565b91505092915050565b62000e1e816200117a565b82525050565b600062000e318262000f2d565b62000e3d818562000f38565b935062000e4f818560208601620011c5565b62000e5a81620012c3565b840191505092915050565b600062000e7460218362000f38565b915062000e8182620012e1565b604082019050919050565b62000e9781620011ae565b82525050565b600060408201905062000eb4600083018562000e13565b62000ec3602083018462000e13565b9392505050565b6000602082019050818103600083015262000ee6818462000e24565b905092915050565b6000602082019050818103600083015262000f098162000e65565b9050919050565b600060208201905062000f27600083018462000e8c565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f5682620011ae565b915062000f6383620011ae565b92508262000f765762000f7562001260565b5b828204905092915050565b6000808291508390505b600185111562000fd35780860481111562000fab5762000faa62001231565b5b600185161562000fbb5780820291505b808102905062000fcb85620012d4565b945062000f8b565b94509492505050565b600062000fe982620011ae565b915062000ff683620011b8565b9250620010257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200102d565b905092915050565b6000826200103f576001905062001112565b816200104f576000905062001112565b81600181146200106857600281146200107357620010a9565b600191505062001112565b60ff84111562001088576200108762001231565b5b8360020a915084821115620010a257620010a162001231565b5b5062001112565b5060208310610133831016604e8410600b8410161715620010e35782820a905083811115620010dd57620010dc62001231565b5b62001112565b620010f2848484600162000f81565b925090508184048111156200110c576200110b62001231565b5b81810290505b9392505050565b60006200112682620011ae565b91506200113383620011ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200116f576200116e62001231565b5b828202905092915050565b600062001187826200118e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620011e5578082015181840152602081019050620011c8565b83811115620011f5576000848401525b50505050565b600060028204905060018216806200121457607f821691505b602082108114156200122b576200122a6200128f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6200133b816200117a565b81146200134757600080fd5b50565b60805160601c60a05160601c615ccb6200138460003960008181610cfd015261139e01526000818161137201526113ca0152615ccb6000f3fe6080604052600436106103035760003560e01c8063728d41c911610190578063bc34e522116100dc578063d158272d11610095578063dd62ed3e1161006f578063dd62ed3e14610bc3578063e6b2603b14610c00578063f2fde38b14610c17578063f56e9c6614610c405761030a565b8063d158272d14610b32578063d3f6a15714610b5d578063dbac26e914610b865761030a565b8063bc34e52214610a24578063c16dd4a414610a4f578063c49b9a8014610a78578063c816841b14610aa1578063c867d60b14610acc578063cea9d26f14610b095761030a565b80638da5cb5b11610149578063a073d37f11610123578063a073d37f14610956578063a457c2d714610981578063a9059cbb146109be578063af9549e0146109fb5761030a565b80638da5cb5b146108e9578063914eb66a1461091457806395d89b411461092b5761030a565b8063728d41c9146107ed5780637d1db4a514610816578063807c2d9c146108415780638236802e1461086c5780638a8c523c146108955780638b42507f146108ac5761030a565b80632b112e491161024f5780633ecad271116102085780635342acb4116101e25780635342acb41461070d5780635881f3ef1461074a5780635c85974f1461078757806370a08231146107b05761030a565b80633ecad2711461067c5780634974d88f146106b95780634a74bb02146106e25761030a565b80632b112e491461056c578063313ce5671461059757806338ec0b11146105c257806339509351146105eb5780633b97084a146106285780633ce7fe51146106515761030a565b80631694505e116102bc57806323b872dd1161029657806323b872dd146104b257806325519cf2146104ef57806326de28f91461051857806327c8f835146105415761030a565b80631694505e1461043357806318160ddd1461045e5780631d865c30146104895761030a565b806306fdde031461030f5780630930907b1461033a578063095ea7b3146103655780630f3a325f146103a257806312b85c29146103df57806313ea1d891461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c69565b60405161033191906150ca565b60405180910390f35b34801561034657600080fd5b5061034f610cfb565b60405161035c9190614fab565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190614a0c565b610d1f565b6040516103999190615079565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906148df565b610d3d565b6040516103d69190615079565b60405180910390f35b3480156103eb57600080fd5b506103f4610d93565b6040516104019190614fab565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c91906149cc565b610db9565b005b34801561043f57600080fd5b50610448610f3c565b60405161045591906150af565b60405180910390f35b34801561046a57600080fd5b50610473610f62565b604051610480919061530c565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190614b53565b610f6c565b005b3480156104be57600080fd5b506104d960048036038101906104d49190614979565b611089565b6040516104e69190615079565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614b53565b611163565b005b34801561052457600080fd5b5061053f600480360381019061053a91906149cc565b611280565b005b34801561054d57600080fd5b50610556611370565b6040516105639190614fab565b60405180910390f35b34801561057857600080fd5b50610581611394565b60405161058e919061530c565b60405180910390f35b3480156105a357600080fd5b506105ac611412565b6040516105b991906153b1565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e491906149cc565b611429565b005b3480156105f757600080fd5b50610612600480360381019061060d9190614a0c565b6115ac565b60405161061f9190615079565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190614af9565b61165f565b005b34801561065d57600080fd5b506106666116fe565b604051610673919061530c565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e91906148df565b611703565b6040516106b09190615079565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190614a4c565b611723565b005b3480156106ee57600080fd5b506106f76117d5565b6040516107049190615079565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f91906148df565b6117e8565b6040516107419190615079565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c91906148df565b611808565b60405161077e9190614fab565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190614af9565b611cec565b005b3480156107bc57600080fd5b506107d760048036038101906107d291906148df565b611d8b565b6040516107e4919061530c565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614af9565b611dd4565b005b34801561082257600080fd5b5061082b611e73565b604051610838919061530c565b60405180910390f35b34801561084d57600080fd5b50610856611e79565b604051610863919061530c565b60405180910390f35b34801561087857600080fd5b50610893600480360381019061088e91906149cc565b611e7f565b005b3480156108a157600080fd5b506108aa611fb7565b005b3480156108b857600080fd5b506108d360048036038101906108ce91906148df565b61208b565b6040516108e09190615079565b60405180910390f35b3480156108f557600080fd5b506108fe6120ab565b60405161090b9190614fab565b60405180910390f35b34801561092057600080fd5b506109296120d4565b005b34801561093757600080fd5b50610940612229565b60405161094d91906150ca565b60405180910390f35b34801561096257600080fd5b5061096b6122bb565b604051610978919061530c565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190614a0c565b6122c5565b6040516109b59190615079565b60405180910390f35b3480156109ca57600080fd5b506109e560048036038101906109e09190614a0c565b612392565b6040516109f29190615079565b60405180910390f35b348015610a0757600080fd5b50610a226004803603810190610a1d91906149cc565b6123b1565b005b348015610a3057600080fd5b50610a39612534565b604051610a469190615094565b60405180910390f35b348015610a5b57600080fd5b50610a766004803603810190610a7191906149cc565b61255a565b005b348015610a8457600080fd5b50610a9f6004803603810190610a9a9190614a4c565b61264a565b005b348015610aad57600080fd5b50610ab6612733565b604051610ac39190614fab565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906148df565b612759565b604051610b009190615079565b60405180910390f35b348015610b1557600080fd5b50610b306004803603810190610b2b9190614aa6565b612779565b005b348015610b3e57600080fd5b50610b476128a1565b604051610b549190614fab565b60405180910390f35b348015610b6957600080fd5b50610b846004803603810190610b7f9190614939565b6128c7565b005b348015610b9257600080fd5b50610bad6004803603810190610ba891906148df565b6129e2565b604051610bba9190615079565b60405180910390f35b348015610bcf57600080fd5b50610bea6004803603810190610be59190614939565b612a02565b604051610bf7919061530c565b60405180910390f35b348015610c0c57600080fd5b50610c15612a89565b005b348015610c2357600080fd5b50610c3e6004803603810190610c3991906148df565b612bcd565b005b348015610c4c57600080fd5b50610c676004803603810190610c6291906148df565b612d8f565b005b606060028054610c7890615635565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca490615635565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d33610d2c612f2d565b8484612f35565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc1612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e45906151cc565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed89061516c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b610f74612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906151cc565b60405180910390fd5b60006110288261101a858761310090919063ffffffff16565b61310090919063ffffffff16565b9050603c81111561106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110659061520c565b60405180910390fd5b83601181905550826012819055508160138190555050505050565b600061109684848461315e565b50611158846110a3612f2d565b61115385604051806060016040528060288152602001615c4960289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611109612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b612f35565b600190509392505050565b61116b612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906151cc565b60405180910390fd5b600061121f82611211858761310090919063ffffffff16565b61310090919063ffffffff16565b9050603c811115611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c9061520c565b60405180910390fd5b83600e8190555082600f819055508160108190555050505050565b611288612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c906151cc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061140d6113c27f0000000000000000000000000000000000000000000000000000000000000000611d8b565b6113ff6113ee7f0000000000000000000000000000000000000000000000000000000000000000611d8b565b601554613a1190919063ffffffff16565b613a1190919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b611431612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b5906151cc565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061516c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116556115b9612f2d565b8461165085600760006115ca612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b612f35565b6001905092915050565b611667612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb906151cc565b60405180910390fd5b8060168190555050565b603c81565b60096020528060005260406000206000915054906101000a900460ff1681565b61172b612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af906151cc565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b601c60019054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611812612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611896906151cc565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611922919061490c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061490c565b6040518363ffffffff1660e01b81526004016119d9929190614fc6565b60206040518083038186803b1580156119f157600080fd5b505afa158015611a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a29919061490c565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bea578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ade919061490c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b78919061490c565b6040518363ffffffff1660e01b8152600401611b95929190614fc6565b602060405180830381600087803b158015611baf57600080fd5b505af1158015611bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be7919061490c565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cf4612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d78906151cc565b60405180910390fd5b8060178190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ddc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e60906151cc565b60405180910390fd5b8060188190555050565b60175481565b60185481565b611e87612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906151cc565b60405180910390fd5b611f1d82613a5b565b611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f53906152ac565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fbf612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612043906151cc565b60405180910390fd5b6001601a60146101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff02191690831515021790555042601b81905550565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120dc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612160906151cc565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606003805461223890615635565b80601f016020809104026020016040519081016040528092919081815260200182805461226490615635565b80156122b15780601f10612286576101008083540402835291602001916122b1565b820191906000526020600020905b81548152906001019060200180831161229457829003601f168201915b5050505050905090565b6000601654905090565b60006123886122d2612f2d565b8461238385604051806060016040528060258152602001615c7160259139600760006122fc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b612f35565b6001905092915050565b60006123a661239f612f2d565b848461315e565b506001905092915050565b6123b9612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d906151cc565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d09061516c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612562612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e6906151cc565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612652612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d6906151cc565b60405180910390fd5b80601c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127289190615079565b60405180910390a150565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612781612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612805906151cc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612849929190614fef565b602060405180830381600087803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614a79565b50505050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6128cf612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612953906151cc565b60405180910390fd5b81600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a91612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b15906151cc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b4490614f96565b60006040518083038185875af1925050503d8060008114612b81576040519150601f19603f3d011682016040523d82523d6000602084013e612b86565b606091505b5050905080612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906152ec565b60405180910390fd5b50565b612bd5612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c59906151cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc99061510c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d97612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1b906151cc565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415612e7b5760009050612edd565b60008284612e8991906154b3565b9050828482612e989190615482565b14612ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecf906151ac565b60405180910390fd5b809150505b92915050565b6000612f2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613aa6565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9c9061526c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300c9061512c565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130f3919061530c565b60405180910390a3505050565b600080828461310f919061542c565b905083811015613154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314b9061514c565b60405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c69061522c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906150ec565b60405180910390fd5b60008211613282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613279906151ec565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561330f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133069061524c565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806133b25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e89061528c565b60405180910390fd5b601c60009054906101000a900460ff161561341857613411848484613b09565b90506139a6565b601a60149054906101000a900460ff1661350d57600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134cd5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61350c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613503906152cc565b60405180910390fd5b5b603c601b5461351c919061542c565b4211613583576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600190506139a6565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561367257601754821115613671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136689061518c565b60405180910390fd5b5b600061367d30611d8b565b9050600060165482101590508080156136a35750601c60009054906101000a900460ff16155b80156136f95750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137115750601c60019054906101000a900460ff165b1561371f5761371e613cdc565b5b6137a8846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137f78787613d94565b61380b57613806878787614074565b61380d565b845b9050601a60169054906101000a900460ff1680156138755750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138a4576018546138988261388a89611d8b565b61310090919063ffffffff16565b11156138a357600080fd5b5b6138f681600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613996919061530c565b60405180910390a3600193505050505b9392505050565b60008383111582906139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec91906150ca565b60405180910390fd5b5060008385613a04919061550d565b9050809150509392505050565b6000613a5383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139ad565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613a9d57506000801b8214155b92505050919050565b60008083118290613aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae491906150ca565b60405180910390fd5b5060008385613afc9190615482565b9050809150509392505050565b6000613b94826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c2982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cc9919061530c565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000613d0230611d8b565b90506000811415613d135750613d77565b6000613d29600283612ee390919063ffffffff16565b90506000613d408284613a1190919063ffffffff16565b90506000479050613d50836144cd565b6000613d658247613a1190919063ffffffff16565b9050613d718382614758565b50505050505b6000601c60006101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e375750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e45576001905061406e565b601a60159054906101000a900460ff161561406957600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f61576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401613f099190614fab565b60206040518083038186803b158015613f2157600080fd5b505afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f599190614b26565b11905061406e565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614068576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016140109190614fab565b60206040518083038186803b15801561402857600080fd5b505afa15801561403c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140609190614b26565b11905061406e565b5b600090505b92915050565b6000806000806000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b576140f7600f546140e960145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b925061412260105461411460145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b915061414d600e5461413f60145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b905080828401019350614237565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614236576141d66012546141c860145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b92506142016013546141f360145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b915061422c60115461421e60145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b9050808284010193505b5b8260066000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160066000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156144bd5780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144b4919061530c565b60405180910390a35b8386039450505050509392505050565b6000600267ffffffffffffffff8111156144ea576144e9615723565b5b6040519080825280602002602001820160405280156145185781602001602082028036833780820191505090505b50905030816000815181106145305761452f6156f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d257600080fd5b505afa1580156145e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460a919061490c565b8160018151811061461e5761461d6156f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061468530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f35565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146e9959493929190615357565b600060405180830381600087803b15801561470357600080fd5b505af1158015614717573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161474c929190615327565b60405180910390a15050565b61478530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f35565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147d16120ab565b426040518863ffffffff1660e01b81526004016147f396959493929190615018565b6060604051808303818588803b15801561480c57600080fd5b505af1158015614820573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148459190614ba6565b5050505050565b60008135905061485b81615bec565b92915050565b60008151905061487081615bec565b92915050565b60008135905061488581615c03565b92915050565b60008151905061489a81615c03565b92915050565b6000813590506148af81615c1a565b92915050565b6000813590506148c481615c31565b92915050565b6000815190506148d981615c31565b92915050565b6000602082840312156148f5576148f4615752565b5b60006149038482850161484c565b91505092915050565b60006020828403121561492257614921615752565b5b600061493084828501614861565b91505092915050565b600080604083850312156149505761494f615752565b5b600061495e8582860161484c565b925050602061496f8582860161484c565b9150509250929050565b60008060006060848603121561499257614991615752565b5b60006149a08682870161484c565b93505060206149b18682870161484c565b92505060406149c2868287016148b5565b9150509250925092565b600080604083850312156149e3576149e2615752565b5b60006149f18582860161484c565b9250506020614a0285828601614876565b9150509250929050565b60008060408385031215614a2357614a22615752565b5b6000614a318582860161484c565b9250506020614a42858286016148b5565b9150509250929050565b600060208284031215614a6257614a61615752565b5b6000614a7084828501614876565b91505092915050565b600060208284031215614a8f57614a8e615752565b5b6000614a9d8482850161488b565b91505092915050565b600080600060608486031215614abf57614abe615752565b5b6000614acd868287016148a0565b9350506020614ade8682870161484c565b9250506040614aef868287016148b5565b9150509250925092565b600060208284031215614b0f57614b0e615752565b5b6000614b1d848285016148b5565b91505092915050565b600060208284031215614b3c57614b3b615752565b5b6000614b4a848285016148ca565b91505092915050565b600080600060608486031215614b6c57614b6b615752565b5b6000614b7a868287016148b5565b9350506020614b8b868287016148b5565b9250506040614b9c868287016148b5565b9150509250925092565b600080600060608486031215614bbf57614bbe615752565b5b6000614bcd868287016148ca565b9350506020614bde868287016148ca565b9250506040614bef868287016148ca565b9150509250925092565b6000614c058383614c11565b60208301905092915050565b614c1a81615541565b82525050565b614c2981615541565b82525050565b6000614c3a826153dc565b614c4481856153ff565b9350614c4f836153cc565b8060005b83811015614c80578151614c678882614bf9565b9750614c72836153f2565b925050600181019050614c53565b5085935050505092915050565b614c9681615553565b82525050565b614ca5816155a8565b82525050565b614cb4816155ba565b82525050565b614cc3816155cc565b82525050565b6000614cd4826153e7565b614cde818561541b565b9350614cee818560208601615602565b614cf781615757565b840191505092915050565b6000614d0f60238361541b565b9150614d1a82615768565b604082019050919050565b6000614d3260268361541b565b9150614d3d826157b7565b604082019050919050565b6000614d5560228361541b565b9150614d6082615806565b604082019050919050565b6000614d78601b8361541b565b9150614d8382615855565b602082019050919050565b6000614d9b600d8361541b565b9150614da68261587e565b602082019050919050565b6000614dbe60288361541b565b9150614dc9826158a7565b604082019050919050565b6000614de160218361541b565b9150614dec826158f6565b604082019050919050565b6000614e0460208361541b565b9150614e0f82615945565b602082019050919050565b6000614e2760298361541b565b9150614e328261596e565b604082019050919050565b6000614e4a60208361541b565b9150614e55826159bd565b602082019050919050565b6000614e6d60258361541b565b9150614e78826159e6565b604082019050919050565b6000614e90600083615410565b9150614e9b82615a35565b600082019050919050565b6000614eb3604d8361541b565b9150614ebe82615a38565b606082019050919050565b6000614ed660248361541b565b9150614ee182615aad565b604082019050919050565b6000614ef9602d8361541b565b9150614f0482615afc565b604082019050919050565b6000614f1c602f8361541b565b9150614f2782615b4b565b604082019050919050565b6000614f3f601a8361541b565b9150614f4a82615b9a565b602082019050919050565b6000614f6260148361541b565b9150614f6d82615bc3565b602082019050919050565b614f8181615591565b82525050565b614f908161559b565b82525050565b6000614fa182614e83565b9150819050919050565b6000602082019050614fc06000830184614c20565b92915050565b6000604082019050614fdb6000830185614c20565b614fe86020830184614c20565b9392505050565b60006040820190506150046000830185614c20565b6150116020830184614f78565b9392505050565b600060c08201905061502d6000830189614c20565b61503a6020830188614f78565b6150476040830187614cba565b6150546060830186614cba565b6150616080830185614c20565b61506e60a0830184614f78565b979650505050505050565b600060208201905061508e6000830184614c8d565b92915050565b60006020820190506150a96000830184614c9c565b92915050565b60006020820190506150c46000830184614cab565b92915050565b600060208201905081810360008301526150e48184614cc9565b905092915050565b6000602082019050818103600083015261510581614d02565b9050919050565b6000602082019050818103600083015261512581614d25565b9050919050565b6000602082019050818103600083015261514581614d48565b9050919050565b6000602082019050818103600083015261516581614d6b565b9050919050565b6000602082019050818103600083015261518581614d8e565b9050919050565b600060208201905081810360008301526151a581614db1565b9050919050565b600060208201905081810360008301526151c581614dd4565b9050919050565b600060208201905081810360008301526151e581614df7565b9050919050565b6000602082019050818103600083015261520581614e1a565b9050919050565b6000602082019050818103600083015261522581614e3d565b9050919050565b6000602082019050818103600083015261524581614e60565b9050919050565b6000602082019050818103600083015261526581614ea6565b9050919050565b6000602082019050818103600083015261528581614ec9565b9050919050565b600060208201905081810360008301526152a581614eec565b9050919050565b600060208201905081810360008301526152c581614f0f565b9050919050565b600060208201905081810360008301526152e581614f32565b9050919050565b6000602082019050818103600083015261530581614f55565b9050919050565b60006020820190506153216000830184614f78565b92915050565b600060408201905061533c6000830185614f78565b818103602083015261534e8184614c2f565b90509392505050565b600060a08201905061536c6000830188614f78565b6153796020830187614cba565b818103604083015261538b8186614c2f565b905061539a6060830185614c20565b6153a76080830184614f78565b9695505050505050565b60006020820190506153c66000830184614f87565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061543782615591565b915061544283615591565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561547757615476615667565b5b828201905092915050565b600061548d82615591565b915061549883615591565b9250826154a8576154a7615696565b5b828204905092915050565b60006154be82615591565b91506154c983615591565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550257615501615667565b5b828202905092915050565b600061551882615591565b915061552383615591565b92508282101561553657615535615667565b5b828203905092915050565b600061554c82615571565b9050919050565b60008115159050919050565b600061556a82615541565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155b3826155de565b9050919050565b60006155c5826155de565b9050919050565b60006155d782615591565b9050919050565b60006155e9826155f0565b9050919050565b60006155fb82615571565b9050919050565b60005b83811015615620578082015181840152602081019050615605565b8381111561562f576000848401525b50505050565b6000600282049050600182168061564d57607f821691505b60208210811415615661576156606156c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4572726f723a2043616e6e6f7420536574204d6f7265207468656e2036252121600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60208201527f73666572206f7220737761702e00000000000000000000000000000000000000604082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060008201527f426f742f436f6e74726163747321210000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b615bf581615541565b8114615c0057600080fd5b50565b615c0c81615553565b8114615c1757600080fd5b50565b615c238161555f565b8114615c2e57600080fd5b50565b615c3a81615591565b8114615c4557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209fa9f53e16f1fd85cbfd8b37b26a3bc6f0c3c563b84e49fe24898effbb2caa8c64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063728d41c911610190578063bc34e522116100dc578063d158272d11610095578063dd62ed3e1161006f578063dd62ed3e14610bc3578063e6b2603b14610c00578063f2fde38b14610c17578063f56e9c6614610c405761030a565b8063d158272d14610b32578063d3f6a15714610b5d578063dbac26e914610b865761030a565b8063bc34e52214610a24578063c16dd4a414610a4f578063c49b9a8014610a78578063c816841b14610aa1578063c867d60b14610acc578063cea9d26f14610b095761030a565b80638da5cb5b11610149578063a073d37f11610123578063a073d37f14610956578063a457c2d714610981578063a9059cbb146109be578063af9549e0146109fb5761030a565b80638da5cb5b146108e9578063914eb66a1461091457806395d89b411461092b5761030a565b8063728d41c9146107ed5780637d1db4a514610816578063807c2d9c146108415780638236802e1461086c5780638a8c523c146108955780638b42507f146108ac5761030a565b80632b112e491161024f5780633ecad271116102085780635342acb4116101e25780635342acb41461070d5780635881f3ef1461074a5780635c85974f1461078757806370a08231146107b05761030a565b80633ecad2711461067c5780634974d88f146106b95780634a74bb02146106e25761030a565b80632b112e491461056c578063313ce5671461059757806338ec0b11146105c257806339509351146105eb5780633b97084a146106285780633ce7fe51146106515761030a565b80631694505e116102bc57806323b872dd1161029657806323b872dd146104b257806325519cf2146104ef57806326de28f91461051857806327c8f835146105415761030a565b80631694505e1461043357806318160ddd1461045e5780631d865c30146104895761030a565b806306fdde031461030f5780630930907b1461033a578063095ea7b3146103655780630f3a325f146103a257806312b85c29146103df57806313ea1d891461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c69565b60405161033191906150ca565b60405180910390f35b34801561034657600080fd5b5061034f610cfb565b60405161035c9190614fab565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190614a0c565b610d1f565b6040516103999190615079565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906148df565b610d3d565b6040516103d69190615079565b60405180910390f35b3480156103eb57600080fd5b506103f4610d93565b6040516104019190614fab565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c91906149cc565b610db9565b005b34801561043f57600080fd5b50610448610f3c565b60405161045591906150af565b60405180910390f35b34801561046a57600080fd5b50610473610f62565b604051610480919061530c565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190614b53565b610f6c565b005b3480156104be57600080fd5b506104d960048036038101906104d49190614979565b611089565b6040516104e69190615079565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614b53565b611163565b005b34801561052457600080fd5b5061053f600480360381019061053a91906149cc565b611280565b005b34801561054d57600080fd5b50610556611370565b6040516105639190614fab565b60405180910390f35b34801561057857600080fd5b50610581611394565b60405161058e919061530c565b60405180910390f35b3480156105a357600080fd5b506105ac611412565b6040516105b991906153b1565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e491906149cc565b611429565b005b3480156105f757600080fd5b50610612600480360381019061060d9190614a0c565b6115ac565b60405161061f9190615079565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190614af9565b61165f565b005b34801561065d57600080fd5b506106666116fe565b604051610673919061530c565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e91906148df565b611703565b6040516106b09190615079565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190614a4c565b611723565b005b3480156106ee57600080fd5b506106f76117d5565b6040516107049190615079565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f91906148df565b6117e8565b6040516107419190615079565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c91906148df565b611808565b60405161077e9190614fab565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190614af9565b611cec565b005b3480156107bc57600080fd5b506107d760048036038101906107d291906148df565b611d8b565b6040516107e4919061530c565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614af9565b611dd4565b005b34801561082257600080fd5b5061082b611e73565b604051610838919061530c565b60405180910390f35b34801561084d57600080fd5b50610856611e79565b604051610863919061530c565b60405180910390f35b34801561087857600080fd5b50610893600480360381019061088e91906149cc565b611e7f565b005b3480156108a157600080fd5b506108aa611fb7565b005b3480156108b857600080fd5b506108d360048036038101906108ce91906148df565b61208b565b6040516108e09190615079565b60405180910390f35b3480156108f557600080fd5b506108fe6120ab565b60405161090b9190614fab565b60405180910390f35b34801561092057600080fd5b506109296120d4565b005b34801561093757600080fd5b50610940612229565b60405161094d91906150ca565b60405180910390f35b34801561096257600080fd5b5061096b6122bb565b604051610978919061530c565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190614a0c565b6122c5565b6040516109b59190615079565b60405180910390f35b3480156109ca57600080fd5b506109e560048036038101906109e09190614a0c565b612392565b6040516109f29190615079565b60405180910390f35b348015610a0757600080fd5b50610a226004803603810190610a1d91906149cc565b6123b1565b005b348015610a3057600080fd5b50610a39612534565b604051610a469190615094565b60405180910390f35b348015610a5b57600080fd5b50610a766004803603810190610a7191906149cc565b61255a565b005b348015610a8457600080fd5b50610a9f6004803603810190610a9a9190614a4c565b61264a565b005b348015610aad57600080fd5b50610ab6612733565b604051610ac39190614fab565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906148df565b612759565b604051610b009190615079565b60405180910390f35b348015610b1557600080fd5b50610b306004803603810190610b2b9190614aa6565b612779565b005b348015610b3e57600080fd5b50610b476128a1565b604051610b549190614fab565b60405180910390f35b348015610b6957600080fd5b50610b846004803603810190610b7f9190614939565b6128c7565b005b348015610b9257600080fd5b50610bad6004803603810190610ba891906148df565b6129e2565b604051610bba9190615079565b60405180910390f35b348015610bcf57600080fd5b50610bea6004803603810190610be59190614939565b612a02565b604051610bf7919061530c565b60405180910390f35b348015610c0c57600080fd5b50610c15612a89565b005b348015610c2357600080fd5b50610c3e6004803603810190610c3991906148df565b612bcd565b005b348015610c4c57600080fd5b50610c676004803603810190610c6291906148df565b612d8f565b005b606060028054610c7890615635565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca490615635565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d33610d2c612f2d565b8484612f35565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc1612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e45906151cc565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed89061516c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b610f74612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906151cc565b60405180910390fd5b60006110288261101a858761310090919063ffffffff16565b61310090919063ffffffff16565b9050603c81111561106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110659061520c565b60405180910390fd5b83601181905550826012819055508160138190555050505050565b600061109684848461315e565b50611158846110a3612f2d565b61115385604051806060016040528060288152602001615c4960289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611109612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b612f35565b600190509392505050565b61116b612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906151cc565b60405180910390fd5b600061121f82611211858761310090919063ffffffff16565b61310090919063ffffffff16565b9050603c811115611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c9061520c565b60405180910390fd5b83600e8190555082600f819055508160108190555050505050565b611288612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c906151cc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061140d6113c27f0000000000000000000000000000000000000000000000000000000000000000611d8b565b6113ff6113ee7f000000000000000000000000000000000000000000000000000000000000dead611d8b565b601554613a1190919063ffffffff16565b613a1190919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b611431612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b5906151cc565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061516c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116556115b9612f2d565b8461165085600760006115ca612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b612f35565b6001905092915050565b611667612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb906151cc565b60405180910390fd5b8060168190555050565b603c81565b60096020528060005260406000206000915054906101000a900460ff1681565b61172b612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af906151cc565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b601c60019054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611812612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611896906151cc565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611922919061490c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061490c565b6040518363ffffffff1660e01b81526004016119d9929190614fc6565b60206040518083038186803b1580156119f157600080fd5b505afa158015611a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a29919061490c565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bea578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ade919061490c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b78919061490c565b6040518363ffffffff1660e01b8152600401611b95929190614fc6565b602060405180830381600087803b158015611baf57600080fd5b505af1158015611bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be7919061490c565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cf4612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d78906151cc565b60405180910390fd5b8060178190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ddc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e60906151cc565b60405180910390fd5b8060188190555050565b60175481565b60185481565b611e87612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906151cc565b60405180910390fd5b611f1d82613a5b565b611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f53906152ac565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fbf612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612043906151cc565b60405180910390fd5b6001601a60146101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff02191690831515021790555042601b81905550565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120dc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612160906151cc565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606003805461223890615635565b80601f016020809104026020016040519081016040528092919081815260200182805461226490615635565b80156122b15780601f10612286576101008083540402835291602001916122b1565b820191906000526020600020905b81548152906001019060200180831161229457829003601f168201915b5050505050905090565b6000601654905090565b60006123886122d2612f2d565b8461238385604051806060016040528060258152602001615c7160259139600760006122fc612f2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b612f35565b6001905092915050565b60006123a661239f612f2d565b848461315e565b506001905092915050565b6123b9612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d906151cc565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d09061516c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612562612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e6906151cc565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612652612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d6906151cc565b60405180910390fd5b80601c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127289190615079565b60405180910390a150565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612781612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612805906151cc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612849929190614fef565b602060405180830381600087803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614a79565b50505050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6128cf612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612953906151cc565b60405180910390fd5b81600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a91612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b15906151cc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b4490614f96565b60006040518083038185875af1925050503d8060008114612b81576040519150601f19603f3d011682016040523d82523d6000602084013e612b86565b606091505b5050905080612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906152ec565b60405180910390fd5b50565b612bd5612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c59906151cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc99061510c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d97612f2d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1b906151cc565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415612e7b5760009050612edd565b60008284612e8991906154b3565b9050828482612e989190615482565b14612ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecf906151ac565b60405180910390fd5b809150505b92915050565b6000612f2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613aa6565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9c9061526c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300c9061512c565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130f3919061530c565b60405180910390a3505050565b600080828461310f919061542c565b905083811015613154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314b9061514c565b60405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c69061522c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906150ec565b60405180910390fd5b60008211613282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613279906151ec565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561330f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133069061524c565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806133b25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e89061528c565b60405180910390fd5b601c60009054906101000a900460ff161561341857613411848484613b09565b90506139a6565b601a60149054906101000a900460ff1661350d57600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134cd5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61350c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613503906152cc565b60405180910390fd5b5b603c601b5461351c919061542c565b4211613583576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600190506139a6565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561367257601754821115613671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136689061518c565b60405180910390fd5b5b600061367d30611d8b565b9050600060165482101590508080156136a35750601c60009054906101000a900460ff16155b80156136f95750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137115750601c60019054906101000a900460ff165b1561371f5761371e613cdc565b5b6137a8846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137f78787613d94565b61380b57613806878787614074565b61380d565b845b9050601a60169054906101000a900460ff1680156138755750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138a4576018546138988261388a89611d8b565b61310090919063ffffffff16565b11156138a357600080fd5b5b6138f681600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613996919061530c565b60405180910390a3600193505050505b9392505050565b60008383111582906139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec91906150ca565b60405180910390fd5b5060008385613a04919061550d565b9050809150509392505050565b6000613a5383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139ad565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613a9d57506000801b8214155b92505050919050565b60008083118290613aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae491906150ca565b60405180910390fd5b5060008385613afc9190615482565b9050809150509392505050565b6000613b94826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c2982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cc9919061530c565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000613d0230611d8b565b90506000811415613d135750613d77565b6000613d29600283612ee390919063ffffffff16565b90506000613d408284613a1190919063ffffffff16565b90506000479050613d50836144cd565b6000613d658247613a1190919063ffffffff16565b9050613d718382614758565b50505050505b6000601c60006101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e375750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e45576001905061406e565b601a60159054906101000a900460ff161561406957600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f61576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401613f099190614fab565b60206040518083038186803b158015613f2157600080fd5b505afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f599190614b26565b11905061406e565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614068576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016140109190614fab565b60206040518083038186803b15801561402857600080fd5b505afa15801561403c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140609190614b26565b11905061406e565b5b600090505b92915050565b6000806000806000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b576140f7600f546140e960145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b925061412260105461411460145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b915061414d600e5461413f60145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b905080828401019350614237565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614236576141d66012546141c860145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b92506142016013546141f360145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b915061422c60115461421e60145489612ee390919063ffffffff16565b612e6890919063ffffffff16565b9050808284010193505b5b8260066000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160066000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156144bd5780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144b4919061530c565b60405180910390a35b8386039450505050509392505050565b6000600267ffffffffffffffff8111156144ea576144e9615723565b5b6040519080825280602002602001820160405280156145185781602001602082028036833780820191505090505b50905030816000815181106145305761452f6156f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d257600080fd5b505afa1580156145e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460a919061490c565b8160018151811061461e5761461d6156f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061468530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f35565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146e9959493929190615357565b600060405180830381600087803b15801561470357600080fd5b505af1158015614717573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161474c929190615327565b60405180910390a15050565b61478530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f35565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147d16120ab565b426040518863ffffffff1660e01b81526004016147f396959493929190615018565b6060604051808303818588803b15801561480c57600080fd5b505af1158015614820573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148459190614ba6565b5050505050565b60008135905061485b81615bec565b92915050565b60008151905061487081615bec565b92915050565b60008135905061488581615c03565b92915050565b60008151905061489a81615c03565b92915050565b6000813590506148af81615c1a565b92915050565b6000813590506148c481615c31565b92915050565b6000815190506148d981615c31565b92915050565b6000602082840312156148f5576148f4615752565b5b60006149038482850161484c565b91505092915050565b60006020828403121561492257614921615752565b5b600061493084828501614861565b91505092915050565b600080604083850312156149505761494f615752565b5b600061495e8582860161484c565b925050602061496f8582860161484c565b9150509250929050565b60008060006060848603121561499257614991615752565b5b60006149a08682870161484c565b93505060206149b18682870161484c565b92505060406149c2868287016148b5565b9150509250925092565b600080604083850312156149e3576149e2615752565b5b60006149f18582860161484c565b9250506020614a0285828601614876565b9150509250929050565b60008060408385031215614a2357614a22615752565b5b6000614a318582860161484c565b9250506020614a42858286016148b5565b9150509250929050565b600060208284031215614a6257614a61615752565b5b6000614a7084828501614876565b91505092915050565b600060208284031215614a8f57614a8e615752565b5b6000614a9d8482850161488b565b91505092915050565b600080600060608486031215614abf57614abe615752565b5b6000614acd868287016148a0565b9350506020614ade8682870161484c565b9250506040614aef868287016148b5565b9150509250925092565b600060208284031215614b0f57614b0e615752565b5b6000614b1d848285016148b5565b91505092915050565b600060208284031215614b3c57614b3b615752565b5b6000614b4a848285016148ca565b91505092915050565b600080600060608486031215614b6c57614b6b615752565b5b6000614b7a868287016148b5565b9350506020614b8b868287016148b5565b9250506040614b9c868287016148b5565b9150509250925092565b600080600060608486031215614bbf57614bbe615752565b5b6000614bcd868287016148ca565b9350506020614bde868287016148ca565b9250506040614bef868287016148ca565b9150509250925092565b6000614c058383614c11565b60208301905092915050565b614c1a81615541565b82525050565b614c2981615541565b82525050565b6000614c3a826153dc565b614c4481856153ff565b9350614c4f836153cc565b8060005b83811015614c80578151614c678882614bf9565b9750614c72836153f2565b925050600181019050614c53565b5085935050505092915050565b614c9681615553565b82525050565b614ca5816155a8565b82525050565b614cb4816155ba565b82525050565b614cc3816155cc565b82525050565b6000614cd4826153e7565b614cde818561541b565b9350614cee818560208601615602565b614cf781615757565b840191505092915050565b6000614d0f60238361541b565b9150614d1a82615768565b604082019050919050565b6000614d3260268361541b565b9150614d3d826157b7565b604082019050919050565b6000614d5560228361541b565b9150614d6082615806565b604082019050919050565b6000614d78601b8361541b565b9150614d8382615855565b602082019050919050565b6000614d9b600d8361541b565b9150614da68261587e565b602082019050919050565b6000614dbe60288361541b565b9150614dc9826158a7565b604082019050919050565b6000614de160218361541b565b9150614dec826158f6565b604082019050919050565b6000614e0460208361541b565b9150614e0f82615945565b602082019050919050565b6000614e2760298361541b565b9150614e328261596e565b604082019050919050565b6000614e4a60208361541b565b9150614e55826159bd565b602082019050919050565b6000614e6d60258361541b565b9150614e78826159e6565b604082019050919050565b6000614e90600083615410565b9150614e9b82615a35565b600082019050919050565b6000614eb3604d8361541b565b9150614ebe82615a38565b606082019050919050565b6000614ed660248361541b565b9150614ee182615aad565b604082019050919050565b6000614ef9602d8361541b565b9150614f0482615afc565b604082019050919050565b6000614f1c602f8361541b565b9150614f2782615b4b565b604082019050919050565b6000614f3f601a8361541b565b9150614f4a82615b9a565b602082019050919050565b6000614f6260148361541b565b9150614f6d82615bc3565b602082019050919050565b614f8181615591565b82525050565b614f908161559b565b82525050565b6000614fa182614e83565b9150819050919050565b6000602082019050614fc06000830184614c20565b92915050565b6000604082019050614fdb6000830185614c20565b614fe86020830184614c20565b9392505050565b60006040820190506150046000830185614c20565b6150116020830184614f78565b9392505050565b600060c08201905061502d6000830189614c20565b61503a6020830188614f78565b6150476040830187614cba565b6150546060830186614cba565b6150616080830185614c20565b61506e60a0830184614f78565b979650505050505050565b600060208201905061508e6000830184614c8d565b92915050565b60006020820190506150a96000830184614c9c565b92915050565b60006020820190506150c46000830184614cab565b92915050565b600060208201905081810360008301526150e48184614cc9565b905092915050565b6000602082019050818103600083015261510581614d02565b9050919050565b6000602082019050818103600083015261512581614d25565b9050919050565b6000602082019050818103600083015261514581614d48565b9050919050565b6000602082019050818103600083015261516581614d6b565b9050919050565b6000602082019050818103600083015261518581614d8e565b9050919050565b600060208201905081810360008301526151a581614db1565b9050919050565b600060208201905081810360008301526151c581614dd4565b9050919050565b600060208201905081810360008301526151e581614df7565b9050919050565b6000602082019050818103600083015261520581614e1a565b9050919050565b6000602082019050818103600083015261522581614e3d565b9050919050565b6000602082019050818103600083015261524581614e60565b9050919050565b6000602082019050818103600083015261526581614ea6565b9050919050565b6000602082019050818103600083015261528581614ec9565b9050919050565b600060208201905081810360008301526152a581614eec565b9050919050565b600060208201905081810360008301526152c581614f0f565b9050919050565b600060208201905081810360008301526152e581614f32565b9050919050565b6000602082019050818103600083015261530581614f55565b9050919050565b60006020820190506153216000830184614f78565b92915050565b600060408201905061533c6000830185614f78565b818103602083015261534e8184614c2f565b90509392505050565b600060a08201905061536c6000830188614f78565b6153796020830187614cba565b818103604083015261538b8186614c2f565b905061539a6060830185614c20565b6153a76080830184614f78565b9695505050505050565b60006020820190506153c66000830184614f87565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061543782615591565b915061544283615591565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561547757615476615667565b5b828201905092915050565b600061548d82615591565b915061549883615591565b9250826154a8576154a7615696565b5b828204905092915050565b60006154be82615591565b91506154c983615591565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550257615501615667565b5b828202905092915050565b600061551882615591565b915061552383615591565b92508282101561553657615535615667565b5b828203905092915050565b600061554c82615571565b9050919050565b60008115159050919050565b600061556a82615541565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155b3826155de565b9050919050565b60006155c5826155de565b9050919050565b60006155d782615591565b9050919050565b60006155e9826155f0565b9050919050565b60006155fb82615571565b9050919050565b60005b83811015615620578082015181840152602081019050615605565b8381111561562f576000848401525b50505050565b6000600282049050600182168061564d57607f821691505b60208210811415615661576156606156c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4572726f723a2043616e6e6f7420536574204d6f7265207468656e2036252121600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60208201527f73666572206f7220737761702e00000000000000000000000000000000000000604082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060008201527f426f742f436f6e74726163747321210000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b615bf581615541565b8114615c0057600080fd5b50565b615c0c81615553565b8114615c1757600080fd5b50565b615c238161555f565b8114615c2e57600080fd5b50565b615c3a81615591565b8114615c4557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209fa9f53e16f1fd85cbfd8b37b26a3bc6f0c3c563b84e49fe24898effbb2caa8c64736f6c63430008070033

Deployed Bytecode Sourcemap

17778:16474:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21454:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18355:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22752:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31123:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18170:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32646:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19526:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21731:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31707:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23703:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31348:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31231:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18267:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23270:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21640:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32440:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22121:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32840:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19123:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30792:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19762:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18576:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33499:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33086:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21839:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32972:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19359:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19444:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30091:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30949:162;;;;;;;;;;;;;:::i;:::-;;18744:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9233:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9458:227;;;;;;;;;;;;;:::i;:::-;;21545:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22624:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22347:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23528:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32239:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17914:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33374:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33195:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19574:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18685:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30554:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18072:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32070:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18799:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21970:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30338:176;;;;;;;;;;;;;:::i;:::-;;9693:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30692:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21454:83;21491:13;21524:5;21517:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21454:83;:::o;18355:81::-;;;:::o;22752:161::-;22827:4;22844:39;22853:12;:10;:12::i;:::-;22867:7;22876:6;22844:8;:39::i;:::-;22901:4;22894:11;;22752:161;;;;:::o;31123:100::-;31176:4;31200:9;:15;31210:4;31200:15;;;;;;;;;;;;;;;;;;;;;;;;;31193:22;;31123:100;;;:::o;18170:88::-;;;;;;;;;;;;;:::o;32646:186::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32758:7:::1;32733:32;;:15;:21;32749:4;32733:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;32725:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;32817:7;32793:15;:21;32809:4;32793:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;32646:186:::0;;:::o;19526:41::-;;;;;;;;;;;;;:::o;21731:100::-;21784:7;21811:12;;21804:19;;21731:100;:::o;31707:355::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31804:13:::1;31820:38;31847:10;31820:22;31831:10;31820:6;:10;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;31804:54;;19163:2;31877:8;:25;;31869:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31969:6;31949:17;:26;;;;32006:10;31986:17;:30;;;;32044:10;32027:14;:27;;;;31793:269;31707:355:::0;;;:::o;23703:313::-;23801:4;23818:36;23828:6;23836:9;23847:6;23818:9;:36::i;:::-;;23865:121;23874:6;23882:12;:10;:12::i;:::-;23896:89;23934:6;23896:89;;;;;;;;;;;;;;;;;:11;:19;23908:6;23896:19;;;;;;;;;;;;;;;:33;23916:12;:10;:12::i;:::-;23896:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23865:8;:121::i;:::-;24004:4;23997:11;;23703:313;;;;;:::o;31348:351::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31444:13:::1;31460:38;31487:10;31460:22;31471:10;31460:6;:10;;:22;;;;:::i;:::-;:26;;:38;;;;:::i;:::-;31444:54;;19163:2;31517:8;:25;;31509:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31608:6;31589:16;:25;;;;31644:10;31625:16;:29;;;;31681:10;31665:13;:26;;;;31433:266;31348:351:::0;;;:::o;31231:109::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31325:7:::1;31307:9;:15;31317:4;31307:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;31231:109:::0;;:::o;18267:81::-;;;:::o;23270:156::-;23323:7;23350:68;23395:22;23405:11;23395:9;:22::i;:::-;23350:40;23367:22;23377:11;23367:9;:22::i;:::-;23350:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;23343:75;;23270:156;:::o;21640:83::-;21681:5;21706:9;;;;;;;;;;;21699:16;;21640:83;:::o;32440:198::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32560:7:::1;32531:36;;:19;:25;32551:4;32531:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;32523:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32623:7;32595:19;:25;32615:4;32595:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32440:198:::0;;:::o;22121:218::-;22209:4;22226:83;22235:12;:10;:12::i;:::-;22249:7;22258:50;22297:10;22258:11;:25;22270:12;:10;:12::i;:::-;22258:25;;;;;;;;;;;;;;;:34;22284:7;22258:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22226:8;:83::i;:::-;22327:4;22320:11;;22121:218;;;;:::o;32840:124::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32948:8:::1;32922:23;:34;;;;32840:124:::0;:::o;19123:42::-;19163:2;19123:42;:::o;18633:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;30792:103::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30880:7:::1;30861:16;;:26;;;;;;;;;;;;;;;;;;30792:103:::0;:::o;19762:41::-;;;;;;;;;;;;;:::o;18576:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;33499:748::-;33579:22;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33616:35:::1;33673:16;33616:74;;33739:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33721:53;;;33783:4;33790:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33721:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33704:110;;33856:1;33830:28;;:14;:28;;;33827:225;;;33944:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33926:74;;;34009:4;34016:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33926:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33909:131;;33827:225;34078:14;34064:11;;:28;;;;;;;;;;;;;;;;;;34144:16;34126:15;;:34;;;;;;;;;;;;;;;;;;34235:4;34198:12;:34;34219:11;;;;;;;;;;;34198:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;33603:644;33499:748:::0;;;:::o;33086:101::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33171:8:::1;33156:12;:23;;;;33086:101:::0;:::o;21839:123::-;21905:7;21931:9;:18;21941:7;21931:18;;;;;;;;;;;;;;;;21924:25;;21839:123;;;:::o;32972:106::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33062:8:::1;33049:10;:21;;;;32972:106:::0;:::o;19359:67::-;;;;:::o;19444:65::-;;;;:::o;30091:206::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30176:24:::1;30195:4;30176:18;:24::i;:::-;30168:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;30282:7;30262:11;:17;30274:4;30262:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;30091:206:::0;;:::o;30949:162::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31020:4:::1;31004:13;;:20;;;;;;;;;;;;;;;;;;31059:4;31035:21;;:28;;;;;;;;;;;;;;;;;;31088:15;31074:11;:29;;;;30949:162::o:0;18744:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;9233:79::-;9271:7;9298:6;;;;;;;;;;;9291:13;;9233:79;:::o;9458:227::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:42:::1;9525:81;;9546:6;::::0;::::1;;;;;;;;9525:81;;;;;;;;;;;;9634:42;9617:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;9458:227::o:0;21545:87::-;21584:13;21617:7;21610:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21545:87;:::o;22624:120::-;22686:7;22713:23;;22706:30;;22624:120;:::o;22347:269::-;22440:4;22457:129;22466:12;:10;:12::i;:::-;22480:7;22489:96;22528:15;22489:96;;;;;;;;;;;;;;;;;:11;:25;22501:12;:10;:12::i;:::-;22489:25;;;;;;;;;;;;;;;:34;22515:7;22489:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22457:8;:129::i;:::-;22604:4;22597:11;;22347:269;;;;:::o;23528:167::-;23606:4;23623:42;23633:12;:10;:12::i;:::-;23647:9;23658:6;23623:9;:42::i;:::-;;23683:4;23676:11;;23528:167;;;;:::o;32239:193::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32356:7:::1;32329:34;;:17;:23;32347:4;32329:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;32321:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;32417:7;32391:17;:23;32409:4;32391:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;32239:193:::0;;:::o;17914:25::-;;;;;;;;;;;;;:::o;33374:117::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33476:7:::1;33454:12;:19;33467:5;33454:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;33374:117:::0;;:::o;33195:171::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33296:8:::1;33272:21;;:32;;;;;;;;;;;;;;;;;;33320:38;33349:8;33320:38;;;;;;:::i;:::-;;;;;;;;33195:171:::0;:::o;19574:26::-;;;;;;;;;;;;;:::o;18685:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;30554:130::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30646:3:::1;:12;;;30659:9;30669:6;30646:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30554:130:::0;;;:::o;18072:91::-;;;;;;;;;;;;;:::o;32070:161::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32176:7:::1;32151:22;;:32;;;;;;;;;;;;;;;;;;32216:7;32194:19;;:29;;;;;;;;;;;;;;;;;;32070:161:::0;;:::o;18799:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;21970:143::-;22051:7;22078:11;:18;22090:5;22078:18;;;;;;;;;;;;;;;:27;22097:7;22078:27;;;;;;;;;;;;;;;;22071:34;;21970:143;;;;:::o;30338:176::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30391:7:::1;30411:10;30403:24;;30435:21;30403:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30390:71;;;30480:2;30472:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;30378:136;30338:176::o:0;9693:244::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9802:1:::1;9782:22;;:8;:22;;;;9774:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9892:8;9863:38;;9884:6;::::0;::::1;;;;;;;;9863:38;;;;;;;;;;;;9921:8;9912:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9693:244:::0;:::o;30692:92::-;9377:12;:10;:12::i;:::-;9367:22;;:6;;;;;;;;;;:22;;;9359:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30771:4:::1;30750:10;;:26;;;;;;;;;;;;;;;;;;30692:92:::0;:::o;5543:250::-;5601:7;5630:1;5625;:6;5621:47;;;5655:1;5648:8;;;;5621:47;5680:9;5696:1;5692;:5;;;;:::i;:::-;5680:17;;5725:1;5720;5716;:5;;;;:::i;:::-;:10;5708:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5784:1;5777:8;;;5543:250;;;;;:::o;5801:132::-;5859:7;5886:39;5890:1;5893;5886:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5879:46;;5801:132;;;;:::o;2768:115::-;2821:15;2864:10;2849:26;;2768:115;:::o;22921:337::-;23031:1;23014:19;;:5;:19;;;;23006:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23112:1;23093:21;;:7;:21;;;;23085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23196:6;23166:11;:18;23178:5;23166:18;;;;;;;;;;;;;;;:27;23185:7;23166:27;;;;;;;;;;;;;;;:36;;;;23234:7;23218:32;;23227:5;23218:32;;;23243:6;23218:32;;;;;;:::i;:::-;;;;;;;;22921:337;;;:::o;5010:181::-;5068:7;5088:9;5104:1;5100;:5;;;;:::i;:::-;5088:17;;5129:1;5124;:6;;5116:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5182:1;5175:8;;;5010:181;;;;:::o;24024:2148::-;24111:4;24156:1;24138:20;;:6;:20;;;;24130:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24240:1;24219:23;;:9;:23;;;;24211:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24310:1;24301:6;:10;24293:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24377:9;:17;24387:6;24377:17;;;;;;;;;;;;;;;;;;;;;;;;;24376:18;24368:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;24496:11;:19;24508:6;24496:19;;;;;;;;;;;;;;;;;;;;;;;;;24495:20;:47;;;;24520:11;:22;24532:9;24520:22;;;;;;;;;;;;;;;;;;;;;;;;;24519:23;24495:47;24487:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;24615:16;;;;;;;;;;;24612:1553;;;24665:41;24680:6;24688:9;24699:6;24665:14;:41::i;:::-;24658:48;;;;24612:1553;24768:13;;;;;;;;;;;24764:149;;24809:17;:25;24827:6;24809:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24838:17;:28;24856:9;24838:28;;;;;;;;;;;;;;;;;;;;;;;;;24809:57;24801:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24764:149;24966:9;24952:11;;:23;;;;:::i;:::-;24933:15;:42;24929:140;;25019:4;24996:9;:20;25006:9;24996:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25049:4;25042:11;;;;24929:140;25091:15;:23;25107:6;25091:23;;;;;;;;;;;;;;;;;;;;;;;;;25090:24;:55;;;;;25119:15;:26;25135:9;25119:26;;;;;;;;;;;;;;;;;;;;;;;;;25118:27;25090:55;25087:170;;;25184:12;;25174:6;:22;;25166:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25087:170;25274:28;25305:24;25323:4;25305:9;:24::i;:::-;25274:55;;25344:28;25399:23;;25375:20;:47;;25344:78;;25455:23;:44;;;;;25483:16;;;;;;;;;;;25482:17;25455:44;:69;;;;;25504:12;:20;25517:6;25504:20;;;;;;;;;;;;;;;;;;;;;;;;;25503:21;25455:69;:94;;;;;25528:21;;;;;;;;;;;25455:94;25451:165;;;25584:16;:14;:16::i;:::-;25451:165;25652:53;25674:6;25652:53;;;;;;;;;;;;;;;;;:9;:17;25662:6;25652:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25632:9;:17;25642:6;25632:17;;;;;;;;;;;;;;;:73;;;;25722:19;25744:31;25758:6;25765:9;25744:13;:31::i;:::-;:77;;25787:34;25795:6;25803:9;25814:6;25787:7;:34::i;:::-;25744:77;;;25778:6;25744:77;25722:99;;25841:16;;;;;;;;;;;:51;;;;;25862:19;:30;25882:9;25862:30;;;;;;;;;;;;;;;;;;;;;;;;;25861:31;25841:51;25838:151;;;25962:10;;25921:37;25946:11;25921:20;25931:9;25921;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25913:60;;;;;;25838:151;26028:37;26053:11;26028:9;:20;26038:9;26028:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26005:9;:20;26015:9;26005:20;;;;;;;;;;;;;;;:60;;;;26104:9;26087:40;;26096:6;26087:40;;;26115:11;26087:40;;;;;;:::i;:::-;;;;;;;;26149:4;26142:11;;;;;24024:2148;;;;;;:::o;5343:192::-;5429:7;5462:1;5457;:6;;5465:12;5449:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5489:9;5505:1;5501;:5;;;;:::i;:::-;5489:17;;5526:1;5519:8;;;5343:192;;;;;:::o;5199:136::-;5257:7;5284:43;5288:1;5291;5284:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5277:50;;5199:136;;;;:::o;6563:357::-;6623:4;6644:16;6671:19;6693:66;6671:88;;;;6841:7;6829:20;6817:32;;6881:11;6869:8;:23;;:42;;;;;6908:3;6896:15;;:8;:15;;6869:42;6861:51;;;;6563:357;;;:::o;5941:278::-;6027:7;6059:1;6055;:5;6062:12;6047:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6086:9;6102:1;6098;:5;;;;:::i;:::-;6086:17;;6210:1;6203:8;;;5941:278;;;;;:::o;26180:330::-;26273:4;26310:53;26332:6;26310:53;;;;;;;;;;;;;;;;;:9;:17;26320:6;26310:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26290:9;:17;26300:6;26290:17;;;;;;;;;;;;;;;:73;;;;26397:32;26422:6;26397:9;:20;26407:9;26397:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26374:9;:20;26384:9;26374:20;;;;;;;;;;;;;;;:55;;;;26462:9;26445:35;;26454:6;26445:35;;;26473:6;26445:35;;;;;;:::i;:::-;;;;;;;;26498:4;26491:11;;26180:330;;;;;:::o;26518:473::-;20247:4;20228:16;;:23;;;;;;;;;;;;;;;;;;26577::::1;26603:24;26621:4;26603:9;:24::i;:::-;26577:50;;26662:1;26643:15;:20;26640:32;;;26665:7;;;26640:32;26684:12;26699:22;26719:1;26699:15;:19;;:22;;;;:::i;:::-;26684:37;;26732:17;26752:25;26772:4;26752:15;:19;;:25;;;;:::i;:::-;26732:45;;26788:21;26812;26788:45;;26844:22;26861:4;26844:16;:22::i;:::-;26877:18;26898:40;26924:13;26898:21;:25;;:40;;;;:::i;:::-;26877:61;;26949:34;26962:9;26972:10;26949:12;:34::i;:::-;26564:427;;;;;20262:1;20293:5:::0;20274:16;;:24;;;;;;;;;;;;;;;;;;26518:473::o;28200:516::-;28281:4;28301:17;:25;28319:6;28301:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;28330:17;:28;28348:9;28330:28;;;;;;;;;;;;;;;;;;;;;;;;;28301:57;28298:100;;;28382:4;28375:11;;;;28298:100;28412:6;;;;;;;;;;;28408:278;;;28438:12;:20;28451:6;28438:20;;;;;;;;;;;;;;;;;;;;;;;;;28435:240;;;28527:1;28493:10;;;;;;;;;;;:20;;;28514:9;28493:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;28486:42;;;;28435:240;28567:12;:23;28580:9;28567:23;;;;;;;;;;;;;;;;;;;;;;;;;28563:112;;;28658:1;28627:10;;;;;;;;;;;:20;;;28648:6;28627:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;28620:39;;;;28563:112;28408:278;28703:5;28696:12;;28200:516;;;;;:::o;28724:1329::-;28810:7;28840:14;28865:9;28885;28905;28957:12;:20;28970:6;28957:20;;;;;;;;;;;;;;;;;;;;;;;;;28954:663;;;29023:45;29051:16;;29023:23;29034:11;;29023:6;:10;;:23;;;;:::i;:::-;:27;;:45;;;;:::i;:::-;29016:52;;29094:42;29122:13;;29094:23;29105:11;;29094:6;:10;;:23;;;;:::i;:::-;:27;;:42;;;;:::i;:::-;29087:49;;29162:45;29190:16;;29162:23;29173:11;;29162:6;:10;;:23;;;;:::i;:::-;:27;;:45;;;;:::i;:::-;29155:52;;29252:4;29245;29238;:11;:18;29226:30;;28954:663;;;29294:12;:23;29307:9;29294:23;;;;;;;;;;;;;;;;;;;;;;;;;29291:326;;;29347:46;29375:17;;29347:23;29358:11;;29347:6;:10;;:23;;;;:::i;:::-;:27;;:46;;;;:::i;:::-;29340:53;;29419:43;29447:14;;29419:23;29430:11;;29419:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;29412:50;;29488:46;29516:17;;29488:23;29499:11;;29488:6;:10;;:23;;;;:::i;:::-;:27;;:46;;;;:::i;:::-;29481:53;;29579:4;29572;29565;:11;:18;29553:30;;29291:326;28954:663;29710:4;29674:9;:33;29684:22;;;;;;;;;;;29674:33;;;;;;;;;;;;;;;;:40;29638:9;:33;29648:22;;;;;;;;;;;29638:33;;;;;;;;;;;;;;;:76;;;;29795:4;29762:9;:30;29772:19;;;;;;;;;;;29762:30;;;;;;;;;;;;;;;;:37;29729:9;:30;29739:19;;;;;;;;;;;29729:30;;;;;;;;;;;;;;;:70;;;;29826:1;29819:4;:8;29816:167;;;29902:4;29875:9;:24;29893:4;29875:24;;;;;;;;;;;;;;;;:31;29848:9;:24;29866:4;29848:24;;;;;;;;;;;;;;;:58;;;;29955:4;29930:37;;29939:6;29930:37;;;29962:4;29930:37;;;;;;:::i;:::-;;;;;;;;29816:167;30015:9;30006:6;:18;29999:25;;;;;;28724:1329;;;;;:::o;27005:666::-;27131:21;27169:1;27155:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27131:40;;27200:4;27182;27187:1;27182:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27226:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27216:4;27221:1;27216:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27261:62;27278:4;27293:15;;;;;;;;;;;27311:11;27261:8;:62::i;:::-;27362:15;;;;;;;;;;;:66;;;27443:11;27469:1;27513:4;27540;27576:15;27362:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27628:35;27645:11;27658:4;27628:35;;;;;;;:::i;:::-;;;;;;;;27060:611;27005:666;:::o;27679:513::-;27827:62;27844:4;27859:15;;;;;;;;;;;27877:11;27827:8;:62::i;:::-;27932:15;;;;;;;;;;;:31;;;27971:9;28004:4;28024:11;28050:1;28093;28136:7;:5;:7::i;:::-;28158:15;27932:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27679:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:165::-;642:5;680:6;667:20;658:29;;696:46;736:5;696:46;:::i;:::-;583:165;;;;:::o;754:139::-;800:5;838:6;825:20;816:29;;854:33;881:5;854:33;:::i;:::-;754:139;;;;:::o;899:143::-;956:5;987:6;981:13;972:22;;1003:33;1030:5;1003:33;:::i;:::-;899:143;;;;:::o;1048:329::-;1107:6;1156:2;1144:9;1135:7;1131:23;1127:32;1124:119;;;1162:79;;:::i;:::-;1124:119;1282:1;1307:53;1352:7;1343:6;1332:9;1328:22;1307:53;:::i;:::-;1297:63;;1253:117;1048:329;;;;:::o;1383:351::-;1453:6;1502:2;1490:9;1481:7;1477:23;1473:32;1470:119;;;1508:79;;:::i;:::-;1470:119;1628:1;1653:64;1709:7;1700:6;1689:9;1685:22;1653:64;:::i;:::-;1643:74;;1599:128;1383:351;;;;:::o;1740:474::-;1808:6;1816;1865:2;1853:9;1844:7;1840:23;1836:32;1833:119;;;1871:79;;:::i;:::-;1833:119;1991:1;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1962:117;2118:2;2144:53;2189:7;2180:6;2169:9;2165:22;2144:53;:::i;:::-;2134:63;;2089:118;1740:474;;;;;:::o;2220:619::-;2297:6;2305;2313;2362:2;2350:9;2341:7;2337:23;2333:32;2330:119;;;2368:79;;:::i;:::-;2330:119;2488:1;2513:53;2558:7;2549:6;2538:9;2534:22;2513:53;:::i;:::-;2503:63;;2459:117;2615:2;2641:53;2686:7;2677:6;2666:9;2662:22;2641:53;:::i;:::-;2631:63;;2586:118;2743:2;2769:53;2814:7;2805:6;2794:9;2790:22;2769:53;:::i;:::-;2759:63;;2714:118;2220:619;;;;;:::o;2845:468::-;2910:6;2918;2967:2;2955:9;2946:7;2942:23;2938:32;2935:119;;;2973:79;;:::i;:::-;2935:119;3093:1;3118:53;3163:7;3154:6;3143:9;3139:22;3118:53;:::i;:::-;3108:63;;3064:117;3220:2;3246:50;3288:7;3279:6;3268:9;3264:22;3246:50;:::i;:::-;3236:60;;3191:115;2845:468;;;;;:::o;3319:474::-;3387:6;3395;3444:2;3432:9;3423:7;3419:23;3415:32;3412:119;;;3450:79;;:::i;:::-;3412:119;3570:1;3595:53;3640:7;3631:6;3620:9;3616:22;3595:53;:::i;:::-;3585:63;;3541:117;3697:2;3723:53;3768:7;3759:6;3748:9;3744:22;3723:53;:::i;:::-;3713:63;;3668:118;3319:474;;;;;:::o;3799:323::-;3855:6;3904:2;3892:9;3883:7;3879:23;3875:32;3872:119;;;3910:79;;:::i;:::-;3872:119;4030:1;4055:50;4097:7;4088:6;4077:9;4073:22;4055:50;:::i;:::-;4045:60;;4001:114;3799:323;;;;:::o;4128:345::-;4195:6;4244:2;4232:9;4223:7;4219:23;4215:32;4212:119;;;4250:79;;:::i;:::-;4212:119;4370:1;4395:61;4448:7;4439:6;4428:9;4424:22;4395:61;:::i;:::-;4385:71;;4341:125;4128:345;;;;:::o;4479:645::-;4569:6;4577;4585;4634:2;4622:9;4613:7;4609:23;4605:32;4602:119;;;4640:79;;:::i;:::-;4602:119;4760:1;4785:66;4843:7;4834:6;4823:9;4819:22;4785:66;:::i;:::-;4775:76;;4731:130;4900:2;4926:53;4971:7;4962:6;4951:9;4947:22;4926:53;:::i;:::-;4916:63;;4871:118;5028:2;5054:53;5099:7;5090:6;5079:9;5075:22;5054:53;:::i;:::-;5044:63;;4999:118;4479:645;;;;;:::o;5130:329::-;5189:6;5238:2;5226:9;5217:7;5213:23;5209:32;5206:119;;;5244:79;;:::i;:::-;5206:119;5364:1;5389:53;5434:7;5425:6;5414:9;5410:22;5389:53;:::i;:::-;5379:63;;5335:117;5130:329;;;;:::o;5465:351::-;5535:6;5584:2;5572:9;5563:7;5559:23;5555:32;5552:119;;;5590:79;;:::i;:::-;5552:119;5710:1;5735:64;5791:7;5782:6;5771:9;5767:22;5735:64;:::i;:::-;5725:74;;5681:128;5465:351;;;;:::o;5822:619::-;5899:6;5907;5915;5964:2;5952:9;5943:7;5939:23;5935:32;5932:119;;;5970:79;;:::i;:::-;5932:119;6090:1;6115:53;6160:7;6151:6;6140:9;6136:22;6115:53;:::i;:::-;6105:63;;6061:117;6217:2;6243:53;6288:7;6279:6;6268:9;6264:22;6243:53;:::i;:::-;6233:63;;6188:118;6345:2;6371:53;6416:7;6407:6;6396:9;6392:22;6371:53;:::i;:::-;6361:63;;6316:118;5822:619;;;;;:::o;6447:663::-;6535:6;6543;6551;6600:2;6588:9;6579:7;6575:23;6571:32;6568:119;;;6606:79;;:::i;:::-;6568:119;6726:1;6751:64;6807:7;6798:6;6787:9;6783:22;6751:64;:::i;:::-;6741:74;;6697:128;6864:2;6890:64;6946:7;6937:6;6926:9;6922:22;6890:64;:::i;:::-;6880:74;;6835:129;7003:2;7029:64;7085:7;7076:6;7065:9;7061:22;7029:64;:::i;:::-;7019:74;;6974:129;6447:663;;;;;:::o;7116:179::-;7185:10;7206:46;7248:3;7240:6;7206:46;:::i;:::-;7284:4;7279:3;7275:14;7261:28;;7116:179;;;;:::o;7301:108::-;7378:24;7396:5;7378:24;:::i;:::-;7373:3;7366:37;7301:108;;:::o;7415:118::-;7502:24;7520:5;7502:24;:::i;:::-;7497:3;7490:37;7415:118;;:::o;7569:732::-;7688:3;7717:54;7765:5;7717:54;:::i;:::-;7787:86;7866:6;7861:3;7787:86;:::i;:::-;7780:93;;7897:56;7947:5;7897:56;:::i;:::-;7976:7;8007:1;7992:284;8017:6;8014:1;8011:13;7992:284;;;8093:6;8087:13;8120:63;8179:3;8164:13;8120:63;:::i;:::-;8113:70;;8206:60;8259:6;8206:60;:::i;:::-;8196:70;;8052:224;8039:1;8036;8032:9;8027:14;;7992:284;;;7996:14;8292:3;8285:10;;7693:608;;;7569:732;;;;:::o;8307:109::-;8388:21;8403:5;8388:21;:::i;:::-;8383:3;8376:34;8307:109;;:::o;8422:161::-;8524:52;8570:5;8524:52;:::i;:::-;8519:3;8512:65;8422:161;;:::o;8589:185::-;8703:64;8761:5;8703:64;:::i;:::-;8698:3;8691:77;8589:185;;:::o;8780:147::-;8875:45;8914:5;8875:45;:::i;:::-;8870:3;8863:58;8780:147;;:::o;8933:364::-;9021:3;9049:39;9082:5;9049:39;:::i;:::-;9104:71;9168:6;9163:3;9104:71;:::i;:::-;9097:78;;9184:52;9229:6;9224:3;9217:4;9210:5;9206:16;9184:52;:::i;:::-;9261:29;9283:6;9261:29;:::i;:::-;9256:3;9252:39;9245:46;;9025:272;8933:364;;;;:::o;9303:366::-;9445:3;9466:67;9530:2;9525:3;9466:67;:::i;:::-;9459:74;;9542:93;9631:3;9542:93;:::i;:::-;9660:2;9655:3;9651:12;9644:19;;9303:366;;;:::o;9675:::-;9817:3;9838:67;9902:2;9897:3;9838:67;:::i;:::-;9831:74;;9914:93;10003:3;9914:93;:::i;:::-;10032:2;10027:3;10023:12;10016:19;;9675:366;;;:::o;10047:::-;10189:3;10210:67;10274:2;10269:3;10210:67;:::i;:::-;10203:74;;10286:93;10375:3;10286:93;:::i;:::-;10404:2;10399:3;10395:12;10388:19;;10047:366;;;:::o;10419:::-;10561:3;10582:67;10646:2;10641:3;10582:67;:::i;:::-;10575:74;;10658:93;10747:3;10658:93;:::i;:::-;10776:2;10771:3;10767:12;10760:19;;10419:366;;;:::o;10791:::-;10933:3;10954:67;11018:2;11013:3;10954:67;:::i;:::-;10947:74;;11030:93;11119:3;11030:93;:::i;:::-;11148:2;11143:3;11139:12;11132:19;;10791:366;;;:::o;11163:::-;11305:3;11326:67;11390:2;11385:3;11326:67;:::i;:::-;11319:74;;11402:93;11491:3;11402:93;:::i;:::-;11520:2;11515:3;11511:12;11504:19;;11163:366;;;:::o;11535:::-;11677:3;11698:67;11762:2;11757:3;11698:67;:::i;:::-;11691:74;;11774:93;11863:3;11774:93;:::i;:::-;11892:2;11887:3;11883:12;11876:19;;11535:366;;;:::o;11907:::-;12049:3;12070:67;12134:2;12129:3;12070:67;:::i;:::-;12063:74;;12146:93;12235:3;12146:93;:::i;:::-;12264:2;12259:3;12255:12;12248:19;;11907:366;;;:::o;12279:::-;12421:3;12442:67;12506:2;12501:3;12442:67;:::i;:::-;12435:74;;12518:93;12607:3;12518:93;:::i;:::-;12636:2;12631:3;12627:12;12620:19;;12279:366;;;:::o;12651:::-;12793:3;12814:67;12878:2;12873:3;12814:67;:::i;:::-;12807:74;;12890:93;12979:3;12890:93;:::i;:::-;13008:2;13003:3;12999:12;12992:19;;12651:366;;;:::o;13023:::-;13165:3;13186:67;13250:2;13245:3;13186:67;:::i;:::-;13179:74;;13262:93;13351:3;13262:93;:::i;:::-;13380:2;13375:3;13371:12;13364:19;;13023:366;;;:::o;13395:398::-;13554:3;13575:83;13656:1;13651:3;13575:83;:::i;:::-;13568:90;;13667:93;13756:3;13667:93;:::i;:::-;13785:1;13780:3;13776:11;13769:18;;13395:398;;;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:::-;14313:3;14334:67;14398:2;14393:3;14334:67;:::i;:::-;14327:74;;14410:93;14499:3;14410:93;:::i;:::-;14528:2;14523:3;14519:12;14512:19;;14171:366;;;:::o;14543:::-;14685:3;14706:67;14770:2;14765:3;14706:67;:::i;:::-;14699:74;;14782:93;14871:3;14782:93;:::i;:::-;14900:2;14895:3;14891:12;14884:19;;14543:366;;;:::o;14915:::-;15057:3;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15154:93;15243:3;15154:93;:::i;:::-;15272:2;15267:3;15263:12;15256:19;;14915:366;;;:::o;15287:::-;15429:3;15450:67;15514:2;15509:3;15450:67;:::i;:::-;15443:74;;15526:93;15615:3;15526:93;:::i;:::-;15644:2;15639:3;15635:12;15628:19;;15287:366;;;:::o;15659:::-;15801:3;15822:67;15886:2;15881:3;15822:67;:::i;:::-;15815:74;;15898:93;15987:3;15898:93;:::i;:::-;16016:2;16011:3;16007:12;16000:19;;15659:366;;;:::o;16031:118::-;16118:24;16136:5;16118:24;:::i;:::-;16113:3;16106:37;16031:118;;:::o;16155:112::-;16238:22;16254:5;16238:22;:::i;:::-;16233:3;16226:35;16155:112;;:::o;16273:379::-;16457:3;16479:147;16622:3;16479:147;:::i;:::-;16472:154;;16643:3;16636:10;;16273:379;;;:::o;16658:222::-;16751:4;16789:2;16778:9;16774:18;16766:26;;16802:71;16870:1;16859:9;16855:17;16846:6;16802:71;:::i;:::-;16658:222;;;;:::o;16886:332::-;17007:4;17045:2;17034:9;17030:18;17022:26;;17058:71;17126:1;17115:9;17111:17;17102:6;17058:71;:::i;:::-;17139:72;17207:2;17196:9;17192:18;17183:6;17139:72;:::i;:::-;16886:332;;;;;:::o;17224:::-;17345:4;17383:2;17372:9;17368:18;17360:26;;17396:71;17464:1;17453:9;17449:17;17440:6;17396:71;:::i;:::-;17477:72;17545:2;17534:9;17530:18;17521:6;17477:72;:::i;:::-;17224:332;;;;;:::o;17562:807::-;17811:4;17849:3;17838:9;17834:19;17826:27;;17863:71;17931:1;17920:9;17916:17;17907:6;17863:71;:::i;:::-;17944:72;18012:2;18001:9;17997:18;17988:6;17944:72;:::i;:::-;18026:80;18102:2;18091:9;18087:18;18078:6;18026:80;:::i;:::-;18116;18192:2;18181:9;18177:18;18168:6;18116:80;:::i;:::-;18206:73;18274:3;18263:9;18259:19;18250:6;18206:73;:::i;:::-;18289;18357:3;18346:9;18342:19;18333:6;18289:73;:::i;:::-;17562:807;;;;;;;;;:::o;18375:210::-;18462:4;18500:2;18489:9;18485:18;18477:26;;18513:65;18575:1;18564:9;18560:17;18551:6;18513:65;:::i;:::-;18375:210;;;;:::o;18591:252::-;18699:4;18737:2;18726:9;18722:18;18714:26;;18750:86;18833:1;18822:9;18818:17;18809:6;18750:86;:::i;:::-;18591:252;;;;:::o;18849:276::-;18969:4;19007:2;18996:9;18992:18;18984:26;;19020:98;19115:1;19104:9;19100:17;19091:6;19020:98;:::i;:::-;18849:276;;;;:::o;19131:313::-;19244:4;19282:2;19271:9;19267:18;19259:26;;19331:9;19325:4;19321:20;19317:1;19306:9;19302:17;19295:47;19359:78;19432:4;19423:6;19359:78;:::i;:::-;19351:86;;19131:313;;;;:::o;19450:419::-;19616:4;19654:2;19643:9;19639:18;19631:26;;19703:9;19697:4;19693:20;19689:1;19678:9;19674:17;19667:47;19731:131;19857:4;19731:131;:::i;:::-;19723:139;;19450:419;;;:::o;19875:::-;20041:4;20079:2;20068:9;20064:18;20056:26;;20128:9;20122:4;20118:20;20114:1;20103:9;20099:17;20092:47;20156:131;20282:4;20156:131;:::i;:::-;20148:139;;19875:419;;;:::o;20300:::-;20466:4;20504:2;20493:9;20489:18;20481:26;;20553:9;20547:4;20543:20;20539:1;20528:9;20524:17;20517:47;20581:131;20707:4;20581:131;:::i;:::-;20573:139;;20300:419;;;:::o;20725:::-;20891:4;20929:2;20918:9;20914:18;20906:26;;20978:9;20972:4;20968:20;20964:1;20953:9;20949:17;20942:47;21006:131;21132:4;21006:131;:::i;:::-;20998:139;;20725:419;;;:::o;21150:::-;21316:4;21354:2;21343:9;21339:18;21331:26;;21403:9;21397:4;21393:20;21389:1;21378:9;21374:17;21367:47;21431:131;21557:4;21431:131;:::i;:::-;21423:139;;21150:419;;;:::o;21575:::-;21741:4;21779:2;21768:9;21764:18;21756:26;;21828:9;21822:4;21818:20;21814:1;21803:9;21799:17;21792:47;21856:131;21982:4;21856:131;:::i;:::-;21848:139;;21575:419;;;:::o;22000:::-;22166:4;22204:2;22193:9;22189:18;22181:26;;22253:9;22247:4;22243:20;22239:1;22228:9;22224:17;22217:47;22281:131;22407:4;22281:131;:::i;:::-;22273:139;;22000:419;;;:::o;22425:::-;22591:4;22629:2;22618:9;22614:18;22606:26;;22678:9;22672:4;22668:20;22664:1;22653:9;22649:17;22642:47;22706:131;22832:4;22706:131;:::i;:::-;22698:139;;22425:419;;;:::o;22850:::-;23016:4;23054:2;23043:9;23039:18;23031:26;;23103:9;23097:4;23093:20;23089:1;23078:9;23074:17;23067:47;23131:131;23257:4;23131:131;:::i;:::-;23123:139;;22850:419;;;:::o;23275:::-;23441:4;23479:2;23468:9;23464:18;23456:26;;23528:9;23522:4;23518:20;23514:1;23503:9;23499:17;23492:47;23556:131;23682:4;23556:131;:::i;:::-;23548:139;;23275:419;;;:::o;23700:::-;23866:4;23904:2;23893:9;23889:18;23881:26;;23953:9;23947:4;23943:20;23939:1;23928:9;23924:17;23917:47;23981:131;24107:4;23981:131;:::i;:::-;23973:139;;23700:419;;;:::o;24125:::-;24291:4;24329:2;24318:9;24314:18;24306:26;;24378:9;24372:4;24368:20;24364:1;24353:9;24349:17;24342:47;24406:131;24532:4;24406:131;:::i;:::-;24398:139;;24125:419;;;:::o;24550:::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24803:9;24797:4;24793:20;24789:1;24778:9;24774:17;24767:47;24831:131;24957:4;24831:131;:::i;:::-;24823:139;;24550:419;;;:::o;24975:::-;25141:4;25179:2;25168:9;25164:18;25156:26;;25228:9;25222:4;25218:20;25214:1;25203:9;25199:17;25192:47;25256:131;25382:4;25256:131;:::i;:::-;25248:139;;24975:419;;;:::o;25400:::-;25566:4;25604:2;25593:9;25589:18;25581:26;;25653:9;25647:4;25643:20;25639:1;25628:9;25624:17;25617:47;25681:131;25807:4;25681:131;:::i;:::-;25673:139;;25400:419;;;:::o;25825:::-;25991:4;26029:2;26018:9;26014:18;26006:26;;26078:9;26072:4;26068:20;26064:1;26053:9;26049:17;26042:47;26106:131;26232:4;26106:131;:::i;:::-;26098:139;;25825:419;;;:::o;26250:::-;26416:4;26454:2;26443:9;26439:18;26431:26;;26503:9;26497:4;26493:20;26489:1;26478:9;26474:17;26467:47;26531:131;26657:4;26531:131;:::i;:::-;26523:139;;26250:419;;;:::o;26675:222::-;26768:4;26806:2;26795:9;26791:18;26783:26;;26819:71;26887:1;26876:9;26872:17;26863:6;26819:71;:::i;:::-;26675:222;;;;:::o;26903:483::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27125:71;27193:1;27182:9;27178:17;27169:6;27125:71;:::i;:::-;27243:9;27237:4;27233:20;27228:2;27217:9;27213:18;27206:48;27271:108;27374:4;27365:6;27271:108;:::i;:::-;27263:116;;26903:483;;;;;:::o;27392:831::-;27655:4;27693:3;27682:9;27678:19;27670:27;;27707:71;27775:1;27764:9;27760:17;27751:6;27707:71;:::i;:::-;27788:80;27864:2;27853:9;27849:18;27840:6;27788:80;:::i;:::-;27915:9;27909:4;27905:20;27900:2;27889:9;27885:18;27878:48;27943:108;28046:4;28037:6;27943:108;:::i;:::-;27935:116;;28061:72;28129:2;28118:9;28114:18;28105:6;28061:72;:::i;:::-;28143:73;28211:3;28200:9;28196:19;28187:6;28143:73;:::i;:::-;27392:831;;;;;;;;:::o;28229:214::-;28318:4;28356:2;28345:9;28341:18;28333:26;;28369:67;28433:1;28422:9;28418:17;28409:6;28369:67;:::i;:::-;28229:214;;;;:::o;28530:132::-;28597:4;28620:3;28612:11;;28650:4;28645:3;28641:14;28633:22;;28530:132;;;:::o;28668:114::-;28735:6;28769:5;28763:12;28753:22;;28668:114;;;:::o;28788:99::-;28840:6;28874:5;28868:12;28858:22;;28788:99;;;:::o;28893:113::-;28963:4;28995;28990:3;28986:14;28978:22;;28893:113;;;:::o;29012:184::-;29111:11;29145:6;29140:3;29133:19;29185:4;29180:3;29176:14;29161:29;;29012:184;;;;:::o;29202:147::-;29303:11;29340:3;29325:18;;29202:147;;;;:::o;29355:169::-;29439:11;29473:6;29468:3;29461:19;29513:4;29508:3;29504:14;29489:29;;29355:169;;;;:::o;29530:305::-;29570:3;29589:20;29607:1;29589:20;:::i;:::-;29584:25;;29623:20;29641:1;29623:20;:::i;:::-;29618:25;;29777:1;29709:66;29705:74;29702:1;29699:81;29696:107;;;29783:18;;:::i;:::-;29696:107;29827:1;29824;29820:9;29813:16;;29530:305;;;;:::o;29841:185::-;29881:1;29898:20;29916:1;29898:20;:::i;:::-;29893:25;;29932:20;29950:1;29932:20;:::i;:::-;29927:25;;29971:1;29961:35;;29976:18;;:::i;:::-;29961:35;30018:1;30015;30011:9;30006:14;;29841:185;;;;:::o;30032:348::-;30072:7;30095:20;30113:1;30095:20;:::i;:::-;30090:25;;30129:20;30147:1;30129:20;:::i;:::-;30124:25;;30317:1;30249:66;30245:74;30242:1;30239:81;30234:1;30227:9;30220:17;30216:105;30213:131;;;30324:18;;:::i;:::-;30213:131;30372:1;30369;30365:9;30354:20;;30032:348;;;;:::o;30386:191::-;30426:4;30446:20;30464:1;30446:20;:::i;:::-;30441:25;;30480:20;30498:1;30480:20;:::i;:::-;30475:25;;30519:1;30516;30513:8;30510:34;;;30524:18;;:::i;:::-;30510:34;30569:1;30566;30562:9;30554:17;;30386:191;;;;:::o;30583:96::-;30620:7;30649:24;30667:5;30649:24;:::i;:::-;30638:35;;30583:96;;;:::o;30685:90::-;30719:7;30762:5;30755:13;30748:21;30737:32;;30685:90;;;:::o;30781:109::-;30831:7;30860:24;30878:5;30860:24;:::i;:::-;30849:35;;30781:109;;;:::o;30896:126::-;30933:7;30973:42;30966:5;30962:54;30951:65;;30896:126;;;:::o;31028:77::-;31065:7;31094:5;31083:16;;31028:77;;;:::o;31111:86::-;31146:7;31186:4;31179:5;31175:16;31164:27;;31111:86;;;:::o;31203:141::-;31268:9;31301:37;31332:5;31301:37;:::i;:::-;31288:50;;31203:141;;;:::o;31350:153::-;31427:9;31460:37;31491:5;31460:37;:::i;:::-;31447:50;;31350:153;;;:::o;31509:121::-;31567:9;31600:24;31618:5;31600:24;:::i;:::-;31587:37;;31509:121;;;:::o;31636:126::-;31686:9;31719:37;31750:5;31719:37;:::i;:::-;31706:50;;31636:126;;;:::o;31768:113::-;31818:9;31851:24;31869:5;31851:24;:::i;:::-;31838:37;;31768:113;;;:::o;31887:307::-;31955:1;31965:113;31979:6;31976:1;31973:13;31965:113;;;32064:1;32059:3;32055:11;32049:18;32045:1;32040:3;32036:11;32029:39;32001:2;31998:1;31994:10;31989:15;;31965:113;;;32096:6;32093:1;32090:13;32087:101;;;32176:1;32167:6;32162:3;32158:16;32151:27;32087:101;31936:258;31887:307;;;:::o;32200:320::-;32244:6;32281:1;32275:4;32271:12;32261:22;;32328:1;32322:4;32318:12;32349:18;32339:81;;32405:4;32397:6;32393:17;32383:27;;32339:81;32467:2;32459:6;32456:14;32436:18;32433:38;32430:84;;;32486:18;;:::i;:::-;32430:84;32251:269;32200:320;;;:::o;32526:180::-;32574:77;32571:1;32564:88;32671:4;32668:1;32661:15;32695:4;32692:1;32685:15;32712:180;32760:77;32757:1;32750:88;32857:4;32854:1;32847:15;32881:4;32878:1;32871:15;32898:180;32946:77;32943:1;32936:88;33043:4;33040:1;33033:15;33067:4;33064:1;33057:15;33084:180;33132:77;33129:1;33122:88;33229:4;33226:1;33219:15;33253:4;33250:1;33243:15;33270:180;33318:77;33315:1;33308:88;33415:4;33412:1;33405:15;33439:4;33436:1;33429:15;33579:117;33688:1;33685;33678:12;33702:102;33743:6;33794:2;33790:7;33785:2;33778:5;33774:14;33770:28;33760:38;;33702:102;;;:::o;33810:222::-;33950:34;33946:1;33938:6;33934:14;33927:58;34019:5;34014:2;34006:6;34002:15;33995:30;33810:222;:::o;34038:225::-;34178:34;34174:1;34166:6;34162:14;34155:58;34247:8;34242:2;34234:6;34230:15;34223:33;34038:225;:::o;34269:221::-;34409:34;34405:1;34397:6;34393:14;34386:58;34478:4;34473:2;34465:6;34461:15;34454:29;34269:221;:::o;34496:177::-;34636:29;34632:1;34624:6;34620:14;34613:53;34496:177;:::o;34679:163::-;34819:15;34815:1;34807:6;34803:14;34796:39;34679:163;:::o;34848:227::-;34988:34;34984:1;34976:6;34972:14;34965:58;35057:10;35052:2;35044:6;35040:15;35033:35;34848:227;:::o;35081:220::-;35221:34;35217:1;35209:6;35205:14;35198:58;35290:3;35285:2;35277:6;35273:15;35266:28;35081:220;:::o;35307:182::-;35447:34;35443:1;35435:6;35431:14;35424:58;35307:182;:::o;35495:228::-;35635:34;35631:1;35623:6;35619:14;35612:58;35704:11;35699:2;35691:6;35687:15;35680:36;35495:228;:::o;35729:182::-;35869:34;35865:1;35857:6;35853:14;35846:58;35729:182;:::o;35917:224::-;36057:34;36053:1;36045:6;36041:14;36034:58;36126:7;36121:2;36113:6;36109:15;36102:32;35917:224;:::o;36147:114::-;;:::o;36267:301::-;36407:34;36403:1;36395:6;36391:14;36384:58;36476:34;36471:2;36463:6;36459:15;36452:59;36545:15;36540:2;36532:6;36528:15;36521:40;36267:301;:::o;36574:223::-;36714:34;36710:1;36702:6;36698:14;36691:58;36783:6;36778:2;36770:6;36766:15;36759:31;36574:223;:::o;36803:232::-;36943:34;36939:1;36931:6;36927:14;36920:58;37012:15;37007:2;36999:6;36995:15;36988:40;36803:232;:::o;37041:234::-;37181:34;37177:1;37169:6;37165:14;37158:58;37250:17;37245:2;37237:6;37233:15;37226:42;37041:234;:::o;37281:176::-;37421:28;37417:1;37409:6;37405:14;37398:52;37281:176;:::o;37463:170::-;37603:22;37599:1;37591:6;37587:14;37580:46;37463:170;:::o;37639:122::-;37712:24;37730:5;37712:24;:::i;:::-;37705:5;37702:35;37692:63;;37751:1;37748;37741:12;37692:63;37639:122;:::o;37767:116::-;37837:21;37852:5;37837:21;:::i;:::-;37830:5;37827:32;37817:60;;37873:1;37870;37863:12;37817:60;37767:116;:::o;37889:148::-;37975:37;38006:5;37975:37;:::i;:::-;37968:5;37965:48;37955:76;;38027:1;38024;38017:12;37955:76;37889:148;:::o;38043:122::-;38116:24;38134:5;38116:24;:::i;:::-;38109:5;38106:35;38096:63;;38155:1;38152;38145:12;38096:63;38043:122;:::o

Swarm Source

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