ETH Price: $2,918.45 (+3.49%)
 

Overview

Max Total Supply

4,000,000,000,000 QNTM

Holders

736

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,705,001,230.82306131155083273 QNTM

Value
$0.00
0xf98110275d1bfc4b33f64f4b1cfb89e7ea4a96c9
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:
Quantum

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// 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 Quantum 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 = 4000000000000 * 10**18;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private constant _name = 'Quantum';
        string private constant _symbol = 'QNTM';
        uint8 private constant _decimals = 18;

        uint256 private _marketingFee = 5;
        uint256 private _devFee = 2;
        uint256 private _useCaseFee = 2;
        uint256 private _useCaseFee2 = 2;
        uint256 private _useCaseFee3 = 1;

        uint256 private _taxFee = _useCaseFee + _useCaseFee2 + _useCaseFee3;
        uint256 private _teamFee = _marketingFee + _devFee;
        uint256 private _totalFee = _marketingFee + _devFee + _useCaseFee + _useCaseFee2 + _useCaseFee3;

        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;
        uint256 private _previousMarketingFee;
        uint256 private _previousDevFee;
        uint256 private _previousUseCase;
        uint256 private _previousUseCase2;
        uint256 private _previousUseCase3;

        address payable public _marketingWalletAddress;
        address payable public _devWalletAddress;
        address payable public _useCaseWallet;
        address payable public _useCaseWallet2;
        address payable public _useCaseWallet3;             

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;
        bool public tradingActive = true;

        uint256 private _maxTxAmount = 30000000000 * 10**18;
        uint256 private constant _numOfTokensToExchangeForTeam = 5357142 * 10**18;
        uint256 private _maxWalletSize = 4000000000000 * 10**18;

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

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

        constructor (address payable UseCaseWallet3) public {
            _marketingWalletAddress = 0x8d4dF17D8ffB71ADD7d347de9f1a3950aaC42A38;
            _devWalletAddress = 0xeDf1db5459Ad8c94e4e9C3552da55c8062939B13;
            _useCaseWallet = 0x415f59DE964952de86074046370EAA4fb5b0F901;
            _useCaseWallet2 = 0xDEA167FCecbFA4dfD2B9D9125B6aBcD5a7237ECB;
            _useCaseWallet3 = UseCaseWallet3;

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

            _previousMarketingFee = _marketingFee;
            _previousDevFee = _devFee;
            _previousUseCase = _useCaseFee;
            _previousUseCase2 = _useCaseFee2;
            _previousUseCase3 = _useCaseFee3;

            _marketingFee = 0;
            _devFee = 0;
            _useCaseFee = 0;
            _useCaseFee2 = 0;
            _useCaseFee3 = 0;

            _taxFee = 0;
            _teamFee = 0;
        }

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

            _marketingFee = _previousMarketingFee;
            _devFee = _previousDevFee;
            _useCaseFee = _previousUseCase;
            _useCaseFee2 = _previousUseCase2;
            _useCaseFee3 = _previousUseCase3;
        }

        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");
            require(tradingActive || (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]), "Trading is currently not active");
            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 {
            _marketingWalletAddress.transfer(amount.div(_totalFee).mul(_marketingFee));
            _devWalletAddress.transfer(amount.div(_totalFee).mul(_devFee));
            _useCaseWallet.transfer(amount.div(_totalFee).mul(_useCaseFee));
            _useCaseWallet2.transfer(amount.div(_totalFee).mul(_useCaseFee2));
            _useCaseWallet3.transfer(amount.div(_totalFee).mul(_useCaseFee3));
        }

        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 _getMarketingFee() public view returns (uint256) {
            return _marketingFee;
        }

        function _getDevFee() public view returns (uint256) {
            return _devFee;
        }

        function _geUseCaseFee() public view returns (uint256) {
            return _useCaseFee;
        }

        function _getUseCaseFee2() public view returns (uint256) {
            return _useCaseFee2;
        }

        function _getUseCaseFee3() public view returns (uint256) {
            return _useCaseFee3;
        }

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

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

        function _getMaxWalletSize () public view returns (uint256) {
            return _maxWalletSize;
        }

        function _setMarketingFee(uint256 marketingFee) external onlyOwner() {
            require(marketingFee >= 1 && marketingFee <= 6, 'marketingFee should be in 1 - 6');
            _marketingFee = marketingFee;
        }

        function _setDevFee(uint256 devFee) external onlyOwner() {
            require(devFee >= 1 && devFee <= 6, 'devFee should be in 1 - 6');
            _devFee = devFee;
        }

        function _setUseCaseFee(uint256 useCaseFee) external onlyOwner() {
            require(useCaseFee >= 1 && useCaseFee <= 6, 'useCaseFee should be in 1 - 6');
            _useCaseFee = useCaseFee;
        }

        function _setUseCaseFee2(uint256 useCaseFee2) external onlyOwner() {
            require(useCaseFee2 >= 1 && useCaseFee2 <= 6, 'useCaseFee2 should be in 1 - 6');
            _useCaseFee2 = useCaseFee2;
        }

        function _setUseCaseFee3(uint256 useCaseFee3) external onlyOwner() {
            require(useCaseFee3 >= 1 && useCaseFee3 <= 6, 'useCaseFee3 should be in 1 - 6');
            _useCaseFee3 = useCaseFee3;
        }

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

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

        function _setUseCaseWallet3(address payable UseCaseWallet3) external onlyOwner() {
            _useCaseWallet3 = UseCaseWallet3;
        }

        // Enable Trading
        function enableTrading() external onlyOwner {
            tradingActive = true;
            swapEnabled = true;
        }

        // Disable Trading
        function disableTrading() external onlyOwner {
            tradingActive = false;
            swapEnabled = false;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"UseCaseWallet3","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":"_geUseCaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxWalletSize","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":"_getUseCaseFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getUseCaseFee3","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":"uint256","name":"devFee","type":"uint256"}],"name":"_setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"_setMarketingFee","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":"useCaseFee","type":"uint256"}],"name":"_setUseCaseFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"useCaseFee2","type":"uint256"}],"name":"_setUseCaseFee2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"useCaseFee3","type":"uint256"}],"name":"_setUseCaseFee3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"UseCaseWallet3","type":"address"}],"name":"_setUseCaseWallet3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_useCaseWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_useCaseWallet2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_useCaseWallet3","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":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60c06040526c327cb2734119d3b7a9000000006000190619600b556005600d8190556002600e819055600f8190556010556001601155601281905560076013819055600c6014556015919091556016556020805460ff60b01b1961ffff60a01b19909116600160a81b1716600160b01b1790556b60ef6b1aba6f0723300000006021556c327cb2734119d3b7a900000000602255348015620000a057600080fd5b5060405162003ca038038062003ca083398181016040526020811015620000c657600080fd5b50516000620000d46200043e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b0319908116738d4df17d8ffb71add7d347de9f1a3950aac42a3817909155601d8054821673edf1db5459ad8c94e4e9c3552da55c8062939b13179055601e8054821673415f59de964952de86074046370eaa4fb5b0f901179055601f8054821673dea167fcecbfa4dfd2b9d9125b6abcd5a7237ecb179055602080546001600160a01b0384169216919091179055600b5460036000620001c86200043e565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023f57600080fd5b505afa15801562000254573d6000803e3d6000fd5b505050506040513d60208110156200026b57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002bc57600080fd5b505afa158015620002d1573d6000803e3d6000fd5b505050506040513d6020811015620002e857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b505050506040513d60208110156200036757600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600660006200039462000442565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055620003de6200043e565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c327cb2734119d3b7a9000000006040518082815260200191505060405180910390a3505062000451565b3390565b6000546001600160a01b031690565b60805160601c60a05160601c61380c62000494600039806111d652806125d752806126da525080610c7752806129ef5280612aa75280612ace525061380c6000f3fe6080604052600436106103845760003560e01c80638da5cb5b116101d1578063cba0e99611610102578063e200d04e116100a0578063f42938901161006f578063f429389014610bb8578063f7a9159114610bcd578063f815a84214610be2578063f84354f114610bf75761038b565b8063e200d04e14610b28578063ea6096e914610b3d578063f2cc0c1814610b52578063f2fde38b14610b855761038b565b8063dd62ed3e116100dc578063dd62ed3e14610a97578063df84653e14610ad2578063e01af92c14610ae7578063e1cee22114610b135761038b565b8063cba0e99614610a10578063ccd3457114610a43578063ceab3f2114610a6d5761038b565b8063a9059cbb1161016f578063b425bac311610149578063b425bac3146109bc578063bbc0c742146109d1578063c3babef7146109e6578063c7c2713c146109fb5761038b565b8063a9059cbb14610915578063af9549e01461094e578063b030b34a146109895761038b565b80639e6c7529116101ab5780639e6c752914610873578063a457c2d71461089d578063a52fe9bb146108d6578063a5e8c954146109005761038b565b80638da5cb5b146108165780638f80153b1461082b57806395d89b411461085e5761038b565b8063313ce567116102b65780635342acb41161025457806370a082311161022357806370a082311461078f578063715018a6146107c2578063807f9b52146107d75780638a8c523c146108015761038b565b80635342acb41461070857806359f1707d1461073b578063602bc62b146107655780636ddd17131461077a5761038b565b80634144d9e4116102905780634144d9e4146106975780634549b039146106ac57806349bd5a5e146106de57806351bc3c85146106f35761038b565b8063313ce5671461060957806339509351146106345780633bd5d1731461066d5761038b565b80631bbae6e01161032357806323b872dd116102fd57806323b872dd14610572578063273b97fc146105b55780632d838119146105ca5780632fbff030146105f45761038b565b80631bbae6e0146105005780631d7ef8791461052a5780631db1de411461055d5761038b565b806313114a9d1161035f57806313114a9d1461048e5780631694505e146104a357806317700f01146104d457806318160ddd146104eb5761038b565b80627a4f6b1461039057806306fdde03146103b7578063095ea7b3146104415761038b565b3661038b57005b600080fd5b34801561039c57600080fd5b506103a5610c2a565b60408051918252519081900360200190f35b3480156103c357600080fd5b506103cc610c30565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044d57600080fd5b5061047a6004803603604081101561046457600080fd5b506001600160a01b038135169060200135610c51565b604080519115158252519081900360200190f35b34801561049a57600080fd5b506103a5610c6f565b3480156104af57600080fd5b506104b8610c75565b604080516001600160a01b039092168252519081900360200190f35b3480156104e057600080fd5b506104e9610c99565b005b3480156104f757600080fd5b506103a5610d01565b34801561050c57600080fd5b506104e96004803603602081101561052357600080fd5b5035610d12565b34801561053657600080fd5b506104e96004803603602081101561054d57600080fd5b50356001600160a01b0316610d6f565b34801561056957600080fd5b506104b8610ef7565b34801561057e57600080fd5b5061047a6004803603606081101561059557600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b3480156105c157600080fd5b506103a5610f8d565b3480156105d657600080fd5b506103a5600480360360208110156105ed57600080fd5b5035610f93565b34801561060057600080fd5b506103a5610ff5565b34801561061557600080fd5b5061061e610ffb565b6040805160ff9092168252519081900360200190f35b34801561064057600080fd5b5061047a6004803603604081101561065757600080fd5b506001600160a01b038135169060200135611000565b34801561067957600080fd5b506104e96004803603602081101561069057600080fd5b503561104e565b3480156106a357600080fd5b506104b8611128565b3480156106b857600080fd5b506103a5600480360360408110156106cf57600080fd5b50803590602001351515611137565b3480156106ea57600080fd5b506104b86111d4565b3480156106ff57600080fd5b506104e96111f8565b34801561071457600080fd5b5061047a6004803603602081101561072b57600080fd5b50356001600160a01b0316611269565b34801561074757600080fd5b506104e96004803603602081101561075e57600080fd5b5035611287565b34801561077157600080fd5b506103a5611347565b34801561078657600080fd5b5061047a61134d565b34801561079b57600080fd5b506103a5600480360360208110156107b257600080fd5b50356001600160a01b031661135d565b3480156107ce57600080fd5b506104e96113bf565b3480156107e357600080fd5b506104e9600480360360208110156107fa57600080fd5b5035611461565b34801561080d57600080fd5b506104e9611521565b34801561082257600080fd5b506104b861159d565b34801561083757600080fd5b506104e96004803603602081101561084e57600080fd5b50356001600160a01b03166115ac565b34801561086a57600080fd5b506103cc611626565b34801561087f57600080fd5b506104e96004803603602081101561089657600080fd5b5035611644565b3480156108a957600080fd5b5061047a600480360360408110156108c057600080fd5b506001600160a01b0381351690602001356116a1565b3480156108e257600080fd5b506104e9600480360360208110156108f957600080fd5b5035611709565b34801561090c57600080fd5b506103a56117c9565b34801561092157600080fd5b5061047a6004803603604081101561093857600080fd5b506001600160a01b0381351690602001356117cf565b34801561095a57600080fd5b506104e96004803603604081101561097157600080fd5b506001600160a01b03813516906020013515156117e3565b34801561099557600080fd5b506104e9600480360360208110156109ac57600080fd5b50356001600160a01b0316611866565b3480156109c857600080fd5b506104b8611a1e565b3480156109dd57600080fd5b5061047a611a2d565b3480156109f257600080fd5b506103a5611a3d565b348015610a0757600080fd5b506104b8611a43565b348015610a1c57600080fd5b5061047a60048036036020811015610a3357600080fd5b50356001600160a01b0316611a52565b348015610a4f57600080fd5b506104e960048036036020811015610a6657600080fd5b5035611a70565b348015610a7957600080fd5b506104e960048036036020811015610a9057600080fd5b5035611b30565b348015610aa357600080fd5b506103a560048036036040811015610aba57600080fd5b506001600160a01b0381358116916020013516611bf0565b348015610ade57600080fd5b506103a5611c1b565b348015610af357600080fd5b506104e960048036036020811015610b0a57600080fd5b50351515611c21565b348015610b1f57600080fd5b506103a5611c97565b348015610b3457600080fd5b506103a5611c9d565b348015610b4957600080fd5b506104b8611ca3565b348015610b5e57600080fd5b506104e960048036036020811015610b7557600080fd5b50356001600160a01b0316611cb2565b348015610b9157600080fd5b506104e960048036036020811015610ba857600080fd5b50356001600160a01b0316611e94565b348015610bc457600080fd5b506104e9611f8c565b348015610bd957600080fd5b506103a5611fee565b348015610bee57600080fd5b506103a5611ff4565b348015610c0357600080fd5b506104e960048036036020811015610c1a57600080fd5b50356001600160a01b0316611ff8565b600d5490565b6040805180820190915260078152665175616e74756d60c81b602082015290565b6000610c65610c5e61218e565b8484612192565b5060015b92915050565b600c5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ca161218e565b6000546001600160a01b03908116911614610cf1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6020805461ffff60a81b19169055565b6c327cb2734119d3b7a90000000090565b610d1a61218e565b6000546001600160a01b03908116911614610d6a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602155565b610d7761218e565b6000546001600160a01b03908116911614610dc7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610e235760405162461bcd60e51b81526004018080602001828103825260228152602001806136886022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610e91576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6020546001600160a01b031681565b6000610f1384848461227e565b610f8384610f1f61218e565b610f7e856040518060600160405280602881526020016136aa602891396001600160a01b038a16600090815260056020526040812090610f5d61218e565b6001600160a01b03168152602081019190915260400160002054919061278e565b612192565b5060019392505050565b600e5490565b6000600b54821115610fd65760405162461bcd60e51b815260040180806020018281038252602a8152602001806135ab602a913960400191505060405180910390fd5b6000610fe0612825565b9050610fec8382612848565b9150505b919050565b60125490565b601290565b6000610c6561100d61218e565b84610f7e856005600061101e61218e565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612891565b600061105861218e565b6001600160a01b03811660009081526007602052604090205490915060ff16156110b35760405162461bcd60e51b815260040180806020018281038252602c815260200180613786602c913960400191505060405180910390fd5b60006110be836128eb565b505050506001600160a01b0384166000908152600360205260409020549192506110ea91905082612948565b6001600160a01b038316600090815260036020526040902055600b546111109082612948565b600b55600c546111209084612891565b600c55505050565b601c546001600160a01b031681565b60006c327cb2734119d3b7a90000000083111561119b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816111ba5760006111ab846128eb565b50939550610c69945050505050565b60006111c5846128eb565b50929550610c69945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61120061218e565b6000546001600160a01b03908116911614611250576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600061125b3061135d565b90506112668161298a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b61128f61218e565b6000546001600160a01b039081169116146112df576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600181101580156112f1575060068111155b611342576040805162461bcd60e51b815260206004820152601960248201527f6465764665652073686f756c6420626520696e2031202d203600000000000000604482015290519081900360640190fd5b600e55565b60025490565b602054600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561139d57506001600160a01b038116600090815260046020526040902054610ff0565b6001600160a01b038216600090815260036020526040902054610c6990610f93565b6113c761218e565b6000546001600160a01b03908116911614611417576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61146961218e565b6000546001600160a01b039081169116146114b9576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600181101580156114cb575060068111155b61151c576040805162461bcd60e51b815260206004820152601d60248201527f757365436173654665652073686f756c6420626520696e2031202d2036000000604482015290519081900360640190fd5b600f55565b61152961218e565b6000546001600160a01b03908116911614611579576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6020805460ff60a81b1960ff60b01b19909116600160b01b1716600160a81b179055565b6000546001600160a01b031690565b6115b461218e565b6000546001600160a01b03908116911614611604576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602080546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526004815263514e544d60e01b602082015290565b61164c61218e565b6000546001600160a01b0390811691161461169c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602255565b6000610c656116ae61218e565b84610f7e856040518060600160405280602581526020016137b260259139600560006116d861218e565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061278e565b61171161218e565b6000546001600160a01b03908116911614611761576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611773575060068111155b6117c4576040805162461bcd60e51b815260206004820152601f60248201527f6d61726b6574696e674665652073686f756c6420626520696e2031202d203600604482015290519081900360640190fd5b600d55565b60135490565b6000610c656117dc61218e565b848461227e565b6117eb61218e565b6000546001600160a01b0390811691161461183b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61186e61218e565b6000546001600160a01b039081169116146118be576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1661192b576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015611a1a57816001600160a01b0316600a828154811061194f57fe5b6000918252602090912001546001600160a01b03161415611a1257600a8054600019810190811061197c57fe5b600091825260209091200154600a80546001600160a01b0390921691839081106119a257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a8054806119eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611a1a565b60010161192e565b5050565b601d546001600160a01b031681565b602054600160b01b900460ff1681565b60115490565b601e546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b611a7861218e565b6000546001600160a01b03908116911614611ac8576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611ada575060068111155b611b2b576040805162461bcd60e51b815260206004820152601e60248201527f75736543617365466565332073686f756c6420626520696e2031202d20360000604482015290519081900360640190fd5b601155565b611b3861218e565b6000546001600160a01b03908116911614611b88576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611b9a575060068111155b611beb576040805162461bcd60e51b815260206004820152601e60248201527f75736543617365466565322073686f756c6420626520696e2031202d20360000604482015290519081900360640190fd5b601055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b600f5490565b611c2961218e565b6000546001600160a01b03908116911614611c79576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60208054911515600160a81b0260ff60a81b19909216919091179055565b60225490565b60105490565b601f546001600160a01b031681565b611cba61218e565b6000546001600160a01b03908116911614611d0a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611d665760405162461bcd60e51b81526004018080602001828103825260228152602001806137646022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611dd4576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611e2e576001600160a01b038116600090815260036020526040902054611e1490610f93565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611e9c61218e565b6000546001600160a01b03908116911614611eec576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b038116611f315760405162461bcd60e51b81526004018080602001828103825260268152602001806135d56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611f9461218e565b6000546001600160a01b03908116911614611fe4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b4761126681612bc3565b60215490565b4790565b61200061218e565b6000546001600160a01b03908116911614612050576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff166120bd576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600854811015611a1a57816001600160a01b0316600882815481106120e157fe5b6000918252602090912001546001600160a01b031614156121865760088054600019810190811061210e57fe5b600091825260209091200154600880546001600160a01b03909216918390811061213457fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806119eb57fe5b6001016120c0565b3390565b6001600160a01b0383166121d75760405162461bcd60e51b81526004018080602001828103825260248152602001806137406024913960400191505060405180910390fd5b6001600160a01b03821661221c5760405162461bcd60e51b81526004018080602001828103825260228152602001806135fb6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c35760405162461bcd60e51b815260040180806020018281038252602581526020018061371b6025913960400191505060405180910390fd5b6001600160a01b0382166123085760405162461bcd60e51b81526004018080602001828103825260238152602001806135886023913960400191505060405180910390fd5b600081116123475760405162461bcd60e51b81526004018080602001828103825260298152602001806136f26029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123ab576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615612406576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612461576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b602054600160b01b900460ff16806124b357506001600160a01b03831660009081526006602052604090205460ff16806124b357506001600160a01b03821660009081526006602052604090205460ff165b612504576040805162461bcd60e51b815260206004820152601f60248201527f54726164696e672069732063757272656e746c79206e6f742061637469766500604482015290519081900360640190fd5b61250c61159d565b6001600160a01b0316836001600160a01b031614158015612546575061253061159d565b6001600160a01b0316826001600160a01b031614155b1561258c5760215481111561258c5760405162461bcd60e51b815260040180806020018281038252602881526020018061363f6028913960400191505060405180910390fd5b61259461159d565b6001600160a01b0316836001600160a01b0316141580156125ce57506125b861159d565b6001600160a01b0316826001600160a01b031614155b801561260c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561262357506001600160a01b03821661dead14155b1561267a5760006126338361135d565b905060225482820111156126785760405162461bcd60e51b815260040180806020018281038252602281526020018061361d6022913960400191505060405180910390fd5b505b60006126853061135d565b9050602154811061269557506021545b6020546a046e6b3feead3a7398000082101590600160a01b900460ff161580156126c85750602054600160a81b900460ff165b80156126d15750805b801561270f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561272f5761271d8261298a565b47801561272d5761272d47612bc3565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061277157506001600160a01b03851660009081526006602052604090205460ff165b1561277a575060005b61278686868684612d5d565b505050505050565b6000818484111561281d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127e25781810151838201526020016127ca565b50505050905090810190601f16801561280f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612832612ed1565b90925090506128418282612848565b9250505090565b600061288a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613060565b9392505050565b60008282018381101561288a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006129088a6012546013546130c5565b9250925092506000612918612825565b9050600080600061292b8e87878761311a565b919e509c509a509598509396509194505050505091939550919395565b600061288a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061278e565b6020805460ff60a01b1916600160a01b1781556040805160028082526060808301845293919290918301908036833701905050905030816000815181106129cd57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4657600080fd5b505afa158015612a5a573d6000803e3d6000fd5b505050506040513d6020811015612a7057600080fd5b5051815182906001908110612a8157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612acc307f000000000000000000000000000000000000000000000000000000000000000084612192565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b71578181015183820152602001612b59565b505050509050019650505050505050600060405180830381600087803b158015612b9a57600080fd5b505af1158015612bae573d6000803e3d6000fd5b50506020805460ff60a01b1916905550505050565b601c54600d546014546001600160a01b03909216916108fc91612bf191612beb908690612848565b9061316a565b6040518115909202916000818181858888f19350505050158015612c19573d6000803e3d6000fd5b50601d54600e546014546001600160a01b03909216916108fc91612c4291612beb908690612848565b6040518115909202916000818181858888f19350505050158015612c6a573d6000803e3d6000fd5b50601e54600f546014546001600160a01b03909216916108fc91612c9391612beb908690612848565b6040518115909202916000818181858888f19350505050158015612cbb573d6000803e3d6000fd5b50601f546010546014546001600160a01b03909216916108fc91612ce491612beb908690612848565b6040518115909202916000818181858888f19350505050158015612d0c573d6000803e3d6000fd5b506020546011546014546001600160a01b03909216916108fc91612d3591612beb908690612848565b6040518115909202916000818181858888f19350505050158015611a1a573d6000803e3d6000fd5b80612d6a57612d6a6131c3565b6001600160a01b03841660009081526007602052604090205460ff168015612dab57506001600160a01b03831660009081526007602052604090205460ff16155b15612dc057612dbb84848461322a565b612ebe565b6001600160a01b03841660009081526007602052604090205460ff16158015612e0157506001600160a01b03831660009081526007602052604090205460ff165b15612e1157612dbb84848461334e565b6001600160a01b03841660009081526007602052604090205460ff16158015612e5357506001600160a01b03831660009081526007602052604090205460ff16155b15612e6357612dbb8484846133f7565b6001600160a01b03841660009081526007602052604090205460ff168015612ea357506001600160a01b03831660009081526007602052604090205460ff165b15612eb357612dbb84848461343b565b612ebe8484846133f7565b80612ecb57612ecb6134ae565b50505050565b600b5460009081906c327cb2734119d3b7a900000000825b60085481101561301857826003600060088481548110612f0557fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612f6a5750816004600060088481548110612f4357fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f8c57600b546c327cb2734119d3b7a9000000009450945050505061305c565b612fcc6003600060088481548110612fa057fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612948565b925061300e6004600060088481548110612fe257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612948565b9150600101612ee9565b50600b54613033906c327cb2734119d3b7a900000000612848565b82101561305657600b546c327cb2734119d3b7a90000000093509350505061305c565b90925090505b9091565b600081836130af5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127e25781810151838201526020016127ca565b5060008385816130bb57fe5b0495945050505050565b60008080806130df60646130d9898961316a565b90612848565b905060006130f260646130d98a8961316a565b9050600061310a826131048b86612948565b90612948565b9992985090965090945050505050565b6000808080613129888661316a565b90506000613137888761316a565b90506000613145888861316a565b90506000613157826131048686612948565b939b939a50919850919650505050505050565b60008261317957506000610c69565b8282028284828161318657fe5b041461288a5760405162461bcd60e51b81526004018080602001828103825260218152602001806136676021913960400191505060405180910390fd5b6012541580156131d35750601354155b156131dd57613228565b6012805460155560138054601655600d8054601755600e8054601855600f805460195560108054601a5560118054601b55600094859055928490559083905582905581905591829055555b565b60008060008060008061323c876128eb565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061326e9088612948565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461329d9087612948565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132cc9086612891565b6001600160a01b0389166000908152600360205260409020556132ee816134da565b6132f88483613563565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613360876128eb565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133929087612948565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546133c89084612891565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132cc9086612891565b600080600080600080613409876128eb565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061329d9087612948565b60008060008060008061344d876128eb565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061347f9088612948565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133929087612948565b601554601255601654601355601754600d55601854600e55601954600f55601a54601055601b54601155565b60006134e4612825565b905060006134f2838361316a565b3060009081526003602052604090205490915061350f9082612891565b3060009081526003602090815260408083209390935560079052205460ff161561355e573060009081526004602052604090205461354d9084612891565b306000908152600460205260409020555b505050565b600b546135709083612948565b600b55600c546135809082612891565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ea14559c785ac1bf0b94f9d1af18bdec73894fdded25bf2101260284848f11a64736f6c634300060c0033000000000000000000000000a66a7aad027734effbd69ad43e4bc913cd3a8012

Deployed Bytecode

0x6080604052600436106103845760003560e01c80638da5cb5b116101d1578063cba0e99611610102578063e200d04e116100a0578063f42938901161006f578063f429389014610bb8578063f7a9159114610bcd578063f815a84214610be2578063f84354f114610bf75761038b565b8063e200d04e14610b28578063ea6096e914610b3d578063f2cc0c1814610b52578063f2fde38b14610b855761038b565b8063dd62ed3e116100dc578063dd62ed3e14610a97578063df84653e14610ad2578063e01af92c14610ae7578063e1cee22114610b135761038b565b8063cba0e99614610a10578063ccd3457114610a43578063ceab3f2114610a6d5761038b565b8063a9059cbb1161016f578063b425bac311610149578063b425bac3146109bc578063bbc0c742146109d1578063c3babef7146109e6578063c7c2713c146109fb5761038b565b8063a9059cbb14610915578063af9549e01461094e578063b030b34a146109895761038b565b80639e6c7529116101ab5780639e6c752914610873578063a457c2d71461089d578063a52fe9bb146108d6578063a5e8c954146109005761038b565b80638da5cb5b146108165780638f80153b1461082b57806395d89b411461085e5761038b565b8063313ce567116102b65780635342acb41161025457806370a082311161022357806370a082311461078f578063715018a6146107c2578063807f9b52146107d75780638a8c523c146108015761038b565b80635342acb41461070857806359f1707d1461073b578063602bc62b146107655780636ddd17131461077a5761038b565b80634144d9e4116102905780634144d9e4146106975780634549b039146106ac57806349bd5a5e146106de57806351bc3c85146106f35761038b565b8063313ce5671461060957806339509351146106345780633bd5d1731461066d5761038b565b80631bbae6e01161032357806323b872dd116102fd57806323b872dd14610572578063273b97fc146105b55780632d838119146105ca5780632fbff030146105f45761038b565b80631bbae6e0146105005780631d7ef8791461052a5780631db1de411461055d5761038b565b806313114a9d1161035f57806313114a9d1461048e5780631694505e146104a357806317700f01146104d457806318160ddd146104eb5761038b565b80627a4f6b1461039057806306fdde03146103b7578063095ea7b3146104415761038b565b3661038b57005b600080fd5b34801561039c57600080fd5b506103a5610c2a565b60408051918252519081900360200190f35b3480156103c357600080fd5b506103cc610c30565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104065781810151838201526020016103ee565b50505050905090810190601f1680156104335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044d57600080fd5b5061047a6004803603604081101561046457600080fd5b506001600160a01b038135169060200135610c51565b604080519115158252519081900360200190f35b34801561049a57600080fd5b506103a5610c6f565b3480156104af57600080fd5b506104b8610c75565b604080516001600160a01b039092168252519081900360200190f35b3480156104e057600080fd5b506104e9610c99565b005b3480156104f757600080fd5b506103a5610d01565b34801561050c57600080fd5b506104e96004803603602081101561052357600080fd5b5035610d12565b34801561053657600080fd5b506104e96004803603602081101561054d57600080fd5b50356001600160a01b0316610d6f565b34801561056957600080fd5b506104b8610ef7565b34801561057e57600080fd5b5061047a6004803603606081101561059557600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b3480156105c157600080fd5b506103a5610f8d565b3480156105d657600080fd5b506103a5600480360360208110156105ed57600080fd5b5035610f93565b34801561060057600080fd5b506103a5610ff5565b34801561061557600080fd5b5061061e610ffb565b6040805160ff9092168252519081900360200190f35b34801561064057600080fd5b5061047a6004803603604081101561065757600080fd5b506001600160a01b038135169060200135611000565b34801561067957600080fd5b506104e96004803603602081101561069057600080fd5b503561104e565b3480156106a357600080fd5b506104b8611128565b3480156106b857600080fd5b506103a5600480360360408110156106cf57600080fd5b50803590602001351515611137565b3480156106ea57600080fd5b506104b86111d4565b3480156106ff57600080fd5b506104e96111f8565b34801561071457600080fd5b5061047a6004803603602081101561072b57600080fd5b50356001600160a01b0316611269565b34801561074757600080fd5b506104e96004803603602081101561075e57600080fd5b5035611287565b34801561077157600080fd5b506103a5611347565b34801561078657600080fd5b5061047a61134d565b34801561079b57600080fd5b506103a5600480360360208110156107b257600080fd5b50356001600160a01b031661135d565b3480156107ce57600080fd5b506104e96113bf565b3480156107e357600080fd5b506104e9600480360360208110156107fa57600080fd5b5035611461565b34801561080d57600080fd5b506104e9611521565b34801561082257600080fd5b506104b861159d565b34801561083757600080fd5b506104e96004803603602081101561084e57600080fd5b50356001600160a01b03166115ac565b34801561086a57600080fd5b506103cc611626565b34801561087f57600080fd5b506104e96004803603602081101561089657600080fd5b5035611644565b3480156108a957600080fd5b5061047a600480360360408110156108c057600080fd5b506001600160a01b0381351690602001356116a1565b3480156108e257600080fd5b506104e9600480360360208110156108f957600080fd5b5035611709565b34801561090c57600080fd5b506103a56117c9565b34801561092157600080fd5b5061047a6004803603604081101561093857600080fd5b506001600160a01b0381351690602001356117cf565b34801561095a57600080fd5b506104e96004803603604081101561097157600080fd5b506001600160a01b03813516906020013515156117e3565b34801561099557600080fd5b506104e9600480360360208110156109ac57600080fd5b50356001600160a01b0316611866565b3480156109c857600080fd5b506104b8611a1e565b3480156109dd57600080fd5b5061047a611a2d565b3480156109f257600080fd5b506103a5611a3d565b348015610a0757600080fd5b506104b8611a43565b348015610a1c57600080fd5b5061047a60048036036020811015610a3357600080fd5b50356001600160a01b0316611a52565b348015610a4f57600080fd5b506104e960048036036020811015610a6657600080fd5b5035611a70565b348015610a7957600080fd5b506104e960048036036020811015610a9057600080fd5b5035611b30565b348015610aa357600080fd5b506103a560048036036040811015610aba57600080fd5b506001600160a01b0381358116916020013516611bf0565b348015610ade57600080fd5b506103a5611c1b565b348015610af357600080fd5b506104e960048036036020811015610b0a57600080fd5b50351515611c21565b348015610b1f57600080fd5b506103a5611c97565b348015610b3457600080fd5b506103a5611c9d565b348015610b4957600080fd5b506104b8611ca3565b348015610b5e57600080fd5b506104e960048036036020811015610b7557600080fd5b50356001600160a01b0316611cb2565b348015610b9157600080fd5b506104e960048036036020811015610ba857600080fd5b50356001600160a01b0316611e94565b348015610bc457600080fd5b506104e9611f8c565b348015610bd957600080fd5b506103a5611fee565b348015610bee57600080fd5b506103a5611ff4565b348015610c0357600080fd5b506104e960048036036020811015610c1a57600080fd5b50356001600160a01b0316611ff8565b600d5490565b6040805180820190915260078152665175616e74756d60c81b602082015290565b6000610c65610c5e61218e565b8484612192565b5060015b92915050565b600c5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b610ca161218e565b6000546001600160a01b03908116911614610cf1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6020805461ffff60a81b19169055565b6c327cb2734119d3b7a90000000090565b610d1a61218e565b6000546001600160a01b03908116911614610d6a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602155565b610d7761218e565b6000546001600160a01b03908116911614610dc7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610e235760405162461bcd60e51b81526004018080602001828103825260228152602001806136886022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610e91576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6020546001600160a01b031681565b6000610f1384848461227e565b610f8384610f1f61218e565b610f7e856040518060600160405280602881526020016136aa602891396001600160a01b038a16600090815260056020526040812090610f5d61218e565b6001600160a01b03168152602081019190915260400160002054919061278e565b612192565b5060019392505050565b600e5490565b6000600b54821115610fd65760405162461bcd60e51b815260040180806020018281038252602a8152602001806135ab602a913960400191505060405180910390fd5b6000610fe0612825565b9050610fec8382612848565b9150505b919050565b60125490565b601290565b6000610c6561100d61218e565b84610f7e856005600061101e61218e565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612891565b600061105861218e565b6001600160a01b03811660009081526007602052604090205490915060ff16156110b35760405162461bcd60e51b815260040180806020018281038252602c815260200180613786602c913960400191505060405180910390fd5b60006110be836128eb565b505050506001600160a01b0384166000908152600360205260409020549192506110ea91905082612948565b6001600160a01b038316600090815260036020526040902055600b546111109082612948565b600b55600c546111209084612891565b600c55505050565b601c546001600160a01b031681565b60006c327cb2734119d3b7a90000000083111561119b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816111ba5760006111ab846128eb565b50939550610c69945050505050565b60006111c5846128eb565b50929550610c69945050505050565b7f00000000000000000000000026747f77e0ea14972941681df7756800d4743fed81565b61120061218e565b6000546001600160a01b03908116911614611250576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600061125b3061135d565b90506112668161298a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b61128f61218e565b6000546001600160a01b039081169116146112df576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600181101580156112f1575060068111155b611342576040805162461bcd60e51b815260206004820152601960248201527f6465764665652073686f756c6420626520696e2031202d203600000000000000604482015290519081900360640190fd5b600e55565b60025490565b602054600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561139d57506001600160a01b038116600090815260046020526040902054610ff0565b6001600160a01b038216600090815260036020526040902054610c6990610f93565b6113c761218e565b6000546001600160a01b03908116911614611417576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61146961218e565b6000546001600160a01b039081169116146114b9576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b600181101580156114cb575060068111155b61151c576040805162461bcd60e51b815260206004820152601d60248201527f757365436173654665652073686f756c6420626520696e2031202d2036000000604482015290519081900360640190fd5b600f55565b61152961218e565b6000546001600160a01b03908116911614611579576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6020805460ff60a81b1960ff60b01b19909116600160b01b1716600160a81b179055565b6000546001600160a01b031690565b6115b461218e565b6000546001600160a01b03908116911614611604576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602080546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526004815263514e544d60e01b602082015290565b61164c61218e565b6000546001600160a01b0390811691161461169c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b602255565b6000610c656116ae61218e565b84610f7e856040518060600160405280602581526020016137b260259139600560006116d861218e565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061278e565b61171161218e565b6000546001600160a01b03908116911614611761576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611773575060068111155b6117c4576040805162461bcd60e51b815260206004820152601f60248201527f6d61726b6574696e674665652073686f756c6420626520696e2031202d203600604482015290519081900360640190fd5b600d55565b60135490565b6000610c656117dc61218e565b848461227e565b6117eb61218e565b6000546001600160a01b0390811691161461183b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61186e61218e565b6000546001600160a01b039081169116146118be576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1661192b576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015611a1a57816001600160a01b0316600a828154811061194f57fe5b6000918252602090912001546001600160a01b03161415611a1257600a8054600019810190811061197c57fe5b600091825260209091200154600a80546001600160a01b0390921691839081106119a257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a8054806119eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611a1a565b60010161192e565b5050565b601d546001600160a01b031681565b602054600160b01b900460ff1681565b60115490565b601e546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b611a7861218e565b6000546001600160a01b03908116911614611ac8576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611ada575060068111155b611b2b576040805162461bcd60e51b815260206004820152601e60248201527f75736543617365466565332073686f756c6420626520696e2031202d20360000604482015290519081900360640190fd5b601155565b611b3861218e565b6000546001600160a01b03908116911614611b88576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60018110158015611b9a575060068111155b611beb576040805162461bcd60e51b815260206004820152601e60248201527f75736543617365466565322073686f756c6420626520696e2031202d20360000604482015290519081900360640190fd5b601055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b600f5490565b611c2961218e565b6000546001600160a01b03908116911614611c79576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b60208054911515600160a81b0260ff60a81b19909216919091179055565b60225490565b60105490565b601f546001600160a01b031681565b611cba61218e565b6000546001600160a01b03908116911614611d0a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611d665760405162461bcd60e51b81526004018080602001828103825260228152602001806137646022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611dd4576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611e2e576001600160a01b038116600090815260036020526040902054611e1490610f93565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611e9c61218e565b6000546001600160a01b03908116911614611eec576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b038116611f315760405162461bcd60e51b81526004018080602001828103825260268152602001806135d56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611f9461218e565b6000546001600160a01b03908116911614611fe4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b4761126681612bc3565b60215490565b4790565b61200061218e565b6000546001600160a01b03908116911614612050576040805162461bcd60e51b815260206004820181905260248201526000805160206136d2833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff166120bd576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600854811015611a1a57816001600160a01b0316600882815481106120e157fe5b6000918252602090912001546001600160a01b031614156121865760088054600019810190811061210e57fe5b600091825260209091200154600880546001600160a01b03909216918390811061213457fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806119eb57fe5b6001016120c0565b3390565b6001600160a01b0383166121d75760405162461bcd60e51b81526004018080602001828103825260248152602001806137406024913960400191505060405180910390fd5b6001600160a01b03821661221c5760405162461bcd60e51b81526004018080602001828103825260228152602001806135fb6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c35760405162461bcd60e51b815260040180806020018281038252602581526020018061371b6025913960400191505060405180910390fd5b6001600160a01b0382166123085760405162461bcd60e51b81526004018080602001828103825260238152602001806135886023913960400191505060405180910390fd5b600081116123475760405162461bcd60e51b81526004018080602001828103825260298152602001806136f26029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123ab576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615612406576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612461576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b602054600160b01b900460ff16806124b357506001600160a01b03831660009081526006602052604090205460ff16806124b357506001600160a01b03821660009081526006602052604090205460ff165b612504576040805162461bcd60e51b815260206004820152601f60248201527f54726164696e672069732063757272656e746c79206e6f742061637469766500604482015290519081900360640190fd5b61250c61159d565b6001600160a01b0316836001600160a01b031614158015612546575061253061159d565b6001600160a01b0316826001600160a01b031614155b1561258c5760215481111561258c5760405162461bcd60e51b815260040180806020018281038252602881526020018061363f6028913960400191505060405180910390fd5b61259461159d565b6001600160a01b0316836001600160a01b0316141580156125ce57506125b861159d565b6001600160a01b0316826001600160a01b031614155b801561260c57507f00000000000000000000000026747f77e0ea14972941681df7756800d4743fed6001600160a01b0316826001600160a01b031614155b801561262357506001600160a01b03821661dead14155b1561267a5760006126338361135d565b905060225482820111156126785760405162461bcd60e51b815260040180806020018281038252602281526020018061361d6022913960400191505060405180910390fd5b505b60006126853061135d565b9050602154811061269557506021545b6020546a046e6b3feead3a7398000082101590600160a01b900460ff161580156126c85750602054600160a81b900460ff165b80156126d15750805b801561270f57507f00000000000000000000000026747f77e0ea14972941681df7756800d4743fed6001600160a01b0316856001600160a01b031614155b1561272f5761271d8261298a565b47801561272d5761272d47612bc3565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061277157506001600160a01b03851660009081526006602052604090205460ff165b1561277a575060005b61278686868684612d5d565b505050505050565b6000818484111561281d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127e25781810151838201526020016127ca565b50505050905090810190601f16801561280f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612832612ed1565b90925090506128418282612848565b9250505090565b600061288a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613060565b9392505050565b60008282018381101561288a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006129088a6012546013546130c5565b9250925092506000612918612825565b9050600080600061292b8e87878761311a565b919e509c509a509598509396509194505050505091939550919395565b600061288a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061278e565b6020805460ff60a01b1916600160a01b1781556040805160028082526060808301845293919290918301908036833701905050905030816000815181106129cd57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4657600080fd5b505afa158015612a5a573d6000803e3d6000fd5b505050506040513d6020811015612a7057600080fd5b5051815182906001908110612a8157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612acc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612192565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b71578181015183820152602001612b59565b505050509050019650505050505050600060405180830381600087803b158015612b9a57600080fd5b505af1158015612bae573d6000803e3d6000fd5b50506020805460ff60a01b1916905550505050565b601c54600d546014546001600160a01b03909216916108fc91612bf191612beb908690612848565b9061316a565b6040518115909202916000818181858888f19350505050158015612c19573d6000803e3d6000fd5b50601d54600e546014546001600160a01b03909216916108fc91612c4291612beb908690612848565b6040518115909202916000818181858888f19350505050158015612c6a573d6000803e3d6000fd5b50601e54600f546014546001600160a01b03909216916108fc91612c9391612beb908690612848565b6040518115909202916000818181858888f19350505050158015612cbb573d6000803e3d6000fd5b50601f546010546014546001600160a01b03909216916108fc91612ce491612beb908690612848565b6040518115909202916000818181858888f19350505050158015612d0c573d6000803e3d6000fd5b506020546011546014546001600160a01b03909216916108fc91612d3591612beb908690612848565b6040518115909202916000818181858888f19350505050158015611a1a573d6000803e3d6000fd5b80612d6a57612d6a6131c3565b6001600160a01b03841660009081526007602052604090205460ff168015612dab57506001600160a01b03831660009081526007602052604090205460ff16155b15612dc057612dbb84848461322a565b612ebe565b6001600160a01b03841660009081526007602052604090205460ff16158015612e0157506001600160a01b03831660009081526007602052604090205460ff165b15612e1157612dbb84848461334e565b6001600160a01b03841660009081526007602052604090205460ff16158015612e5357506001600160a01b03831660009081526007602052604090205460ff16155b15612e6357612dbb8484846133f7565b6001600160a01b03841660009081526007602052604090205460ff168015612ea357506001600160a01b03831660009081526007602052604090205460ff165b15612eb357612dbb84848461343b565b612ebe8484846133f7565b80612ecb57612ecb6134ae565b50505050565b600b5460009081906c327cb2734119d3b7a900000000825b60085481101561301857826003600060088481548110612f0557fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612f6a5750816004600060088481548110612f4357fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f8c57600b546c327cb2734119d3b7a9000000009450945050505061305c565b612fcc6003600060088481548110612fa057fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612948565b925061300e6004600060088481548110612fe257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612948565b9150600101612ee9565b50600b54613033906c327cb2734119d3b7a900000000612848565b82101561305657600b546c327cb2734119d3b7a90000000093509350505061305c565b90925090505b9091565b600081836130af5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127e25781810151838201526020016127ca565b5060008385816130bb57fe5b0495945050505050565b60008080806130df60646130d9898961316a565b90612848565b905060006130f260646130d98a8961316a565b9050600061310a826131048b86612948565b90612948565b9992985090965090945050505050565b6000808080613129888661316a565b90506000613137888761316a565b90506000613145888861316a565b90506000613157826131048686612948565b939b939a50919850919650505050505050565b60008261317957506000610c69565b8282028284828161318657fe5b041461288a5760405162461bcd60e51b81526004018080602001828103825260218152602001806136676021913960400191505060405180910390fd5b6012541580156131d35750601354155b156131dd57613228565b6012805460155560138054601655600d8054601755600e8054601855600f805460195560108054601a5560118054601b55600094859055928490559083905582905581905591829055555b565b60008060008060008061323c876128eb565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061326e9088612948565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461329d9087612948565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132cc9086612891565b6001600160a01b0389166000908152600360205260409020556132ee816134da565b6132f88483613563565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613360876128eb565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133929087612948565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546133c89084612891565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132cc9086612891565b600080600080600080613409876128eb565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061329d9087612948565b60008060008060008061344d876128eb565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061347f9088612948565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133929087612948565b601554601255601654601355601754600d55601854600e55601954600f55601a54601055601b54601155565b60006134e4612825565b905060006134f2838361316a565b3060009081526003602052604090205490915061350f9082612891565b3060009081526003602090815260408083209390935560079052205460ff161561355e573060009081526004602052604090205461354d9084612891565b306000908152600460205260409020555b505050565b600b546135709083612948565b600b55600c546135809082612891565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ea14559c785ac1bf0b94f9d1af18bdec73894fdded25bf2101260284848f11a64736f6c634300060c0033

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

