ETH Price: $3,398.45 (+6.61%)
Gas: 20 Gwei

Token

Boost2 (BOOST2)
 

Overview

Max Total Supply

300,000 BOOST2

Holders

243

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
jirencrypto.eth
Balance
0.145852572582566802 BOOST2

Value
$0.00
0xf5e18146ffd63a95df4b4ad8f0e25dad795cbcca
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Boost2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-13
*/

//Boost V2
// Developed by Elevate Software
// elevatesoftware.io
// @elevatesoftware

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

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

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

    interface IERC20 {
        //Return total supply
        function totalSupply() external view returns (uint256);

        //Return amount of tokens owned by 'account'
        function balanceOf(address account) external view returns (uint256);

        //Moves 'amount' tokens from the caller's account to 'recipient'
        function transfer(address recipient, uint256 amount) external returns (bool);
        //Returns a boolean value indicating whether the operation succeeded.

        //Returns the remaining number of tokens that 'spender' will be allowed to spend
        function allowance(address owner, address spender) external view returns (uint256);


        //Sets 'amount' as the allowance of 'spender' over the caller's tokens
        function approve(address spender, uint256 amount) external returns (bool);

        //Moves 'ammount' of tokens from 'spender' to 'recipient'. Then deducts from callers allowance.
        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;
        }
    }

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

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

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

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

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

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

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

        //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 getUnlockTime() public view returns (uint256) {
            return _lockTime;
        }

    }

    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 WETH() external pure returns (address);

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

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

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

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

    contract Boost2 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;
        mapping (address => bool) private _isBlackListedBot;
        address[] private _blackListedBots;

        uint256 private constant MAX = ~uint256(0);
        uint256 private constant _tTotal = 300000 * 10**18;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private constant _name = 'Boost2';
        string private constant _symbol = 'BOOST2';
        uint8 private constant _decimals = 18;

        uint256 private _taxFee = 1;
        uint256 private _teamFee = 6;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;

        address payable public _devWalletAddress;
        address payable public _marketingWalletAddress;
        address payable public _useWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 7000 * 10**18;
        uint256 private constant _numOfTokensToExchangeForTeam = 1.25 * 10**18;
        uint256 private _maxWalletSize = 300000 * 10**18;

        event botAddedToBlacklist(address account);
        event botRemovedFromBlacklist(address account);

        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }

        constructor (address payable marketingWalletAddress, address payable useWalletAddress) public {
            _devWalletAddress = 0x5A549a2D20aC5ca20D04259474c0166082872955;
            _marketingWalletAddress = marketingWalletAddress;
            _useWalletAddress = useWalletAddress;

            _rOwned[_msgSender()] = _rTotal;

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

            // set the rest of the contract variables
            uniswapV2Router = _uniswapV2Router;

            // Exclude owner and this contract from fee
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;

            emit Transfer(address(0), _msgSender(), _tTotal);
        }

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

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

        function decimals() public pure 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 isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

        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 addBotToBlacklist (address account) external onlyOwner() {
           require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We cannot blacklist UniSwap router');
           require (!_isBlackListedBot[account], 'Account is already blacklisted');
           _isBlackListedBot[account] = true;
           _blackListedBots.push(account);
        }

        function removeBotFromBlacklist(address account) external onlyOwner() {
          require (_isBlackListedBot[account], 'Account is not blacklisted');
          for (uint256 i = 0; i < _blackListedBots.length; i++) {
                 if (_blackListedBots[i] == account) {
                     _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                     _isBlackListedBot[account] = false;
                     _blackListedBots.pop();
                     break;
                 }
           }
       }

        function excludeAccount(address account) external 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 includeAccount(address account) external onlyOwner() {
            require(_isExcluded[account], "Account is not 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 removeAllFee() private {
            if(_taxFee == 0 && _teamFee == 0) return;

            _previousTaxFee = _taxFee;
            _previousTeamFee = _teamFee;

            _taxFee = 0;
            _teamFee = 0;
        }

        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _teamFee = _previousTeamFee;
        }

        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 sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            require(!_isBlackListedBot[sender], "You are blacklisted");
            require(!_isBlackListedBot[msg.sender], "You are blacklisted");
            require(!_isBlackListedBot[tx.origin], "You are blacklisted");
            if(sender != owner() && recipient != owner()) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            if(sender != owner() && recipient != owner() && recipient != uniswapV2Pair && recipient != address(0xdead)) {
                uint256 tokenBalanceRecipient = balanceOf(recipient);
                require(tokenBalanceRecipient + amount <= _maxWalletSize, "Recipient exceeds max wallet size.");
            }
            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't get caught in a circular team event.
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // Swap tokens for ETH and send to resepctive wallets
                swapTokensForEth(contractTokenBalance);

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToTeam(address(this).balance);
                }
            }

            //indicates if fee should be deducted from transfer
            bool takeFee = true;

            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }

            //transfer amount, it will take tax and team fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

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

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

        function sendETHToTeam(uint256 amount) private {
            _devWalletAddress.transfer(amount.div(7));
            _marketingWalletAddress.transfer(amount.div(7));
            _useWalletAddress.transfer(amount.div(7).mul(5));
        }

        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        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 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _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 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _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 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _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);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeTeam(uint256 tTeam) private {
            uint256 currentRate =  _getRate();
            uint256 rTeam = tTeam.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
        }

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

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

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

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tTeam = tAmount.mul(teamFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
            return (tTransferAmount, tFee, tTeam);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTeam = tTeam.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
            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 _getTaxFee() public view returns(uint256) {
            return _taxFee;
        }

        function _getTeamFee() public view returns (uint256) {
          return _teamFee;
        }

        function _getMaxTxAmount() public view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }

        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 1 && taxFee <= 3, 'taxFee should be in 1 - 3');
            _taxFee = taxFee;
        }

        function _setTeamFee(uint256 teamFee) external onlyOwner() {
            require(teamFee >= 1 && teamFee <= 8, 'teamFee should be in 1 - 8');
            _teamFee = teamFee;
        }

        function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() {
            _marketingWalletAddress = marketingWalletAddress;
        }

        function _setUseWallet(address payable useWalletAddress) external onlyOwner() {
            _useWalletAddress = useWalletAddress;
        }

        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            _maxTxAmount = maxTxAmount;
        }

        function _setMaxWalletSize (uint256 maxWalletSize) external onlyOwner() {
          _maxWalletSize = maxWalletSize;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"},{"internalType":"address payable","name":"useWalletAddress","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"useWalletAddress","type":"address"}],"name":"_setUseWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_useWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

