Contract 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a4

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe16eef68b808bd30ba2d3abd77902f0933a62bd833da7bd7caa3832d6df50b45Approve103353862021-11-26 4:16:305 days 21 hrs ago0xe76fc1c3e9229996623cbd1547c8dae81f82f814 IN 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a40 HT0.000153992623.26
0x80909384751b296cb512de6684f273729aaa5bdb4339ed6b3c83a675d2488ad6Approve103353862021-11-26 4:16:305 days 21 hrs ago0xa33c4d5b4da20fdd71b006271226c1395ff82b44 IN 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a40 HT0.000153992623.26
0xa93244ebcc77ccd2280c31fb0477a4dfb3e10fddad88e72ce25910a2fcafca60Approve103353862021-11-26 4:16:305 days 21 hrs ago0x4fea829c8e7781fe1d7a5c63d56674e0fff520c7 IN 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a40 HT0.000153992623.26
0xd8e02e0550dc59f7f7db51a43593fd6031c2d5f1e88e9c1365d67dac3f8bda89Approve103353622021-11-26 4:15:185 days 21 hrs ago0xe5db5c2c484c84c7e540a694963a9cf1e5e37014 IN 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a40 HT0.00011809252.5
0x1a32c7a240015e89e398d9324c85680bc89a8f328de18632d0ad88cf16efdaceTransfer103175722021-11-25 13:25:486 days 12 hrs ago0xe5db5c2c484c84c7e540a694963a9cf1e5e37014 IN 0x9b10a64c6925d090eea6e76f8aebf2e539b1f1a40 HT0.00025321252.5
0xaf4d0bb87c2e947562df9916ca81c886cb14951059b9fa9462339bdcc2d78fc40x60c06040103175122021-11-25 13:22:486 days 12 hrs ago0xe5db5c2c484c84c7e540a694963a9cf1e5e37014 IN  Contract Creation0 HT0.019876185 2.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20Token

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-11-25
*/

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

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

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        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;
    }
}

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

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

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address owner_) {
        address msgSender = owner_;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}


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

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

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

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

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


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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 WHT() 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 ERC20Token is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    uint256 public _taxFee;
    uint256 private _previousTaxFee;
    
    uint256 public _totalFee;
    uint256 private _previousTotalFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    uint256 public _maxTxAmount;
    uint256 public numTokensSellToAddToLiquidity;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public _deadFee;
    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    address public _deadWalletAddress = 0x000000000000000000000000000000000000dEaD;
    address public _marketingWalletAddress = 0xe5db5c2c484C84c7E540A694963a9cF1e5E37014;


    constructor (string memory name_, string memory symbol_, uint8 decimals_, uint256  totalSupply_, uint256 taxFee_, uint256 liquidityFee_, uint256 deadFee_, uint256 marketingFee_, address owner_) Ownable(owner_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;

        _tTotal = totalSupply_ * (10 ** uint256(decimals_));
        _rTotal =  (MAX - (MAX % _tTotal));
        _maxTxAmount = _tTotal.mul(500).div(10**3);
        numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**5);

        _taxFee = taxFee_;
        _previousTaxFee = taxFee_;

        _deadFee = deadFee_;
        _liquidityFee = liquidityFee_;
        _marketingFee = marketingFee_;

        _totalFee = liquidityFee_.add(deadFee_).add(marketingFee_);
        _previousTotalFee = _totalFee;

        _rOwned[owner()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xED7d5F38C79115ca12fe6C0041abb22F0A06C300);
        
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WHT());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_deadWalletAddress] = true;
        _isExcludedFromFee[_marketingWalletAddress] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function setDeadWalletAddress(address account) public onlyOwner {
        _deadWalletAddress = account;
    }
    function setMarketingWalletAddress(address account) public onlyOwner {
        _marketingWalletAddress = account;
    }
    function setLiquidityFeePercent(uint256 liquidityFee_) external onlyOwner() {
        _liquidityFee = liquidityFee_;
        _totalFee = liquidityFee_.add(_deadFee).add(_marketingFee);
    }
    function setDeadFeePercent(uint256 deadFee_) external onlyOwner() {
        _deadFee = deadFee_;
        _totalFee = deadFee_.add(_liquidityFee).add(_marketingFee);
    }
    function setMarketingFeePercent(uint256 marketingFee_) external onlyOwner() {
        _marketingFee = marketingFee_;
        _totalFee = marketingFee_.add(_liquidityFee).add(_deadFee);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateTotalFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateTotalFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_totalFee).div(
            10**2
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _totalFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousTotalFee = _totalFee;
        
        _taxFee = 0;
        _totalFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _totalFee = _previousTotalFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndDeadAndLiquify(contractTokenBalance);
        }
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }
    function swapManual() public onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0 , "the token balance is 0");
        swapAndDeadAndLiquify(contractTokenBalance);
    }

    function swapAndDeadAndLiquify(uint256 amount) private lockTheSwap{
        uint256 marketingAmount = amount.mul(_marketingFee).div(_totalFee);
        uint256 liquidityAmount = amount.mul(_liquidityFee).div(_totalFee);
        uint256 deadAmount = amount.sub(marketingAmount).sub(liquidityAmount);
        if(marketingAmount > 0) swapTokenToMarketing(marketingAmount);
        if(liquidityAmount > 0) swapAndLiquify(liquidityAmount);
        if(_deadFee > 0 && deadAmount > 0) _tokenTransfer(address(this), _deadWalletAddress, deadAmount, false);
    }

    function swapTokenToMarketing(uint256 amount) private {
        uint256 half = amount.div(2);
        uint256 otherHalf = amount.sub(half);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);

        //Send to Marketing address
        payable(_marketingWalletAddress).transfer(transferredBalance);
        _tokenTransfer(address(this), _marketingWalletAddress, otherHalf, false);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

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

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

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

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WHT();

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

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

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"uint256","name":"taxFee_","type":"uint256"},{"internalType":"uint256","name":"liquidityFee_","type":"uint256"},{"internalType":"uint256","name":"deadFee_","type":"uint256"},{"internalType":"uint256","name":"marketingFee_","type":"uint256"},{"internalType":"address","name":"owner_","type":"address"}],"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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_deadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deadWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadFee_","type":"uint256"}],"name":"setDeadFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setDeadWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee_","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee_","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001601360016101000a81548160ff02191690831515021790555061dead601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e5db5c2c484c84c7e540a694963a9cf1e5e37014601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000c457600080fd5b50604051620071d2380380620071d28339818101604052810190620000ea919062000c74565b806000819050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505088600c9080519060200190620001a592919062000949565b5087600d9080519060200190620001be92919062000949565b5086600e60006101000a81548160ff021916908360ff1602179055508660ff16600a620001ec919062000f14565b86620001f9919062000f65565b60098190555060095460001962000211919062000ff5565b6000196200022091906200102d565b600a819055506200025f6103e86200024b6101f46009546200077f60201b62002a801790919060201c565b6200080360201b62002afb1790919060201c565b6014819055506200029e620186a06200028a60056009546200077f60201b62002a801790919060201c565b6200080360201b62002afb1790919060201c565b60158190555084600f8190555084601081905550826016819055508360178190555081601881905550620002fa82620002e685876200085560201b62002b451790919060201c565b6200085560201b62002b451790919060201c565b601181905550601154601281905550600a546003600062000320620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ed7d5f38c79115ca12fe6c0041abb22f0a06c30090508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062001068565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff16635cb485926040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000477919062001068565b6040518363ffffffff1660e01b815260040162000496929190620010ab565b6020604051808303816000875af1158015620004b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dc919062001068565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060016006600062000559620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000706620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620007679190620010e9565b60405180910390a3505050505050505050506200138b565b600080831415620007945760009050620007fd565b60008284620007a4919062000f65565b9050828482620007b5919062001106565b14620007f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ef90620011c5565b60405180910390fd5b809150505b92915050565b60006200084d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008e160201b60201c565b905092915050565b6000808284620008669190620011e7565b905083811015620008ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a59062001294565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000922919062001302565b60405180910390fd5b50600083856200093c919062001106565b9050809150509392505050565b828054620009579062001355565b90600052602060002090601f0160209004810192826200097b5760008555620009c7565b82601f106200099657805160ff1916838001178555620009c7565b82800160010185558215620009c7579182015b82811115620009c6578251825591602001919060010190620009a9565b5b509050620009d69190620009da565b5090565b5b80821115620009f5576000816000905550600101620009db565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000a628262000a17565b810181811067ffffffffffffffff8211171562000a845762000a8362000a28565b5b80604052505050565b600062000a99620009f9565b905062000aa7828262000a57565b919050565b600067ffffffffffffffff82111562000aca5762000ac962000a28565b5b62000ad58262000a17565b9050602081019050919050565b60005b8381101562000b0257808201518184015260208101905062000ae5565b8381111562000b12576000848401525b50505050565b600062000b2f62000b298462000aac565b62000a8d565b90508281526020810184848401111562000b4e5762000b4d62000a12565b5b62000b5b84828562000ae2565b509392505050565b600082601f83011262000b7b5762000b7a62000a0d565b5b815162000b8d84826020860162000b18565b91505092915050565b600060ff82169050919050565b62000bae8162000b96565b811462000bba57600080fd5b50565b60008151905062000bce8162000ba3565b92915050565b6000819050919050565b62000be98162000bd4565b811462000bf557600080fd5b50565b60008151905062000c098162000bde565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c3c8262000c0f565b9050919050565b62000c4e8162000c2f565b811462000c5a57600080fd5b50565b60008151905062000c6e8162000c43565b92915050565b60008060008060008060008060006101208a8c03121562000c9a5762000c9962000a03565b5b60008a015167ffffffffffffffff81111562000cbb5762000cba62000a08565b5b62000cc98c828d0162000b63565b99505060208a015167ffffffffffffffff81111562000ced5762000cec62000a08565b5b62000cfb8c828d0162000b63565b985050604062000d0e8c828d0162000bbd565b975050606062000d218c828d0162000bf8565b965050608062000d348c828d0162000bf8565b95505060a062000d478c828d0162000bf8565b94505060c062000d5a8c828d0162000bf8565b93505060e062000d6d8c828d0162000bf8565b92505061010062000d818c828d0162000c5d565b9150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e1f5780860481111562000df75762000df662000d91565b5b600185161562000e075780820291505b808102905062000e178562000dc0565b945062000dd7565b94509492505050565b60008262000e3a576001905062000f0d565b8162000e4a576000905062000f0d565b816001811462000e63576002811462000e6e5762000ea4565b600191505062000f0d565b60ff84111562000e835762000e8262000d91565b5b8360020a91508482111562000e9d5762000e9c62000d91565b5b5062000f0d565b5060208310610133831016604e8410600b841016171562000ede5782820a90508381111562000ed85762000ed762000d91565b5b62000f0d565b62000eed848484600162000dcd565b9250905081840481111562000f075762000f0662000d91565b5b81810290505b9392505050565b600062000f218262000bd4565b915062000f2e8362000bd4565b925062000f5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e28565b905092915050565b600062000f728262000bd4565b915062000f7f8362000bd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fbb5762000fba62000d91565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010028262000bd4565b91506200100f8362000bd4565b92508262001022576200102162000fc6565b5b828206905092915050565b60006200103a8262000bd4565b9150620010478362000bd4565b9250828210156200105d576200105c62000d91565b5b828203905092915050565b60006020828403121562001081576200108062000a03565b5b6000620010918482850162000c5d565b91505092915050565b620010a58162000c2f565b82525050565b6000604082019050620010c260008301856200109a565b620010d160208301846200109a565b9392505050565b620010e38162000bd4565b82525050565b6000602082019050620011006000830184620010d8565b92915050565b6000620011138262000bd4565b9150620011208362000bd4565b92508262001133576200113262000fc6565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011ad6021836200113e565b9150620011ba826200114f565b604082019050919050565b60006020820190508181036000830152620011e0816200119e565b9050919050565b6000620011f48262000bd4565b9150620012018362000bd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001239576200123862000d91565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200127c601b836200113e565b9150620012898262001244565b602082019050919050565b60006020820190508181036000830152620012af816200126d565b9050919050565b600081519050919050565b6000620012ce82620012b6565b620012da81856200113e565b9350620012ec81856020860162000ae2565b620012f78162000a17565b840191505092915050565b600060208201905081810360008301526200131e8184620012c1565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200136e57607f821691505b6020821081141562001385576200138462001326565b5b50919050565b60805160a051615df7620013db600039600081816116d10152612fa3015260008181610d48015281816146b401528181614795015281816147bc01528181614858015261487f0152615df76000f3fe6080604052600436106102975760003560e01c806352390c021161015a578063a69df4b5116100c1578063d2a8b4401161007a578063d2a8b44014610a27578063d543dbeb14610a3e578063dd46706414610a67578063dd62ed3e14610a90578063ea2f0b3714610acd578063f2fde38b14610af65761029e565b8063a69df4b514610929578063a9059cbb14610940578063b4d163ff1461097d578063b6c52324146109a8578063c49b9a80146109d3578063d12a7688146109fc5761029e565b80637d1db4a5116101135780637d1db4a51461080557806388f82020146108305780638da5cb5b1461086d5780638ee88c531461089857806395d89b41146108c1578063a457c2d7146108ec5761029e565b806352390c02146106f75780635342acb4146107205780635ac7d0701461075d5780636bc87c3a1461078657806370a08231146107b1578063715018a6146107ee5761029e565b80633685d419116101fe578063450c4384116101b7578063450c4384146105e75780634549b03914610612578063457c194c1461064f57806349bd5a5e146106785780634a74bb02146106a35780634cb80fd5146106ce5761029e565b80633685d419146104d957806339509351146105025780633b124fe71461053f5780633bd5d1731461056a5780634144d9e414610593578063437823ec146105be5761029e565b806318160ddd1161025057806318160ddd146103b357806322976e0d146103de57806323b872dd14610409578063283f7820146104465780632d83811914610471578063313ce567146104ae5761029e565b8063061c82d0146102a357806306fdde03146102cc578063095ea7b3146102f757806313114a9d14610334578063161dd0571461035f5780631694505e146103885761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c59190614b4d565b610b1f565b005b3480156102d857600080fd5b506102e1610bbe565b6040516102ee9190614c13565b60405180910390f35b34801561030357600080fd5b5061031e60048036038101906103199190614c93565b610c50565b60405161032b9190614cee565b60405180910390f35b34801561034057600080fd5b50610349610c6e565b6040516103569190614d18565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190614b4d565b610c78565b005b34801561039457600080fd5b5061039d610d46565b6040516103aa9190614d92565b60405180910390f35b3480156103bf57600080fd5b506103c8610d6a565b6040516103d59190614d18565b60405180910390f35b3480156103ea57600080fd5b506103f3610d74565b6040516104009190614d18565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614dad565b610d7a565b60405161043d9190614cee565b60405180910390f35b34801561045257600080fd5b5061045b610e53565b6040516104689190614d18565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190614b4d565b610e59565b6040516104a59190614d18565b60405180910390f35b3480156104ba57600080fd5b506104c3610ec7565b6040516104d09190614e1c565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb9190614e37565b610ede565b005b34801561050e57600080fd5b5061052960048036038101906105249190614c93565b61122d565b6040516105369190614cee565b60405180910390f35b34801561054b57600080fd5b506105546112e0565b6040516105619190614d18565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c9190614b4d565b6112e6565b005b34801561059f57600080fd5b506105a8611461565b6040516105b59190614e73565b60405180910390f35b3480156105ca57600080fd5b506105e560048036038101906105e09190614e37565b611487565b005b3480156105f357600080fd5b506105fc611577565b6040516106099190614d18565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190614eba565b61157d565b6040516106469190614d18565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190614b4d565b611601565b005b34801561068457600080fd5b5061068d6116cf565b60405161069a9190614e73565b60405180910390f35b3480156106af57600080fd5b506106b86116f3565b6040516106c59190614cee565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190614e37565b611706565b005b34801561070357600080fd5b5061071e60048036038101906107199190614e37565b6117df565b005b34801561072c57600080fd5b5061074760048036038101906107429190614e37565b611a93565b6040516107549190614cee565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190614e37565b611ae9565b005b34801561079257600080fd5b5061079b611bc2565b6040516107a89190614d18565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190614e37565b611bc8565b6040516107e59190614d18565b60405180910390f35b3480156107fa57600080fd5b50610803611cb3565b005b34801561081157600080fd5b5061081a611e06565b6040516108279190614d18565b60405180910390f35b34801561083c57600080fd5b5061085760048036038101906108529190614e37565b611e0c565b6040516108649190614cee565b60405180910390f35b34801561087957600080fd5b50610882611e62565b60405161088f9190614e73565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba9190614b4d565b611e8b565b005b3480156108cd57600080fd5b506108d6611f59565b6040516108e39190614c13565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e9190614c93565b611feb565b6040516109209190614cee565b60405180910390f35b34801561093557600080fd5b5061093e6120b8565b005b34801561094c57600080fd5b5061096760048036038101906109629190614c93565b61228c565b6040516109749190614cee565b60405180910390f35b34801561098957600080fd5b506109926122aa565b60405161099f9190614e73565b60405180910390f35b3480156109b457600080fd5b506109bd6122d0565b6040516109ca9190614d18565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190614efa565b6122da565b005b348015610a0857600080fd5b50610a116123c3565b604051610a1e9190614d18565b60405180910390f35b348015610a3357600080fd5b50610a3c6123c9565b005b348015610a4a57600080fd5b50610a656004803603810190610a609190614b4d565b6124ba565b005b348015610a7357600080fd5b50610a8e6004803603810190610a899190614b4d565b612580565b005b348015610a9c57600080fd5b50610ab76004803603810190610ab29190614f27565b612747565b604051610ac49190614d18565b60405180910390f35b348015610ad957600080fd5b50610af46004803603810190610aef9190614e37565b6127ce565b005b348015610b0257600080fd5b50610b1d6004803603810190610b189190614e37565b6128be565b005b610b27612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90614fb3565b60405180910390fd5b80600f8190555050565b6060600c8054610bcd90615002565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf990615002565b8015610c465780601f10610c1b57610100808354040283529160200191610c46565b820191906000526020600020905b815481529060010190602001808311610c2957829003601f168201915b5050505050905090565b6000610c64610c5d612ba3565b8484612bab565b6001905092915050565b6000600b54905090565b610c80612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490614fb3565b60405180910390fd5b80601681905550610d3d601854610d2f60175484612b4590919063ffffffff16565b612b4590919063ffffffff16565b60118190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b60185481565b6000610d87848484612d76565b610e4884610d93612ba3565b610e4385604051806060016040528060288152602001615d7560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610df9612ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130de9092919063ffffffff16565b612bab565b600190509392505050565b60115481565b6000600a54821115610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e97906150a6565b60405180910390fd5b6000610eaa613142565b9050610ebf8184612afb90919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b610ee6612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90614fb3565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690615112565b60405180910390fd5b60005b600880549050811015611229578173ffffffffffffffffffffffffffffffffffffffff166008828154811061103a57611039615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561121657600860016008805490506110959190615190565b815481106110a6576110a5615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106110e5576110e4615132565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806111dc576111db6151c4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611229565b8080611221906151f3565b915050611002565b5050565b60006112d661123a612ba3565b846112d1856005600061124b612ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b612bab565b6001905092915050565b600f5481565b60006112f0612ba3565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561137f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611376906152ae565b60405180910390fd5b600061138a8361316d565b505050505090506113e381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061143b81600a546131c990919063ffffffff16565b600a8190555061145683600b54612b4590919063ffffffff16565b600b81905550505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61148f612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390614fb3565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60165481565b60006009548311156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb9061531a565b60405180910390fd5b816115e45760006115d48461316d565b50505050509050809150506115fb565b60006115ef8461316d565b50505050915050809150505b92915050565b611609612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90614fb3565b60405180910390fd5b806018819055506116c66016546116b860175484612b4590919063ffffffff16565b612b4590919063ffffffff16565b60118190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601360019054906101000a900460ff1681565b61170e612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290614fb3565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117e7612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90614fb3565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890615112565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156119d557611991600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e59565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611af1612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590614fb3565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c6357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611cae565b611cab600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e59565b90505b919050565b611cbb612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e93612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1790614fb3565b60405180910390fd5b80601781905550611f50601854611f4260165484612b4590919063ffffffff16565b612b4590919063ffffffff16565b60118190555050565b6060600d8054611f6890615002565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9490615002565b8015611fe15780601f10611fb657610100808354040283529160200191611fe1565b820191906000526020600020905b815481529060010190602001808311611fc457829003601f168201915b5050505050905090565b60006120ae611ff8612ba3565b846120a985604051806060016040528060258152602001615d9d6025913960056000612022612ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130de9092919063ffffffff16565b612bab565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f906153ac565b60405180910390fd5b600254421161218c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218390615418565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006122a0612299612ba3565b8484612d76565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6122e2612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236690614fb3565b60405180910390fd5b80601360016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516123b89190614cee565b60405180910390a150565b60155481565b6123d1612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590614fb3565b60405180910390fd5b600061246930611bc8565b9050600081116124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a590615484565b60405180910390fd5b6124b781613213565b50565b6124c2612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461254f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254690614fb3565b60405180910390fd5b612577606461256983600954612a8090919063ffffffff16565b612afb90919063ffffffff16565b60148190555050565b612588612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614fb3565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426126c391906154a4565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6127d6612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a90614fb3565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128c6612ba3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614fb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ba9061556c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415612a935760009050612af5565b60008284612aa1919061558c565b9050828482612ab09190615615565b14612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae7906156b8565b60405180910390fd5b809150505b92915050565b6000612b3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061333f565b905092915050565b6000808284612b5491906154a4565b905083811015612b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9090615724565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c12906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290615848565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d699190614d18565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd906158da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d9061596c565b60405180910390fd5b60008111612e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e90906159fe565b60405180910390fd5b612ea1611e62565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f0f5750612edf611e62565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f5a57601454811115612f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5090615a90565b60405180910390fd5b5b6000612f6530611bc8565b90506014548110612f765760145490505b60006015548210159050808015612f9a5750601360009054906101000a900460ff16155b8015612ff257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561300a5750601360019054906101000a900460ff165b156130195761301882613213565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130c05750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ca57600090505b6130d6868686846133a2565b505050505050565b6000838311158290613126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311d9190614c13565b60405180910390fd5b50600083856131359190615190565b9050809150509392505050565b600080600061314f6136b3565b915091506131668183612afb90919063ffffffff16565b9250505090565b60008060008060008060008060006131848a613966565b92509250925060008060006131a28d868661319d613142565b6139c0565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061320b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130de565b905092915050565b6001601360006101000a81548160ff021916908315150217905550600061325960115461324b60185485612a8090919063ffffffff16565b612afb90919063ffffffff16565b9050600061328660115461327860175486612a8090919063ffffffff16565b612afb90919063ffffffff16565b905060006132af826132a185876131c990919063ffffffff16565b6131c990919063ffffffff16565b905060008311156132c4576132c383613a49565b5b60008211156132d7576132d682613b3c565b5b60006016541180156132e95750600081115b1561331e5761331d30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360006133a2565b5b5050506000601360006101000a81548160ff02191690831515021790555050565b60008083118290613386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337d9190614c13565b60405180910390fd5b50600083856133959190615615565b9050809150509392505050565b806133b0576133af613bdc565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134535750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346857613463848484613c1f565b61369f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561350b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135205761351b848484613e7f565b61369e565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135c45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135d9576135d48484846140df565b61369d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136905761368b8484846142aa565b61369c565b61369b8484846140df565b5b5b5b5b806136ad576136ac61459f565b5b50505050565b6000806000600a5490506000600954905060005b600880549050811015613929578260036000600884815481106136ed576136ec615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806137db575081600460006008848154811061377357613772615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156137f257600a5460095494509450505050613962565b613882600360006008848154811061380d5761380c615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131c990919063ffffffff16565b9250613914600460006008848154811061389f5761389e615132565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836131c990919063ffffffff16565b91508080613921906151f3565b9150506136c7565b50613941600954600a54612afb90919063ffffffff16565b82101561395957600a54600954935093505050613962565b81819350935050505b9091565b600080600080613975856145b3565b90506000613982866145e4565b905060006139ab8261399d858a6131c990919063ffffffff16565b6131c990919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806139d98589612a8090919063ffffffff16565b905060006139f08689612a8090919063ffffffff16565b90506000613a078789612a8090919063ffffffff16565b90506000613a3082613a2285876131c990919063ffffffff16565b6131c990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000613a5f600283612afb90919063ffffffff16565b90506000613a7682846131c990919063ffffffff16565b90506000479050613a8683614615565b6000613a9b82476131c990919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b05573d6000803e3d6000fd5b50613b3530601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560006133a2565b5050505050565b6000613b52600283612afb90919063ffffffff16565b90506000613b6982846131c990919063ffffffff16565b90506000479050613b7983614615565b6000613b8e82476131c990919063ffffffff16565b9050613b9a8382614852565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613bcd93929190615ab0565b60405180910390a15050505050565b6000600f54148015613bf057506000601154145b15613bfa57613c1d565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b600080600080600080613c318761316d565b955095509550955095509550613c8f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613db985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0581614933565b613e0f8483614ad8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e6c9190614d18565b60405180910390a3505050505050505050565b600080600080600080613e918761316d565b955095509550955095509550613eef86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061401985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061406581614933565b61406f8483614ad8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140cc9190614d18565b60405180910390a3505050505050505050565b6000806000806000806140f18761316d565b95509550955095509550955061414f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141e485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061423081614933565b61423a8483614ad8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516142979190614d18565b60405180910390a3505050505050505050565b6000806000806000806142bc8761316d565b95509550955095509550955061431a87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143af86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c990919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061444483600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144d985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061452581614933565b61452f8483614ad8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161458c9190614d18565b60405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006145dd60646145cf600f5485612a8090919063ffffffff16565b612afb90919063ffffffff16565b9050919050565b600061460e606461460060115485612a8090919063ffffffff16565b612afb90919063ffffffff16565b9050919050565b6000600267ffffffffffffffff81111561463257614631615ae7565b5b6040519080825280602002602001820160405280156146605781602001602082028036833780820191505090505b509050308160008151811061467857614677615132565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635cb485926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561471d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147419190615b2b565b8160018151811061475557614754615132565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147ba307f000000000000000000000000000000000000000000000000000000000000000084612bab565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161481c959493929190615c51565b600060405180830381600087803b15801561483657600080fd5b505af115801561484a573d6000803e3d6000fd5b505050505050565b61487d307f000000000000000000000000000000000000000000000000000000000000000084612bab565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806148c7611e62565b426040518863ffffffff1660e01b81526004016148e996959493929190615cab565b60606040518083038185885af1158015614907573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061492c9190615d21565b5050505050565b600061493d613142565b905060006149548284612a8090919063ffffffff16565b90506149a881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ad357614a8f83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614aed82600a546131c990919063ffffffff16565b600a81905550614b0881600b54612b4590919063ffffffff16565b600b819055505050565b600080fd5b6000819050919050565b614b2a81614b17565b8114614b3557600080fd5b50565b600081359050614b4781614b21565b92915050565b600060208284031215614b6357614b62614b12565b5b6000614b7184828501614b38565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614bb4578082015181840152602081019050614b99565b83811115614bc3576000848401525b50505050565b6000601f19601f8301169050919050565b6000614be582614b7a565b614bef8185614b85565b9350614bff818560208601614b96565b614c0881614bc9565b840191505092915050565b60006020820190508181036000830152614c2d8184614bda565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614c6082614c35565b9050919050565b614c7081614c55565b8114614c7b57600080fd5b50565b600081359050614c8d81614c67565b92915050565b60008060408385031215614caa57614ca9614b12565b5b6000614cb885828601614c7e565b9250506020614cc985828601614b38565b9150509250929050565b60008115159050919050565b614ce881614cd3565b82525050565b6000602082019050614d036000830184614cdf565b92915050565b614d1281614b17565b82525050565b6000602082019050614d2d6000830184614d09565b92915050565b6000819050919050565b6000614d58614d53614d4e84614c35565b614d33565b614c35565b9050919050565b6000614d6a82614d3d565b9050919050565b6000614d7c82614d5f565b9050919050565b614d8c81614d71565b82525050565b6000602082019050614da76000830184614d83565b92915050565b600080600060608486031215614dc657614dc5614b12565b5b6000614dd486828701614c7e565b9350506020614de586828701614c7e565b9250506040614df686828701614b38565b9150509250925092565b600060ff82169050919050565b614e1681614e00565b82525050565b6000602082019050614e316000830184614e0d565b92915050565b600060208284031215614e4d57614e4c614b12565b5b6000614e5b84828501614c7e565b91505092915050565b614e6d81614c55565b82525050565b6000602082019050614e886000830184614e64565b92915050565b614e9781614cd3565b8114614ea257600080fd5b50565b600081359050614eb481614e8e565b92915050565b60008060408385031215614ed157614ed0614b12565b5b6000614edf85828601614b38565b9250506020614ef085828601614ea5565b9150509250929050565b600060208284031215614f1057614f0f614b12565b5b6000614f1e84828501614ea5565b91505092915050565b60008060408385031215614f3e57614f3d614b12565b5b6000614f4c85828601614c7e565b9250506020614f5d85828601614c7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614f9d602083614b85565b9150614fa882614f67565b602082019050919050565b60006020820190508181036000830152614fcc81614f90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061501a57607f821691505b6020821081141561502e5761502d614fd3565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000615090602a83614b85565b915061509b82615034565b604082019050919050565b600060208201905081810360008301526150bf81615083565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b60006150fc601b83614b85565b9150615107826150c6565b602082019050919050565b6000602082019050818103600083015261512b816150ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061519b82614b17565b91506151a683614b17565b9250828210156151b9576151b8615161565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006151fe82614b17565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561523157615230615161565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000615298602c83614b85565b91506152a38261523c565b604082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000615304601f83614b85565b915061530f826152ce565b602082019050919050565b60006020820190508181036000830152615333816152f7565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6000615396602383614b85565b91506153a18261533a565b604082019050919050565b600060208201905081810360008301526153c581615389565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b6000615402601f83614b85565b915061540d826153cc565b602082019050919050565b60006020820190508181036000830152615431816153f5565b9050919050565b7f74686520746f6b656e2062616c616e6365206973203000000000000000000000600082015250565b600061546e601683614b85565b915061547982615438565b602082019050919050565b6000602082019050818103600083015261549d81615461565b9050919050565b60006154af82614b17565b91506154ba83614b17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154ef576154ee615161565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615556602683614b85565b9150615561826154fa565b604082019050919050565b6000602082019050818103600083015261558581615549565b9050919050565b600061559782614b17565b91506155a283614b17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156155db576155da615161565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061562082614b17565b915061562b83614b17565b92508261563b5761563a6155e6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006156a2602183614b85565b91506156ad82615646565b604082019050919050565b600060208201905081810360008301526156d181615695565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061570e601b83614b85565b9150615719826156d8565b602082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006157a0602483614b85565b91506157ab82615744565b604082019050919050565b600060208201905081810360008301526157cf81615793565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615832602283614b85565b915061583d826157d6565b604082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158c4602583614b85565b91506158cf82615868565b604082019050919050565b600060208201905081810360008301526158f3816158b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615956602383614b85565b9150615961826158fa565b604082019050919050565b6000602082019050818103600083015261598581615949565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006159e8602983614b85565b91506159f38261598c565b604082019050919050565b60006020820190508181036000830152615a17816159db565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615a7a602883614b85565b9150615a8582615a1e565b604082019050919050565b60006020820190508181036000830152615aa981615a6d565b9050919050565b6000606082019050615ac56000830186614d09565b615ad26020830185614d09565b615adf6040830184614d09565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615b2581614c67565b92915050565b600060208284031215615b4157615b40614b12565b5b6000615b4f84828501615b16565b91505092915050565b6000819050919050565b6000615b7d615b78615b7384615b58565b614d33565b614b17565b9050919050565b615b8d81615b62565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615bc881614c55565b82525050565b6000615bda8383615bbf565b60208301905092915050565b6000602082019050919050565b6000615bfe82615b93565b615c088185615b9e565b9350615c1383615baf565b8060005b83811015615c44578151615c2b8882615bce565b9750615c3683615be6565b925050600181019050615c17565b5085935050505092915050565b600060a082019050615c666000830188614d09565b615c736020830187615b84565b8181036040830152615c858186615bf3565b9050615c946060830185614e64565b615ca16080830184614d09565b9695505050505050565b600060c082019050615cc06000830189614e64565b615ccd6020830188614d09565b615cda6040830187615b84565b615ce76060830186615b84565b615cf46080830185614e64565b615d0160a0830184614d09565b979650505050505050565b600081519050615d1b81614b21565b92915050565b600080600060608486031215615d3a57615d39614b12565b5b6000615d4886828701615d0c565b9350506020615d5986828701615d0c565b9250506040615d6a86828701615d0c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209079fa48f4a9e85637278fc670a1e68a9c2bac00e4baa0677048799ff97e56dc64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000001a3185c5000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000e5db5c2c484c84c7e540a694963a9cf1e5e3701400000000000000000000000000000000000000000000000000000000000000084e46544c4450455300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084e46544c44504553000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000001a3185c5000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000e5db5c2c484c84c7e540a694963a9cf1e5e3701400000000000000000000000000000000000000000000000000000000000000084e46544c4450455300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084e46544c44504553000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): NFTLDPES
Arg [1] : symbol_ (string): NFTLDPES
Arg [2] : decimals_ (uint8): 9
Arg [3] : totalSupply_ (uint256): 1800000000000
Arg [4] : taxFee_ (uint256): 20
Arg [5] : liquidityFee_ (uint256): 5
Arg [6] : deadFee_ (uint256): 5
Arg [7] : marketingFee_ (uint256): 10
Arg [8] : owner_ (address): 0xe5db5c2c484c84c7e540a694963a9cf1e5e37014

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 000000000000000000000000000000000000000000000000000001a3185c5000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [8] : 000000000000000000000000e5db5c2c484c84c7e540a694963a9cf1e5e37014
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [10] : 4e46544c44504553000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [12] : 4e46544c44504553000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