000000000000000000000000a66a7aad027734effbd69ad43e4bc913cd3a8012

-----Decoded View---------------
Arg [0] : UseCaseWallet3 (address): 0xA66a7aaD027734EFfBd69Ad43e4Bc913Cd3A8012

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a66a7aad027734effbd69ad43e4bc913cd3a8012


Deployed Bytecode Sourcemap

17362:24217:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38807:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21189:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22193:173;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22193:173:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23541:95;;;;;;;;;;;;;:::i;19383:51::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19383:51:0;;;;;;;;;;;;;;41445:127;;;;;;;;;;;;;:::i;:::-;;21502:103;;;;;;;;;;;;;:::i;40831:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40831:120:0;;:::i;24830:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24830:368:0;-1:-1:-1;;;;;24830:368:0;;:::i;19319:38::-;;;;;;;;;;;;;:::i;22378:329::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22378:329:0;;;;;;;;;;;;;;;;;:::i;38924:93::-;;;;;;;;;;;;;:::i;24549:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24549:269:0;;:::i;38596:92::-;;;;;;;;;;;;;:::i;21399:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22719:230;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22719:230:0;;;;;;;;:::i;23648:405::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23648:405:0;;:::i;19114:46::-;;;;;;;;;;;;;:::i;24065:472::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24065:472:0;;;;;;;;;:::i;19445:38::-;;;;;;;;;;;;;:::i;32098:168::-;;;;;;;;;;;;;:::i;27787:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27787:131:0;-1:-1:-1;;;;;27787:131:0;;:::i;39969:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39969:179:0;;:::i;8552:98::-;;;;;;;;;;;;;:::i;19526:30::-;;;;;;;;;;;;;:::i;21617:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21617:210:0;-1:-1:-1;;;;;21617:210:0;;:::i;7989:160::-;;;;;;;;;;;;;:::i;40160:207::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40160:207:0;;:::i;41281:124::-;;;;;;;;;;;;;:::i;7322:87::-;;;;;;;;;;;;;:::i;41102:140::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41102:140:0;-1:-1:-1;;;;;41102:140:0;;:::i;21292:95::-;;;;;;;;;;;;;:::i;40963:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40963:127:0;;:::i;22961:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22961:281:0;;;;;;;;:::i;39736:221::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39736:221:0;;:::i;38700:95::-;;;;;;;;;;;;;:::i;21839:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21839:179:0;;;;;;;;:::i;23384:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23384:145:0;;;;;;;;;;:::i;25210:541::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25210:541:0;-1:-1:-1;;;;;25210:541:0;;:::i;19171:40::-;;;;;;;;;;;;;:::i;19567:32::-;;;;;;;;;;;;;:::i;39256:103::-;;;;;;;;;;;;;:::i;19222:37::-;;;;;;;;;;;;;:::i;23254:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23254:118:0;-1:-1:-1;;;;;23254:118:0;;:::i;40605:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40605:214:0;;:::i;40379:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40379:214:0;;:::i;22030:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22030:151:0;;;;;;;;;;:::i;39029:100::-;;;;;;;;;;;;;:::i;32458:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32458:106:0;;;;:::i;39616:108::-;;;;;;;;;;;;;:::i;39141:103::-;;;;;;;;;;;;;:::i;19270:38::-;;;;;;;;;;;;;:::i;25763:475::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25763:475:0;-1:-1:-1;;;;;25763:475:0;;:::i;8280:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8280:260:0;-1:-1:-1;;;;;8280:260:0;;:::i;32278:168::-;;;;;;;;;;;;;:::i;39501:103::-;;;;;;;;;;;;;:::i;39371:118::-;;;;;;;;;;;;;:::i;26250:518::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26250:518:0;-1:-1:-1;;;;;26250:518:0;;:::i;38807:105::-;38887:13;;38807:105;:::o;21189:91::-;21263:5;;;;;;;;;;;;-1:-1:-1;;;21263:5:0;;;;21189:91;:::o;22193:173::-;22268:4;22289:39;22298:12;:10;:12::i;:::-;22312:7;22321:6;22289:8;:39::i;:::-;-1:-1:-1;22350:4:0;22193:173;;;;;:::o;23541:95::-;23614:10;;23541:95;:::o;19383:51::-;;;:::o;41445:127::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;41505:13:::1;:21:::0;;-1:-1:-1;;;;41541:19:0;;;41445:127::o;21502:103::-;18041:22;21502:103;:::o;40831:120::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;40913:12:::1;:26:::0;40831:120::o;24830:368::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;24929:42:::1;-1:-1:-1::0;;;;;24918:53:0;::::1;;;24910:100;;;;-1:-1:-1::0;;;24910:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25034:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;25033:27;25024:71;;;::::0;;-1:-1:-1;;;25024:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;25109:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;25109:33:0::1;25138:4;25109:33:::0;;::::1;::::0;;;25156:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25156:30:0::1;::::0;;::::1;::::0;;24830:368::o;19319:38::-;;;-1:-1:-1;;;;;19319:38:0;;:::o;22378:329::-;22476:4;22497:36;22507:6;22515:9;22526:6;22497:9;:36::i;:::-;22548:121;22557:6;22565:12;:10;:12::i;:::-;22579:89;22617:6;22579:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22579:19:0;;;;;;:11;:19;;;;;;22599:12;:10;:12::i;:::-;-1:-1:-1;;;;;22579:33:0;;;;;;;;;;;;-1:-1:-1;22579:33:0;;;:89;:37;:89::i;:::-;22548:8;:121::i;:::-;-1:-1:-1;22691:4:0;22378:329;;;;;:::o;38924:93::-;38998:7;;38924:93;:::o;24549:269::-;24615:7;24658;;24647;:18;;24639:73;;;;-1:-1:-1;;;24639:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24727:19;24750:10;:8;:10::i;:::-;24727:33;-1:-1:-1;24782:24:0;:7;24727:33;24782:11;:24::i;:::-;24775:31;;;24549:269;;;;:::o;38596:92::-;38669:7;;38596:92;:::o;21399:91::-;18311:2;21399:91;:::o;22719:230::-;22807:4;22828:83;22837:12;:10;:12::i;:::-;22851:7;22860:50;22899:10;22860:11;:25;22872:12;:10;:12::i;:::-;-1:-1:-1;;;;;22860:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;22860:25:0;;;:34;;;;;;;;;;;:38;:50::i;23648:405::-;23704:14;23721:12;:10;:12::i;:::-;-1:-1:-1;;;;;23757:19:0;;;;;;:11;:19;;;;;;23704:29;;-1:-1:-1;23757:19:0;;23756:20;23748:77;;;;-1:-1:-1;;;23748:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23841:15;23865:19;23876:7;23865:10;:19::i;:::-;-1:-1:-1;;;;;;;;;23917:15:0;;;;;;:7;:15;;;;;;23840:44;;-1:-1:-1;23917:28:0;;:15;-1:-1:-1;23840:44:0;23917:19;:28::i;:::-;-1:-1:-1;;;;;23899:15:0;;;;;;:7;:15;;;;;:46;23970:7;;:20;;23982:7;23970:11;:20::i;:::-;23960:7;:30;24018:10;;:23;;24033:7;24018:14;:23::i;:::-;24005:10;:36;-1:-1:-1;;;23648:405:0:o;19114:46::-;;;-1:-1:-1;;;;;19114:46:0;;:::o;24065:472::-;24155:7;18041:22;24187:7;:18;;24179:62;;;;;-1:-1:-1;;;24179:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24261:17;24256:270;;24300:15;24324:19;24335:7;24324:10;:19::i;:::-;-1:-1:-1;24299:44:0;;-1:-1:-1;24362:14:0;;-1:-1:-1;;;;;24362:14:0;24256:270;24419:23;24450:19;24461:7;24450:10;:19::i;:::-;-1:-1:-1;24417:52:0;;-1:-1:-1;24488:22:0;;-1:-1:-1;;;;;24488:22:0;19445:38;;;:::o;32098:168::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;32156:23:::1;32182:24;32200:4;32182:9;:24::i;:::-;32156:50;;32221:33;32238:15;32221:16;:33::i;:::-;7604:1;32098:168::o:0;27787:131::-;-1:-1:-1;;;;;27879:27:0;27851:4;27879:27;;;:18;:27;;;;;;;;;27787:131::o;39969:179::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;40059:1:::1;40049:6;:11;;:26;;;;;40074:1;40064:6;:11;;40049:26;40041:64;;;::::0;;-1:-1:-1;;;40041:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40120:7;:16:::0;39969:179::o;8552:98::-;8629:9;;8552:98;:::o;19526:30::-;;;-1:-1:-1;;;19526:30:0;;;;;:::o;21617:210::-;-1:-1:-1;;;;;21711:20:0;;21683:7;21711:20;;;:11;:20;;;;;;;;21707:49;;;-1:-1:-1;;;;;;21740:16:0;;;;;;:7;:16;;;;;;21733:23;;21707:49;-1:-1:-1;;;;;21798:16:0;;;;;;:7;:16;;;;;;21778:37;;:19;:37::i;7989:160::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;8100:1:::1;8084:6:::0;;8063:40:::1;::::0;-1:-1:-1;;;;;8084:6:0;;::::1;::::0;8063:40:::1;::::0;8100:1;;8063:40:::1;8135:1;8118:19:::0;;-1:-1:-1;;;;;;8118:19:0::1;::::0;;7989:160::o;40160:207::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;40262:1:::1;40248:10;:15;;:34;;;;;40281:1;40267:10;:15;;40248:34;40240:76;;;::::0;;-1:-1:-1;;;40240:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40331:11;:24:::0;40160:207::o;41281:124::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;41340:13:::1;:20:::0;;-1:-1:-1;;;;;;;;41340:20:0;;::::1;-1:-1:-1::0;;;41340:20:0::1;41375:18;-1:-1:-1::0;;;41375:18:0::1;::::0;;41281:124::o;7322:87::-;7360:7;7391:6;-1:-1:-1;;;;;7391:6:0;7322:87;:::o;41102:140::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;41198:15:::1;:32:::0;;-1:-1:-1;;;;;;41198:32:0::1;-1:-1:-1::0;;;;;41198:32:0;;;::::1;::::0;;;::::1;::::0;;41102:140::o;21292:95::-;21368:7;;;;;;;;;;;;-1:-1:-1;;;21368:7:0;;;;21292:95;:::o;40963:127::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;41048:14:::1;:30:::0;40963:127::o;22961:281::-;23054:4;23075:129;23084:12;:10;:12::i;:::-;23098:7;23107:96;23146:15;23107:96;;;;;;;;;;;;;;;;;:11;:25;23119:12;:10;:12::i;:::-;-1:-1:-1;;;;;23107:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23107:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;39736:221::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;39844:1:::1;39828:12;:17;;:38;;;;;39865:1;39849:12;:17;;39828:38;39820:82;;;::::0;;-1:-1:-1;;;39820:82:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;39917:13;:28:::0;39736:221::o;38700:95::-;38775:8;;38700:95;:::o;21839:179::-;21917:4;21938:42;21948:12;:10;:12::i;:::-;21962:9;21973:6;21938:9;:42::i;23384:145::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23479:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;23479:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23384:145::o;25210:541::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25302:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;25293:66;;;::::0;;-1:-1:-1;;;25293:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25377:9;25372:369;25396:16;:23:::0;25392:27;::::1;25372:369;;;25473:7;-1:-1:-1::0;;;;;25450:30:0::1;:16;25467:1;25450:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;25450:19:0::1;:30;25446:281;;;25528:16;25545:23:::0;;-1:-1:-1;;25545:27:0;;;25528:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;25506:16:::1;:19:::0;;-1:-1:-1;;;;;25528:45:0;;::::1;::::0;25523:1;;25506:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;25506:67:0::1;-1:-1:-1::0;;;;;25506:67:0;;::::1;;::::0;;25597:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;25597:34:0::1;::::0;;25655:16:::1;:22:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;25655:22:0;;;;;-1:-1:-1;;;;;;25655:22:0::1;::::0;;;;;25701:5:::1;;25446:281;25421:3;;25372:369;;;;25210:541:::0;:::o;19171:40::-;;;-1:-1:-1;;;;;19171:40:0;;:::o;19567:32::-;;;-1:-1:-1;;;19567:32:0;;;;;:::o;39256:103::-;39335:12;;39256:103;:::o;19222:37::-;;;-1:-1:-1;;;;;19222:37:0;;:::o;23254:118::-;-1:-1:-1;;;;;23340:20:0;23312:4;23340:20;;;:11;:20;;;;;;;;;23254:118::o;40605:214::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;40710:1:::1;40695:11;:16;;:36;;;;;40730:1;40715:11;:16;;40695:36;40687:79;;;::::0;;-1:-1:-1;;;40687:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40781:12;:26:::0;40605:214::o;40379:::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;40484:1:::1;40469:11;:16;;:36;;;;;40504:1;40489:11;:16;;40469:36;40461:79;;;::::0;;-1:-1:-1;;;40461:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40555:12;:26:::0;40379:214::o;22030:151::-;-1:-1:-1;;;;;22142:18:0;;;22111:7;22142:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22030:151::o;39029:100::-;39106:11;;39029:100;:::o;32458:106::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;32531:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;32531:21:0::1;-1:-1:-1::0;;;;32531:21:0;;::::1;::::0;;;::::1;::::0;;32458:106::o;39616:108::-;39698:14;;39616:108;:::o;39141:103::-;39220:12;;39141:103;:::o;19270:38::-;;;-1:-1:-1;;;;;19270:38:0;;:::o;25763:475::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;25859:42:::1;-1:-1:-1::0;;;;;25848:53:0;::::1;;;25840:100;;;;-1:-1:-1::0;;;25840:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25964:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25963:21;25955:61;;;::::0;;-1:-1:-1;;;25955:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;26034:16:0;::::1;26053:1;26034:16:::0;;;:7:::1;:16;::::0;;;;;:20;26031:116:::1;;-1:-1:-1::0;;;;;26114:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;26094:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;26075:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;26031:116:::1;-1:-1:-1::0;;;;;26161:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;26161:27:0::1;26184:4;26161:27:::0;;::::1;::::0;;;26203:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;26203:23:0::1;::::0;;::::1;::::0;;25763:475::o;8280:260::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;8373:22:0;::::1;8365:73;;;;-1:-1:-1::0;;;8365:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8479:6;::::0;;8458:38:::1;::::0;-1:-1:-1;;;;;8458:38:0;;::::1;::::0;8479:6;::::1;::::0;8458:38:::1;::::0;::::1;8511:6;:17:::0;;-1:-1:-1;;;;;;8511:17:0::1;-1:-1:-1::0;;;;;8511:17:0;;;::::1;::::0;;;::::1;::::0;;8280:260::o;32278:168::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;32365:21:::1;32401:33;32365:21:::0;32401:13:::1;:33::i;39501:103::-:0;39580:12;;39501:103;:::o;39371:118::-;39456:21;39371:118;:::o;26250:518::-;7540:12;:10;:12::i;:::-;7530:6;;-1:-1:-1;;;;;7530:6:0;;;:22;;;7522:67;;;;;-1:-1:-1;;;7522:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7522:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26335:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;26327:56;;;::::0;;-1:-1:-1;;;26327:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26403:9;26398:359;26422:9;:16:::0;26418:20;::::1;26398:359;;;26484:7;-1:-1:-1::0;;;;;26468:23:0::1;:9;26478:1;26468:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;26468:12:0::1;:23;26464:278;;;26531:9;26541:16:::0;;-1:-1:-1;;26541:20:0;;;26531:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;26516:9:::1;:12:::0;;-1:-1:-1;;;;;26531:31:0;;::::1;::::0;26526:1;;26516:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;26516:46:0::1;-1:-1:-1::0;;;;;26516:46:0;;::::1;;::::0;;26585:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;26628:11:::1;:20:::0;;;;:28;;-1:-1:-1;;26628:28:0::1;::::0;;26679:9:::1;:15:::0;;;::::1;;;26464:278;26440:3;;26398:359;;109:114:::0;201:10;109:114;:::o;27930:357::-;-1:-1:-1;;;;;28027:19:0;;28019:68;;;;-1:-1:-1;;;28019:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28110:21:0;;28102:68;;;;-1:-1:-1;;;28102:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28187:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28243:32;;;;;;;;;;;;;;;;;27930:357;;;:::o;28299:2644::-;-1:-1:-1;;;;;28400:20:0;;28392:70;;;;-1:-1:-1;;;28392:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28485:23:0;;28477:71;;;;-1:-1:-1;;;28477:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28580:1;28571:6;:10;28563:64;;;;-1:-1:-1;;;28563:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28651:25:0;;;;;;:17;:25;;;;;;;;28650:26;28642:58;;;;;-1:-1:-1;;;28642:58:0;;;;;;;;;;;;-1:-1:-1;;;28642:58:0;;;;;;;;;;;;;;;28742:10;28724:29;;;;:17;:29;;;;;;;;28723:30;28715:62;;;;;-1:-1:-1;;;28715:62:0;;;;;;;;;;;;-1:-1:-1;;;28715:62:0;;;;;;;;;;;;;;;28819:9;28801:28;;;;:17;:28;;;;;;;;28800:29;28792:61;;;;;-1:-1:-1;;;28792:61:0;;;;;;;;;;;;-1:-1:-1;;;28792:61:0;;;;;;;;;;;;;;;28876:13;;-1:-1:-1;;;28876:13:0;;;;;:78;;-1:-1:-1;;;;;;28894:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;28924:29:0;;;;;;:18;:29;;;;;;;;28894:59;28868:122;;;;;-1:-1:-1;;;28868:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29018:7;:5;:7::i;:::-;-1:-1:-1;;;;;29008:17:0;:6;-1:-1:-1;;;;;29008:17:0;;;:41;;;;;29042:7;:5;:7::i;:::-;-1:-1:-1;;;;;29029:20:0;:9;-1:-1:-1;;;;;29029:20:0;;;29008:41;29005:156;;;29088:12;;29078:6;:22;;29070:75;;;;-1:-1:-1;;;29070:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29188:7;:5;:7::i;:::-;-1:-1:-1;;;;;29178:17:0;:6;-1:-1:-1;;;;;29178:17:0;;;:41;;;;;29212:7;:5;:7::i;:::-;-1:-1:-1;;;;;29199:20:0;:9;-1:-1:-1;;;;;29199:20:0;;;29178:41;:71;;;;;29236:13;-1:-1:-1;;;;;29223:26:0;:9;-1:-1:-1;;;;;29223:26:0;;;29178:71;:103;;;;-1:-1:-1;;;;;;29253:28:0;;29274:6;29253:28;;29178:103;29175:309;;;29302:29;29334:20;29344:9;29334;:20::i;:::-;29302:52;;29415:14;;29405:6;29381:21;:30;:48;;29373:95;;;;-1:-1:-1;;;29373:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29175:309;;29764:28;29795:24;29813:4;29795:9;:24::i;:::-;29764:55;;29863:12;;29839:20;:36;29836:124;;-1:-1:-1;29932:12:0;;29836:124;30076:6;;19731:16;30003:53;;;;-1:-1:-1;;;30076:6:0;;;;30075:7;:22;;;;-1:-1:-1;30086:11:0;;-1:-1:-1;;;30086:11:0;;;;30075:22;:45;;;;;30101:19;30075:45;:72;;;;;30134:13;-1:-1:-1;;;;;30124:23:0;:6;-1:-1:-1;;;;;30124:23:0;;;30075:72;30071:417;;;30239:38;30256:20;30239:16;:38::i;:::-;30327:21;30370:22;;30367:106;;30417:36;30431:21;30417:13;:36::i;:::-;30071:417;;-1:-1:-1;;;;;30696:26:0;;30569:12;30696:26;;;:18;:26;;;;;;30584:4;;30696:26;;;:59;;-1:-1:-1;;;;;;30726:29:0;;;;;;:18;:29;;;;;;;;30696:59;30693:113;;;-1:-1:-1;30785:5:0;30693:113;30884:47;30899:6;30906:9;30916:6;30923:7;30884:14;:47::i;:::-;28299:2644;;;;;;:::o;2016:208::-;2102:7;2142:12;2134:6;;;;2126:29;;;;-1:-1:-1;;;2126:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2182:5:0;;;2016:208::o;37802:175::-;37843:7;37868:15;37885;37904:19;:17;:19::i;:::-;37867:56;;-1:-1:-1;37867:56:0;-1:-1:-1;37945:20:0;37867:56;;37945:11;:20::i;:::-;37938:27;;;;37802:175;:::o;2759:140::-;2817:7;2848:39;2852:1;2855;2848:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2841:46;2759:140;-1:-1:-1;;;2759:140:0:o;1651:197::-;1709:7;1745:5;;;1773:6;;;;1765:46;;;;;-1:-1:-1;;;1765:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;36495:467;36554:7;36563;36572;36581;36590;36599;36620:23;36645:12;36659:13;36676:39;36688:7;36697;;36706:8;;36676:11;:39::i;:::-;36619:96;;;;;;36726:19;36748:10;:8;:10::i;:::-;36726:32;;36770:15;36787:23;36812:12;36828:46;36840:7;36849:4;36855:5;36862:11;36828;:46::i;:::-;36769:105;;-1:-1:-1;36769:105:0;-1:-1:-1;36769:105:0;-1:-1:-1;36925:15:0;;-1:-1:-1;36942:4:0;;-1:-1:-1;36948:5:0;;-1:-1:-1;;;;;36495:467:0;;;;;;;:::o;1860:144::-;1918:7;1949:43;1953:1;1956;1949:43;;;;;;;;;;;;;;;;;:3;:43::i;30955:656::-;19974:6;:13;;-1:-1:-1;;;;19974:13:0;-1:-1:-1;;;19974:13:0;;;31124:16:::1;::::0;;31138:1:::1;31124:16:::0;;;31100:21:::1;31124:16:::0;;::::1;::::0;;31100:21;31124:16;;31138:1;;31124:16;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;31124:16:0::1;31100:40;;31173:4;31155;31160:1;31155:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;31155:23:0::1;;;-1:-1:-1::0;;;;;31155:23:0::1;;;::::0;::::1;31203:15;-1:-1:-1::0;;;;;31203:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31203:22:0;31193:7;;:4;;31198:1:::1;::::0;31193:7;::::1;;;;;;;;;;:32;-1:-1:-1::0;;;;;31193:32:0::1;;;-1:-1:-1::0;;;;;31193:32:0::1;;;::::0;::::1;31242:62;31259:4;31274:15;31292:11;31242:8;:62::i;:::-;31351:15;-1:-1:-1::0;;;;;31351:66:0::1;;31436:11;31466:1;31514:4;31545;31569:15;31351:248;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;31351:248:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20018:6:0;:14;;-1:-1:-1;;;;20018:14:0;;;-1:-1:-1;;;;30955:656:0:o;31623:463::-;31685:23;;31744:13;;31729:9;;-1:-1:-1;;;;;31685:23:0;;;;:74;;31718:40;;:21;;:6;;:10;:21::i;:::-;:25;;:40::i;:::-;31685:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31774:17:0;;31827:7;;31812:9;;-1:-1:-1;;;;;31774:17:0;;;;:62;;31801:34;;:21;;:6;;:10;:21::i;:34::-;31774:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31851:14:0;;31901:11;;31886:9;;-1:-1:-1;;;;;31851:14:0;;;;:63;;31875:38;;:21;;:6;;:10;:21::i;:38::-;31851:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31929:15:0;;31980:12;;31965:9;;-1:-1:-1;;;;;31929:15:0;;;;:65;;31954:39;;:21;;:6;;:10;:21::i;:39::-;31929:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32009:15:0;;32060:12;;32045:9;;-1:-1:-1;;;;;32009:15:0;;;;:65;;32034:39;;:21;;:6;;:10;:21::i;:39::-;32009:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32576:883;32692:7;32688:44;;32718:14;:12;:14::i;:::-;-1:-1:-1;;;;;32753:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;32777:22:0;;;;;;:11;:22;;;;;;;;32776:23;32753:46;32749:637;;;32820:48;32842:6;32850:9;32861:6;32820:21;:48::i;:::-;32749:637;;;-1:-1:-1;;;;;32895:19:0;;;;;;:11;:19;;;;;;;;32894:20;:46;;;;-1:-1:-1;;;;;;32918:22:0;;;;;;:11;:22;;;;;;;;32894:46;32890:496;;;32961:46;32981:6;32989:9;33000:6;32961:19;:46::i;32890:496::-;-1:-1:-1;;;;;33034:19:0;;;;;;:11;:19;;;;;;;;33033:20;:47;;;;-1:-1:-1;;;;;;33058:22:0;;;;;;:11;:22;;;;;;;;33057:23;33033:47;33029:357;;;33101:44;33119:6;33127:9;33138:6;33101:17;:44::i;33029:357::-;-1:-1:-1;;;;;33171:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;33194:22:0;;;;;;:11;:22;;;;;;;;33171:45;33167:219;;;33237:48;33259:6;33267:9;33278:6;33237:21;:48::i;33167:219::-;33326:44;33344:6;33352:9;33363:6;33326:17;:44::i;:::-;33406:7;33402:45;;33432:15;:13;:15::i;:::-;32576:883;;;;:::o;37989:595::-;38090:7;;38039;;;;18041:22;38039:7;38152:305;38176:9;:16;38172:20;;38152:305;;;38246:7;38222;:21;38230:9;38240:1;38230:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38230:12:0;38222:21;;;;;;;;;;;;;:31;;:66;;;38281:7;38257;:21;38265:9;38275:1;38265:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38265:12:0;38257:21;;;;;;;;;;;;;:31;38222:66;38218:97;;;38298:7;;18041:22;38290:25;;;;;;;;;38218:97;38344:34;38356:7;:21;38364:9;38374:1;38364:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38364:12:0;38356:21;;;;;;;;;;;;;38344:7;;:11;:34::i;:::-;38334:44;;38407:34;38419:7;:21;38427:9;38437:1;38427:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38427:12:0;38419:21;;;;;;;;;;;;;38407:7;;:11;:34::i;:::-;38397:44;-1:-1:-1;38194:3:0;;38152:305;;;-1:-1:-1;38485:7:0;;:20;;18041:22;38485:11;:20::i;:::-;38475:7;:30;38471:61;;;38515:7;;18041:22;38507:25;;;;;;;;38471:61;38555:7;;-1:-1:-1;38564:7:0;-1:-1:-1;37989:595:0;;;:::o;2911:298::-;2997:7;3036:12;3029:5;3021:28;;;;-1:-1:-1;;;3021:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3064:9;3080:1;3076;:5;;;;;;;2911:298;-1:-1:-1;;;;;2911:298:0:o;36974:371::-;37067:7;;;;37124:28;37148:3;37124:19;:7;37136:6;37124:11;:19::i;:::-;:23;;:28::i;:::-;37109:43;-1:-1:-1;37167:13:0;37183:29;37208:3;37183:20;:7;37195;37183:11;:20::i;:29::-;37167:45;-1:-1:-1;37227:23:0;37253:28;37167:45;37253:17;:7;37265:4;37253:11;:17::i;:::-;:21;;:28::i;:::-;37227:54;37321:4;;-1:-1:-1;37327:5:0;;-1:-1:-1;36974:371:0;;-1:-1:-1;;;;;36974:371:0:o;37357:433::-;37467:7;;;;37527:24;:7;37539:11;37527;:24::i;:::-;37509:42;-1:-1:-1;37566:12:0;37581:21;:4;37590:11;37581:8;:21::i;:::-;37566:36;-1:-1:-1;37617:13:0;37633:22;:5;37643:11;37633:9;:22::i;:::-;37617:38;-1:-1:-1;37670:23:0;37696:28;37617:38;37696:17;:7;37708:4;37696:11;:17::i;:28::-;37747:7;;;;-1:-1:-1;37773:4:0;;-1:-1:-1;37357:433:0;;-1:-1:-1;;;;;;;37357:433:0:o;2236:511::-;2294:7;2555:6;2551:55;;-1:-1:-1;2589:1:0;2582:8;;2551:55;2634:5;;;2638:1;2634;:5;:1;2662:5;;;;;:10;2654:56;;;;-1:-1:-1;;;2654:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26780:623;26830:7;;:12;:29;;;;-1:-1:-1;26846:8:0;;:13;26830:29;26827:41;;;26861:7;;26827:41;26902:7;;;26884:15;:25;26943:8;;;26924:16;:27;26992:13;;;26968:21;:37;27038:7;;;27020:15;:25;27079:11;;;27060:16;:30;27125:12;;;27105:17;:32;27172:12;;;27152:17;:32;-1:-1:-1;27201:17:0;;;;27233:11;;;;27259:15;;;;27289:16;;;27320;;;27353:11;;;;27379:12;26780:623;:::o;34602:580::-;34709:15;34726:23;34751:12;34765:23;34790:12;34804:13;34821:19;34832:7;34821:10;:19::i;:::-;-1:-1:-1;;;;;34873:15:0;;;;;;:7;:15;;;;;;34708:132;;-1:-1:-1;34708:132:0;;-1:-1:-1;34708:132:0;;-1:-1:-1;34708:132:0;-1:-1:-1;34708:132:0;-1:-1:-1;34708:132:0;-1:-1:-1;34873:28:0;;34893:7;34873:19;:28::i;:::-;-1:-1:-1;;;;;34855:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34934:7;:15;;;;:28;;34954:7;34934:19;:28::i;:::-;-1:-1:-1;;;;;34916:15:0;;;;;;;:7;:15;;;;;;:46;;;;34998:18;;;;;;;:39;;35021:15;34998:22;:39::i;:::-;-1:-1:-1;;;;;34977:18:0;;;;;;:7;:18;;;;;:60;35052:16;35062:5;35052:9;:16::i;:::-;35083:23;35095:4;35101;35083:11;:23::i;:::-;35143:9;-1:-1:-1;;;;;35126:44:0;35135:6;-1:-1:-1;;;;;35126:44:0;;35154:15;35126:44;;;;;;;;;;;;;;;;;;34602:580;;;;;;;;;:::o;33998:592::-;34103:15;34120:23;34145:12;34159:23;34184:12;34198:13;34215:19;34226:7;34215:10;:19::i;:::-;-1:-1:-1;;;;;34267:15:0;;;;;;:7;:15;;;;;;34102:132;;-1:-1:-1;34102:132:0;;-1:-1:-1;34102:132:0;;-1:-1:-1;34102:132:0;-1:-1:-1;34102:132:0;-1:-1:-1;34102:132:0;-1:-1:-1;34267:28:0;;34102:132;34267:19;:28::i;:::-;-1:-1:-1;;;;;34249:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;34331:18;;;;;:7;:18;;;;;:39;;34354:15;34331:22;:39::i;:::-;-1:-1:-1;;;;;34310:18:0;;;;;;:7;:18;;;;;;;;:60;;;;34406:7;:18;;;;:39;;34429:15;34406:22;:39::i;33471:515::-;33574:15;33591:23;33616:12;33630:23;33655:12;33669:13;33686:19;33697:7;33686:10;:19::i;:::-;-1:-1:-1;;;;;33738:15:0;;;;;;:7;:15;;;;;;33573:132;;-1:-1:-1;33573:132:0;;-1:-1:-1;33573:132:0;;-1:-1:-1;33573:132:0;-1:-1:-1;33573:132:0;-1:-1:-1;33573:132:0;-1:-1:-1;33738:28:0;;33573:132;33738:19;:28::i;35194:655::-;35301:15;35318:23;35343:12;35357:23;35382:12;35396:13;35413:19;35424:7;35413:10;:19::i;:::-;-1:-1:-1;;;;;35465:15:0;;;;;;:7;:15;;;;;;35300:132;;-1:-1:-1;35300:132:0;;-1:-1:-1;35300:132:0;;-1:-1:-1;35300:132:0;-1:-1:-1;35300:132:0;-1:-1:-1;35300:132:0;-1:-1:-1;35465:28:0;;35485:7;35465:19;:28::i;:::-;-1:-1:-1;;;;;35447:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35526:7;:15;;;;:28;;35546:7;35526:19;:28::i;27415:360::-;27473:15;;27463:7;:25;27514:16;;27503:8;:27;27563:21;;27547:13;:37;27609:15;;27599:7;:25;27653:16;;27639:11;:30;27699:17;;27684:12;:32;27746:17;;27731:12;:32;27415:360::o;35861:349::-;35918:19;35941:10;:8;:10::i;:::-;35918:33;-1:-1:-1;35966:13:0;35982:22;:5;35918:33;35982:9;:22::i;:::-;36060:4;36044:22;;;;:7;:22;;;;;;35966:38;;-1:-1:-1;36044:33:0;;35966:38;36044:26;:33::i;:::-;36035:4;36019:22;;;;:7;:22;;;;;;;;:58;;;;36095:11;:26;;;;;;36092:106;;;36181:4;36165:22;;;;:7;:22;;;;;;:33;;36192:5;36165:26;:33::i;:::-;36156:4;36140:22;;;;:7;:22;;;;;:58;36092:106;35861:349;;;:::o;36222:159::-;36304:7;;:17;;36316:4;36304:11;:17::i;:::-;36294:7;:27;36349:10;;:20;;36364:4;36349:14;:20::i;:::-;36336:10;:33;-1:-1:-1;;36222:159:0:o

Swarm Source

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