60c0604052693f870857a3e0e3800000600019816200001a57fe5b0660001903600b556001600d556006600e55600d54600f55600e546010556000601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff02191690831515021790555069017b7883c06916600000601455693f870857a3e0e38000006015553480156200009757600080fd5b50604051620061883803806200618883398181016040526040811015620000bd57600080fd5b8101908080519060200190929190805190602001909291905050506000620000ea6200064c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350735a549a2d20ac5ca20d04259474c0166082872955601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460036000620002766200064c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b457600080fd5b505afa158015620003c9573d6000803e3d6000fd5b505050506040513d6020811015620003e057600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200045b57600080fd5b505af115801562000470573d6000803e3d6000fd5b505050506040513d60208110156200048757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200051b6200065460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d46200064c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef693f870857a3e0e38000006040518082815260200191505060405180910390a35050506200067d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60805160601c60a05160601c615ac8620006c060003980611aed5280613b065280613c6752508061100b52806140c352806141af52806141d65250615ac86000f3fe6080604052600436106102765760003560e01c80636ddd17131161014f578063af9549e0116100c1578063f2cc0c181161007a578063f2cc0c1814610e44578063f2fde38b14610e95578063f429389014610ee6578063f7a9159114610efd578063f815a84214610f28578063f84354f114610f535761027d565b8063af9549e014610c2c578063b030b34a14610c89578063b425bac314610cda578063cba0e99614610d1b578063dd62ed3e14610d82578063e01af92c14610e075761027d565b80638da5cb5b116101135780638da5cb5b14610a1357806395d89b4114610a545780639e6c752914610ae4578063a457c2d714610b1f578063a5e8c95414610b90578063a9059cbb14610bbb5761027d565b80636ddd1713146108d857806370a0823114610905578063715018a61461096a5780637fb172a71461098157806380b065d3146109d25761027d565b80632fbff030116101e85780634549b039116101ac5780634549b0391461075857806349bd5a5e146107b357806351bc3c85146107f45780635342acb41461080b5780635880b87314610872578063602bc62b146108ad5761027d565b80632fbff03014610612578063313ce5671461063d578063395093511461066b5780633bd5d173146106dc5780634144d9e4146107175761027d565b80631bbae6e01161023a5780631bbae6e01461041a5780631d7ef879146104555780631ff53b60146104a657806323b872dd146104f757806328667162146105885780632d838119146105c35761027d565b806306fdde0314610282578063095ea7b31461031257806313114a9d146103835780631694505e146103ae57806318160ddd146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610fa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe1565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b50610398610fff565b6040518082815260200191505060405180910390f35b3480156103ba57600080fd5b506103c3611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103fb57600080fd5b5061040461102d565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b506104536004803603602081101561043d57600080fd5b810190808035906020019092919050505061103f565b005b34801561046157600080fd5b506104a46004803603602081101561047857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611111565b005b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f0565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b81019080803590602001909291905050506115d5565b005b3480156105cf57600080fd5b506105fc600480360360208110156105e657600080fd5b810190808035906020019092919050505061172b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b506106276117af565b6040518082815260200191505060405180910390f35b34801561064957600080fd5b506106526117b9565b604051808260ff16815260200191505060405180910390f35b34801561067757600080fd5b506106c46004803603604081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c2565b60405180821515815260200191505060405180910390f35b3480156106e857600080fd5b50610715600480360360208110156106ff57600080fd5b8101908080359060200190929190505050611875565b005b34801561072357600080fd5b5061072c611a06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076457600080fd5b5061079d6004803603604081101561077b57600080fd5b8101908080359060200190929190803515159060200190929190505050611a2c565b6040518082815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611aeb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080057600080fd5b50610809611b0f565b005b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf0565b60405180821515815260200191505060405180910390f35b34801561087e57600080fd5b506108ab6004803603602081101561089557600080fd5b8101908080359060200190929190505050611c46565b005b3480156108b957600080fd5b506108c2611d9c565b6040518082815260200191505060405180910390f35b3480156108e457600080fd5b506108ed611da6565b60405180821515815260200191505060405180910390f35b34801561091157600080fd5b506109546004803603602081101561092857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b5061097f611ea4565b005b34801561098d57600080fd5b506109d0600480360360208110156109a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061202a565b005b3480156109de57600080fd5b506109e7612136565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1f57600080fd5b50610a2861215c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a6057600080fd5b50610a69612185565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa9578082015181840152602081019050610a8e565b50505050905090810190601f168015610ad65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af057600080fd5b50610b1d60048036036020811015610b0757600080fd5b81019080803590602001909291905050506121c2565b005b348015610b2b57600080fd5b50610b7860048036036040811015610b4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612294565b60405180821515815260200191505060405180910390f35b348015610b9c57600080fd5b50610ba5612361565b6040518082815260200191505060405180910390f35b348015610bc757600080fd5b50610c1460048036036040811015610bde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236b565b60405180821515815260200191505060405180910390f35b348015610c3857600080fd5b50610c8760048036036040811015610c4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612389565b005b348015610c9557600080fd5b50610cd860048036036020811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ac565b005b348015610ce657600080fd5b50610cef6127f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612817565b60405180821515815260200191505060405180910390f35b348015610d8e57600080fd5b50610df160048036036040811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061286d565b6040518082815260200191505060405180910390f35b348015610e1357600080fd5b50610e4260048036036020811015610e2a57600080fd5b810190808035151590602001909291905050506128f4565b005b348015610e5057600080fd5b50610e9360048036036020811015610e6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d9565b005b348015610ea157600080fd5b50610ee460048036036020811015610eb857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8c565b005b348015610ef257600080fd5b50610efb612f97565b005b348015610f0957600080fd5b50610f12613070565b6040518082815260200191505060405180910390f35b348015610f3457600080fd5b50610f3d61307a565b6040518082815260200191505060405180910390f35b348015610f5f57600080fd5b50610fa260048036036020811015610f7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b60606040518060400160405280600681526020017f426f6f7374320000000000000000000000000000000000000000000000000000815250905090565b6000610ff5610fee61340c565b8484613414565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000693f870857a3e0e3800000905090565b61104761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b61111961340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159646022913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f861340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061150984848461360b565b6115ca8461151561340c565b6115c58560405180606001604052806028815260200161598660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061157b61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b600190509392505050565b6115dd61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116af575060088111155b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7465616d4665652073686f756c6420626520696e2031202d203800000000000081525060200191505060405180910390fd5b80600e8190555050565b6000600b54821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615887602a913960400191505060405180910390fd5b6000611792613e63565b90506117a78184613e8e90919063ffffffff16565b915050919050565b6000600d54905090565b60006012905090565b600061186b6117cf61340c565b8461186685600560006117e061340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b613414565b6001905092915050565b600061187f61340c565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a42602c913960400191505060405180910390fd5b600061192f83613f60565b5050505050905061198881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e081600b54613fc890919063ffffffff16565b600b819055506119fb83600c54613ed890919063ffffffff16565b600c81905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000693f870857a3e0e3800000831115611aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ace576000611abe84613f60565b5050505050905080915050611ae5565b6000611ad984613f60565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611b1761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611be230611db9565b9050611bed81614012565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c4e61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611d20575060038111155b611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20330000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600254905090565b601360159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611e9f565b611e9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b90505b919050565b611eac61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61203261340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424f4f5354320000000000000000000000000000000000000000000000000000815250905090565b6121ca61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60006123576122a161340c565b8461235285604051806060016040528060258152602001615a6e60259139600560006122cb61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b6001905092915050565b6000600e54905090565b600061237f61237861340c565b848461360b565b6001905092915050565b61239161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a805490508110156127ed578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061266757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e057600a6001600a8054905003815481106126c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106126fb57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806127a657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556127ed565b8080600101915050612636565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128fc61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6129e161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615a206022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612cce57612c8a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d9461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158b16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f9f61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061306d816142f6565b50565b6000601454905090565b600047905090565b61308a61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b600880549050811015613408578173ffffffffffffffffffffffffffffffffffffffff166008828154811061323d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133fb5760086001600880549050038154811061329957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106132d157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806133c157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613408565b808060010191505061320c565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561349a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158d76022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159d76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613717576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158646023913960400191505060405180910390fd5b60008111613770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ae6029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b6139b861215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a2657506139f661215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613a8757601454811115613a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061591b6028913960400191505060405180910390fd5b5b613a8f61215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613afd5750613acd61215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b5557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b8f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613c00576000613b9f83611db9565b90506015548282011115613bfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158f96022913960400191505060405180910390fd5b505b6000613c0b30611db9565b90506014548110613c1c5760145490505b6000671158e460913d00008210159050601360149054906101000a900460ff16158015613c555750601360159054906101000a900460ff165b8015613c5e5750805b8015613cb657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613cde57613cc482614012565b60004790506000811115613cdc57613cdb476142f6565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d855750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d8f57600090505b613d9b86868684614480565b505050505050565b6000838311158290613e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e15578082015181840152602081019050613dfa565b50505050905090810190601f168015613e425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613e70614791565b91509150613e878183613e8e90919063ffffffff16565b9250505090565b6000613ed083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a42565b905092915050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613f7d8a600d54600e54614b08565b9250925092506000613f8d613e63565b90506000806000613fa08e878787614b9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061400a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613da3565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561404757600080fd5b506040519080825280602002602001820160405280156140765781602001602082028036833780820191505090505b509050308160008151811061408757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d4307f000000000000000000000000000000000000000000000000000000000000000084613414565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561429657808201518184015260208101905061427b565b505050509050019650505050505050600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc614346600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614371573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6143c2600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156143ed573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6144516005614443600786613e8e90919063ffffffff16565b614c2790919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561447c573d6000803e3d6000fd5b5050565b8061448e5761448d614cad565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145315750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561454657614541848484614cf0565b61477d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156145fe576145f9848484614f50565b61477c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146b7576146b28484846151b0565b61477b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147595750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561476e5761476984848461537b565b61477a565b6147798484846151b0565b5b5b5b5b8061478b5761478a615670565b5b50505050565b6000806000600b5490506000693f870857a3e0e3800000905060005b6008805490508110156149f5578260036000600884815481106147cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806148b3575081600460006008848154811061484b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156148d257600b54693f870857a3e0e380000094509450505050614a3e565b61495b60036000600884815481106148e657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613fc890919063ffffffff16565b92506149e6600460006008848154811061497157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc890919063ffffffff16565b915080806001019150506147ad565b50614a15693f870857a3e0e3800000600b54613e8e90919063ffffffff16565b821015614a3557600b54693f870857a3e0e3800000935093505050614a3e565b81819350935050505b9091565b60008083118290614aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614ab3578082015181840152602081019050614a98565b50505050905090810190601f168015614ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614afa57fe5b049050809150509392505050565b600080600080614b346064614b26888a614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b5e6064614b50888b614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b8782614b79858c613fc890919063ffffffff16565b613fc890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614bb78589614c2790919063ffffffff16565b90506000614bce8689614c2790919063ffffffff16565b90506000614be58789614c2790919063ffffffff16565b90506000614c0e82614c008587613fc890919063ffffffff16565b613fc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614c3a5760009050614ca7565b6000828402905082848281614c4b57fe5b0414614ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159436021913960400191505060405180910390fd5b809150505b92915050565b6000600d54148015614cc157506000600e54145b15614ccb57614cee565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080614d0287613f60565b955095509550955095509550614d6087600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8a85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ed681615684565b614ee08483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f6287613f60565b955095509550955095509550614fc086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061505583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ea85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513681615684565b6151408483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806151c287613f60565b95509550955095509550955061522086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152b585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061530181615684565b61530b8483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061538d87613f60565b9550955095509550955095506153eb87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155aa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f681615684565b6156008483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600061568e613e63565b905060006156a58284614c2790919063ffffffff16565b90506156f981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615824576157e083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583e82600b54613fc890919063ffffffff16565b600b8190555061585981600c54613ed890919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af964736f6c634300060c0033000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec20000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a