16395:21145:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25671:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19789:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20701:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21822:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25046:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17231:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20066:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17957:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20870:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17158:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22746:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19975:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23462:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21191:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17085:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21917:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18077:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25426:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17892:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22302:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25225:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17289:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17368:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24720:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23007:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29399:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24603:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17922:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20169:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7089:148;;;;;;;;;;;;;:::i;:::-;;17421:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21694:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6446:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24847:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19880:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21417:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8111:305;;;;;;;;;;;;;:::i;:::-;;20375:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17992:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7644:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25951:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17455:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31575:238;;;;;;;;;;;;;:::i;:::-;;25781:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7809:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20550:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25549:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7392:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25671:98;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25755:6:::1;25745:7;:16;;;;25671:98:::0;:::o;19789:83::-;19826:13;19859:5;19852:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19789:83;:::o;20701:161::-;20776:4;20793:39;20802:12;:10;:12::i;:::-;20816:7;20825:6;20793:8;:39::i;:::-;20850:4;20843:11;;20701:161;;;;:::o;21822:87::-;21864:7;21891:10;;21884:17;;21822:87;:::o;25046:173::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25134:8:::1;25123;:19;;;;25165:46;25197:13;;25165:27;25178:13;;25165:8;:12;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;25153:9;:58;;;;25046:173:::0;:::o;17231:51::-;;;:::o;20066:95::-;20119:7;20146;;20139:14;;20066:95;:::o;17957:28::-;;;;:::o;20870:313::-;20968:4;20985:36;20995:6;21003:9;21014:6;20985:9;:36::i;:::-;21032:121;21041:6;21049:12;:10;:12::i;:::-;21063:89;21101:6;21063:89;;;;;;;;;;;;;;;;;:11;:19;21075:6;21063:19;;;;;;;;;;;;;;;:33;21083:12;:10;:12::i;:::-;21063:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21032:8;:121::i;:::-;21171:4;21164:11;;20870:313;;;;;:::o;17158:24::-;;;;:::o;22746:253::-;22812:7;22851;;22840;:18;;22832:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22916:19;22939:10;:8;:10::i;:::-;22916:33;;22967:24;22979:11;22967:7;:11;;:24;;;;:::i;:::-;22960:31;;;22746:253;;;:::o;19975:83::-;20016:5;20041:9;;;;;;;;;;;20034:16;;19975:83;:::o;23462:479::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23544:11:::1;:20;23556:7;23544:20;;;;;;;;;;;;;;;;;;;;;;;;;23536:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23612:9;23607:327;23631:9;:16;;;;23627:1;:20;23607:327;;;23689:7;23673:23;;:9;23683:1;23673:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;23669:254;;;23732:9;23761:1;23742:9;:16;;;;:20;;;;:::i;:::-;23732:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23717:9;23727:1;23717:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23801:1;23782:7;:16;23790:7;23782:16;;;;;;;;;;;;;;;:20;;;;23844:5;23821:11;:20;23833:7;23821:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23868:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;23902:5;;23669:254;23649:3;;;;;:::i;:::-;;;;23607:327;;;;23462:479:::0;:::o;21191:218::-;21279:4;21296:83;21305:12;:10;:12::i;:::-;21319:7;21328:50;21367:10;21328:11;:25;21340:12;:10;:12::i;:::-;21328:25;;;;;;;;;;;;;;;:34;21354:7;21328:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;21296:8;:83::i;:::-;21397:4;21390:11;;21191:218;;;;:::o;17085:22::-;;;;:::o;21917:377::-;21969:14;21986:12;:10;:12::i;:::-;21969:29;;22018:11;:19;22030:6;22018:19;;;;;;;;;;;;;;;;;;;;;;;;;22017:20;22009:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22098:15;22122:19;22133:7;22122:10;:19::i;:::-;22097:44;;;;;;;22170:28;22190:7;22170;:15;22178:6;22170:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22152:7;:15;22160:6;22152:15;;;;;;;;;;;;;;;:46;;;;22219:20;22231:7;22219;;:11;;:20;;;;:::i;:::-;22209:7;:30;;;;22263:23;22278:7;22263:10;;:14;;:23;;;;:::i;:::-;22250:10;:36;;;;21958:336;;21917:377;:::o;18077:83::-;;;;;;;;;;;;;:::o;25426:111::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25525:4:::1;25495:18;:27;25514:7;25495:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25426:111:::0;:::o;17892:23::-;;;;:::o;22302:436::-;22392:7;22431;;22420;:18;;22412:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22490:17;22485:246;;22525:15;22549:19;22560:7;22549:10;:19::i;:::-;22524:44;;;;;;;22590:7;22583:14;;;;;22485:246;22632:23;22663:19;22674:7;22663:10;:19::i;:::-;22630:52;;;;;;;22704:15;22697:22;;;22302:436;;;;;:::o;25225:193::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25328:13:::1;25312;:29;;;;25364:46;25401:8;;25364:32;25382:13;;25364;:17;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;25352:9;:58;;;;25225:193:::0;:::o;17289:38::-;;;:::o;17368:40::-;;;;;;;;;;;;;:::o;24720:121::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24826:7:::1;24800:23;;:33;;;;;;;;;;;;;;;;;;24720:121:::0;:::o;23007:447::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23204:11:::1;:20;23216:7;23204:20;;;;;;;;;;;;;;;;;;;;;;;;;23203:21;23195:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23289:1;23270:7;:16;23278:7;23270:16;;;;;;;;;;;;;;;;:20;23267:108;;;23326:37;23346:7;:16;23354:7;23346:16;;;;;;;;;;;;;;;;23326:19;:37::i;:::-;23307:7;:16;23315:7;23307:16;;;;;;;;;;;;;;;:56;;;;23267:108;23408:4;23385:11;:20;23397:7;23385:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23423:9;23438:7;23423:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23007:447:::0;:::o;29399:123::-;29463:4;29487:18;:27;29506:7;29487:27;;;;;;;;;;;;;;;;;;;;;;;;;29480:34;;29399:123;;;:::o;24603:111::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24699:7:::1;24678:18;;:28;;;;;;;;;;;;;;;;;;24603:111:::0;:::o;17922:28::-;;;;:::o;20169:198::-;20235:7;20259:11;:20;20271:7;20259:20;;;;;;;;;;;;;;;;;;;;;;;;;20255:49;;;20288:7;:16;20296:7;20288:16;;;;;;;;;;;;;;;;20281:23;;;;20255:49;20322:37;20342:7;:16;20350:7;20342:16;;;;;;;;;;;;;;;;20322:19;:37::i;:::-;20315:44;;20169:198;;;;:::o;7089:148::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7196:1:::1;7159:40;;7180:6;::::0;::::1;;;;;;;;7159:40;;;;;;;;;;;;7227:1;7210:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7089:148::o:0;17421:27::-;;;;:::o;21694:120::-;21762:4;21786:11;:20;21798:7;21786:20;;;;;;;;;;;;;;;;;;;;;;;;;21779:27;;21694:120;;;:::o;6446:79::-;6484:7;6511:6;;;;;;;;;;;6504:13;;6446:79;:::o;24847:193::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24950:13:::1;24934;:29;;;;24986:46;25018:13;;24986:27;25004:8;;24986:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;24974:9;:58;;;;24847:193:::0;:::o;19880:87::-;19919:13;19952:7;19945:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19880:87;:::o;21417:269::-;21510:4;21527:129;21536:12;:10;:12::i;:::-;21550:7;21559:96;21598:15;21559:96;;;;;;;;;;;;;;;;;:11;:25;21571:12;:10;:12::i;:::-;21559:25;;;;;;;;;;;;;;;:34;21585:7;21559:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21527:8;:129::i;:::-;21674:4;21667:11;;21417:269;;;;:::o;8111:305::-;8181:10;8163:28;;:14;;;;;;;;;;;:28;;;8155:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8268:9;;8250:15;:27;8242:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8359:14;;;;;;;;;;;8330:44;;8351:6;;;;;;;;;;8330:44;;;;;;;;;;;;8394:14;;;;;;;;;;;8385:6;;:23;;;;;;;;;;;;;;;;;;8111:305::o;20375:167::-;20453:4;20470:42;20480:12;:10;:12::i;:::-;20494:9;20505:6;20470:9;:42::i;:::-;20530:4;20523:11;;20375:167;;;;:::o;17992:78::-;;;;;;;;;;;;;:::o;7644:89::-;7689:7;7716:9;;7709:16;;7644:89;:::o;25951:171::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26052:8:::1;26028:21;;:32;;;;;;;;;;;;;;;;;;26076:38;26105:8;26076:38;;;;;;:::i;:::-;;;;;;;;25951:171:::0;:::o;17455:44::-;;;;:::o;31575:238::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31625:28:::1;31656:24;31674:4;31656:9;:24::i;:::-;31625:55;;31722:1;31699:20;:24;31691:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;31762:43;31784:20;31762:21;:43::i;:::-;31614:199;31575:238::o:0;25781:162::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25875:60:::1;25919:5;25875:25;25887:12;25875:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;25860:12;:75;;;;25781:162:::0;:::o;7809:226::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7890:6:::1;::::0;::::1;;;;;;;;7873:14;;:23;;;;;;;;;;;;;;;;;;7924:1;7907:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7967:4;7949:15;:22;;;;:::i;:::-;7937:9;:34;;;;8024:1;7987:40;;8008:6;::::0;::::1;;;;;;;;7987:40;;;;;;;;;;;;7809:226:::0;:::o;20550:143::-;20631:7;20658:11;:18;20670:5;20658:18;;;;;;;;;;;;;;;:27;20677:7;20658:27;;;;;;;;;;;;;;;;20651:34;;20550:143;;;;:::o;25549:110::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25646:5:::1;25616:18;:27;25635:7;25616:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25549:110:::0;:::o;7392:244::-;6668:12;:10;:12::i;:::-;6658:22;;:6;;;;;;;;;;:22;;;6650:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1:::1;7481:22;;:8;:22;;;;7473:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7591:8;7562:38;;7583:6;::::0;::::1;;;;;;;;7562:38;;;;;;;;;;;;7620:8;7611:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7392:244:::0;:::o;1288:471::-;1346:7;1596:1;1591;:6;1587:47;;;1621:1;1614:8;;;;1587:47;1646:9;1662:1;1658;:5;;;;:::i;:::-;1646:17;;1691:1;1686;1682;:5;;;;:::i;:::-;:10;1674:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1750:1;1743:8;;;1288:471;;;;;:::o;1765:132::-;1823:7;1850:39;1854:1;1857;1850:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1843:46;;1765:132;;;;:::o;761:181::-;819:7;839:9;855:1;851;:5;;;;:::i;:::-;839:17;;880:1;875;:6;;867:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;933:1;926:8;;;761:181;;;;:::o;2531:115::-;2584:15;2627:10;2612:26;;2531:115;:::o;29530:337::-;29640:1;29623:19;;:5;:19;;;;29615:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29721:1;29702:21;;:7;:21;;;;29694:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29805:6;29775:11;:18;29787:5;29775:18;;;;;;;;;;;;;;;:27;29794:7;29775:27;;;;;;;;;;;;;;;:36;;;;29843:7;29827:32;;29836:5;29827:32;;;29852:6;29827:32;;;;;;:::i;:::-;;;;;;;;29530:337;;;:::o;29875:1694::-;30013:1;29997:18;;:4;:18;;;;29989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30090:1;30076:16;;:2;:16;;;;30068:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30160:1;30151:6;:10;30143:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30229:7;:5;:7::i;:::-;30221:15;;:4;:15;;;;:32;;;;;30246:7;:5;:7::i;:::-;30240:13;;:2;:13;;;;30221:32;30218:125;;;30286:12;;30276:6;:22;;30268:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;30218:125;30638:28;30669:24;30687:4;30669:9;:24::i;:::-;30638:55;;30741:12;;30717:20;:36;30714:112;;30802:12;;30779:35;;30714:112;30846:24;30897:29;;30873:20;:53;;30846:80;;30955:19;:53;;;;;30992:16;;;;;;;;;;;30991:17;30955:53;:91;;;;;31033:13;31025:21;;:4;:21;;;;30955:91;:129;;;;;31063:21;;;;;;;;;;;30955:129;30937:229;;;31111:43;31133:20;31111:21;:43::i;:::-;30937:229;31237:12;31252:4;31237:19;;31354:18;:24;31373:4;31354:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;31382:18;:22;31401:2;31382:22;;;;;;;;;;;;;;;;;;;;;;;;;31354:50;31351:96;;;31430:5;31420:15;;31351:96;31523:38;31538:4;31543:2;31546:6;31553:7;31523:14;:38::i;:::-;29978:1591;;;29875:1694;;;:::o;1090:192::-;1176:7;1209:1;1204;:6;;1212:12;1196:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1236:9;1252:1;1248;:5;;;;:::i;:::-;1236:17;;1273:1;1266:8;;;1090:192;;;;;:::o;27581:163::-;27622:7;27643:15;27660;27679:19;:17;:19::i;:::-;27642:56;;;;27716:20;27728:7;27716;:11;;:20;;;;:::i;:::-;27709:27;;;;27581:163;:::o;26383:419::-;26442:7;26451;26460;26469;26478;26487;26508:23;26533:12;26547:18;26569:20;26581:7;26569:11;:20::i;:::-;26507:82;;;;;;26601:15;26618:23;26643:12;26659:50;26671:7;26680:4;26686:10;26698;:8;:10::i;:::-;26659:11;:50::i;:::-;26600:109;;;;;;26728:7;26737:15;26754:4;26760:15;26777:4;26783:10;26720:74;;;;;;;;;;;;;;;;;;26383:419;;;;;;;:::o;948:136::-;1006:7;1033:43;1037:1;1040;1033:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1026:50;;948:136;;;;:::o;31821:560::-;17825:4;17806:16;;:23;;;;;;;;;;;;;;;;;;31898::::1;31924:40;31954:9;;31924:25;31935:13;;31924:6;:10;;:25;;;;:::i;:::-;:29;;:40;;;;:::i;:::-;31898:66;;31975:23;32001:40;32031:9;;32001:25;32012:13;;32001:6;:10;;:25;;;;:::i;:::-;:29;;:40;;;;:::i;:::-;31975:66;;32052:18;32073:48;32105:15;32073:27;32084:15;32073:6;:10;;:27;;;;:::i;:::-;:31;;:48;;;;:::i;:::-;32052:69;;32153:1;32135:15;:19;32132:61;;;32156:37;32177:15;32156:20;:37::i;:::-;32132:61;32225:1;32207:15;:19;32204:55;;;32228:31;32243:15;32228:14;:31::i;:::-;32204:55;32284:1;32273:8;;:12;:30;;;;;32302:1;32289:10;:14;32273:30;32270:103;;;32305:68;32328:4;32335:18;;;;;;;;;;;32355:10;32367:5;32305:14;:68::i;:::-;32270:103;31887:494;;;17871:5:::0;17852:16;;:24;;;;;;;;;;;;;;;;;;31821:560;:::o;1905:278::-;1991:7;2023:1;2019;:5;2026:12;2011:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2050:9;2066:1;2062;:5;;;;:::i;:::-;2050:17;;2174:1;2167:8;;;1905:278;;;;;:::o;35023:834::-;35134:7;35130:40;;35156:14;:12;:14::i;:::-;35130:40;35195:11;:19;35207:6;35195:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;35219:11;:22;35231:9;35219:22;;;;;;;;;;;;;;;;;;;;;;;;;35218:23;35195:46;35191:597;;;35258:48;35280:6;35288:9;35299:6;35258:21;:48::i;:::-;35191:597;;;35329:11;:19;35341:6;35329:19;;;;;;;;;;;;;;;;;;;;;;;;;35328:20;:46;;;;;35352:11;:22;35364:9;35352:22;;;;;;;;;;;;;;;;;;;;;;;;;35328:46;35324:464;;;35391:46;35411:6;35419:9;35430:6;35391:19;:46::i;:::-;35324:464;;;35460:11;:19;35472:6;35460:19;;;;;;;;;;;;;;;;;;;;;;;;;35459:20;:47;;;;;35484:11;:22;35496:9;35484:22;;;;;;;;;;;;;;;;;;;;;;;;;35483:23;35459:47;35455:333;;;35523:44;35541:6;35549:9;35560:6;35523:17;:44::i;:::-;35455:333;;;35589:11;:19;35601:6;35589:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;35612:11;:22;35624:9;35612:22;;;;;;;;;;;;;;;;;;;;;;;;;35589:45;35585:203;;;35651:48;35673:6;35681:9;35692:6;35651:21;:48::i;:::-;35585:203;;;35732:44;35750:6;35758:9;35769:6;35732:17;:44::i;:::-;35585:203;35455:333;35324:464;35191:597;35812:7;35808:41;;35834:15;:13;:15::i;:::-;35808:41;35023:834;;;;:::o;27752:561::-;27802:7;27811;27831:15;27849:7;;27831:25;;27867:15;27885:7;;27867:25;;27914:9;27909:289;27933:9;:16;;;;27929:1;:20;27909:289;;;27999:7;27975;:21;27983:9;27993:1;27983:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27975:21;;;;;;;;;;;;;;;;:31;:66;;;;28034:7;28010;:21;28018:9;28028:1;28018:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28010:21;;;;;;;;;;;;;;;;:31;27975:66;27971:97;;;28051:7;;28060;;28043:25;;;;;;;;;27971:97;28093:34;28105:7;:21;28113:9;28123:1;28113:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28105:21;;;;;;;;;;;;;;;;28093:7;:11;;:34;;;;:::i;:::-;28083:44;;28152:34;28164:7;:21;28172:9;28182:1;28172:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28164:21;;;;;;;;;;;;;;;;28152:7;:11;;:34;;;;:::i;:::-;28142:44;;27951:3;;;;;:::i;:::-;;;;27909:289;;;;28222:20;28234:7;;28222;;:11;;:20;;;;:::i;:::-;28212:7;:30;28208:61;;;28252:7;;28261;;28244:25;;;;;;;;28208:61;28288:7;28297;28280:25;;;;;;27752:561;;;:::o;26810:326::-;26870:7;26879;26888;26908:12;26923:24;26939:7;26923:15;:24::i;:::-;26908:39;;26958:18;26979:26;26997:7;26979:17;:26::i;:::-;26958:47;;27016:23;27042:33;27064:10;27042:17;27054:4;27042:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;27016:59;;27094:15;27111:4;27117:10;27086:42;;;;;;;;;26810:326;;;;;:::o;27144:429::-;27259:7;27268;27277;27297:15;27315:24;27327:11;27315:7;:11;;:24;;;;:::i;:::-;27297:42;;27350:12;27365:21;27374:11;27365:4;:8;;:21;;;;:::i;:::-;27350:36;;27397:18;27418:27;27433:11;27418:10;:14;;:27;;;;:::i;:::-;27397:48;;27456:23;27482:33;27504:10;27482:17;27494:4;27482:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;27456:59;;27534:7;27543:15;27560:4;27526:39;;;;;;;;;;27144:429;;;;;;;;:::o;32389:515::-;32454:12;32469:13;32480:1;32469:6;:10;;:13;;;;:::i;:::-;32454:28;;32493:17;32513:16;32524:4;32513:6;:10;;:16;;;;:::i;:::-;32493:36;;32542:22;32567:21;32542:46;;32599:22;32616:4;32599:16;:22::i;:::-;32632:26;32661:41;32687:14;32661:21;:25;;:41;;;;:::i;:::-;32632:70;;32760:23;;;;;;;;;;;32752:41;;:61;32794:18;32752:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32824:72;32847:4;32854:23;;;;;;;;;;;32879:9;32890:5;32824:14;:72::i;:::-;32443:461;;;;32389:515;:::o;32912:973::-;33036:12;33051:27;33076:1;33051:20;:24;;:27;;;;:::i;:::-;33036:42;;33089:17;33109:30;33134:4;33109:20;:24;;:30;;;;:::i;:::-;33089:50;;33417:22;33442:21;33417:46;;33508:22;33525:4;33508:16;:22::i;:::-;33661:18;33682:41;33708:14;33682:21;:25;;:41;;;;:::i;:::-;33661:62;;33773:35;33786:9;33797:10;33773:12;:35::i;:::-;33834:43;33849:4;33855:10;33867:9;33834:43;;;;;;;;:::i;:::-;;;;;;;;32974:911;;;;32912:973;:::o;29024:234::-;29081:1;29070:7;;:12;:30;;;;;29099:1;29086:9;;:14;29070:30;29067:42;;;29102:7;;29067:42;29147:7;;29129:15;:25;;;;29185:9;;29165:17;:29;;;;29225:1;29215:7;:11;;;;29249:1;29237:9;:13;;;;29024:234;:::o;36969:566::-;37072:15;37089:23;37114:12;37128:23;37153:12;37167:18;37189:19;37200:7;37189:10;:19::i;:::-;37071:137;;;;;;;;;;;;37237:28;37257:7;37237;:15;37245:6;37237:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37219:7;:15;37227:6;37219:15;;;;;;;;;;;;;;;:46;;;;37294:28;37314:7;37294;:15;37302:6;37294:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37276:7;:15;37284:6;37276:15;;;;;;;;;;;;;;;:46;;;;37354:39;37377:15;37354:7;:18;37362:9;37354:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;37333:7;:18;37341:9;37333:18;;;;;;;;;;;;;;;:60;;;;37407:26;37422:10;37407:14;:26::i;:::-;37444:23;37456:4;37462;37444:11;:23::i;:::-;37500:9;37483:44;;37492:6;37483:44;;;37511:15;37483:44;;;;;;:::i;:::-;;;;;;;;37060:475;;;;;;36969:566;;;:::o;36375:586::-;36476:15;36493:23;36518:12;36532:23;36557:12;36571:18;36593:19;36604:7;36593:10;:19::i;:::-;36475:137;;;;;;;;;;;;36641:28;36661:7;36641;:15;36649:6;36641:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36623:7;:15;36631:6;36623:15;;;;;;;;;;;;;;;:46;;;;36701:39;36724:15;36701:7;:18;36709:9;36701:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36680:7;:18;36688:9;36680:18;;;;;;;;;;;;;;;:60;;;;36772:39;36795:15;36772:7;:18;36780:9;36772:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36751:7;:18;36759:9;36751:18;;;;;;;;;;;;;;;:60;;;;36833:26;36848:10;36833:14;:26::i;:::-;36870:23;36882:4;36888;36870:11;:23::i;:::-;36926:9;36909:44;;36918:6;36909:44;;;36937:15;36909:44;;;;;;:::i;:::-;;;;;;;;36464:497;;;;;;36375:586;;;:::o;35865:502::-;35964:15;35981:23;36006:12;36020:23;36045:12;36059:18;36081:19;36092:7;36081:10;:19::i;:::-;35963:137;;;;;;;;;;;;36129:28;36149:7;36129;:15;36137:6;36129:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36111:7;:15;36119:6;36111:15;;;;;;;;;;;;;;;:46;;;;36189:39;36212:15;36189:7;:18;36197:9;36189:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36168:7;:18;36176:9;36168:18;;;;;;;;;;;;;;;:60;;;;36239:26;36254:10;36239:14;:26::i;:::-;36276:23;36288:4;36294;36276:11;:23::i;:::-;36332:9;36315:44;;36324:6;36315:44;;;36343:15;36315:44;;;;;;:::i;:::-;;;;;;;;35952:415;;;;;;35865:502;;;:::o;23949:642::-;24052:15;24069:23;24094:12;24108:23;24133:12;24147:18;24169:19;24180:7;24169:10;:19::i;:::-;24051:137;;;;;;;;;;;;24217:28;24237:7;24217;:15;24225:6;24217:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24199:7;:15;24207:6;24199:15;;;;;;;;;;;;;;;:46;;;;24274:28;24294:7;24274;:15;24282:6;24274:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24256:7;:15;24264:6;24256:15;;;;;;;;;;;;;;;:46;;;;24334:39;24357:15;24334:7;:18;24342:9;24334:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24313:7;:18;24321:9;24313:18;;;;;;;;;;;;;;;:60;;;;24405:39;24428:15;24405:7;:18;24413:9;24405:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24384:7;:18;24392:9;24384:18;;;;;;;;;;;;;;;:60;;;;24463:26;24478:10;24463:14;:26::i;:::-;24500:23;24512:4;24518;24500:11;:23::i;:::-;24556:9;24539:44;;24548:6;24539:44;;;24567:15;24539:44;;;;;;:::i;:::-;;;;;;;;24040:551;;;;;;23949:642;;;:::o;29270:117::-;29324:15;;29314:7;:25;;;;29362:17;;29350:9;:29;;;;29270:117::o;28692:154::-;28756:7;28783:55;28822:5;28783:20;28795:7;;28783;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;28776:62;;28692:154;;;:::o;28854:158::-;28920:7;28947:57;28988:5;28947:22;28959:9;;28947:7;:11;;:22;;;;:::i;:::-;:26;;:57;;;;:::i;:::-;28940:64;;28854:158;;;:::o;33893:528::-;33959:21;33997:1;33983:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33959:40;;34028:4;34010;34015:1;34010:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34054:15;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34044:4;34049:1;34044:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;;;34088:62;34105:4;34120:15;34138:11;34088:8;:62::i;:::-;34189:15;:66;;;34270:11;34296:1;34340:4;34367;34387:15;34189:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33948:473;33893:528;:::o;34429:513::-;34577:62;34594:4;34609:15;34627:11;34577:8;:62::i;:::-;34682:15;:31;;;34721:9;34754:4;34774:11;34800:1;34843;34886:7;:5;:7::i;:::-;34908:15;34682:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34429:513;;:::o;28325:355::-;28388:19;28411:10;:8;:10::i;:::-;28388:33;;28432:18;28453:27;28468:11;28453:10;:14;;:27;;;;:::i;:::-;28432:48;;28516:38;28543:10;28516:7;:22;28532:4;28516:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28491:7;:22;28507:4;28491:22;;;;;;;;;;;;;;;:63;;;;28568:11;:26;28588:4;28568:26;;;;;;;;;;;;;;;;;;;;;;;;;28565:107;;;28634:38;28661:10;28634:7;:22;28650:4;28634:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28609:7;:22;28625:4;28609:22;;;;;;;;;;;;;;;:63;;;;28565:107;28377:303;;28325:355;:::o;26228:147::-;26306:17;26318:4;26306:7;;:11;;:17;;;;:::i;:::-;26296:7;:27;;;;26347:20;26362:4;26347:10;;:14;;:20;;;;:::i;:::-;26334:10;:33;;;;26228:147;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:329::-;6273:6;6322:2;6310:9;6301:7;6297:23;6293:32;6290:119;;;6328:79;;:::i;:::-;6290:119;6448:1;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6419:117;6214:329;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:323::-;7692:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7838:114;7636:323;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:182::-;8585:34;8581:1;8573:6;8569:14;8562:58;8445:182;:::o;8633:366::-;8775:3;8796:67;8860:2;8855:3;8796:67;:::i;:::-;8789:74;;8872:93;8961:3;8872:93;:::i;:::-;8990:2;8985:3;8981:12;8974:19;;8633:366;;;:::o;9005:419::-;9171:4;9209:2;9198:9;9194:18;9186:26;;9258:9;9252:4;9248:20;9244:1;9233:9;9229:17;9222:47;9286:131;9412:4;9286:131;:::i;:::-;9278:139;;9005:419;;;:::o;9430:180::-;9478:77;9475:1;9468:88;9575:4;9572:1;9565:15;9599:4;9596:1;9589:15;9616:320;9660:6;9697:1;9691:4;9687:12;9677:22;;9744:1;9738:4;9734:12;9765:18;9755:81;;9821:4;9813:6;9809:17;9799:27;;9755:81;9883:2;9875:6;9872:14;9852:18;9849:38;9846:84;;;9902:18;;:::i;:::-;9846:84;9667:269;9616:320;;;:::o;9942:229::-;10082:34;10078:1;10070:6;10066:14;10059:58;10151:12;10146:2;10138:6;10134:15;10127:37;9942:229;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10177:366;;;:::o;10549:419::-;10715:4;10753:2;10742:9;10738:18;10730:26;;10802:9;10796:4;10792:20;10788:1;10777:9;10773:17;10766:47;10830:131;10956:4;10830:131;:::i;:::-;10822:139;;10549:419;;;:::o;10974:177::-;11114:29;11110:1;11102:6;11098:14;11091:53;10974:177;:::o;11157:366::-;11299:3;11320:67;11384:2;11379:3;11320:67;:::i;:::-;11313:74;;11396:93;11485:3;11396:93;:::i;:::-;11514:2;11509:3;11505:12;11498:19;;11157:366;;;:::o;11529:419::-;11695:4;11733:2;11722:9;11718:18;11710:26;;11782:9;11776:4;11772:20;11768:1;11757:9;11753:17;11746:47;11810:131;11936:4;11810:131;:::i;:::-;11802:139;;11529:419;;;:::o;11954:180::-;12002:77;11999:1;11992:88;12099:4;12096:1;12089:15;12123:4;12120:1;12113:15;12140:180;12188:77;12185:1;12178:88;12285:4;12282:1;12275:15;12309:4;12306:1;12299:15;12326:191;12366:4;12386:20;12404:1;12386:20;:::i;:::-;12381:25;;12420:20;12438:1;12420:20;:::i;:::-;12415:25;;12459:1;12456;12453:8;12450:34;;;12464:18;;:::i;:::-;12450:34;12509:1;12506;12502:9;12494:17;;12326:191;;;;:::o;12523:180::-;12571:77;12568:1;12561:88;12668:4;12665:1;12658:15;12692:4;12689:1;12682:15;12709:233;12748:3;12771:24;12789:5;12771:24;:::i;:::-;12762:33;;12817:66;12810:5;12807:77;12804:103;;;12887:18;;:::i;:::-;12804:103;12934:1;12927:5;12923:13;12916:20;;12709:233;;;:::o;12948:231::-;13088:34;13084:1;13076:6;13072:14;13065:58;13157:14;13152:2;13144:6;13140:15;13133:39;12948:231;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:181::-;14122:33;14118:1;14110:6;14106:14;14099:57;13982:181;:::o;14169:366::-;14311:3;14332:67;14396:2;14391:3;14332:67;:::i;:::-;14325:74;;14408:93;14497:3;14408:93;:::i;:::-;14526:2;14521:3;14517:12;14510:19;;14169:366;;;:::o;14541:419::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14794:9;14788:4;14784:20;14780:1;14769:9;14765:17;14758:47;14822:131;14948:4;14822:131;:::i;:::-;14814:139;;14541:419;;;:::o;14966:222::-;15106:34;15102:1;15094:6;15090:14;15083:58;15175:5;15170:2;15162:6;15158:15;15151:30;14966:222;:::o;15194:366::-;15336:3;15357:67;15421:2;15416:3;15357:67;:::i;:::-;15350:74;;15433:93;15522:3;15433:93;:::i;:::-;15551:2;15546:3;15542:12;15535:19;;15194:366;;;:::o;15566:419::-;15732:4;15770:2;15759:9;15755:18;15747:26;;15819:9;15813:4;15809:20;15805:1;15794:9;15790:17;15783:47;15847:131;15973:4;15847:131;:::i;:::-;15839:139;;15566:419;;;:::o;15991:181::-;16131:33;16127:1;16119:6;16115:14;16108:57;15991:181;:::o;16178:366::-;16320:3;16341:67;16405:2;16400:3;16341:67;:::i;:::-;16334:74;;16417:93;16506:3;16417:93;:::i;:::-;16535:2;16530:3;16526:12;16519:19;;16178:366;;;:::o;16550:419::-;16716:4;16754:2;16743:9;16739:18;16731:26;;16803:9;16797:4;16793:20;16789:1;16778:9;16774:17;16767:47;16831:131;16957:4;16831:131;:::i;:::-;16823:139;;16550:419;;;:::o;16975:172::-;17115:24;17111:1;17103:6;17099:14;17092:48;16975:172;:::o;17153:366::-;17295:3;17316:67;17380:2;17375:3;17316:67;:::i;:::-;17309:74;;17392:93;17481:3;17392:93;:::i;:::-;17510:2;17505:3;17501:12;17494:19;;17153:366;;;:::o;17525:419::-;17691:4;17729:2;17718:9;17714:18;17706:26;;17778:9;17772:4;17768:20;17764:1;17753:9;17749:17;17742:47;17806:131;17932:4;17806:131;:::i;:::-;17798:139;;17525:419;;;:::o;17950:305::-;17990:3;18009:20;18027:1;18009:20;:::i;:::-;18004:25;;18043:20;18061:1;18043:20;:::i;:::-;18038:25;;18197:1;18129:66;18125:74;18122:1;18119:81;18116:107;;;18203:18;;:::i;:::-;18116:107;18247:1;18244;18240:9;18233:16;;17950:305;;;;:::o;18261:225::-;18401:34;18397:1;18389:6;18385:14;18378:58;18470:8;18465:2;18457:6;18453:15;18446:33;18261:225;:::o;18492:366::-;18634:3;18655:67;18719:2;18714:3;18655:67;:::i;:::-;18648:74;;18731:93;18820:3;18731:93;:::i;:::-;18849:2;18844:3;18840:12;18833:19;;18492:366;;;:::o;18864:419::-;19030:4;19068:2;19057:9;19053:18;19045:26;;19117:9;19111:4;19107:20;19103:1;19092:9;19088:17;19081:47;19145:131;19271:4;19145:131;:::i;:::-;19137:139;;18864:419;;;:::o;19289:348::-;19329:7;19352:20;19370:1;19352:20;:::i;:::-;19347:25;;19386:20;19404:1;19386:20;:::i;:::-;19381:25;;19574:1;19506:66;19502:74;19499:1;19496:81;19491:1;19484:9;19477:17;19473:105;19470:131;;;19581:18;;:::i;:::-;19470:131;19629:1;19626;19622:9;19611:20;;19289:348;;;;:::o;19643:180::-;19691:77;19688:1;19681:88;19788:4;19785:1;19778:15;19812:4;19809:1;19802:15;19829:185;19869:1;19886:20;19904:1;19886:20;:::i;:::-;19881:25;;19920:20;19938:1;19920:20;:::i;:::-;19915:25;;19959:1;19949:35;;19964:18;;:::i;:::-;19949:35;20006:1;20003;19999:9;19994:14;;19829:185;;;;:::o;20020:220::-;20160:34;20156:1;20148:6;20144:14;20137:58;20229:3;20224:2;20216:6;20212:15;20205:28;20020:220;:::o;20246:366::-;20388:3;20409:67;20473:2;20468:3;20409:67;:::i;:::-;20402:74;;20485:93;20574:3;20485:93;:::i;:::-;20603:2;20598:3;20594:12;20587:19;;20246:366;;;:::o;20618:419::-;20784:4;20822:2;20811:9;20807:18;20799:26;;20871:9;20865:4;20861:20;20857:1;20846:9;20842:17;20835:47;20899:131;21025:4;20899:131;:::i;:::-;20891:139;;20618:419;;;:::o;21043:177::-;21183:29;21179:1;21171:6;21167:14;21160:53;21043:177;:::o;21226:366::-;21368:3;21389:67;21453:2;21448:3;21389:67;:::i;:::-;21382:74;;21465:93;21554:3;21465:93;:::i;:::-;21583:2;21578:3;21574:12;21567:19;;21226:366;;;:::o;21598:419::-;21764:4;21802:2;21791:9;21787:18;21779:26;;21851:9;21845:4;21841:20;21837:1;21826:9;21822:17;21815:47;21879:131;22005:4;21879:131;:::i;:::-;21871:139;;21598:419;;;:::o;22023:223::-;22163:34;22159:1;22151:6;22147:14;22140:58;22232:6;22227:2;22219:6;22215:15;22208:31;22023:223;:::o;22252:366::-;22394:3;22415:67;22479:2;22474:3;22415:67;:::i;:::-;22408:74;;22491:93;22580:3;22491:93;:::i;:::-;22609:2;22604:3;22600:12;22593:19;;22252:366;;;:::o;22624:419::-;22790:4;22828:2;22817:9;22813:18;22805:26;;22877:9;22871:4;22867:20;22863:1;22852:9;22848:17;22841:47;22905:131;23031:4;22905:131;:::i;:::-;22897:139;;22624:419;;;:::o;23049:221::-;23189:34;23185:1;23177:6;23173:14;23166:58;23258:4;23253:2;23245:6;23241:15;23234:29;23049:221;:::o;23276:366::-;23418:3;23439:67;23503:2;23498:3;23439:67;:::i;:::-;23432:74;;23515:93;23604:3;23515:93;:::i;:::-;23633:2;23628:3;23624:12;23617:19;;23276:366;;;:::o;23648:419::-;23814:4;23852:2;23841:9;23837:18;23829:26;;23901:9;23895:4;23891:20;23887:1;23876:9;23872:17;23865:47;23929:131;24055:4;23929:131;:::i;:::-;23921:139;;23648:419;;;:::o;24073:224::-;24213:34;24209:1;24201:6;24197:14;24190:58;24282:7;24277:2;24269:6;24265:15;24258:32;24073:224;:::o;24303:366::-;24445:3;24466:67;24530:2;24525:3;24466:67;:::i;:::-;24459:74;;24542:93;24631:3;24542:93;:::i;:::-;24660:2;24655:3;24651:12;24644:19;;24303:366;;;:::o;24675:419::-;24841:4;24879:2;24868:9;24864:18;24856:26;;24928:9;24922:4;24918:20;24914:1;24903:9;24899:17;24892:47;24956:131;25082:4;24956:131;:::i;:::-;24948:139;;24675:419;;;:::o;25100:222::-;25240:34;25236:1;25228:6;25224:14;25217:58;25309:5;25304:2;25296:6;25292:15;25285:30;25100:222;:::o;25328:366::-;25470:3;25491:67;25555:2;25550:3;25491:67;:::i;:::-;25484:74;;25567:93;25656:3;25567:93;:::i;:::-;25685:2;25680:3;25676:12;25669:19;;25328:366;;;:::o;25700:419::-;25866:4;25904:2;25893:9;25889:18;25881:26;;25953:9;25947:4;25943:20;25939:1;25928:9;25924:17;25917:47;25981:131;26107:4;25981:131;:::i;:::-;25973:139;;25700:419;;;:::o;26125:228::-;26265:34;26261:1;26253:6;26249:14;26242:58;26334:11;26329:2;26321:6;26317:15;26310:36;26125:228;:::o;26359:366::-;26501:3;26522:67;26586:2;26581:3;26522:67;:::i;:::-;26515:74;;26598:93;26687:3;26598:93;:::i;:::-;26716:2;26711:3;26707:12;26700:19;;26359:366;;;:::o;26731:419::-;26897:4;26935:2;26924:9;26920:18;26912:26;;26984:9;26978:4;26974:20;26970:1;26959:9;26955:17;26948:47;27012:131;27138:4;27012:131;:::i;:::-;27004:139;;26731:419;;;:::o;27156:227::-;27296:34;27292:1;27284:6;27280:14;27273:58;27365:10;27360:2;27352:6;27348:15;27341:35;27156:227;:::o;27389:366::-;27531:3;27552:67;27616:2;27611:3;27552:67;:::i;:::-;27545:74;;27628:93;27717:3;27628:93;:::i;:::-;27746:2;27741:3;27737:12;27730:19;;27389:366;;;:::o;27761:419::-;27927:4;27965:2;27954:9;27950:18;27942:26;;28014:9;28008:4;28004:20;28000:1;27989:9;27985:17;27978:47;28042:131;28168:4;28042:131;:::i;:::-;28034:139;;27761:419;;;:::o;28186:442::-;28335:4;28373:2;28362:9;28358:18;28350:26;;28386:71;28454:1;28443:9;28439:17;28430:6;28386:71;:::i;:::-;28467:72;28535:2;28524:9;28520:18;28511:6;28467:72;:::i;:::-;28549;28617:2;28606:9;28602:18;28593:6;28549:72;:::i;:::-;28186:442;;;;;;:::o;28634:180::-;28682:77;28679:1;28672:88;28779:4;28776:1;28769:15;28803:4;28800:1;28793:15;28820:143;28877:5;28908:6;28902:13;28893:22;;28924:33;28951:5;28924:33;:::i;:::-;28820:143;;;;:::o;28969:351::-;29039:6;29088:2;29076:9;29067:7;29063:23;29059:32;29056:119;;;29094:79;;:::i;:::-;29056:119;29214:1;29239:64;29295:7;29286:6;29275:9;29271:22;29239:64;:::i;:::-;29229:74;;29185:128;28969:351;;;;:::o;29326:85::-;29371:7;29400:5;29389:16;;29326:85;;;:::o;29417:158::-;29475:9;29508:61;29526:42;29535:32;29561:5;29535:32;:::i;:::-;29526:42;:::i;:::-;29508:61;:::i;:::-;29495:74;;29417:158;;;:::o;29581:147::-;29676:45;29715:5;29676:45;:::i;:::-;29671:3;29664:58;29581:147;;:::o;29734:114::-;29801:6;29835:5;29829:12;29819:22;;29734:114;;;:::o;29854:184::-;29953:11;29987:6;29982:3;29975:19;30027:4;30022:3;30018:14;30003:29;;29854:184;;;;:::o;30044:132::-;30111:4;30134:3;30126:11;;30164:4;30159:3;30155:14;30147:22;;30044:132;;;:::o;30182:108::-;30259:24;30277:5;30259:24;:::i;:::-;30254:3;30247:37;30182:108;;:::o;30296:179::-;30365:10;30386:46;30428:3;30420:6;30386:46;:::i;:::-;30464:4;30459:3;30455:14;30441:28;;30296:179;;;;:::o;30481:113::-;30551:4;30583;30578:3;30574:14;30566:22;;30481:113;;;:::o;30630:732::-;30749:3;30778:54;30826:5;30778:54;:::i;:::-;30848:86;30927:6;30922:3;30848:86;:::i;:::-;30841:93;;30958:56;31008:5;30958:56;:::i;:::-;31037:7;31068:1;31053:284;31078:6;31075:1;31072:13;31053:284;;;31154:6;31148:13;31181:63;31240:3;31225:13;31181:63;:::i;:::-;31174:70;;31267:60;31320:6;31267:60;:::i;:::-;31257:70;;31113:224;31100:1;31097;31093:9;31088:14;;31053:284;;;31057:14;31353:3;31346:10;;30754:608;;;30630:732;;;;:::o;31368:831::-;31631:4;31669:3;31658:9;31654:19;31646:27;;31683:71;31751:1;31740:9;31736:17;31727:6;31683:71;:::i;:::-;31764:80;31840:2;31829:9;31825:18;31816:6;31764:80;:::i;:::-;31891:9;31885:4;31881:20;31876:2;31865:9;31861:18;31854:48;31919:108;32022:4;32013:6;31919:108;:::i;:::-;31911:116;;32037:72;32105:2;32094:9;32090:18;32081:6;32037:72;:::i;:::-;32119:73;32187:3;32176:9;32172:19;32163:6;32119:73;:::i;:::-;31368:831;;;;;;;;:::o;32205:807::-;32454:4;32492:3;32481:9;32477:19;32469:27;;32506:71;32574:1;32563:9;32559:17;32550:6;32506:71;:::i;:::-;32587:72;32655:2;32644:9;32640:18;32631:6;32587:72;:::i;:::-;32669:80;32745:2;32734:9;32730:18;32721:6;32669:80;:::i;:::-;32759;32835:2;32824:9;32820:18;32811:6;32759:80;:::i;:::-;32849:73;32917:3;32906:9;32902:19;32893:6;32849:73;:::i;:::-;32932;33000:3;32989:9;32985:19;32976:6;32932:73;:::i;:::-;32205:807;;;;;;;;;:::o;33018:143::-;33075:5;33106:6;33100:13;33091:22;;33122:33;33149:5;33122:33;:::i;:::-;33018:143;;;;:::o;33167:663::-;33255:6;33263;33271;33320:2;33308:9;33299:7;33295:23;33291:32;33288:119;;;33326:79;;:::i;:::-;33288:119;33446:1;33471:64;33527:7;33518:6;33507:9;33503:22;33471:64;:::i;:::-;33461:74;;33417:128;33584:2;33610:64;33666:7;33657:6;33646:9;33642:22;33610:64;:::i;:::-;33600:74;;33555:129;33723:2;33749:64;33805:7;33796:6;33785:9;33781:22;33749:64;:::i;:::-;33739:74;;33694:129;33167:663;;;;;:::o

Swarm Source

ipfs://9079fa48f4a9e85637278fc670a1e68a9c2bac00e4baa0677048799ff97e56dc
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading