ETH Price: $2,489.80 (-1.11%)

Token

Level Up (LVLUP)
 

Overview

Max Total Supply

100,000,000,000,000 LVLUP

Holders

356

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
LevelUp

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-12
*/

pragma solidity ^0.8.6;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier:MIT

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(address(0));
    }

    function transferOwnership(address payable 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;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = payable(address(0));
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(
            _previousOwner == msg.sender,
            "You don't have permission to unlock"
        );
        require(
            block.timestamp > _lockTime,
            "Contract is locked until defined days"
        );
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = payable(address(0));
    }
}

interface IUniSwapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    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,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

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

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniSwapV2Router02 is IUniSwapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IUniSwapV2Router02 uniSwapV2Router = IUniSwapV2Router02(routerAddress);

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapV2Router.WETH();

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

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) internal {
        IUniSwapV2Router02 uniSwapV2Router = IUniSwapV2Router02(routerAddress);

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniSwapV2Router.WETH();
        path[1] = address(this);

        // make the swap
        uniSwapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: ethAmount
        }(
            0, // accept any amount of ETH
            path,
            address(recipient),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IUniSwapV2Router02 uniSwapV2Router = IUniSwapV2Router02(routerAddress);

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

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}

// Protocol by team BloctechSolutions.com

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

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => uint256) public nextAvailableClaimDate;

    string private _name = "Level Up";
    string private _symbol = "LVLUP";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 100 * 1e12 * 1e9;

    IUniSwapV2Router02 public uniSwapV2Router;
    address public uniSwapV2Pair;
    address payable public marketWallet;

    uint256 public _maxTxAmount = _totalSupply.mul(5).div(1000); // must be 0.5% percent per transaction
    uint256 public minTokenNumberToSell = _totalSupply.div(100000); // 0.001% max tx amount will trigger swap and add liquidity
    uint256 public rewardCycleBlock = 24 hours;
    uint256 public sellCoolDownDuration = 60 seconds;
    uint256 public sellCoolDownTriggeredAt;
    
    
    bool public swapAndLiquifyEnabled; // must be true to auto liquidate the pool
    bool public reflectionFeesdiabled; // fees are enabled by default
    bool inSwapAndLiquify = false;
    bool public _tradingOpen;   // must be true to enable trading

    uint256 public _poolFee = 80;   // 8% will be added to pool for ETH reward
    uint256 public _marketFee = 40; // 4% will go to the market address
    uint256 public _totalFeePerTx = 120;    // 12% by default
    uint256 public _totalSellFeePerTx = 250;    // 25% by defult

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

    event ClaimEthSuccessfully(
        address recipient,
        uint256 ethReceived,
        uint256 nextAvailableClaimDate
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address payable _marketWallet) {
        marketWallet = _marketWallet;
        _balances[owner()] = _totalSupply;

        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;

        // exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

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

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

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

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

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

    function 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,
                "LVLUP: 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,
                "LVLUP: decreased allowance below zero"
            )
        );
        return true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    // for 1% input 100
    function setMaxTxPercent(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _totalSupply.mul(maxTxAmount).div(10000);
    }

    function setMinTokenNumberToSell(uint256 _amount) public onlyOwner {
        minTokenNumberToSell = _amount;
    }

    function setExcludeFromMaxTx(address _address, bool value)
        public
        onlyOwner
    {
        _isExcludedFromMaxTx[_address] = value;
    }

    function setRewardCycleBlock(uint256 _newCycle) public onlyOwner {
        rewardCycleBlock = _newCycle;
    }

    function setSellCoolDownDuration(uint256 _newDuration) public onlyOwner {
        sellCoolDownDuration = _newDuration;
    }

    function setFeePercent(uint256 poolFee, uint256 marketFee, uint256 sellFee) external onlyOwner {
        _poolFee = poolFee;
        _marketFee = marketFee;
        _totalFeePerTx = poolFee.add(marketFee);
        _totalSellFeePerTx = sellFee;
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen,"LVLUP: Already enabled");
        _tradingOpen = true;
        swapAndLiquifyEnabled = true;

        emit SwapAndLiquifyEnabledUpdated(true);
    }

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

    function setReflectionFees(bool _state) external onlyOwner {
        reflectionFeesdiabled = _state;
    }

    function setMarketAddress(address payable _marketAddress)
        external
        onlyOwner
    {
        marketWallet = _marketAddress;
    }

    function changeRouter(IUniSwapV2Router02 _router, address _pair)
        external
        onlyOwner
    {
        uniSwapV2Router = _router;
        uniSwapV2Pair = _pair;
    }

    //to receive ETH from uniSwapV2Router when swapping
    receive() external payable {}

    function totalFeePerTx(uint256 tAmount) internal view returns (uint256) {
        uint256 percentage = tAmount.mul(_poolFee.add(_marketFee)).div(1e3);
        return percentage;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "LVLUP: transfer from the zero address");
        require(to != address(0), "LVLUP: transfer to the zero address");
        require(amount > 0, "LVLUP: transfer amount must be greater than zero");
        require(balanceOf(from) >= amount,"LVLUP: not enough balance");

        if (
            !_isExcludedFromMaxTx[from] &&
            !_isExcludedFromMaxTx[to] // by default false
        ) {
            require(
                amount <= _maxTxAmount,
                "LVLUP: Transfer amount exceeds the maxTxAmount."
            );

            if (!_tradingOpen) {
                require(
                    from != uniSwapV2Pair && to != uniSwapV2Pair,
                    "LVLUP: Trading is not enabled"
                );
            }

            if(to == uniSwapV2Pair){
                require(sellCoolDownTriggeredAt.add(sellCoolDownDuration) < block.timestamp,
                "LVLUP: wait for selling cool down"
                );
                sellCoolDownTriggeredAt = block.timestamp;
            }
        }

        // swap and liquify
        swapAndLiquify(from, to);

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

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);

            emit Transfer(sender, recipient, amount);
        }else if(recipient == uniSwapV2Pair){
            uint256 _totalFee = amount.mul(_totalSellFeePerTx).div(1e3);
            uint256 transferAmount = amount.sub(_totalFee);
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(transferAmount);
            _takeBothFee(amount);

            emit Transfer(sender, recipient, transferAmount);
        } else {
            uint256 _totalFee = amount.mul(_totalFeePerTx).div(1e3);
            uint256 transferAmount = amount.sub(_totalFee);
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(transferAmount);
            _takeBothFee(amount);

            emit Transfer(sender, recipient, transferAmount);
        }
    }

    function _takeBothFee(uint256 tAmount) internal {
        uint256 totalFee = tAmount.mul(_marketFee.add(_poolFee)).div(1e3);
        _balances[address(this)] = _balances[address(this)].add(totalFee);

        emit Transfer(_msgSender(), address(this), totalFee);
    }

    function calculateEthReward(address ofAddress)
        public
        view
        returns (uint256)
    {
        uint256 remainingSupply = uint256(_totalSupply)
            .sub(balanceOf(address(0)))
            .sub(balanceOf(0x000000000000000000000000000000000000dEaD))
            .sub(balanceOf(address(uniSwapV2Pair))); // exclude burned wallet
        // exclude liquidity wallet

        uint256 reward = address(this)
            .balance
            .mul(balanceOf(address(ofAddress)))
            .div(100)
            .div(remainingSupply);
        return reward;
    }

    function claimEthReward() public isHuman nonReentrant {
        require(
            !address(msg.sender).isContract(),
            "LVLUP: Contract can not call this function"
        );
        require(
            nextAvailableClaimDate[msg.sender] <= block.timestamp,
            "LVLUP: next claim not reached"
        );
        require(
            balanceOf(msg.sender) >= 0,
            "LVLUP: must own LVLUP to claim reward"
        );

        uint256 reward = calculateEthReward(msg.sender);
        payable(msg.sender).transfer(reward);

        // update rewardCycleBlock
        nextAvailableClaimDate[msg.sender] =
            block.timestamp +
            getRewardCycleBlock();

        emit ClaimEthSuccessfully(
            msg.sender,
            reward,
            nextAvailableClaimDate[msg.sender]
        );
    }

    function getRewardCycleBlock() public view returns (uint256) {
        return rewardCycleBlock;
    }

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

    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
            shouldSell &&
            from != uniSwapV2Pair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(uniSwapV2Pair)) // swap 1 time
        ) {
            // only sell for minTokenNumberToSell, decouple from _maxTxAmount

            contractTokenBalance = minTokenNumberToSell;
            // approve contract
            _approve(
                address(this),
                address(uniSwapV2Router),
                contractTokenBalance
            );

            // split the contract balance into 2 pieces

            uint256 initialBalance = address(this).balance;

            // now is to lock into pool
            Utils.swapTokensForEth(
                address(uniSwapV2Router),
                contractTokenBalance
            );

            // how much ETH did we just swap into?

            // capture the contract's current ETH balance.
            // this is so that we can capture exactly the amount of ETH that the swap creates

            uint256 deltaBalance = address(this).balance.sub(initialBalance);
            uint256 totalPercent = _marketFee.add(_poolFee);
            uint256 _marketPercent = _marketFee.mul(1e4).div(totalPercent);

            marketWallet.transfer(deltaBalance.mul(_marketPercent).div(1e4));

            emit SwapAndLiquify(
                contractTokenBalance,
                deltaBalance
            );
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimEthSuccessfully","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_poolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ofAddress","type":"address"}],"name":"calculateEthReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUniSwapV2Router02","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"changeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEthReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenNumberToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextAvailableClaimDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCoolDownDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCoolDownTriggeredAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCycle","type":"uint256"}],"name":"setRewardCycleBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDuration","type":"uint256"}],"name":"setSellCoolDownDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapV2Router","outputs":[{"internalType":"contract IUniSwapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600860808190526704c6576656c2055760c41b60a09081526200002b9160099190620005ca565b506040805180820190915260058082526404c564c55560dc1b60209092019182526200005a91600a91620005ca565b50600b8054600960ff1990911617905569152d02c7e14af6800000600c819055620000b0906103e8906200009c906005620004b0602090811b620014d717901c565b6200054460201b6200155d1790919060201c565b601055620000d2620186a0600c546200054460201b6200155d1790919060201c565b60115562015180601255603c6013556015805462ff00001916905560506016556028601755607860185560fa6019553480156200010e57600080fd5b5060405162002db338038062002db3833981016040819052620001319162000670565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600355600f80546001600160a01b0319166001600160a01b038316179055600c5460046000620001aa6000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000670565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a557600080fd5b505afa158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000670565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032957600080fd5b505af11580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000670565b600e80546001600160a01b03199081166001600160a01b0393841617909155600d8054909116918316919091179055600160066000620003ac6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080549092166001908117909255600790620004056000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055620004586000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004a091815260200190565b60405180910390a350506200078f565b600082620004c1575060006200053e565b6000620004cf83856200070b565b905082620004de8583620006e8565b146200053b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200053b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200058e60201b60201c565b60008183620005b25760405162461bcd60e51b815260040162000532919062000690565b506000620005c18486620006e8565b95945050505050565b828054620005d89062000739565b90600052602060002090601f016020900481019282620005fc576000855562000647565b82601f106200061757805160ff191683800117855562000647565b8280016001018555821562000647579182015b82811115620006475782518255916020019190600101906200062a565b506200065592915062000659565b5090565b5b808211156200065557600081556001016200065a565b6000602082840312156200068357600080fd5b81516200053b8162000776565b600060208083528351808285015260005b81811015620006bf57858101830151858201604001528201620006a1565b81811115620006d2576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200070657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156200073457634e487b7160e01b600052601160045260246000fd5b500290565b600181811c908216806200074e57607f821691505b602082108114156200077057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03811681146200078c57600080fd5b50565b612614806200079f6000396000f3fe6080604052600436106102e75760003560e01c80637d1db4a511610190578063b47fd563116100dc578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b146108a4578063f88dec00146108c4578063fae92612146108da578063fc6f4cbb146108fa57600080fd5b8063dd62ed3e1461081e578063e4440a8614610864578063ea2f0b371461088457600080fd5b8063b47fd56314610750578063c49b9a801461077d578063c6e9c2c61461079d578063cd52c701146107bd578063d543dbeb146107de578063dd467064146107fe57600080fd5b80639bb4dc6011610149578063a63b7f9811610123578063a63b7f98146106e5578063a69df4b514610705578063a9059cbb1461071a578063b03e6e021461073a57600080fd5b80639bb4dc601461069b578063a0a0c465146106b0578063a457c2d7146106c557600080fd5b80637d1db4a51461060757806384d6ff2f1461061d5780638a8c523c146106335780638c250c61146106485780638da5cb5b1461066857806395d89b411461068657600080fd5b80634a74bb021161024f5780636ac3f25411610208578063715018a6116101e2578063715018a6146105b05780637217f4bc146105c55780637a091849146105db5780637d11bc9c146105f157600080fd5b80636ac3f2541461055d5780636f9fb98a1461057d57806370a082311461059057600080fd5b80634a74bb02146104955780634bcc2616146104af5780635342acb4146104cf5780635b89029c14610508578063602bc62b1461052857806365d60e561461053d57600080fd5b806323b872dd116102a157806323b872dd146103db5780632b123ba1146103fb578063313ce5671461041157806336599fcc146104335780633950935114610455578063437823ec1461047557600080fd5b80622942ef146102f357806303e71203146103305780630558583b1461035e57806306fdde0314610374578063095ea7b31461039657806318160ddd146103c657600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50600e54610313906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033c57600080fd5b5061035061034b3660046121f2565b610919565b604051908152602001610327565b34801561036a57600080fd5b5061035060145481565b34801561038057600080fd5b5061038961098f565b6040516103279190612367565b3480156103a257600080fd5b506103b66103b13660046122db565b610a21565b6040519015158152602001610327565b3480156103d257600080fd5b50600c54610350565b3480156103e757600080fd5b506103b66103f6366004612265565b610a38565b34801561040757600080fd5b5061035060135481565b34801561041d57600080fd5b50600b5460405160ff9091168152602001610327565b34801561043f57600080fd5b5061045361044e366004612322565b610aa1565b005b34801561046157600080fd5b506103b66104703660046122db565b610ad9565b34801561048157600080fd5b506104536104903660046121f2565b610b0f565b3480156104a157600080fd5b506015546103b69060ff1681565b3480156104bb57600080fd5b506104536104ca366004612322565b610b5d565b3480156104db57600080fd5b506103b66104ea3660046121f2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561051457600080fd5b506104536105233660046122a6565b610b8c565b34801561053457600080fd5b50600254610350565b34801561054957600080fd5b50610453610558366004612307565b610be1565b34801561056957600080fd5b5061045361057836600461233b565b610c25565b34801561058957600080fd5b5047610350565b34801561059c57600080fd5b506103506105ab3660046121f2565b610c6d565b3480156105bc57600080fd5b50610453610c88565b3480156105d157600080fd5b5061035060125481565b3480156105e757600080fd5b5061035060115481565b3480156105fd57600080fd5b5061035060165481565b34801561061357600080fd5b5061035060105481565b34801561062957600080fd5b5061035060175481565b34801561063f57600080fd5b50610453610cea565b34801561065457600080fd5b50610453610663366004612322565b610db0565b34801561067457600080fd5b506000546001600160a01b0316610313565b34801561069257600080fd5b50610389610ddf565b3480156106a757600080fd5b50601254610350565b3480156106bc57600080fd5b50610453610dee565b3480156106d157600080fd5b506103b66106e03660046122db565b61105c565b3480156106f157600080fd5b50600d54610313906001600160a01b031681565b34801561071157600080fd5b506104536110ab565b34801561072657600080fd5b506103b66107353660046122db565b6111c2565b34801561074657600080fd5b5061035060195481565b34801561075c57600080fd5b5061035061076b3660046121f2565b60086020526000908152604090205481565b34801561078957600080fd5b50610453610798366004612307565b6111cf565b3480156107a957600080fd5b506104536107b836600461222c565b611240565b3480156107c957600080fd5b506015546103b6906301000000900460ff1681565b3480156107ea57600080fd5b506104536107f9366004612322565b611298565b34801561080a57600080fd5b50610453610819366004612322565b6112e3565b34801561082a57600080fd5b5061035061083936600461222c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561087057600080fd5b50600f54610313906001600160a01b031681565b34801561089057600080fd5b5061045361089f3660046121f2565b611368565b3480156108b057600080fd5b506104536108bf3660046121f2565b6113b3565b3480156108d057600080fd5b5061035060185481565b3480156108e657600080fd5b506104536108f53660046121f2565b61148b565b34801561090657600080fd5b506015546103b690610100900460ff1681565b600e54600090819061096190610937906001600160a01b0316610c6d565b61095b61094561dead610c6d565b61095b6109526000610c6d565b600c549061159f565b9061159f565b9050600061098782610981606461098161097a89610c6d565b47906114d7565b9061155d565b949350505050565b60606009805461099e906124d2565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca906124d2565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a2e3384846115e1565b5060015b92915050565b6000610a45848484611705565b610a978433610a9285604051806060016040528060288152602001612577602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611ac9565b6115e1565b5060019392505050565b6000546001600160a01b03163314610ad45760405162461bcd60e51b8152600401610acb906123bc565b60405180910390fd5b601355565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610a2e918590610a929086611b03565b6000546001600160a01b03163314610b395760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610b875760405162461bcd60e51b8152600401610acb906123bc565b601155565b6000546001600160a01b03163314610bb65760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c0b5760405162461bcd60e51b8152600401610acb906123bc565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b8152600401610acb906123bc565b60168390556017829055610c638383611b03565b6018556019555050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610cb25760405162461bcd60e51b8152600401610acb906123bc565b600080546040516001600160a01b039091169060008051602061259f833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610acb906123bc565b6015546301000000900460ff1615610d675760405162461bcd60e51b815260206004820152601660248201527513159315540e88105b1c9958591e48195b98589b195960521b6044820152606401610acb565b6015805463ff0000ff19166301000001179055604051600181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1565b6000546001600160a01b03163314610dda5760405162461bcd60e51b8152600401610acb906123bc565b601255565b6060600a805461099e906124d2565b323314610e315760405162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b6044820152606401610acb565b60026003541415610e845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acb565b6002600355610e9233611b62565b15610ef25760405162461bcd60e51b815260206004820152602a60248201527f4c564c55503a20436f6e74726163742063616e206e6f742063616c6c207468696044820152693990333ab731ba34b7b760b11b6064820152608401610acb565b33600090815260086020526040902054421015610f515760405162461bcd60e51b815260206004820152601d60248201527f4c564c55503a206e65787420636c61696d206e6f7420726561636865640000006044820152606401610acb565b6000610f5c33610c6d565b1015610fb85760405162461bcd60e51b815260206004820152602560248201527f4c564c55503a206d757374206f776e204c564c555020746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610acb565b6000610fc333610919565b604051909150339082156108fc029083906000818181858888f19350505050158015610ff3573d6000803e3d6000fd5b506012546110019042612462565b33600081815260086020908152604091829020849055815192835282018490528101919091527f181f60c81f2e83d085840cb247a9990e957b1b5f2a83229220257f1382e0bd3f9060600160405180910390a1506001600355565b6000610a2e3384610a9285604051806060016040528060258152602001612552602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611ac9565b6001546001600160a01b031633146111115760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610acb565b60025442116111705760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610acb565b600154600080546040516001600160a01b03938416939091169160008051602061259f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610a2e338484611705565b6000546001600160a01b031633146111f95760405162461bcd60e51b8152600401610acb906123bc565b6015805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b0316331461126a5760405162461bcd60e51b8152600401610acb906123bc565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610acb906123bc565b6112dd61271061098183600c546114d790919063ffffffff16565b60105550565b6000546001600160a01b0316331461130d5760405162461bcd60e51b8152600401610acb906123bc565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561133c8142612462565b600255600080546040516001600160a01b039091169060008051602061259f833981519152908390a350565b6000546001600160a01b031633146113925760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146113dd5760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b0381166114425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610acb565b600080546040516001600160a01b038085169392169160008051602061259f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b55760405162461bcd60e51b8152600401610acb906123bc565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000826114e657506000610a32565b60006114f2838561249c565b9050826114ff858361247a565b146115565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610acb565b9392505050565b600061155683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9b565b600061155683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ac9565b6001600160a01b0383166116435760405162461bcd60e51b8152602060048201526024808201527f4c564c55503a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acb565b6001600160a01b0382166116a45760405162461bcd60e51b815260206004820152602260248201527f4c564c55503a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acb565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117695760405162461bcd60e51b815260206004820152602560248201527f4c564c55503a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acb565b6001600160a01b0382166117cb5760405162461bcd60e51b815260206004820152602360248201527f4c564c55503a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acb565b600081116118345760405162461bcd60e51b815260206004820152603060248201527f4c564c55503a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610acb565b8061183e84610c6d565b101561188c5760405162461bcd60e51b815260206004820152601960248201527f4c564c55503a206e6f7420656e6f7567682062616c616e6365000000000000006044820152606401610acb565b6001600160a01b03831660009081526007602052604090205460ff161580156118ce57506001600160a01b03821660009081526007602052604090205460ff16155b15611a505760105481111561193d5760405162461bcd60e51b815260206004820152602f60248201527f4c564c55503a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b6064820152608401610acb565b6015546301000000900460ff166119c657600e546001600160a01b0384811691161480159061197a5750600e546001600160a01b03838116911614155b6119c65760405162461bcd60e51b815260206004820152601d60248201527f4c564c55503a2054726164696e67206973206e6f7420656e61626c65640000006044820152606401610acb565b600e546001600160a01b0383811691161415611a5057426119f4601354601454611b0390919063ffffffff16565b10611a4b5760405162461bcd60e51b815260206004820152602160248201527f4c564c55503a207761697420666f722073656c6c696e6720636f6f6c20646f776044820152603760f91b6064820152608401610acb565b426014555b611a5a8383611bc9565b6001600160a01b03831660009081526006602052604090205460019060ff1680611a9c57506001600160a01b03831660009081526006602052604090205460ff165b80611aae5750601554610100900460ff165b15611ab7575060005b611ac384848484611d67565b50505050565b60008184841115611aed5760405162461bcd60e51b8152600401610acb9190612367565b506000611afa84866124bb565b95945050505050565b600080611b108385612462565b9050838110156115565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610acb565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610987575050151592915050565b60008183611bbc5760405162461bcd60e51b8152600401610acb9190612367565b506000611afa848661247a565b6000611bd430610c6d565b90506010548110611be457506010545b601154601554908210159062010000900460ff16158015611c025750805b8015611c1c5750600e546001600160a01b03858116911614155b8015611c2a575060155460ff165b8015611c5857506001600160a01b03841630148015611c565750600e546001600160a01b038481169116145b155b15611ac357601154600d54909250611c7b9030906001600160a01b0316846115e1565b600d544790611c93906001600160a01b031684611fec565b6000611c9f478361159f565b90506000611cba601654601754611b0390919063ffffffff16565b90506000611cd9826109816127106017546114d790919063ffffffff16565b600f549091506001600160a01b03166108fc611cfb61271061098187866114d7565b6040518115909202916000818181858888f19350505050158015611d23573d6000803e3d6000fd5b5060408051878152602081018590527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15050505050505050565b80611e0d576001600160a01b038416600090815260046020526040902054611d8f908361159f565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611dbe9083611b03565b6001600160a01b0380851660008181526004602052604090819020939093559151908616906000805160206125bf83398151915290611e009086815260200190565b60405180910390a3611ac3565b600e546001600160a01b0384811691161415611f07576000611e406103e8610981601954866114d790919063ffffffff16565b90506000611e4e848361159f565b6001600160a01b038716600090815260046020526040902054909150611e74908561159f565b6001600160a01b038088166000908152600460205260408082209390935590871681522054611ea39082611b03565b6001600160a01b038616600090815260046020526040902055611ec58461214f565b846001600160a01b0316866001600160a01b03166000805160206125bf83398151915283604051611ef891815260200190565b60405180910390a35050611ac3565b6000611f246103e8610981601854866114d790919063ffffffff16565b90506000611f32848361159f565b6001600160a01b038716600090815260046020526040902054909150611f58908561159f565b6001600160a01b038088166000908152600460205260408082209390935590871681522054611f879082611b03565b6001600160a01b038616600090815260046020526040902055611fa98461214f565b846001600160a01b0316866001600160a01b03166000805160206125bf83398151915283604051611fdc91815260200190565b60405180910390a3505050505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061202557612025612523565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b6919061220f565b816001815181106120c9576120c9612523565b6001600160a01b039283166020918202929092010152821663791ac94784600084306120f74261012c612462565b6040518663ffffffff1660e01b81526004016121179594939291906123f1565b600060405180830381600087803b15801561213157600080fd5b505af1158015612145573d6000803e3d6000fd5b5050505050505050565b60006121786103e8610981612171601654601754611b0390919063ffffffff16565b85906114d7565b306000908152600460205260409020549091506121959082611b03565b30600081815260046020526040902091909155336001600160a01b03166000805160206125bf833981519152836040516121d191815260200190565b60405180910390a35050565b803580151581146121ed57600080fd5b919050565b60006020828403121561220457600080fd5b813561155681612539565b60006020828403121561222157600080fd5b815161155681612539565b6000806040838503121561223f57600080fd5b823561224a81612539565b9150602083013561225a81612539565b809150509250929050565b60008060006060848603121561227a57600080fd5b833561228581612539565b9250602084013561229581612539565b929592945050506040919091013590565b600080604083850312156122b957600080fd5b82356122c481612539565b91506122d2602084016121dd565b90509250929050565b600080604083850312156122ee57600080fd5b82356122f981612539565b946020939093013593505050565b60006020828403121561231957600080fd5b611556826121dd565b60006020828403121561233457600080fd5b5035919050565b60008060006060848603121561235057600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b8181101561239457858101830151858201604001528201612378565b818111156123a6576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124415784516001600160a01b03168352938301939183019160010161241c565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124755761247561250d565b500190565b60008261249757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124b6576124b661250d565b500290565b6000828210156124cd576124cd61250d565b500390565b600181811c908216806124e657607f821691505b6020821081141561250757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461254e57600080fd5b5056fe4c564c55503a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4c564c55503a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208d02b8a82a7044720b4cd0fbac826693f220ed3c53e21544a10ae98d31d9644c64736f6c63430008060033000000000000000000000000bb8202f0f4f7aa09fe67fc8f7613217ba0acd5eb

Deployed Bytecode

0x6080604052600436106102e75760003560e01c80637d1db4a511610190578063b47fd563116100dc578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b146108a4578063f88dec00146108c4578063fae92612146108da578063fc6f4cbb146108fa57600080fd5b8063dd62ed3e1461081e578063e4440a8614610864578063ea2f0b371461088457600080fd5b8063b47fd56314610750578063c49b9a801461077d578063c6e9c2c61461079d578063cd52c701146107bd578063d543dbeb146107de578063dd467064146107fe57600080fd5b80639bb4dc6011610149578063a63b7f9811610123578063a63b7f98146106e5578063a69df4b514610705578063a9059cbb1461071a578063b03e6e021461073a57600080fd5b80639bb4dc601461069b578063a0a0c465146106b0578063a457c2d7146106c557600080fd5b80637d1db4a51461060757806384d6ff2f1461061d5780638a8c523c146106335780638c250c61146106485780638da5cb5b1461066857806395d89b411461068657600080fd5b80634a74bb021161024f5780636ac3f25411610208578063715018a6116101e2578063715018a6146105b05780637217f4bc146105c55780637a091849146105db5780637d11bc9c146105f157600080fd5b80636ac3f2541461055d5780636f9fb98a1461057d57806370a082311461059057600080fd5b80634a74bb02146104955780634bcc2616146104af5780635342acb4146104cf5780635b89029c14610508578063602bc62b1461052857806365d60e561461053d57600080fd5b806323b872dd116102a157806323b872dd146103db5780632b123ba1146103fb578063313ce5671461041157806336599fcc146104335780633950935114610455578063437823ec1461047557600080fd5b80622942ef146102f357806303e71203146103305780630558583b1461035e57806306fdde0314610374578063095ea7b31461039657806318160ddd146103c657600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50600e54610313906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033c57600080fd5b5061035061034b3660046121f2565b610919565b604051908152602001610327565b34801561036a57600080fd5b5061035060145481565b34801561038057600080fd5b5061038961098f565b6040516103279190612367565b3480156103a257600080fd5b506103b66103b13660046122db565b610a21565b6040519015158152602001610327565b3480156103d257600080fd5b50600c54610350565b3480156103e757600080fd5b506103b66103f6366004612265565b610a38565b34801561040757600080fd5b5061035060135481565b34801561041d57600080fd5b50600b5460405160ff9091168152602001610327565b34801561043f57600080fd5b5061045361044e366004612322565b610aa1565b005b34801561046157600080fd5b506103b66104703660046122db565b610ad9565b34801561048157600080fd5b506104536104903660046121f2565b610b0f565b3480156104a157600080fd5b506015546103b69060ff1681565b3480156104bb57600080fd5b506104536104ca366004612322565b610b5d565b3480156104db57600080fd5b506103b66104ea3660046121f2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561051457600080fd5b506104536105233660046122a6565b610b8c565b34801561053457600080fd5b50600254610350565b34801561054957600080fd5b50610453610558366004612307565b610be1565b34801561056957600080fd5b5061045361057836600461233b565b610c25565b34801561058957600080fd5b5047610350565b34801561059c57600080fd5b506103506105ab3660046121f2565b610c6d565b3480156105bc57600080fd5b50610453610c88565b3480156105d157600080fd5b5061035060125481565b3480156105e757600080fd5b5061035060115481565b3480156105fd57600080fd5b5061035060165481565b34801561061357600080fd5b5061035060105481565b34801561062957600080fd5b5061035060175481565b34801561063f57600080fd5b50610453610cea565b34801561065457600080fd5b50610453610663366004612322565b610db0565b34801561067457600080fd5b506000546001600160a01b0316610313565b34801561069257600080fd5b50610389610ddf565b3480156106a757600080fd5b50601254610350565b3480156106bc57600080fd5b50610453610dee565b3480156106d157600080fd5b506103b66106e03660046122db565b61105c565b3480156106f157600080fd5b50600d54610313906001600160a01b031681565b34801561071157600080fd5b506104536110ab565b34801561072657600080fd5b506103b66107353660046122db565b6111c2565b34801561074657600080fd5b5061035060195481565b34801561075c57600080fd5b5061035061076b3660046121f2565b60086020526000908152604090205481565b34801561078957600080fd5b50610453610798366004612307565b6111cf565b3480156107a957600080fd5b506104536107b836600461222c565b611240565b3480156107c957600080fd5b506015546103b6906301000000900460ff1681565b3480156107ea57600080fd5b506104536107f9366004612322565b611298565b34801561080a57600080fd5b50610453610819366004612322565b6112e3565b34801561082a57600080fd5b5061035061083936600461222c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561087057600080fd5b50600f54610313906001600160a01b031681565b34801561089057600080fd5b5061045361089f3660046121f2565b611368565b3480156108b057600080fd5b506104536108bf3660046121f2565b6113b3565b3480156108d057600080fd5b5061035060185481565b3480156108e657600080fd5b506104536108f53660046121f2565b61148b565b34801561090657600080fd5b506015546103b690610100900460ff1681565b600e54600090819061096190610937906001600160a01b0316610c6d565b61095b61094561dead610c6d565b61095b6109526000610c6d565b600c549061159f565b9061159f565b9050600061098782610981606461098161097a89610c6d565b47906114d7565b9061155d565b949350505050565b60606009805461099e906124d2565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca906124d2565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a2e3384846115e1565b5060015b92915050565b6000610a45848484611705565b610a978433610a9285604051806060016040528060288152602001612577602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611ac9565b6115e1565b5060019392505050565b6000546001600160a01b03163314610ad45760405162461bcd60e51b8152600401610acb906123bc565b60405180910390fd5b601355565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610a2e918590610a929086611b03565b6000546001600160a01b03163314610b395760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610b875760405162461bcd60e51b8152600401610acb906123bc565b601155565b6000546001600160a01b03163314610bb65760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c0b5760405162461bcd60e51b8152600401610acb906123bc565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b8152600401610acb906123bc565b60168390556017829055610c638383611b03565b6018556019555050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610cb25760405162461bcd60e51b8152600401610acb906123bc565b600080546040516001600160a01b039091169060008051602061259f833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610acb906123bc565b6015546301000000900460ff1615610d675760405162461bcd60e51b815260206004820152601660248201527513159315540e88105b1c9958591e48195b98589b195960521b6044820152606401610acb565b6015805463ff0000ff19166301000001179055604051600181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1565b6000546001600160a01b03163314610dda5760405162461bcd60e51b8152600401610acb906123bc565b601255565b6060600a805461099e906124d2565b323314610e315760405162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b6044820152606401610acb565b60026003541415610e845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acb565b6002600355610e9233611b62565b15610ef25760405162461bcd60e51b815260206004820152602a60248201527f4c564c55503a20436f6e74726163742063616e206e6f742063616c6c207468696044820152693990333ab731ba34b7b760b11b6064820152608401610acb565b33600090815260086020526040902054421015610f515760405162461bcd60e51b815260206004820152601d60248201527f4c564c55503a206e65787420636c61696d206e6f7420726561636865640000006044820152606401610acb565b6000610f5c33610c6d565b1015610fb85760405162461bcd60e51b815260206004820152602560248201527f4c564c55503a206d757374206f776e204c564c555020746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610acb565b6000610fc333610919565b604051909150339082156108fc029083906000818181858888f19350505050158015610ff3573d6000803e3d6000fd5b506012546110019042612462565b33600081815260086020908152604091829020849055815192835282018490528101919091527f181f60c81f2e83d085840cb247a9990e957b1b5f2a83229220257f1382e0bd3f9060600160405180910390a1506001600355565b6000610a2e3384610a9285604051806060016040528060258152602001612552602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611ac9565b6001546001600160a01b031633146111115760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610acb565b60025442116111705760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610acb565b600154600080546040516001600160a01b03938416939091169160008051602061259f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610a2e338484611705565b6000546001600160a01b031633146111f95760405162461bcd60e51b8152600401610acb906123bc565b6015805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b0316331461126a5760405162461bcd60e51b8152600401610acb906123bc565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610acb906123bc565b6112dd61271061098183600c546114d790919063ffffffff16565b60105550565b6000546001600160a01b0316331461130d5760405162461bcd60e51b8152600401610acb906123bc565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561133c8142612462565b600255600080546040516001600160a01b039091169060008051602061259f833981519152908390a350565b6000546001600160a01b031633146113925760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146113dd5760405162461bcd60e51b8152600401610acb906123bc565b6001600160a01b0381166114425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610acb565b600080546040516001600160a01b038085169392169160008051602061259f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b55760405162461bcd60e51b8152600401610acb906123bc565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000826114e657506000610a32565b60006114f2838561249c565b9050826114ff858361247a565b146115565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610acb565b9392505050565b600061155683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9b565b600061155683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ac9565b6001600160a01b0383166116435760405162461bcd60e51b8152602060048201526024808201527f4c564c55503a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acb565b6001600160a01b0382166116a45760405162461bcd60e51b815260206004820152602260248201527f4c564c55503a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acb565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117695760405162461bcd60e51b815260206004820152602560248201527f4c564c55503a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acb565b6001600160a01b0382166117cb5760405162461bcd60e51b815260206004820152602360248201527f4c564c55503a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acb565b600081116118345760405162461bcd60e51b815260206004820152603060248201527f4c564c55503a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610acb565b8061183e84610c6d565b101561188c5760405162461bcd60e51b815260206004820152601960248201527f4c564c55503a206e6f7420656e6f7567682062616c616e6365000000000000006044820152606401610acb565b6001600160a01b03831660009081526007602052604090205460ff161580156118ce57506001600160a01b03821660009081526007602052604090205460ff16155b15611a505760105481111561193d5760405162461bcd60e51b815260206004820152602f60248201527f4c564c55503a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b6064820152608401610acb565b6015546301000000900460ff166119c657600e546001600160a01b0384811691161480159061197a5750600e546001600160a01b03838116911614155b6119c65760405162461bcd60e51b815260206004820152601d60248201527f4c564c55503a2054726164696e67206973206e6f7420656e61626c65640000006044820152606401610acb565b600e546001600160a01b0383811691161415611a5057426119f4601354601454611b0390919063ffffffff16565b10611a4b5760405162461bcd60e51b815260206004820152602160248201527f4c564c55503a207761697420666f722073656c6c696e6720636f6f6c20646f776044820152603760f91b6064820152608401610acb565b426014555b611a5a8383611bc9565b6001600160a01b03831660009081526006602052604090205460019060ff1680611a9c57506001600160a01b03831660009081526006602052604090205460ff165b80611aae5750601554610100900460ff165b15611ab7575060005b611ac384848484611d67565b50505050565b60008184841115611aed5760405162461bcd60e51b8152600401610acb9190612367565b506000611afa84866124bb565b95945050505050565b600080611b108385612462565b9050838110156115565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610acb565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610987575050151592915050565b60008183611bbc5760405162461bcd60e51b8152600401610acb9190612367565b506000611afa848661247a565b6000611bd430610c6d565b90506010548110611be457506010545b601154601554908210159062010000900460ff16158015611c025750805b8015611c1c5750600e546001600160a01b03858116911614155b8015611c2a575060155460ff165b8015611c5857506001600160a01b03841630148015611c565750600e546001600160a01b038481169116145b155b15611ac357601154600d54909250611c7b9030906001600160a01b0316846115e1565b600d544790611c93906001600160a01b031684611fec565b6000611c9f478361159f565b90506000611cba601654601754611b0390919063ffffffff16565b90506000611cd9826109816127106017546114d790919063ffffffff16565b600f549091506001600160a01b03166108fc611cfb61271061098187866114d7565b6040518115909202916000818181858888f19350505050158015611d23573d6000803e3d6000fd5b5060408051878152602081018590527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15050505050505050565b80611e0d576001600160a01b038416600090815260046020526040902054611d8f908361159f565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611dbe9083611b03565b6001600160a01b0380851660008181526004602052604090819020939093559151908616906000805160206125bf83398151915290611e009086815260200190565b60405180910390a3611ac3565b600e546001600160a01b0384811691161415611f07576000611e406103e8610981601954866114d790919063ffffffff16565b90506000611e4e848361159f565b6001600160a01b038716600090815260046020526040902054909150611e74908561159f565b6001600160a01b038088166000908152600460205260408082209390935590871681522054611ea39082611b03565b6001600160a01b038616600090815260046020526040902055611ec58461214f565b846001600160a01b0316866001600160a01b03166000805160206125bf83398151915283604051611ef891815260200190565b60405180910390a35050611ac3565b6000611f246103e8610981601854866114d790919063ffffffff16565b90506000611f32848361159f565b6001600160a01b038716600090815260046020526040902054909150611f58908561159f565b6001600160a01b038088166000908152600460205260408082209390935590871681522054611f879082611b03565b6001600160a01b038616600090815260046020526040902055611fa98461214f565b846001600160a01b0316866001600160a01b03166000805160206125bf83398151915283604051611fdc91815260200190565b60405180910390a3505050505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061202557612025612523565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b6919061220f565b816001815181106120c9576120c9612523565b6001600160a01b039283166020918202929092010152821663791ac94784600084306120f74261012c612462565b6040518663ffffffff1660e01b81526004016121179594939291906123f1565b600060405180830381600087803b15801561213157600080fd5b505af1158015612145573d6000803e3d6000fd5b5050505050505050565b60006121786103e8610981612171601654601754611b0390919063ffffffff16565b85906114d7565b306000908152600460205260409020549091506121959082611b03565b30600081815260046020526040902091909155336001600160a01b03166000805160206125bf833981519152836040516121d191815260200190565b60405180910390a35050565b803580151581146121ed57600080fd5b919050565b60006020828403121561220457600080fd5b813561155681612539565b60006020828403121561222157600080fd5b815161155681612539565b6000806040838503121561223f57600080fd5b823561224a81612539565b9150602083013561225a81612539565b809150509250929050565b60008060006060848603121561227a57600080fd5b833561228581612539565b9250602084013561229581612539565b929592945050506040919091013590565b600080604083850312156122b957600080fd5b82356122c481612539565b91506122d2602084016121dd565b90509250929050565b600080604083850312156122ee57600080fd5b82356122f981612539565b946020939093013593505050565b60006020828403121561231957600080fd5b611556826121dd565b60006020828403121561233457600080fd5b5035919050565b60008060006060848603121561235057600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b8181101561239457858101830151858201604001528201612378565b818111156123a6576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124415784516001600160a01b03168352938301939183019160010161241c565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124755761247561250d565b500190565b60008261249757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124b6576124b661250d565b500290565b6000828210156124cd576124cd61250d565b500390565b600181811c908216806124e657607f821691505b6020821081141561250757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461254e57600080fd5b5056fe4c564c55503a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4c564c55503a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208d02b8a82a7044720b4cd0fbac826693f220ed3c53e21544a10ae98d31d9644c64736f6c63430008060033

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

000000000000000000000000bb8202f0f4f7aa09fe67fc8f7613217ba0acd5eb

-----Decoded View---------------
Arg [0] : _marketWallet (address): 0xbB8202f0F4f7aa09fE67Fc8f7613217Ba0acd5eb

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


Deployed Bytecode Sourcemap

20742:15348:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21405:28;;;;;;;;;;-1:-1:-1;21405:28:0;;;;-1:-1:-1;;;;;21405:28:0;;;;;;-1:-1:-1;;;;;3716:32:1;;;3698:51;;3686:2;3671:18;21405:28:0;;;;;;;;32255:600;;;;;;;;;;-1:-1:-1;32255:600:0;;;;;:::i;:::-;;:::i;:::-;;;13642:25:1;;;13630:2;13615:18;32255:600:0;13597:76:1;21823:38:0;;;;;;;;;;;;;;;;23772:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24683:193::-;;;;;;;;;;-1:-1:-1;24683:193:0;;;;;:::i;:::-;;:::i;:::-;;;4499:14:1;;4492:22;4474:41;;4462:2;4447:18;24683:193:0;4429:92:1;24049:100:0;;;;;;;;;;-1:-1:-1;24129:12:0;;24049:100;;24884:446;;;;;;;;;;-1:-1:-1;24884:446:0;;;;;:::i;:::-;;:::i;21768:48::-;;;;;;;;;;;;;;;;23958:83;;;;;;;;;;-1:-1:-1;24024:9:0;;23958:83;;24024:9;;;;15058:36:1;;15046:2;15031:18;23958:83:0;15013:87:1;26869:126:0;;;;;;;;;;-1:-1:-1;26869:126:0;;;;;:::i;:::-;;:::i;:::-;;25338:300;;;;;;;;;;-1:-1:-1;25338:300:0;;;;;:::i;:::-;;:::i;26054:111::-;;;;;;;;;;-1:-1:-1;26054:111:0;;;;;:::i;:::-;;:::i;21880:33::-;;;;;;;;;;-1:-1:-1;21880:33:0;;;;;;;;26461:116;;;;;;;;;;-1:-1:-1;26461:116:0;;;;;:::i;:::-;;:::i;28428:124::-;;;;;;;;;;-1:-1:-1;28428:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;28517:27:0;28493:4;28517:27;;;:18;:27;;;;;;;;;28428:124;26585:156;;;;;;;;;;-1:-1:-1;26585:156:0;;;;;:::i;:::-;;:::i;7679:90::-;;;;;;;;;;-1:-1:-1;7752:9:0;;7679:90;;27677:108;;;;;;;;;;-1:-1:-1;27677:108:0;;;;;:::i;:::-;;:::i;27003:254::-;;;;;;;;;;-1:-1:-1;27003:254:0;;;;;:::i;:::-;;:::i;33849:107::-;;;;;;;;;;-1:-1:-1;33927:21:0;33849:107;;24157:119;;;;;;;;;;-1:-1:-1;24157:119:0;;;;;:::i;:::-;;:::i;7185:157::-;;;;;;;;;;;;;:::i;21719:42::-;;;;;;;;;;;;;;;;21590:62;;;;;;;;;;;;;;;;22139:28;;;;;;;;;;;;;;;;21484:59;;;;;;;;;;;;;;;;22219:30;;;;;;;;;;;;;;;;27265:231;;;;;;;;;;;;;:::i;26749:112::-;;;;;;;;;;-1:-1:-1;26749:112:0;;;;;:::i;:::-;;:::i;6971:79::-;;;;;;;;;;-1:-1:-1;7009:7:0;7036:6;-1:-1:-1;;;;;7036:6:0;6971:79;;23863:87;;;;;;;;;;;;;:::i;33738:103::-;;;;;;;;;;-1:-1:-1;33817:16:0;;33738:103;;32863:867;;;;;;;;;;;;;:::i;25646:400::-;;;;;;;;;;-1:-1:-1;25646:400:0;;;;;:::i;:::-;;:::i;21357:41::-;;;;;;;;;;-1:-1:-1;21357:41:0;;;;-1:-1:-1;;;;;21357:41:0;;;8152:431;;;;;;;;;;;;;:::i;24284:199::-;;;;;;;;;;-1:-1:-1;24284:199:0;;;;;:::i;:::-;;:::i;22355:39::-;;;;;;;;;;;;;;;;21122:57;;;;;;;;;;-1:-1:-1;21122:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;27504:165;;;;;;;;;;-1:-1:-1;27504:165:0;;;;;:::i;:::-;;:::i;27949:183::-;;;;;;;;;;-1:-1:-1;27949:183:0;;;;;:::i;:::-;;:::i;22070:24::-;;;;;;;;;;-1:-1:-1;22070:24:0;;;;;;;;;;;26316:137;;;;;;;;;;-1:-1:-1;26316:137:0;;;;;:::i;:::-;;:::i;7845:235::-;;;;;;;;;;-1:-1:-1;7845:235:0;;;;;:::i;:::-;;:::i;24491:184::-;;;;;;;;;;-1:-1:-1;24491:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;24640:18:0;;;24608:7;24640:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24491:184;21440:35;;;;;;;;;;-1:-1:-1;21440:35:0;;;;-1:-1:-1;;;;;21440:35:0;;;26173:110;;;;;;;;;;-1:-1:-1;26173:110:0;;;;;:::i;:::-;;:::i;7350:321::-;;;;;;;;;;-1:-1:-1;7350:321:0;;;;;:::i;:::-;;:::i;22292:35::-;;;;;;;;;;;;;;;;27793:148;;;;;;;;;;-1:-1:-1;27793:148:0;;;;;:::i;:::-;;:::i;21963:33::-;;;;;;;;;;-1:-1:-1;21963:33:0;;;;;;;;;;;32255:600;32573:13;;32350:7;;;;32401:188;;32555:33;;-1:-1:-1;;;;;32573:13:0;32555:9;:33::i;:::-;32401:135;32482:53;32492:42;32482:9;:53::i;:::-;32401:62;32441:21;32459:1;32441:9;:21::i;:::-;32409:12;;;32401:39;:62::i;:::-;:80;;:135::i;:188::-;32375:214;;32664:14;32681:142;32807:15;32681:107;32784:3;32681:84;32735:29;32753:9;32735;:29::i;:::-;32681:35;;:53;:84::i;:::-;:102;;:107::i;:142::-;32664:159;32255:600;-1:-1:-1;;;;32255:600:0:o;23772:83::-;23809:13;23842:5;23835:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23772:83;:::o;24683:193::-;24785:4;24807:39;6318:10;24830:7;24839:6;24807:8;:39::i;:::-;-1:-1:-1;24864:4:0;24683:193;;;;;:::o;24884:446::-;25016:4;25033:36;25043:6;25051:9;25062:6;25033:9;:36::i;:::-;25080:220;25103:6;6318:10;25151:138;25207:6;25151:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25151:19:0;;;;;;:11;:19;;;;;;;;6318:10;25151:33;;;;;;;;;;:37;:138::i;:::-;25080:8;:220::i;:::-;-1:-1:-1;25318:4:0;24884:446;;;;;:::o;26869:126::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;;;;;;;;;26952:20:::1;:35:::0;26869:126::o;25338:300::-;6318:10;25453:4;25547:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;25547:34:0;;;;;;;;;;25453:4;;25475:133;;25525:7;;25547:50;;25586:10;25547:38;:50::i;26054:111::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26123:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;26123:34:0::1;26153:4;26123:34;::::0;;26054:111::o;26461:116::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;26539:20:::1;:30:::0;26461:116::o;26585:156::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26695:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;26695:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26585:156::o;27677:108::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;27747:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;27747:30:0;;::::1;::::0;;;::::1;::::0;;27677:108::o;27003:254::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;27109:8:::1;:18:::0;;;27138:10:::1;:22:::0;;;27188::::1;27120:7:::0;27151:9;27188:11:::1;:22::i;:::-;27171:14;:39:::0;27221:18:::1;:28:::0;-1:-1:-1;;27003:254:0:o;24157:119::-;-1:-1:-1;;;;;24250:18:0;24223:7;24250:18;;;:9;:18;;;;;;;24157:119::o;7185:157::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;7292:1:::1;7276:6:::0;;7255:40:::1;::::0;-1:-1:-1;;;;;7276:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7255:40:0;7292:1;;7255:40:::1;7331:1;7306:28:::0;;-1:-1:-1;;;;;;7306:28:0::1;::::0;;7185:157::o;27265:231::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;27329:12:::1;::::0;;;::::1;;;27328:13;27320:47;;;::::0;-1:-1:-1;;;27320:47:0;;11350:2:1;27320:47:0::1;::::0;::::1;11332:21:1::0;11389:2;11369:18;;;11362:30;-1:-1:-1;;;11408:18:1;;;11401:52;11470:18;;27320:47:0::1;11322:172:1::0;27320:47:0::1;27378:12;:19:::0;;-1:-1:-1;;27408:28:0;;;;;27454:34:::1;::::0;-1:-1:-1;4474:41:1;;27454:34:0::1;::::0;4462:2:1;4447:18;27454:34:0::1;;;;;;;27265:231::o:0;26749:112::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;26825:16:::1;:28:::0;26749:112::o;23863:87::-;23902:13;23935:7;23928:14;;;;;:::i;32863:867::-;20625:9;20638:10;20625:23;20617:53;;;;-1:-1:-1;;;20617:53:0;;9067:2:1;20617:53:0;;;9049:21:1;9106:2;9086:18;;;9079:30;-1:-1:-1;;;9125:18:1;;;9118:47;9182:18;;20617:53:0;9039:167:1;20617:53:0;20017:1:::1;20237:7;;:19;;20229:63;;;::::0;-1:-1:-1;;;20229:63:0;;11701:2:1;20229:63:0::1;::::0;::::1;11683:21:1::0;11740:2;11720:18;;;11713:30;11779:33;11759:18;;;11752:61;11830:18;;20229:63:0::1;11673:181:1::0;20229:63:0::1;20017:1;20370:7;:18:::0;32951:32:::2;32959:10;32951:30;:32::i;:::-;32950:33;32928:125;;;::::0;-1:-1:-1;;;32928:125:0;;12061:2:1;32928:125:0::2;::::0;::::2;12043:21:1::0;12100:2;12080:18;;;12073:30;12139:34;12119:18;;;12112:62;-1:-1:-1;;;12190:18:1;;;12183:40;12240:19;;32928:125:0::2;12033:232:1::0;32928:125:0::2;33109:10;33086:34;::::0;;;:22:::2;:34;::::0;;;;;33124:15:::2;-1:-1:-1::0;33086:53:0::2;33064:132;;;::::0;-1:-1:-1;;;33064:132:0;;8306:2:1;33064:132:0::2;::::0;::::2;8288:21:1::0;8345:2;8325:18;;;8318:30;8384:31;8364:18;;;8357:59;8433:18;;33064:132:0::2;8278:179:1::0;33064:132:0::2;33254:1;33229:21;33239:10;33229:9;:21::i;:::-;:26;;33207:113;;;::::0;-1:-1:-1;;;33207:113:0;;7900:2:1;33207:113:0::2;::::0;::::2;7882:21:1::0;7939:2;7919:18;;;7912:30;7978:34;7958:18;;;7951:62;-1:-1:-1;;;8029:18:1;;;8022:35;8074:19;;33207:113:0::2;7872:227:1::0;33207:113:0::2;33333:14;33350:30;33369:10;33350:18;:30::i;:::-;33391:36;::::0;33333:47;;-1:-1:-1;33399:10:0::2;::::0;33391:36;::::2;;;::::0;33333:47;;33391:36:::2;::::0;;;33333:47;33399:10;33391:36;::::2;;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;33817:16:0;;33526:52:::2;::::0;:15:::2;:52;:::i;:::-;33499:10;33476:34;::::0;;;:22:::2;:34;::::0;;;;;;;;:102;;;33596:126;;4186:51:1;;;4253:18;;4246:34;;;4296:18;;4289:34;;;;33596:126:0::2;::::0;4174:2:1;4159:18;33596:126:0::2;;;;;;;-1:-1:-1::0;19973:1:0::1;20549:7;:22:::0;32863:867::o;25646:400::-;25766:4;25788:228;6318:10;25838:7;25860:145;25917:15;25860:145;;;;;;;;;;;;;;;;;6318:10;25860:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;25860:34:0;;;;;;;;;;;;:38;:145::i;8152:431::-;8218:14;;-1:-1:-1;;;;;8218:14:0;8236:10;8218:28;8196:113;;;;-1:-1:-1;;;8196:113:0;;12472:2:1;8196:113:0;;;12454:21:1;12511:2;12491:18;;;12484:30;12550:34;12530:18;;;12523:62;-1:-1:-1;;;12601:18:1;;;12594:33;12644:19;;8196:113:0;12444:225:1;8196:113:0;8360:9;;8342:15;:27;8320:114;;;;-1:-1:-1;;;8320:114:0;;5565:2:1;8320:114:0;;;5547:21:1;5604:2;5584:18;;;5577:30;5643:34;5623:18;;;5616:62;-1:-1:-1;;;5694:18:1;;;5687:35;5739:19;;8320:114:0;5537:227:1;8320:114:0;8479:14;;;8471:6;;8450:44;;-1:-1:-1;;;;;8479:14:0;;;;8471:6;;;;-1:-1:-1;;;;;;;;;;;8450:44:0;;8514:14;;;;8505:23;;-1:-1:-1;;;;;;8505:23:0;;;-1:-1:-1;;;;;8514:14:0;;8505:23;;;;8539:36;;;8152:431::o;24284:199::-;24389:4;24411:42;6318:10;24435:9;24446:6;24411:9;:42::i;27504:165::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;27579:21:::1;:30:::0;;-1:-1:-1;;27579:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27625:36:::1;::::0;4474:41:1;;;27625:36:0::1;::::0;4462:2:1;4447:18;27625:36:0::1;;;;;;;27504:165:::0;:::o;27949:183::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;28067:15:::1;:25:::0;;-1:-1:-1;;;;;28067:25:0;;::::1;-1:-1:-1::0;;;;;;28067:25:0;;::::1;;::::0;;;28103:13:::1;:21:::0;;;;;::::1;::::0;::::1;;::::0;;27949:183::o;26316:137::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;26405:40:::1;26439:5;26405:29;26422:11;26405:12;;:16;;:29;;;;:::i;:40::-;26390:12;:55:::0;-1:-1:-1;26316:137:0:o;7845:235::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;7926:6:::1;::::0;;;7909:23;;-1:-1:-1;;;;;;7909:23:0;;::::1;-1:-1:-1::0;;;;;7926:6:0;::::1;7909:23;::::0;;;7943:28:::1;::::0;;7994:22:::1;8012:4:::0;7994:15:::1;:22;:::i;:::-;7982:9;:34:::0;8069:1:::1;8053:6:::0;;8032:40:::1;::::0;-1:-1:-1;;;;;8053:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;8032:40:0;8069:1;;8032:40:::1;7845:235:::0;:::o;26173:110::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26240:27:0::1;26270:5;26240:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;26240:35:0::1;::::0;;26173:110::o;7350:321::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7493:22:0;::::1;7471:110;;;::::0;-1:-1:-1;;;7471:110:0;;6377:2:1;7471:110:0::1;::::0;::::1;6359:21:1::0;6416:2;6396:18;;;6389:30;6455:34;6435:18;;;6428:62;-1:-1:-1;;;6506:18:1;;;6499:36;6552:19;;7471:110:0::1;6349:228:1::0;7471:110:0::1;7618:6;::::0;;7597:38:::1;::::0;-1:-1:-1;;;;;7597:38:0;;::::1;::::0;7618:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7597:38:0;::::1;7646:6;:17:::0;;-1:-1:-1;;;;;;7646:17:0::1;-1:-1:-1::0;;;;;7646:17:0;;;::::1;::::0;;;::::1;::::0;;7350:321::o;27793:148::-;7098:6;;-1:-1:-1;;;;;7098:6:0;6318:10;7098:22;7090:67;;;;-1:-1:-1;;;7090:67:0;;;;;;;:::i;:::-;27904:12:::1;:29:::0;;-1:-1:-1;;;;;;27904:29:0::1;-1:-1:-1::0;;;;;27904:29:0;;;::::1;::::0;;;::::1;::::0;;27793:148::o;1491:471::-;1549:7;1794:6;1790:47;;-1:-1:-1;1824:1:0;1817:8;;1790:47;1849:9;1861:5;1865:1;1861;:5;:::i;:::-;1849:17;-1:-1:-1;1894:1:0;1885:5;1889:1;1849:17;1885:5;:::i;:::-;:10;1877:56;;;;-1:-1:-1;;;1877:56:0;;9413:2:1;1877:56:0;;;9395:21:1;9452:2;9432:18;;;9425:30;9491:34;9471:18;;;9464:62;-1:-1:-1;;;9542:18:1;;;9535:31;9583:19;;1877:56:0;9385:223:1;1877:56:0;1953:1;1491:471;-1:-1:-1;;;1491:471:0:o;1970:132::-;2028:7;2055:39;2059:1;2062;2055:39;;;;;;;;;;;;;;;;;:3;:39::i;1113:136::-;1171:7;1198:43;1202:1;1205;1198:43;;;;;;;;;;;;;;;;;:3;:43::i;28560:371::-;-1:-1:-1;;;;;28687:19:0;;28679:68;;;;-1:-1:-1;;;28679:68:0;;12876:2:1;28679:68:0;;;12858:21:1;12915:2;12895:18;;;12888:30;12954:34;12934:18;;;12927:62;-1:-1:-1;;;13005:18:1;;;12998:34;13049:19;;28679:68:0;12848:226:1;28679:68:0;-1:-1:-1;;;;;28766:21:0;;28758:68;;;;-1:-1:-1;;;28758:68:0;;8664:2:1;28758:68:0;;;8646:21:1;8703:2;8683:18;;;8676:30;8742:34;8722:18;;;8715:62;-1:-1:-1;;;8793:18:1;;;8786:32;8835:19;;28758:68:0;8636:224:1;28758:68:0;-1:-1:-1;;;;;28839:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28891:32;;13642:25:1;;;28891:32:0;;13615:18:1;28891:32:0;;;;;;;28560:371;;;:::o;28939:1756::-;-1:-1:-1;;;;;29061:18:0;;29053:68;;;;-1:-1:-1;;;29053:68:0;;5971:2:1;29053:68:0;;;5953:21:1;6010:2;5990:18;;;5983:30;6049:34;6029:18;;;6022:62;-1:-1:-1;;;6100:18:1;;;6093:35;6145:19;;29053:68:0;5943:227:1;29053:68:0;-1:-1:-1;;;;;29140:16:0;;29132:64;;;;-1:-1:-1;;;29132:64:0;;10946:2:1;29132:64:0;;;10928:21:1;10985:2;10965:18;;;10958:30;11024:34;11004:18;;;10997:62;-1:-1:-1;;;11075:18:1;;;11068:33;11118:19;;29132:64:0;10918:225:1;29132:64:0;29224:1;29215:6;:10;29207:71;;;;-1:-1:-1;;;29207:71:0;;13281:2:1;29207:71:0;;;13263:21:1;13320:2;13300:18;;;13293:30;13359:34;13339:18;;;13332:62;-1:-1:-1;;;13410:18:1;;;13403:46;13466:19;;29207:71:0;13253:238:1;29207:71:0;29316:6;29297:15;29307:4;29297:9;:15::i;:::-;:25;;29289:62;;;;-1:-1:-1;;;29289:62:0;;10176:2:1;29289:62:0;;;10158:21:1;10215:2;10195:18;;;10188:30;10254:27;10234:18;;;10227:55;10299:18;;29289:62:0;10148:175:1;29289:62:0;-1:-1:-1;;;;;29383:26:0;;;;;;:20;:26;;;;;;;;29382:27;:69;;;;-1:-1:-1;;;;;;29427:24:0;;;;;;:20;:24;;;;;;;;29426:25;29382:69;29364:776;;;29534:12;;29524:6;:22;;29498:131;;;;-1:-1:-1;;;29498:131:0;;10530:2:1;29498:131:0;;;10512:21:1;10569:2;10549:18;;;10542:30;10608:34;10588:18;;;10581:62;-1:-1:-1;;;10659:18:1;;;10652:45;10714:19;;29498:131:0;10502:237:1;29498:131:0;29651:12;;;;;;;29646:201;;29722:13;;-1:-1:-1;;;;;29714:21:0;;;29722:13;;29714:21;;;;:44;;-1:-1:-1;29745:13:0;;-1:-1:-1;;;;;29739:19:0;;;29745:13;;29739:19;;29714:44;29684:147;;;;-1:-1:-1;;;29684:147:0;;7140:2:1;29684:147:0;;;7122:21:1;7179:2;7159:18;;;7152:30;7218:31;7198:18;;;7191:59;7267:18;;29684:147:0;7112:179:1;29684:147:0;29872:13;;-1:-1:-1;;;;;29866:19:0;;;29872:13;;29866:19;29863:266;;;29965:15;29913:49;29941:20;;29913:23;;:27;;:49;;;;:::i;:::-;:67;29905:148;;;;-1:-1:-1;;;29905:148:0;;7498:2:1;29905:148:0;;;7480:21:1;7537:2;7517:18;;;7510:30;7576:34;7556:18;;;7549:62;-1:-1:-1;;;7627:18:1;;;7620:31;7668:19;;29905:148:0;7470:223:1;29905:148:0;30098:15;30072:23;:41;29863:266;30181:24;30196:4;30202:2;30181:14;:24::i;:::-;-1:-1:-1;;;;;30413:24:0;;30279:12;30413:24;;;:18;:24;;;;;;30294:4;;30413:24;;;:63;;-1:-1:-1;;;;;;30454:22:0;;;;;;:18;:22;;;;;;;;30413:63;:101;;;-1:-1:-1;30493:21:0;;;;;;;30413:101;30395:173;;;-1:-1:-1;30551:5:0;30395:173;30646:41;30661:4;30667:2;30671:6;30679:7;30646:14;:41::i;:::-;29042:1653;28939:1756;;;:::o;1257:226::-;1377:7;1413:12;1405:6;;;;1397:29;;;;-1:-1:-1;;;1397:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1437:9:0;1449:5;1453:1;1449;:5;:::i;:::-;1437:17;1257:226;-1:-1:-1;;;;;1257:226:0:o;924:181::-;982:7;;1014:5;1018:1;1014;:5;:::i;:::-;1002:17;;1043:1;1038;:6;;1030:46;;;;-1:-1:-1;;;1030:46:0;;6784:2:1;1030:46:0;;;6766:21:1;6823:2;6803:18;;;6796:30;6862:29;6842:18;;;6835:57;6909:18;;1030:46:0;6756:177:1;2800:641:0;2860:4;3341:20;;3171:66;3390:23;;;;;;:42;;-1:-1:-1;;3417:15:0;;;3382:51;-1:-1:-1;;2800:641:0:o;2110:312::-;2230:7;2265:12;2258:5;2250:28;;;;-1:-1:-1;;;2250:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2289:9:0;2301:5;2305:1;2301;:5;:::i;33964:2123::-;34315:28;34346:24;34364:4;34346:9;:24::i;:::-;34315:55;;34411:12;;34387:20;:36;34383:104;;-1:-1:-1;34463:12:0;;34383:104;34541:20;;34593:16;;34517:44;;;;;34593:16;;;;;34592:17;:44;;;;;34626:10;34592:44;:82;;;;-1:-1:-1;34661:13:0;;-1:-1:-1;;;;;34653:21:0;;;34661:13;;34653:21;;34592:82;:120;;;;-1:-1:-1;34691:21:0;;;;34592:120;:193;;;;-1:-1:-1;;;;;;34731:21:0;;34747:4;34731:21;:53;;;;-1:-1:-1;34770:13:0;;-1:-1:-1;;;;;34756:28:0;;;34770:13;;34756:28;34731:53;34729:56;34592:193;34574:1506;;;34931:20;;35066:15;;34931:20;;-1:-1:-1;34999:137:0;;35034:4;;-1:-1:-1;;;;;35066:15:0;34931:20;34999:8;:137::i;:::-;35365:15;;35237:21;;35316:119;;-1:-1:-1;;;;;35365:15:0;35400:20;35316:22;:119::i;:::-;35663:20;35686:41;:21;35712:14;35686:25;:41::i;:::-;35663:64;;35742:20;35765:24;35780:8;;35765:10;;:14;;:24;;;;:::i;:::-;35742:47;;35804:22;35829:37;35853:12;35829:19;35844:3;35829:10;;:14;;:19;;;;:::i;:37::-;35883:12;;35804:62;;-1:-1:-1;;;;;;35883:12:0;:64;35905:41;35942:3;35905:32;:12;35804:62;35905:16;:32::i;:41::-;35883:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35969:99:0;;;14837:25:1;;;14893:2;14878:18;;14871:34;;;35969:99:0;;14810:18:1;35969:99:0;;;;;;;34812:1268;;;;34022:2065;;33964:2123;;:::o;30776:1190::-;30932:7;30927:1032;;-1:-1:-1;;;;;30976:17:0;;;;;;:9;:17;;;;;;:29;;30998:6;30976:21;:29::i;:::-;-1:-1:-1;;;;;30956:17:0;;;;;;;:9;:17;;;;;;:49;;;;31043:20;;;;;;;:32;;31068:6;31043:24;:32::i;:::-;-1:-1:-1;;;;;31020:20:0;;;;;;;:9;:20;;;;;;;:55;;;;31097:35;;;;;;-1:-1:-1;;;;;;;;;;;31097:35:0;;;31125:6;13642:25:1;;13630:2;13615:18;;13597:76;31097:35:0;;;;;;;;30927:1032;;;31165:13;;-1:-1:-1;;;;;31152:26:0;;;31165:13;;31152:26;31149:810;;;31194:17;31214:39;31249:3;31214:30;31225:18;;31214:6;:10;;:30;;;;:::i;:39::-;31194:59;-1:-1:-1;31268:22:0;31293:21;:6;31194:59;31293:10;:21::i;:::-;-1:-1:-1;;;;;31349:17:0;;;;;;:9;:17;;;;;;31268:46;;-1:-1:-1;31349:29:0;;31371:6;31349:21;:29::i;:::-;-1:-1:-1;;;;;31329:17:0;;;;;;;:9;:17;;;;;;:49;;;;31416:20;;;;;;;:40;;31441:14;31416:24;:40::i;:::-;-1:-1:-1;;;;;31393:20:0;;;;;;:9;:20;;;;;:63;31471:20;31484:6;31471:12;:20::i;:::-;31530:9;-1:-1:-1;;;;;31513:43:0;31522:6;-1:-1:-1;;;;;31513:43:0;-1:-1:-1;;;;;;;;;;;31541:14:0;31513:43;;;;13642:25:1;;13630:2;13615:18;;13597:76;31513:43:0;;;;;;;;31179:389;;31149:810;;;31589:17;31609:35;31640:3;31609:26;31620:14;;31609:6;:10;;:26;;;;:::i;:35::-;31589:55;-1:-1:-1;31659:22:0;31684:21;:6;31589:55;31684:10;:21::i;:::-;-1:-1:-1;;;;;31740:17:0;;;;;;:9;:17;;;;;;31659:46;;-1:-1:-1;31740:29:0;;31762:6;31740:21;:29::i;:::-;-1:-1:-1;;;;;31720:17:0;;;;;;;:9;:17;;;;;;:49;;;;31807:20;;;;;;;:40;;31832:14;31807:24;:40::i;:::-;-1:-1:-1;;;;;31784:20:0;;;;;;:9;:20;;;;;:63;31862:20;31875:6;31862:12;:20::i;:::-;31921:9;-1:-1:-1;;;;;31904:43:0;31913:6;-1:-1:-1;;;;;31904:43:0;-1:-1:-1;;;;;;;;;;;31932:14:0;31904:43;;;;13642:25:1;;13630:2;13615:18;;13597:76;31904:43:0;;;;;;;;31574:385;;30776:1190;;;;:::o;17989:641::-;18260:16;;;18274:1;18260:16;;;;;;;;18149:13;;18093:34;;18260:16;18274:1;18260:16;;;;;;;;;;-1:-1:-1;18260:16:0;18236:40;;18305:4;18287;18292:1;18287:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18287:23:0;;;-1:-1:-1;;;;;18287:23:0;;;;;18331:15;-1:-1:-1;;;;;18331:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18321:4;18326:1;18321:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18321:32:0;;;:7;;;;;;;;;:32;18392:66;;;18473:11;18499:1;18543:4;18570;18590:21;:15;18608:3;18590:21;:::i;:::-;18392:230;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18082:548;;17989:641;;:::o;31974:273::-;32033:16;32052:46;32094:3;32052:37;32064:24;32079:8;;32064:10;;:14;;:24;;;;:::i;:::-;32052:7;;:11;:37::i;:46::-;32154:4;32136:24;;;;:9;:24;;;;;;32033:65;;-1:-1:-1;32136:38:0;;32033:65;32136:28;:38::i;:::-;32127:4;32109:24;;;;:9;:24;;;;;:65;;;;6318:10;-1:-1:-1;;;;;32192:47:0;-1:-1:-1;;;;;;;;;;;32230:8:0;32192:47;;;;13642:25:1;;13630:2;13615:18;;13597:76;32192:47:0;;;;;;;;32022:225;31974:273;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;947:388::-;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;1092:1;1089;1082:12;1044:2;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;-1:-1:-1;1257:2:1;1242:18;;1229:32;1270:33;1229:32;1270:33;:::i;:::-;1322:7;1312:17;;;1034:301;;;;;:::o;1340:456::-;1417:6;1425;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:2;;;1502:1;1499;1492:12;1454:2;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:33;1639:32;1680:33;:::i;:::-;1444:352;;1732:7;;-1:-1:-1;;;1786:2:1;1771:18;;;;1758:32;;1444:352::o;1801:315::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:2;;;1943:1;1940;1933:12;1895:2;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2075:35:1;2106:2;2091:18;;2075:35;:::i;:::-;2065:45;;1885:231;;;;;:::o;2121:315::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:2;;;2266:1;2263;2256:12;2218:2;2305:9;2292:23;2324:31;2349:5;2324:31;:::i;:::-;2374:5;2426:2;2411:18;;;;2398:32;;-1:-1:-1;;;2208:228:1:o;2441:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:2;;;2566:1;2563;2556:12;2518:2;2589:26;2605:9;2589:26;:::i;3046:180::-;3105:6;3158:2;3146:9;3137:7;3133:23;3129:32;3126:2;;;3174:1;3171;3164:12;3126:2;-1:-1:-1;3197:23:1;;3116:110;-1:-1:-1;3116:110:1:o;3231:316::-;3308:6;3316;3324;3377:2;3365:9;3356:7;3352:23;3348:32;3345:2;;;3393:1;3390;3383:12;3345:2;-1:-1:-1;;3416:23:1;;;3486:2;3471:18;;3458:32;;-1:-1:-1;3537:2:1;3522:18;;;3509:32;;3335:212;-1:-1:-1;3335:212:1:o;4761:597::-;4873:4;4902:2;4931;4920:9;4913:21;4963:6;4957:13;5006:6;5001:2;4990:9;4986:18;4979:34;5031:1;5041:140;5055:6;5052:1;5049:13;5041:140;;;5150:14;;;5146:23;;5140:30;5116:17;;;5135:2;5112:26;5105:66;5070:10;;5041:140;;;5199:6;5196:1;5193:13;5190:2;;;5269:1;5264:2;5255:6;5244:9;5240:22;5236:31;5229:42;5190:2;-1:-1:-1;5342:2:1;5321:15;-1:-1:-1;;5317:29:1;5302:45;;;;5349:2;5298:54;;4882:476;-1:-1:-1;;;4882:476:1:o;9613:356::-;9815:2;9797:21;;;9834:18;;;9827:30;9893:34;9888:2;9873:18;;9866:62;9960:2;9945:18;;9787:182::o;13678:980::-;13940:4;13988:3;13977:9;13973:19;14019:6;14008:9;14001:25;14045:2;14083:6;14078:2;14067:9;14063:18;14056:34;14126:3;14121:2;14110:9;14106:18;14099:31;14150:6;14185;14179:13;14216:6;14208;14201:22;14254:3;14243:9;14239:19;14232:26;;14293:2;14285:6;14281:15;14267:29;;14314:1;14324:195;14338:6;14335:1;14332:13;14324:195;;;14403:13;;-1:-1:-1;;;;;14399:39:1;14387:52;;14494:15;;;;14459:12;;;;14435:1;14353:9;14324:195;;;-1:-1:-1;;;;;;;14575:32:1;;;;14570:2;14555:18;;14548:60;-1:-1:-1;;;14639:3:1;14624:19;14617:35;14536:3;13949:709;-1:-1:-1;;;13949:709:1:o;15105:128::-;15145:3;15176:1;15172:6;15169:1;15166:13;15163:2;;;15182:18;;:::i;:::-;-1:-1:-1;15218:9:1;;15153:80::o;15238:217::-;15278:1;15304;15294:2;;15348:10;15343:3;15339:20;15336:1;15329:31;15383:4;15380:1;15373:15;15411:4;15408:1;15401:15;15294:2;-1:-1:-1;15440:9:1;;15284:171::o;15460:168::-;15500:7;15566:1;15562;15558:6;15554:14;15551:1;15548:21;15543:1;15536:9;15529:17;15525:45;15522:2;;;15573:18;;:::i;:::-;-1:-1:-1;15613:9:1;;15512:116::o;15633:125::-;15673:4;15701:1;15698;15695:8;15692:2;;;15706:18;;:::i;:::-;-1:-1:-1;15743:9:1;;15682:76::o;15763:380::-;15842:1;15838:12;;;;15885;;;15906:2;;15960:4;15952:6;15948:17;15938:27;;15906:2;16013;16005:6;16002:14;15982:18;15979:38;15976:2;;;16059:10;16054:3;16050:20;16047:1;16040:31;16094:4;16091:1;16084:15;16122:4;16119:1;16112:15;15976:2;;15818:325;;;:::o;16148:127::-;16209:10;16204:3;16200:20;16197:1;16190:31;16240:4;16237:1;16230:15;16264:4;16261:1;16254:15;16280:127;16341:10;16336:3;16332:20;16329:1;16322:31;16372:4;16369:1;16362:15;16396:4;16393:1;16386:15;16544:131;-1:-1:-1;;;;;16619:31:1;;16609:42;;16599:2;;16665:1;16662;16655:12;16599:2;16589:86;:::o

Swarm Source

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