Deployed Bytecode

0x6080604052600436106102765760003560e01c80636ddd17131161014f578063af9549e0116100c1578063f2cc0c181161007a578063f2cc0c1814610e44578063f2fde38b14610e95578063f429389014610ee6578063f7a9159114610efd578063f815a84214610f28578063f84354f114610f535761027d565b8063af9549e014610c2c578063b030b34a14610c89578063b425bac314610cda578063cba0e99614610d1b578063dd62ed3e14610d82578063e01af92c14610e075761027d565b80638da5cb5b116101135780638da5cb5b14610a1357806395d89b4114610a545780639e6c752914610ae4578063a457c2d714610b1f578063a5e8c95414610b90578063a9059cbb14610bbb5761027d565b80636ddd1713146108d857806370a0823114610905578063715018a61461096a5780637fb172a71461098157806380b065d3146109d25761027d565b80632fbff030116101e85780634549b039116101ac5780634549b0391461075857806349bd5a5e146107b357806351bc3c85146107f45780635342acb41461080b5780635880b87314610872578063602bc62b146108ad5761027d565b80632fbff03014610612578063313ce5671461063d578063395093511461066b5780633bd5d173146106dc5780634144d9e4146107175761027d565b80631bbae6e01161023a5780631bbae6e01461041a5780631d7ef879146104555780631ff53b60146104a657806323b872dd146104f757806328667162146105885780632d838119146105c35761027d565b806306fdde0314610282578063095ea7b31461031257806313114a9d146103835780631694505e146103ae57806318160ddd146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610fa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe1565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b50610398610fff565b6040518082815260200191505060405180910390f35b3480156103ba57600080fd5b506103c3611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103fb57600080fd5b5061040461102d565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b506104536004803603602081101561043d57600080fd5b810190808035906020019092919050505061103f565b005b34801561046157600080fd5b506104a46004803603602081101561047857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611111565b005b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f0565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b81019080803590602001909291905050506115d5565b005b3480156105cf57600080fd5b506105fc600480360360208110156105e657600080fd5b810190808035906020019092919050505061172b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b506106276117af565b6040518082815260200191505060405180910390f35b34801561064957600080fd5b506106526117b9565b604051808260ff16815260200191505060405180910390f35b34801561067757600080fd5b506106c46004803603604081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c2565b60405180821515815260200191505060405180910390f35b3480156106e857600080fd5b50610715600480360360208110156106ff57600080fd5b8101908080359060200190929190505050611875565b005b34801561072357600080fd5b5061072c611a06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076457600080fd5b5061079d6004803603604081101561077b57600080fd5b8101908080359060200190929190803515159060200190929190505050611a2c565b6040518082815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611aeb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080057600080fd5b50610809611b0f565b005b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf0565b60405180821515815260200191505060405180910390f35b34801561087e57600080fd5b506108ab6004803603602081101561089557600080fd5b8101908080359060200190929190505050611c46565b005b3480156108b957600080fd5b506108c2611d9c565b6040518082815260200191505060405180910390f35b3480156108e457600080fd5b506108ed611da6565b60405180821515815260200191505060405180910390f35b34801561091157600080fd5b506109546004803603602081101561092857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b5061097f611ea4565b005b34801561098d57600080fd5b506109d0600480360360208110156109a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061202a565b005b3480156109de57600080fd5b506109e7612136565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1f57600080fd5b50610a2861215c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a6057600080fd5b50610a69612185565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa9578082015181840152602081019050610a8e565b50505050905090810190601f168015610ad65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af057600080fd5b50610b1d60048036036020811015610b0757600080fd5b81019080803590602001909291905050506121c2565b005b348015610b2b57600080fd5b50610b7860048036036040811015610b4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612294565b60405180821515815260200191505060405180910390f35b348015610b9c57600080fd5b50610ba5612361565b6040518082815260200191505060405180910390f35b348015610bc757600080fd5b50610c1460048036036040811015610bde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236b565b60405180821515815260200191505060405180910390f35b348015610c3857600080fd5b50610c8760048036036040811015610c4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612389565b005b348015610c9557600080fd5b50610cd860048036036020811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ac565b005b348015610ce657600080fd5b50610cef6127f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612817565b60405180821515815260200191505060405180910390f35b348015610d8e57600080fd5b50610df160048036036040811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061286d565b6040518082815260200191505060405180910390f35b348015610e1357600080fd5b50610e4260048036036020811015610e2a57600080fd5b810190808035151590602001909291905050506128f4565b005b348015610e5057600080fd5b50610e9360048036036020811015610e6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d9565b005b348015610ea157600080fd5b50610ee460048036036020811015610eb857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8c565b005b348015610ef257600080fd5b50610efb612f97565b005b348015610f0957600080fd5b50610f12613070565b6040518082815260200191505060405180910390f35b348015610f3457600080fd5b50610f3d61307a565b6040518082815260200191505060405180910390f35b348015610f5f57600080fd5b50610fa260048036036020811015610f7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b60606040518060400160405280600681526020017f426f6f7374320000000000000000000000000000000000000000000000000000815250905090565b6000610ff5610fee61340c565b8484613414565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000693f870857a3e0e3800000905090565b61104761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b61111961340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159646022913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f861340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061150984848461360b565b6115ca8461151561340c565b6115c58560405180606001604052806028815260200161598660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061157b61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b600190509392505050565b6115dd61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116af575060088111155b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7465616d4665652073686f756c6420626520696e2031202d203800000000000081525060200191505060405180910390fd5b80600e8190555050565b6000600b54821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615887602a913960400191505060405180910390fd5b6000611792613e63565b90506117a78184613e8e90919063ffffffff16565b915050919050565b6000600d54905090565b60006012905090565b600061186b6117cf61340c565b8461186685600560006117e061340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b613414565b6001905092915050565b600061187f61340c565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a42602c913960400191505060405180910390fd5b600061192f83613f60565b5050505050905061198881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e081600b54613fc890919063ffffffff16565b600b819055506119fb83600c54613ed890919063ffffffff16565b600c81905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000693f870857a3e0e3800000831115611aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ace576000611abe84613f60565b5050505050905080915050611ae5565b6000611ad984613f60565b50505050915050809150505b92915050565b7f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f81565b611b1761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611be230611db9565b9050611bed81614012565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c4e61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611d20575060038111155b611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20330000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600254905090565b601360159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611e9f565b611e9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b90505b919050565b611eac61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61203261340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424f4f5354320000000000000000000000000000000000000000000000000000815250905090565b6121ca61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60006123576122a161340c565b8461235285604051806060016040528060258152602001615a6e60259139600560006122cb61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b6001905092915050565b6000600e54905090565b600061237f61237861340c565b848461360b565b6001905092915050565b61239161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a805490508110156127ed578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061266757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e057600a6001600a8054905003815481106126c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106126fb57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806127a657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556127ed565b8080600101915050612636565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128fc61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6129e161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615a206022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612cce57612c8a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d9461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158b16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f9f61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061306d816142f6565b50565b6000601454905090565b600047905090565b61308a61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b600880549050811015613408578173ffffffffffffffffffffffffffffffffffffffff166008828154811061323d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133fb5760086001600880549050038154811061329957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106132d157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806133c157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613408565b808060010191505061320c565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561349a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158d76022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159d76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613717576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158646023913960400191505060405180910390fd5b60008111613770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ae6029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b6139b861215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a2657506139f661215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613a8757601454811115613a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061591b6028913960400191505060405180910390fd5b5b613a8f61215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613afd5750613acd61215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b5557507f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b8f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613c00576000613b9f83611db9565b90506015548282011115613bfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158f96022913960400191505060405180910390fd5b505b6000613c0b30611db9565b90506014548110613c1c5760145490505b6000671158e460913d00008210159050601360149054906101000a900460ff16158015613c555750601360159054906101000a900460ff165b8015613c5e5750805b8015613cb657507f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613cde57613cc482614012565b60004790506000811115613cdc57613cdb476142f6565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d855750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d8f57600090505b613d9b86868684614480565b505050505050565b6000838311158290613e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e15578082015181840152602081019050613dfa565b50505050905090810190601f168015613e425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613e70614791565b91509150613e878183613e8e90919063ffffffff16565b9250505090565b6000613ed083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a42565b905092915050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613f7d8a600d54600e54614b08565b9250925092506000613f8d613e63565b90506000806000613fa08e878787614b9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061400a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613da3565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561404757600080fd5b506040519080825280602002602001820160405280156140765781602001602082028036833780820191505090505b509050308160008151811061408757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613414565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561429657808201518184015260208101905061427b565b505050509050019650505050505050600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc614346600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614371573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6143c2600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156143ed573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6144516005614443600786613e8e90919063ffffffff16565b614c2790919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561447c573d6000803e3d6000fd5b5050565b8061448e5761448d614cad565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145315750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561454657614541848484614cf0565b61477d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156145fe576145f9848484614f50565b61477c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146b7576146b28484846151b0565b61477b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147595750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561476e5761476984848461537b565b61477a565b6147798484846151b0565b5b5b5b5b8061478b5761478a615670565b5b50505050565b6000806000600b5490506000693f870857a3e0e3800000905060005b6008805490508110156149f5578260036000600884815481106147cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806148b3575081600460006008848154811061484b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156148d257600b54693f870857a3e0e380000094509450505050614a3e565b61495b60036000600884815481106148e657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613fc890919063ffffffff16565b92506149e6600460006008848154811061497157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc890919063ffffffff16565b915080806001019150506147ad565b50614a15693f870857a3e0e3800000600b54613e8e90919063ffffffff16565b821015614a3557600b54693f870857a3e0e3800000935093505050614a3e565b81819350935050505b9091565b60008083118290614aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614ab3578082015181840152602081019050614a98565b50505050905090810190601f168015614ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614afa57fe5b049050809150509392505050565b600080600080614b346064614b26888a614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b5e6064614b50888b614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b8782614b79858c613fc890919063ffffffff16565b613fc890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614bb78589614c2790919063ffffffff16565b90506000614bce8689614c2790919063ffffffff16565b90506000614be58789614c2790919063ffffffff16565b90506000614c0e82614c008587613fc890919063ffffffff16565b613fc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614c3a5760009050614ca7565b6000828402905082848281614c4b57fe5b0414614ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159436021913960400191505060405180910390fd5b809150505b92915050565b6000600d54148015614cc157506000600e54145b15614ccb57614cee565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080614d0287613f60565b955095509550955095509550614d6087600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8a85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ed681615684565b614ee08483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f6287613f60565b955095509550955095509550614fc086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061505583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ea85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513681615684565b6151408483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806151c287613f60565b95509550955095509550955061522086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152b585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061530181615684565b61530b8483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061538d87613f60565b9550955095509550955095506153eb87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155aa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f681615684565b6156008483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600061568e613e63565b905060006156a58284614c2790919063ffffffff16565b90506156f981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615824576157e083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583e82600b54613fc890919063ffffffff16565b600b8190555061585981600c54613ed890919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af964736f6c634300060c0033

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

000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec20000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a

-----Decoded View---------------
Arg [0] : marketingWalletAddress (address): 0xAF3393ac19DE0A01ff77F0ed462304Ad2E9BBeC2
Arg [1] : useWalletAddress (address): 0x9818D2376DF97efb878d8f37189950e608B11f2a

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec2
Arg [1] : 0000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a


Deployed Bytecode Sourcemap

17454:20793:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20380:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21384:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22732:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18757:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20693:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37981:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24021:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37651:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21569:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37453:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23740:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36809:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20590:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21910:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22839:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18647:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23256:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18819:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30311:168;;;;;;;;;;;;;:::i;:::-;;26360:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37262:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8644:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18900:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20808:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8081:160;;;;;;;;;;;;;:::i;:::-;;37828:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18704:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7414:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20483:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38113:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22152:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36913:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21030:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22575:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24401:541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18596:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22445:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21221:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30671:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24954:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8372:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30491:168;;;;;;;;;;;;;:::i;:::-;;37018:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37132:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25441:518;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20380:91;20417:13;20454:5;;;;;;;;;;;;;;;;;20447:12;;20380:91;:::o;21384:173::-;21459:4;21480:39;21489:12;:10;:12::i;:::-;21503:7;21512:6;21480:8;:39::i;:::-;21541:4;21534:11;;21384:173;;;;:::o;22732:95::-;22774:7;22805:10;;22798:17;;22732:95;:::o;18757:51::-;;;:::o;20693:103::-;20746:7;18132:15;20770:14;;20693:103;:::o;37981:120::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38078:11:::1;38063:12;:26;;;;37981:120:::0;:::o;24021:368::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24120:42:::1;24109:53;;:7;:53;;;;24101:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24225:17;:26;24243:7;24225:26;;;;;;;;;;;;;;;;;;;;;;;;;24224:27;24215:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24329:4;24300:17;:26;24318:7;24300:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24347:16;24369:7;24347:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24021:368:::0;:::o;37651:165::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37782:22:::1;37756:23;;:48;;;;;;;;;;;;;;;;;;37651:165:::0;:::o;21569:329::-;21667:4;21688:36;21698:6;21706:9;21717:6;21688:9;:36::i;:::-;21739:121;21748:6;21756:12;:10;:12::i;:::-;21770:89;21808:6;21770:89;;;;;;;;;;;;;;;;;:11;:19;21782:6;21770:19;;;;;;;;;;;;;;;:33;21790:12;:10;:12::i;:::-;21770:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21739:8;:121::i;:::-;21882:4;21875:11;;21569:329;;;;;:::o;37453:186::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37546:1:::1;37535:7;:12;;:28;;;;;37562:1;37551:7;:12;;37535:28;37527:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37620:7;37609:8;:18;;;;37453:186:::0;:::o;23740:269::-;23806:7;23849;;23838;:18;;23830:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23918:19;23941:10;:8;:10::i;:::-;23918:33;;23973:24;23985:11;23973:7;:11;;:24;;;;:::i;:::-;23966:31;;;23740:269;;;:::o;36809:92::-;36851:7;36882;;36875:14;;36809:92;:::o;20590:91::-;20631:5;18396:2;20653:16;;20590:91;:::o;21910:230::-;21998:4;22019:83;22028:12;:10;:12::i;:::-;22042:7;22051:50;22090:10;22051:11;:25;22063:12;:10;:12::i;:::-;22051:25;;;;;;;;;;;;;;;:34;22077:7;22051:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22019:8;:83::i;:::-;22124:4;22117:11;;21910:230;;;;:::o;22839:405::-;22895:14;22912:12;:10;:12::i;:::-;22895:29;;22948:11;:19;22960:6;22948:19;;;;;;;;;;;;;;;;;;;;;;;;;22947:20;22939:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23032:15;23056:19;23067:7;23056:10;:19::i;:::-;23031:44;;;;;;;23108:28;23128:7;23108;:15;23116:6;23108:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23090:7;:15;23098:6;23090:15;;;;;;;;;;;;;;;:46;;;;23161:20;23173:7;23161;;:11;;:20;;;;:::i;:::-;23151:7;:30;;;;23209:23;23224:7;23209:10;;:14;;:23;;;;:::i;:::-;23196:10;:36;;;;22839:405;;;:::o;18647:46::-;;;;;;;;;;;;;:::o;23256:472::-;23346:7;18132:15;23378:7;:18;;23370:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23452:17;23447:270;;23491:15;23515:19;23526:7;23515:10;:19::i;:::-;23490:44;;;;;;;23560:7;23553:14;;;;;23447:270;23610:23;23641:19;23652:7;23641:10;:19::i;:::-;23608:52;;;;;;;23686:15;23679:22;;;23256:472;;;;;:::o;18819:38::-;;;:::o;30311:168::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30369:23:::1;30395:24;30413:4;30395:9;:24::i;:::-;30369:50;;30434:33;30451:15;30434:16;:33::i;:::-;7696:1;30311:168::o:0;26360:131::-;26424:4;26452:18;:27;26471:7;26452:27;;;;;;;;;;;;;;;;;;;;;;;;;26445:34;;26360:131;;;:::o;37262:179::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37352:1:::1;37342:6;:11;;:26;;;;;37367:1;37357:6;:11;;37342:26;37334:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37423:6;37413:7;:16;;;;37262:179:::0;:::o;8644:98::-;8690:7;8721:9;;8714:16;;8644:98;:::o;18900:30::-;;;;;;;;;;;;;:::o;20808:210::-;20874:7;20902:11;:20;20914:7;20902:20;;;;;;;;;;;;;;;;;;;;;;;;;20898:49;;;20931:7;:16;20939:7;20931:16;;;;;;;;;;;;;;;;20924:23;;;;20898:49;20969:37;20989:7;:16;20997:7;20989:16;;;;;;;;;;;;;;;;20969:19;:37::i;:::-;20962:44;;20808:210;;;;:::o;8081:160::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8192:1:::1;8155:40;;8176:6;::::0;::::1;;;;;;;;8155:40;;;;;;;;;;;;8227:1;8210:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8081:160::o:0;37828:141::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37941:16:::1;37921:17;;:36;;;;;;;;;;;;;;;;;;37828:141:::0;:::o;18704:40::-;;;;;;;;;;;;;:::o;7414:87::-;7452:7;7483:6;;;;;;;;;;;7476:13;;7414:87;:::o;20483:95::-;20522:13;20559:7;;;;;;;;;;;;;;;;;20552:14;;20483:95;:::o;38113:127::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38215:13:::1;38198:14;:30;;;;38113:127:::0;:::o;22152:281::-;22245:4;22266:129;22275:12;:10;:12::i;:::-;22289:7;22298:96;22337:15;22298:96;;;;;;;;;;;;;;;;;:11;:25;22310:12;:10;:12::i;:::-;22298:25;;;;;;;;;;;;;;;:34;22324:7;22298:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22266:8;:129::i;:::-;22417:4;22410:11;;22152:281;;;;:::o;36913:93::-;36957:7;36986:8;;36979:15;;36913:93;:::o;21030:179::-;21108:4;21129:42;21139:12;:10;:12::i;:::-;21153:9;21164:6;21129:9;:42::i;:::-;21193:4;21186:11;;21030:179;;;;:::o;22575:145::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22700:8:::1;22670:18;:27;22689:7;22670:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22575:145:::0;;:::o;24401:541::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24493:17:::1;:26;24511:7;24493:26;;;;;;;;;;;;;;;;;;;;;;;;;24484:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24568:9;24563:369;24587:16;:23;;;;24583:1;:27;24563:369;;;24664:7;24641:30;;:16;24658:1;24641:19;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;24637:281;;;24719:16;24762:1;24736:16;:23;;;;:27;24719:45;;;;;;;;;;;;;;;;;;;;;;;;;24697:16;24714:1;24697:19;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;24817:5;24788:17;:26;24806:7;24788:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24846:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24892:5;;24637:281;24612:3;;;;;;;24563:369;;;;24401:541:::0;:::o;18596:40::-;;;;;;;;;;;;;:::o;22445:118::-;22503:4;22531:11;:20;22543:7;22531:20;;;;;;;;;;;;;;;;;;;;;;;;;22524:27;;22445:118;;;:::o;21221:151::-;21302:7;21333:11;:18;21345:5;21333:18;;;;;;;;;;;;;;;:27;21352:7;21333:27;;;;;;;;;;;;;;;;21326:34;;21221:151;;;;:::o;30671:106::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30758:7:::1;30744:11;;:21;;;;;;;;;;;;;;;;;;30671:106:::0;:::o;24954:475::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25050:42:::1;25039:53;;:7;:53;;;;25031:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25155:11;:20;25167:7;25155:20;;;;;;;;;;;;;;;;;;;;;;;;;25154:21;25146:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25244:1;25225:7;:16;25233:7;25225:16;;;;;;;;;;;;;;;;:20;25222:116;;;25285:37;25305:7;:16;25313:7;25305:16;;;;;;;;;;;;;;;;25285:19;:37::i;:::-;25266:7;:16;25274:7;25266:16;;;;;;;;;;;;;;;:56;;;;25222:116;25375:4;25352:11;:20;25364:7;25352:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25394:9;25409:7;25394:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24954:475:::0;:::o;8372:260::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8485:1:::1;8465:22;;:8;:22;;;;8457:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8579:8;8550:38;;8571:6;::::0;::::1;;;;;;;;8550:38;;;;;;;;;;;;8612:8;8603:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8372:260:::0;:::o;30491:168::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30549:26:::1;30578:21;30549:50;;30614:33;30628:18;30614:13;:33::i;:::-;7696:1;30491:168::o:0;37018:102::-;37065:7;37096:12;;37089:19;;37018:102;:::o;37132:118::-;37178:15;37217:21;37210:28;;37132:118;:::o;25441:518::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25526:11:::1;:20;25538:7;25526:20;;;;;;;;;;;;;;;;;;;;;;;;;25518:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25594:9;25589:359;25613:9;:16;;;;25609:1;:20;25589:359;;;25675:7;25659:23;;:9;25669:1;25659:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;25655:278;;;25722:9;25751:1;25732:9;:16;;;;:20;25722:31;;;;;;;;;;;;;;;;;;;;;;;;;25707:9;25717:1;25707:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25795:1;25776:7;:16;25784:7;25776:16;;;;;;;;;;;;;;;:20;;;;25842:5;25819:11;:20;25831:7;25819:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25870:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25908:5;;25655:278;25631:3;;;;;;;25589:359;;;;25441:518:::0;:::o;201:114::-;254:15;293:10;286:17;;201:114;:::o;26503:357::-;26617:1;26600:19;;:5;:19;;;;26592:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26702:1;26683:21;;:7;:21;;;;26675:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26790:6;26760:11;:18;26772:5;26760:18;;;;;;;;;;;;;;;:27;26779:7;26760:27;;;;;;;;;;;;;;;:36;;;;26832:7;26816:32;;26825:5;26816:32;;;26841:6;26816:32;;;;;;;;;;;;;;;;;;26503:357;;;:::o;26872:2507::-;26991:1;26973:20;;:6;:20;;;;26965:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27079:1;27058:23;;:9;:23;;;;27050:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27153:1;27144:6;:10;27136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27224:17;:25;27242:6;27224:25;;;;;;;;;;;;;;;;;;;;;;;;;27223:26;27215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27297:17;:29;27315:10;27297:29;;;;;;;;;;;;;;;;;;;;;;;;;27296:30;27288:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27374:17;:28;27392:9;27374:28;;;;;;;;;;;;;;;;;;;;;;;;;27373:29;27365:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27454:7;:5;:7::i;:::-;27444:17;;:6;:17;;;;:41;;;;;27478:7;:5;:7::i;:::-;27465:20;;:9;:20;;;;27444:41;27441:156;;;27524:12;;27514:6;:22;;27506:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27441:156;27624:7;:5;:7::i;:::-;27614:17;;:6;:17;;;;:41;;;;;27648:7;:5;:7::i;:::-;27635:20;;:9;:20;;;;27614:41;:71;;;;;27672:13;27659:26;;:9;:26;;;;27614:71;:103;;;;;27710:6;27689:28;;:9;:28;;;;27614:103;27611:309;;;27738:29;27770:20;27780:9;27770;:20::i;:::-;27738:52;;27851:14;;27841:6;27817:21;:30;:48;;27809:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27611:309;;28200:28;28231:24;28249:4;28231:9;:24::i;:::-;28200:55;;28299:12;;28275:20;:36;28272:124;;28368:12;;28345:35;;28272:124;28412:24;19055:13;28439:20;:53;;28412:80;;28512:6;;;;;;;;;;;28511:7;:22;;;;;28522:11;;;;;;;;;;;28511:22;:45;;;;;28537:19;28511:45;:72;;;;;28570:13;28560:23;;:6;:23;;;;28511:72;28507:417;;;28675:38;28692:20;28675:16;:38::i;:::-;28734:26;28763:21;28734:50;;28827:1;28806:18;:22;28803:106;;;28853:36;28867:21;28853:13;:36::i;:::-;28803:106;28507:417;;29005:12;29020:4;29005:19;;29132:18;:26;29151:6;29132:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;29162:18;:29;29181:9;29162:29;;;;;;;;;;;;;;;;;;;;;;;;;29132:59;29129:113;;;29221:5;29211:15;;29129:113;29320:47;29335:6;29342:9;29352:6;29359:7;29320:14;:47::i;:::-;26872:2507;;;;;;:::o;2108:208::-;2194:7;2231:1;2226;:6;;2234:12;2218:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2262:9;2278:1;2274;:5;2262:17;;2303:1;2296:8;;;2108:208;;;;;:::o;36015:175::-;36056:7;36081:15;36098;36117:19;:17;:19::i;:::-;36080:56;;;;36158:20;36170:7;36158;:11;;:20;;;;:::i;:::-;36151:27;;;;36015:175;:::o;2851:140::-;2909:7;2940:39;2944:1;2947;2940:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2933:46;;2851:140;;;;:::o;1743:197::-;1801:7;1825:9;1841:1;1837;:5;1825:17;;1870:1;1865;:6;;1857:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1927:1;1920:8;;;1743:197;;;;:::o;34708:467::-;34767:7;34776;34785;34794;34803;34812;34833:23;34858:12;34872:13;34889:39;34901:7;34910;;34919:8;;34889:11;:39::i;:::-;34832:96;;;;;;34939:19;34961:10;:8;:10::i;:::-;34939:32;;34983:15;35000:23;35025:12;35041:46;35053:7;35062:4;35068:5;35075:11;35041;:46::i;:::-;34982:105;;;;;;35106:7;35115:15;35132:4;35138:15;35155:4;35161:5;35098:69;;;;;;;;;;;;;;;;;;;34708:467;;;;;;;:::o;1952:144::-;2010:7;2041:43;2045:1;2048;2041:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2034:50;;1952:144;;;;:::o;29391:656::-;19297:4;19288:6;;:13;;;;;;;;;;;;;;;;;;29536:21:::1;29574:1;29560:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29536:40;;29609:4;29591;29596:1;29591:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;29639:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;29629:4;29634:1;29629:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;29678:62;29695:4;29710:15;29728:11;29678:8;:62::i;:::-;29787:15;:66;;;29872:11;29902:1;29950:4;29981;30005:15;29787:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19316:1;19341:5:::0;19332:6;;:14;;;;;;;;;;;;;;;;;;29391:656;:::o;30059:240::-;30121:17;;;;;;;;;;;:26;;:41;30148:13;30159:1;30148:6;:10;;:13;;;;:::i;:::-;30121:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30177:23;;;;;;;;;;;:32;;:47;30210:13;30221:1;30210:6;:10;;:13;;;;:::i;:::-;30177:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30239:17;;;;;;;;;;;:26;;:48;30266:20;30284:1;30266:13;30277:1;30266:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;30239:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30059:240;:::o;30789:883::-;30905:7;30901:44;;30931:14;:12;:14::i;:::-;30901:44;30966:11;:19;30978:6;30966:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30990:11;:22;31002:9;30990:22;;;;;;;;;;;;;;;;;;;;;;;;;30989:23;30966:46;30962:637;;;31033:48;31055:6;31063:9;31074:6;31033:21;:48::i;:::-;30962:637;;;31108:11;:19;31120:6;31108:19;;;;;;;;;;;;;;;;;;;;;;;;;31107:20;:46;;;;;31131:11;:22;31143:9;31131:22;;;;;;;;;;;;;;;;;;;;;;;;;31107:46;31103:496;;;31174:46;31194:6;31202:9;31213:6;31174:19;:46::i;:::-;31103:496;;;31247:11;:19;31259:6;31247:19;;;;;;;;;;;;;;;;;;;;;;;;;31246:20;:47;;;;;31271:11;:22;31283:9;31271:22;;;;;;;;;;;;;;;;;;;;;;;;;31270:23;31246:47;31242:357;;;31314:44;31332:6;31340:9;31351:6;31314:17;:44::i;:::-;31242:357;;;31384:11;:19;31396:6;31384:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31407:11;:22;31419:9;31407:22;;;;;;;;;;;;;;;;;;;;;;;;;31384:45;31380:219;;;31450:48;31472:6;31480:9;31491:6;31450:21;:48::i;:::-;31380:219;;;31539:44;31557:6;31565:9;31576:6;31539:17;:44::i;:::-;31380:219;31242:357;31103:496;30962:637;31619:7;31615:45;;31645:15;:13;:15::i;:::-;31615:45;30789:883;;;;:::o;36202:595::-;36252:7;36261;36285:15;36303:7;;36285:25;;36325:15;18132;36325:25;;36370:9;36365:305;36389:9;:16;;;;36385:1;:20;36365:305;;;36459:7;36435;:21;36443:9;36453:1;36443:12;;;;;;;;;;;;;;;;;;;;;;;;;36435:21;;;;;;;;;;;;;;;;:31;:66;;;;36494:7;36470;:21;36478:9;36488:1;36478:12;;;;;;;;;;;;;;;;;;;;;;;;;36470:21;;;;;;;;;;;;;;;;:31;36435:66;36431:97;;;36511:7;;18132:15;36503:25;;;;;;;;;36431:97;36557:34;36569:7;:21;36577:9;36587:1;36577:12;;;;;;;;;;;;;;;;;;;;;;;;;36569:21;;;;;;;;;;;;;;;;36557:7;:11;;:34;;;;:::i;:::-;36547:44;;36620:34;36632:7;:21;36640:9;36650:1;36640:12;;;;;;;;;;;;;;;;;;;;;;;;;36632:21;;;;;;;;;;;;;;;;36620:7;:11;;:34;;;;:::i;:::-;36610:44;;36407:3;;;;;;;36365:305;;;;36698:20;18132:15;36698:7;;:11;;:20;;;;:::i;:::-;36688:7;:30;36684:61;;;36728:7;;18132:15;36720:25;;;;;;;;36684:61;36768:7;36777;36760:25;;;;;;36202:595;;;:::o;3003:298::-;3089:7;3125:1;3121;:5;3128:12;3113:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:9;3172:1;3168;:5;;;;;;3156:17;;3288:1;3281:8;;;3003:298;;;;;:::o;35187:371::-;35280:7;35289;35298;35322:12;35337:28;35361:3;35337:19;35349:6;35337:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;35322:43;;35380:13;35396:29;35421:3;35396:20;35408:7;35396;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;35380:45;;35440:23;35466:28;35488:5;35466:17;35478:4;35466:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;35440:54;;35517:15;35534:4;35540:5;35509:37;;;;;;;;;35187:371;;;;;;;:::o;35570:433::-;35680:7;35689;35698;35722:15;35740:24;35752:11;35740:7;:11;;:24;;;;:::i;:::-;35722:42;;35779:12;35794:21;35803:11;35794:4;:8;;:21;;;;:::i;:::-;35779:36;;35830:13;35846:22;35856:11;35846:5;:9;;:22;;;;:::i;:::-;35830:38;;35883:23;35909:28;35931:5;35909:17;35921:4;35909:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;35883:54;;35960:7;35969:15;35986:4;35952:39;;;;;;;;;;35570:433;;;;;;;;:::o;2328:511::-;2386:7;2652:1;2647;:6;2643:55;;;2681:1;2674:8;;;;2643:55;2714:9;2730:1;2726;:5;2714:17;;2763:1;2758;2754;:5;;;;;;:10;2746:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2826:1;2819:8;;;2328:511;;;;;:::o;25971:238::-;26032:1;26021:7;;:12;:29;;;;;26049:1;26037:8;;:13;26021:29;26018:41;;;26052:7;;26018:41;26093:7;;26075:15;:25;;;;26134:8;;26115:16;:27;;;;26169:1;26159:7;:11;;;;26196:1;26185:8;:12;;;;25971:238;:::o;32815:580::-;32922:15;32939:23;32964:12;32978:23;33003:12;33017:13;33034:19;33045:7;33034:10;:19::i;:::-;32921:132;;;;;;;;;;;;33086:28;33106:7;33086;:15;33094:6;33086:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33068:7;:15;33076:6;33068:15;;;;;;;;;;;;;;;:46;;;;33147:28;33167:7;33147;:15;33155:6;33147:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33129:7;:15;33137:6;33129:15;;;;;;;;;;;;;;;:46;;;;33211:39;33234:15;33211:7;:18;33219:9;33211:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33190:7;:18;33198:9;33190:18;;;;;;;;;;;;;;;:60;;;;33265:16;33275:5;33265:9;:16::i;:::-;33296:23;33308:4;33314;33296:11;:23::i;:::-;33356:9;33339:44;;33348:6;33339:44;;;33367:15;33339:44;;;;;;;;;;;;;;;;;;32815:580;;;;;;;;;:::o;32211:592::-;32316:15;32333:23;32358:12;32372:23;32397:12;32411:13;32428:19;32439:7;32428:10;:19::i;:::-;32315:132;;;;;;;;;;;;32480:28;32500:7;32480;:15;32488:6;32480:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32462:7;:15;32470:6;32462:15;;;;;;;;;;;;;;;:46;;;;32544:39;32567:15;32544:7;:18;32552:9;32544:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32523:7;:18;32531:9;32523:18;;;;;;;;;;;;;;;:60;;;;32619:39;32642:15;32619:7;:18;32627:9;32619:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32598:7;:18;32606:9;32598:18;;;;;;;;;;;;;;;:60;;;;32673:16;32683:5;32673:9;:16::i;:::-;32704:23;32716:4;32722;32704:11;:23::i;:::-;32764:9;32747:44;;32756:6;32747:44;;;32775:15;32747:44;;;;;;;;;;;;;;;;;;32211:592;;;;;;;;;:::o;31684:515::-;31787:15;31804:23;31829:12;31843:23;31868:12;31882:13;31899:19;31910:7;31899:10;:19::i;:::-;31786:132;;;;;;;;;;;;31951:28;31971:7;31951;:15;31959:6;31951:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31933:7;:15;31941:6;31933:15;;;;;;;;;;;;;;;:46;;;;32015:39;32038:15;32015:7;:18;32023:9;32015:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31994:7;:18;32002:9;31994:18;;;;;;;;;;;;;;;:60;;;;32069:16;32079:5;32069:9;:16::i;:::-;32100:23;32112:4;32118;32100:11;:23::i;:::-;32160:9;32143:44;;32152:6;32143:44;;;32171:15;32143:44;;;;;;;;;;;;;;;;;;31684:515;;;;;;;;;:::o;33407:655::-;33514:15;33531:23;33556:12;33570:23;33595:12;33609:13;33626:19;33637:7;33626:10;:19::i;:::-;33513:132;;;;;;;;;;;;33678:28;33698:7;33678;:15;33686:6;33678:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33660:7;:15;33668:6;33660:15;;;;;;;;;;;;;;;:46;;;;33739:28;33759:7;33739;:15;33747:6;33739:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33721:7;:15;33729:6;33721:15;;;;;;;;;;;;;;;:46;;;;33803:39;33826:15;33803:7;:18;33811:9;33803:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33782:7;:18;33790:9;33782:18;;;;;;;;;;;;;;;:60;;;;33878:39;33901:15;33878:7;:18;33886:9;33878:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33857:7;:18;33865:9;33857:18;;;;;;;;;;;;;;;:60;;;;33932:16;33942:5;33932:9;:16::i;:::-;33963:23;33975:4;33981;33963:11;:23::i;:::-;34023:9;34006:44;;34015:6;34006:44;;;34034:15;34006:44;;;;;;;;;;;;;;;;;;33407:655;;;;;;;;;:::o;26221:127::-;26279:15;;26269:7;:25;;;;26320:16;;26309:8;:27;;;;26221:127::o;34074:349::-;34131:19;34154:10;:8;:10::i;:::-;34131:33;;34179:13;34195:22;34205:11;34195:5;:9;;:22;;;;:::i;:::-;34179:38;;34257:33;34284:5;34257:7;:22;34273:4;34257:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34232:7;:22;34248:4;34232:22;;;;;;;;;;;;;;;:58;;;;34308:11;:26;34328:4;34308:26;;;;;;;;;;;;;;;;;;;;;;;;;34305:106;;;34378:33;34405:5;34378:7;:22;34394:4;34378:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34353:7;:22;34369:4;34353:22;;;;;;;;;;;;;;;:58;;;;34305:106;34074:349;;;:::o;34435:159::-;34517:17;34529:4;34517:7;;:11;;:17;;;;:::i;:::-;34507:7;:27;;;;34562:20;34577:4;34562:10;;:14;;:20;;;;:::i;:::-;34549:10;:33;;;;34435:159;;:::o

Swarm Source

ipfs://3bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.