ETH Price: $3,074.10 (-3.38%)
 

Overview

Max Total Supply

1,000,000,000 REEEEE

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,702,000 REEEEE

Value
$0.00
0x57A2E65EE26B7a54aB966a62e382be7500961A25
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:
REEEEE

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1337 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-27
*/

/*
                                                  .:^~~!!!!~^:.                                                                             
                                              .:!7???777777???77!^:.          .:^~~!!7777!!~~^.                                             
                                            :!7?77777777777777777??7!^.  .:~!77??77777777777???7!:                                          
                                          :7?77777777777777777777777??7~^7?7777777777777777777777?!.                                        
                                        :!77777777777!!~~~~~~~~~~~~~!77?7^!77777777777777777777777?7.                                       
                                       ~777777777!~~~~!777777777777!~~~!77^7777777777777!!!!!!!!!777!.                                      
                                     .!?777777!~~~!77777777777777777777~^~~~77!!~~~~^^^^^^~~~~~~~~~~~:                                      
                                     !?777777!777777777777777777777777777~~^777777777777777777777!!!!!^:.                                   
                                    ^?777777777777777777777777!!!!~~!!!!!!~:7777777777777777777777777777!!^.                                
                                   :7777777777777777777777!!~!!!777!!!!!!!7!^!?7777777777777777777!!~~~~!!!!!!^.                            
                              .:^~^!7777777777777777777!!~!!7!!~~~~!!!77!!!!~.^777777777777777!!~~~~~~!!!!!!~~~^.                           
                           .~77??!~77777777777777!!!~~~~~~~^^^^^~~~~~~~~~~~!!!!!~!7777777!!!~~~~~~!!777!!7J5GBBGGY!.                        
                          ~777777^77777777777777!~~~~~!~^^~!?5G#&&&&&&&&#BPY7~~~!!~77~!!!!~~~~!!!!77?J5B&@@@@@@@@@@&G^                      
                         !?77777!~7777777777777!~!!77~^!YB&@@@@@@@@@@@@@@@@@@&G?~~~!77!~~~~!77?YPB&&@@@@@@@@&57?B@@@@@Y                     
                        ~?7777777777777777777777777775&@@@@@@@@@@@@@@@@B!~7G@@@@&GJ~^~7J5GB&&@@@@@@@@@@@@@@@!  ^~@@@@@&.                    
                       ~?77777777777777777777777777~5@@@@@@@@@@@@@@@@@&   ~ &@@@@@&7Y@@@@@@@@@@@@@@@@@@@@@@@@GYP&@&&BJ.                     
                      ~?77777777777777777777777777777!?5B&&@@@@@@@@@@@@B?7?B@&BPJ?7!^JJ55PGB###&&&&&&&&&##BGP5YJ?7!~:                       
                     ~?777!~7^7777777777777777777777777!!777?JY5PPGB##BBG5Y?77!77!~~~~~777!!!!!!!777!!!!!!!7777~:.                          
                    ^?7777^!?~~!77777777777777777777777!~!!!!!!!!!!!!!!777777!!~~~~!!77777777777777777777777~:                              
                   ^?777!~!7!!~!777777777777777777777777777!!!!!~~~!!!!!!!~~~~~~!!77777!~~!!!!777!!!!!!!~~.                                 
                  .777!~~!~~!77!777777777777777777777777777777777777!!!!!~~!~~~~!!777777777!!^^~!!!!777777~                                 
                  !77!!77~777777777777777777!!~~~~~~~~~~~~~!!!!!~!!!!!!777!~!77777777777777777777777777!!~~~~.                              
                 .7777777777777777777777!~~!!777777777777777!!!!!!~!!!!!!~~77777777777777777777!!!!~~~!!!77??!                              
                 ~?7777777777777777777!~~777????777777777????????777777!!!!!!~~~~~~~~~~~~~~~~!!!!!7777777??7~.     !.                       
                 !777777777777777777!~!777?7!^:..        ..::^^~!!77?????????77777777777777?????????7777!~:        :                        
                .777777777777777777~~777?7:                         ..::^^~!!!77777!!!!!!!!~~~~^^::...                                      
                :77777777777777777^!7777^                                                                                ^!.                
                :?777777777777777^7777?:                                                                  ..:::::.      .^:                 
                :?777777777~!!!7^!777?^                            ......                              :~77????7777!~:                      
                .7777777!~^!7^7~~777?^                        :^!777??77777!~::.                   .:~7??7!~::^!7777??~                     
                 ~?77777!!!~!!7^7777!                      .~777777!!~~!!77????77!~^::........:^~!7??7!^..       .....                      
                 .77777777777?!~777?:                    .!?7777^.         .:^~!7777???77777????77~^.                                       
                  ~?7777777777~~777?.                   .77777!                  ..:^~!!!77!~^:.       ..                                   
                  .77777777777~~777?.                   777777                                         ^!.                                  
                   ^?777777777!^777?~                  :?7777~                                                                              
                    ~?777777777^77777^                 :!!!!!^                                       :.                                     
                     ~777777777!^7777?7:.      ..:^~!777777!!!~:..                                                                          
                    .::~77777777!~!7777?77!!!77?????7777777777???777!~^^:.................::::^^^~~^:.                                      
                 :~7777~^^~!777777~~!!7777777777!!!!~~~!~!!~~!!!!7777?????????????????????????????77!^                                      
             .^!7?77777777!~~~~!!7777!!!!~~~~~!!!!77777777~^777!!~~~~!!!!!!!!!!!!!!!!!!!!!!!~~:...                                          
          :!7??7777777777777777!!!~~!!!!!777777777777777~~7^77!!!~^~77777!!!!!!!7777777!!^:.                    ::     .                    
           ~?77777777777777777777777777!!!77777777777!~~777:~~!77~!777777777777!!!!~:..                       .~?: ..^!^                    
            :7?777777777777777777777777777777777777!~~777777777!~!?77777!~~!!!!!!!7!.                       :~777!77?7:                     
              ~7777777777777777777777777777777!!~~~!77777777777~~!7777777777777777777!^.                .^~7?777777777:.                    
               .!?777777777777777777777777!!~~!!77777777777777777!^~777777777777777777?7!^.         .^~77?777777777????7!:                  
                 :!?777777777777777777!~~~!777777777777777!!~~~~!!!7777777777777777777777?7!: ..:~!77?777777777777!^:..                     
                   :7?7777777777777777777777777777777777~~!777777777777777777777777777777777?~~???777777777777?!.                           
                     :!?7777777777777777777777777777777^!7777777777777777777777777777777777777!^77777777777777^                             
                       .~7?77777777777777777777777777?~^?77777777777777777777777777777777777777!^77777777777?:                              
                         .^!7?777777777777777777777777:77777777777777777777777777777777777777777!^7777777777:                               
                            .^!7?77777777777777777777^!777777777777777777777777777777777777777777!^777777?7.                                
                               .^!7??7777777777777777~77777777777777777777777777777777777777777777!~7777?~                                  
                                  .:~77??777777777777777777777777777777777777777777777777777777777?^!77~:                                   
                                      .:~!7???777777777777777777777777777777777777777777777777??77!^..                                      
                                           .:~!77???777777777777777777777777777777777777???77!~^..                                          
                                                ..:^~!!777777777777777777777777777777!!~^:..                                                
                                                        ..::^^~~~~~~~~~~~~~~~~^^::...    

                ##########   ########### ########### ########### ########### ###########  ##   ##   ##   ##   ##  
                ###     ###  ###         ###         ###         ###         ###         #### #### #### #### #### 
                ###     ###  ###         ###         ###         ###         ###         #### #### #### #### #### 
                ##########   #######     #######     #######     #######     #######      ##   ##   ##   ##   ## 
                ###     ###  ###         ###         ###         ###         ###                     
                ###      ### ###         ###         ###         ###         ###          ##   ##   ##   ##   ##  
                ###      ### ########### ########### ########### ########### ###########  ##   ##   ##   ##   ## 
                                                                                      
Tokenomics

Total Supply: 1.000.000.000 Tokens
Buy tax: 2%
Sell tax: 3%

Max buy: 1% of total supply / 10.000.000 REEEEE

-------------------------------------------------------------

Deposits & Withdrawals to/from games don't have fees.
You can only deposit/withdraw to your registered address.

What it's all about @ https://reeeee.net

telegram: https://t.me/ReeeeeToken

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

abstract contract Ownable is Context {
    address private _owner;

    error Ownable_CallerIsNotTheOwner();
    error Ownable_NewOwnerIsTheZeroAddress();

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) revert Ownable_CallerIsNotTheOwner();
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) revert Ownable_NewOwnerIsTheZeroAddress();
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            if (lastIndex != toDeleteIndex) {
                bytes32 lastValue = set._values[lastIndex];
                set._values[toDeleteIndex] = lastValue;
                set._indexes[lastValue] = valueIndex;
            }
            set._values.pop();
            delete set._indexes[value];
            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set) internal view returns (address[] memory) {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        /// @solidity memory-safe-assembly
        assembly {
            result := store
        }

        return result;
    }
}

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 {
    error SafeMath_AdditionOverflow();
    error SafeMath_MultiplicationOverflow();
    error SafeMath_SubtractionUnderflow();
    error SafeMath_DivisionByZero();

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        if (c < a) {
            revert SafeMath_AdditionOverflow();
        }
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b > a) {
            revert SafeMath_SubtractionUnderflow();
        }
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        if(c / a != b) {
            revert SafeMath_MultiplicationOverflow();
        }
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b <= 0) {
            revert SafeMath_DivisionByZero();
        }
        uint256 c = a / b;
        return c;
    }
}

abstract contract ReentrancyGuard {
    error ReentrancyGuard_ReentrantCall();

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        if (_status == _ENTERED) revert ReentrancyGuard_ReentrantCall();
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

library UniswapV2Library {
    error UniswapV2Library_IDENTICAL_ADDRESSES();
    error UniswapV2Library_ZERO_ADDRESS();

    function sortTokens(address tokenA, address tokenB) internal pure returns(address token0, address token1) {
        if (tokenA == tokenB) revert UniswapV2Library_IDENTICAL_ADDRESSES();
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        if (token0 == address(0)) revert UniswapV2Library_ZERO_ADDRESS();
    }

    function pairFor(address factory, address tokenA, address tokenB) internal pure returns(address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint160(uint(keccak256(
            abi.encodePacked(hex"ff", factory, keccak256(abi.encodePacked(token0, token1)), 
            hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f"
        )))));
    }
}

contract REEEEE is IERC20, Context, Ownable, ReentrancyGuard {
    using EnumerableSet for EnumerableSet.AddressSet;
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => address) private _players;
    EnumerableSet.AddressSet private ExcludedFromFee;
    
    struct Games {
        bool active;
        address game;
        uint256 id;
        string name;
    }
    mapping(address => Games) private games;
    EnumerableSet.AddressSet private gamesList;
    
    IUniswapV2Router02 private router;
    address private _router;
    address private pair;
    address private _pair;
    address private _owner;

    string constant NAME = "REEEEE!";
    string constant SYMBOL = "REEEEE";
    uint8 constant DECIMALS = 18;
    uint256 immutable _totalSupply = 1000000000 * 10**DECIMALS;

    // all games total deposits and withdrawals
    struct Total {
        uint256 deposited;
        uint256 withdrawn;
    }
    Total private total = Total(0, 0);

    struct ContractConf {
        bool tradingEnabled;
        bool autoSwapFees;
        uint16 buyTax;
        uint16 sellTax;
        address payable vaultAddress;
        address payable devAddress;
        uint256 maxBuyPercent;
        uint256 maxBuyAmount;
        uint256 maxWalletPercent;
        uint256 maxWalletAmount;
        uint256 swapThreshold;
    }
    ContractConf private conf = ContractConf({
        tradingEnabled: false,
        autoSwapFees: false,
        buyTax: 200,
        sellTax: 300,
        vaultAddress: payable(0x86Ce96cBF4b26A38F822d8b533dA5cbB11EE30Be),
        devAddress: payable(0xF89c3f44AE28a026BBACa5aE8FC75b9301cD849e),
        maxBuyPercent: 100,
        maxBuyAmount: 10000000 * 10**DECIMALS,
        maxWalletPercent: 100,
        maxWalletAmount: 10000000 * 10**DECIMALS,
        swapThreshold: 10000000 * 10**DECIMALS
    });

    bool inSwap;

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

    error BalanceToLow(address account, uint256 balance, uint256 amount);
    error DepositBalanceToLow(address account, uint256 balance, uint256 amount);
    error Exists(bool exists);
    error InvalidGameId();
    error NotAuthorized();
    error NotAGameAddress();
    error NotPlayersAccount();
    error OverMaxBuy(uint256 maxBuyAmount);
    error OverMaxWallet(uint256 maxWalletAmount);
    error SameValue();
    error TaxTooHight(uint16 maxTotalTax);
    error TradingDisabled();
    error ZeroAddress();
    error ZeroAmount();
    error InvalidValue();
    
    event AccountExcludedFromFee(address account, bool excluded);
    event Burned(address indexed from, uint256 amount);
    event Deposited(address indexed account, uint256 amount);
    event MaxBuySet(uint256 maxPercent, uint256 maxAmount);
    event DisableMaxBuyAtSet(uint256 amount);
    event SentEth(address to, uint256 amount);
    event SwappedTokensForEth(address account, uint256 amountTokens, uint256 amountEthers);
    event TaxesSet(uint16 buyTax, bool buyTaxEnabled, uint16 sellTax, bool sellTaxEnabled);
    event TradingEnabled();
    event VaultAddressSet(address vaultAddress);
    event DevAddressSet(address devAddress);
    event Withdrawn(address indexed account, uint256 amount);
    event WithdrawnERC20(address account, uint256 amount, address token);
    
    /// UniSwap 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    constructor(
        address router_
    ) payable {
        _owner = address(owner());
        conf.vaultAddress = payable(_owner);

        ExcludedFromFee.add(owner());
        ExcludedFromFee.add(address(this));
        ExcludedFromFee.add(conf.vaultAddress);
        ExcludedFromFee.add(conf.devAddress);

        router = IUniswapV2Router02(router_);
        _router = address(router);
        pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());
        _pair = address(pair);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    receive() external payable {}
    fallback() external payable {}

    function enableTrading() external onlyOwner {
        if (conf.tradingEnabled) revert();
        conf.tradingEnabled = true;
    }

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

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

    function decimals() public pure returns(
        uint8
    ) {
        return DECIMALS;
    }

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

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

    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 _approve(
        address owner_,
        address spender_,
        uint256 amount_
    ) internal virtual {
        if (owner_ == address(0)) revert ZeroAddress();
        if (spender_ == address(0)) revert ZeroAddress();
        _allowances[owner_][spender_] = amount_;
        emit Approval(owner_, spender_, amount_);
    }

    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));
        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_));
        return true;
    }

    function _transfer(
        address from_,
        address to_,
        uint256 amount_
    ) private {
        if (from_ == address(0)) revert ZeroAddress();
        if (to_ == address(0)) revert ZeroAddress();
        
        if (amount_ == 0) {
            emit Transfer(from_, to_, 0);
            return;
        }

        if (amount_ > _balances[from_]) {
            revert BalanceToLow(from_, amount_, _balances[from_]);
        }

        if (ExcludedFromFee.contains(from_) 
            || ExcludedFromFee.contains(to_)
            || _msgSender() == _owner
        ) {
            _transferBalance(from_, to_, amount_, false);
            return;
        }

        if (!conf.tradingEnabled 
            && !ExcludedFromFee.contains(from_)
            && !ExcludedFromFee.contains(to_)
        ) {
            revert TradingDisabled();
        }

        bool buy = from_ == _pair && to_ != _router;
        bool sell = to_ == _pair && from_ != _router;
        bool trx = (!buy && !sell) || inSwap;
         

        if (trx) {
            _transferBalance(from_, to_, amount_, false);
            return;
        }

        uint256 fee = 0;
        if (buy && conf.buyTax > 0) {
            fee = amount_.mul(conf.buyTax).div(1e4);
        } else 
        if (sell && conf.sellTax > 0) {
            fee = amount_.mul(conf.sellTax).div(1e4);
        }

        if (fee > 0) {
            _transferBalance(from_, address(this), fee, false);
            amount_ = amount_.sub(fee);
        }

        if (buy 
            && conf.maxBuyPercent > 0 
            && amount_ > conf.maxBuyAmount
        ) {
            revert OverMaxBuy(conf.maxBuyAmount);
        }

        if ((buy || trx) 
            && conf.maxWalletPercent > 0
            && to_ != address(this)
            && to_ != _pair
        ) {
            uint256 newBalance = _balances[to_].add(amount_);
            if(newBalance > conf.maxWalletAmount) {
                revert OverMaxWallet(conf.maxWalletAmount);
            }
        }

        if (_balances[address(this)] > conf.swapThreshold
            && sell 
            && conf.autoSwapFees
        ) {
            _swapAndSend();
        }

        _transferBalance(from_, to_, amount_, false);
    }

    function setVaultAddress(
        address address_
    ) external onlyOwner {
        if (address_ == address(0)) {
            revert ZeroAddress();
        }
        if (conf.vaultAddress != address_) {
            conf.vaultAddress = payable(address_);
        } else {
            revert SameValue();
        }
        emit VaultAddressSet(address_);
    }

    function setDevAddress(
        address address_
    ) external onlyOwner {
        if (address_ == address(0)) {
            revert ZeroAddress();
        }
        if (conf.devAddress != address_) {
            conf.devAddress = payable(address_);
        } else {
            revert SameValue();
        }
        emit VaultAddressSet(address_);
    }

    // 0 to disable
    function setTaxes(
        uint16 buyTax_,  
        uint16 sellTax_
    ) external onlyOwner returns(
        bool
    ) {
        uint16 totalTax = buyTax_ + sellTax_;
        if (totalTax > 5) {
            revert TaxTooHight(5);
        }
        emit TaxesSet(buyTax_, buyTax_ > 0, sellTax_, sellTax_ > 0);
        conf.buyTax = buyTax_ * 100;
        conf.sellTax = sellTax_ * 100;
        return true;
    }

    function setMaxBuy(
        uint8 percent_
    ) external onlyOwner returns(
        uint256
    ) {
        if (percent_ == conf.maxBuyPercent) {
            revert SameValue();
        }
        // zero means disable
        if (percent_ != 0) {
            // we don't allow to be set below 1%
            if (percent_ < 1 || percent_ > 100) {
                revert InvalidValue();
            }
        }
        conf.maxBuyPercent = percent_ * 100;
        conf.maxBuyAmount = _totalSupply.mul(conf.maxBuyPercent).div(1e4);
        emit MaxBuySet(conf.maxBuyPercent, conf.maxBuyAmount);
        return conf.maxBuyAmount;
    }

    function setMaxWallet(
        uint8 percent_
    ) external onlyOwner returns(
        uint256
    ) {
        if (percent_ == conf.maxWalletPercent) {
            revert SameValue();
        }
        // zero means disable
        if (percent_ != 0) {
            // we don't allow to be set below 1%
            if (percent_ < 1 || percent_ > 100) {
                revert InvalidValue();
            }
        }
        conf.maxWalletPercent = percent_ * 100;
        conf.maxWalletAmount = _totalSupply.mul(conf.maxWalletPercent).div(1e4);
        emit MaxBuySet(conf.maxWalletPercent, conf.maxWalletAmount);
        return conf.maxWalletAmount;
    }

    function transferBalance(
        address from_,
        address to_,
        uint256 amount_
    ) external returns(
        uint256, 
        uint256
    ) {
        if (_msgSender() != _owner) {
            if (!gamesList.contains(_msgSender())) {
                revert NotAuthorized();
            }
        }
        return _transferBalance(from_, to_, amount_, true);
    }

    function _transferBalance(
        address from_,
        address to_,
        uint256 amount_,
        bool check_
    ) private returns(
        uint256, uint256
    ) {
        if (check_ && amount_ > _balances[from_]) {
            revert BalanceToLow(from_, _balances[from_], amount_);
        }
        unchecked {
            _balances[from_] -= amount_;
            _balances[to_] += amount_;   
        }
        emit Transfer(from_, to_, amount_);
        return (_balances[from_], _balances[to_]);
    }

    function toggleExcludedFromFee(
        address address_
    ) external onlyOwner returns(
        bool
    ) {
        if (ExcludedFromFee.contains(address_)) {
            ExcludedFromFee.remove(address_);
        } else {
            ExcludedFromFee.add(address_);
        }
        emit AccountExcludedFromFee(address_, ExcludedFromFee.contains(address_));
        return ExcludedFromFee.contains(address_);
    }

    function swapTokensToEth() external onlyOwner {
        _swapAndSend();
    }

    function _swapAndSend() private {
        uint256 balance = _balances[address(this)];
        _swapTokensToEth();
        _sendEth(address(this).balance);
        emit SwappedTokensForEth(conf.vaultAddress, balance, address(this).balance);
    }

    function _swapTokensToEth() private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), _router, _balances[address(this)]);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _balances[address(this)], 
            0, 
            path, 
            address(this), 
            block.timestamp
        );
    }

    function sendEth(
        uint256 amount_
    ) external onlyOwner returns(
        bool success
    ) {
        return _sendEth(amount_);
    }

    function _sendEth(
        uint256 amount_
    ) private returns (
        bool success
    ) {
        if (address(this).balance < amount_) return false;
        uint256 amount = amount_.div(2);
        conf.vaultAddress.transfer(amount);
        emit SentEth(conf.vaultAddress, amount);
        conf.devAddress.transfer(amount_.sub(amount));
        emit SentEth(conf.devAddress, amount_.sub(amount));
        return true;
    }

    function getContractConf() external view returns(
        ContractConf memory
    ) {
        return conf;
    }

    function withdrawTokenERC20(
        address token_,
        uint256 amount_
    ) external onlyOwner returns(bool success) {
        IERC20 token = IERC20(token_);
        token.approve(address(this), amount_);
        success = token.transferFrom(address(this), owner(), amount_);
        emit WithdrawnERC20(address(this), amount_, token_);
        return success;
    }

    /**
     * @dev this function can only be called by the owner, this contract or a game contract
     * 
     * If you are a player and you want to deposit, you need to call the deposit function from the game contract
     * or initiate the deposit from the dapp
     * 
     * @param player_ players wallet address
     * @param account_ deposit wallet address
     * @param amount_ amount to deposit
     * @return (balance wallet, balance deposit wallet)
     * @notice players deposit wallet is stored on first deposit
     */
    function deposit(
        address player_,
        address account_,
        uint256 amount_
    ) external nonReentrant returns(
        uint256, uint256
    ) {
        if (player_ == address(0) || account_ == address(0)) {
            revert ZeroAddress();
        }
        if (amount_ == 0) {
            revert ZeroAmount();
        }
        if (amount_ > _balances[player_]) {
            revert BalanceToLow(player_, _balances[player_], amount_);
        }
        if (_msgSender() != owner() && _msgSender() != address(this)) {
            if (!gamesList.contains(address(_msgSender()))) {
                revert NotAuthorized();
            }
        }
        if (_players[player_] == address(0)) {
            _players[player_] = account_;
        }
        // no fee on transfer to deposit wallet
        _transferBalance(player_, account_, amount_, false);
        total.deposited = total.deposited.add(amount_);
        emit Deposited(player_, amount_);
        return (_balances[player_], _balances[account_]);
    }

    /*****
     * @dev withdraw from deposit wallet can be initiated by owner, this contract or game contract
     * 
     * If you are a player and you want to withdraw, you need to call the deposit function from the game contract
     * or initiate the withdraw from the dapp
     * 
     * @param player_ address of players wallet
     * @param account_ address of deposit wallet
     * @param amount_ amount to withdraw
     * @return (balance wallet, balance deposit wallet)
     * @notice account_ must be the deposit wallet of player_
     * @notice amount_ must be less or equal to balance of deposit wallet
     * @notice transfer: deposit wallet ---> player wallet
     * @notice withdraw to non player wallet is not possible
     */
    function withdraw(
        address player_, 
        address account_,
        uint256 amount_
    ) external nonReentrant returns(
        uint256, uint256
    ) {
        if (player_ == address(0) || account_ == address(0)) {
            revert ZeroAddress();
        }
        if (_players[player_] != account_) {
            revert NotPlayersAccount();
        }
        if (amount_ == 0) {
            revert ZeroAmount();
        }
        if (amount_ > _balances[account_]) {
            revert DepositBalanceToLow(player_, _balances[account_], amount_);
        }
        if (_msgSender() != owner() 
            && _msgSender() != address(this)
            && !gamesList.contains(address(_msgSender()))) {
            revert NotAGameAddress();
        }
        // no fee on withdraw from ingame deposit wallet
        _transferBalance(account_, player_, amount_, false);
        total.withdrawn = total.withdrawn.add(amount_);
        emit Withdrawn(player_, amount_);
        return (_balances[player_], _balances[account_]);
    }

    function addGame(
        address address_,
        string memory name_
    ) external onlyOwner returns(
        bool
    ) {
        if (gamesList.contains(address_)) {
            revert Exists(true);
        }
        ExcludedFromFee.add(address_);
        gamesList.add(address_);
        games[address_] = Games({
            id: gamesList.length(),
            game: address_,
            name: name_,
            active: false
        });
        return true;
    }

    function removeGame(
        address address_
    ) external onlyOwner returns (bool success) {
        success = false;
        if (gamesList.contains(address_)) {
            success = gamesList.remove(address_);
            ExcludedFromFee.remove(address_);
        } else {
            revert NotAGameAddress();
        }
        delete games[address_];
        return success;
    }

    function toggleGame(
        address address_
    ) external onlyOwner returns(
        bool
    ) {
        if (!gamesList.contains(address_)) {
            revert Exists(false);
        }
        games[address_].active = !games[address_].active;
        return games[address_].active;
    }

    function setGame(
        uint256 id_,
        address address_,
        string memory name_,
        bool active_
    ) external onlyOwner returns(
        bool
    ) {
        if (id_ > gamesList.length()) {
            revert InvalidGameId();
        }
        if (!gamesList.contains(address_)) {
            revert Exists(false);
        }
        games[address_] = Games({
            id: id_,
            game: address_,
            name: name_,
            active: active_
        });
        return true;
    }

    function getGame(address address_) external view returns (Games memory) {
        return games[address_];
    }

    function getGamesList() external view returns(
        address[] memory
    ) {
        return EnumerableSet.values(gamesList);
    }

    function transferToMain(address from_) external {
        if (!gamesList.contains(_msgSender())) {
            revert NotAuthorized();
        }
        _transferBalance(from_, address(this), _balances[from_], true);
    }

    function getPlayerBalances(
        address player_, 
        address account_
    ) external view returns (
        uint256, 
        uint256
    ) {
        return (_balances[player_], _balances[account_]);
    }

    function getTotals() external view returns(
        Total memory
    ) {
        return total;
    }

    function getMaxBuyAmount() external view returns (
        uint256
    ) {
        return conf.maxBuyAmount;
    }

    function maxBuyAmountEnabled() external view returns (
        bool
    ) {
        return conf.maxBuyAmount > 0;
    }

    function getMaxWalletAmount() external view returns (
        uint256
    ) {
        return conf.maxWalletAmount;
    }

    function maxWalletAmountEnabled() external view returns (
        bool
    ) {
        return conf.maxWalletAmount > 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceToLow","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositBalanceToLow","type":"error"},{"inputs":[{"internalType":"bool","name":"exists","type":"bool"}],"name":"Exists","type":"error"},{"inputs":[],"name":"InvalidGameId","type":"error"},{"inputs":[],"name":"InvalidValue","type":"error"},{"inputs":[],"name":"NotAGameAddress","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"NotPlayersAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"OverMaxBuy","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"OverMaxWallet","type":"error"},{"inputs":[],"name":"Ownable_CallerIsNotTheOwner","type":"error"},{"inputs":[],"name":"Ownable_NewOwnerIsTheZeroAddress","type":"error"},{"inputs":[],"name":"ReentrancyGuard_ReentrantCall","type":"error"},{"inputs":[],"name":"SafeMath_AdditionOverflow","type":"error"},{"inputs":[],"name":"SafeMath_DivisionByZero","type":"error"},{"inputs":[],"name":"SafeMath_MultiplicationOverflow","type":"error"},{"inputs":[],"name":"SafeMath_SubtractionUnderflow","type":"error"},{"inputs":[],"name":"SameValue","type":"error"},{"inputs":[{"internalType":"uint16","name":"maxTotalTax","type":"uint16"}],"name":"TaxTooHight","type":"error"},{"inputs":[],"name":"TradingDisabled","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"AccountExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"devAddress","type":"address"}],"name":"DevAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DisableMaxBuyAtSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"MaxBuySet","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":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SentEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEthers","type":"uint256"}],"name":"SwappedTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"buyTax","type":"uint16"},{"indexed":false,"internalType":"bool","name":"buyTaxEnabled","type":"bool"},{"indexed":false,"internalType":"uint16","name":"sellTax","type":"uint16"},{"indexed":false,"internalType":"bool","name":"sellTaxEnabled","type":"bool"}],"name":"TaxesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vaultAddress","type":"address"}],"name":"VaultAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"WithdrawnERC20","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"string","name":"name_","type":"string"}],"name":"addGame","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender_","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"player_","type":"address"},{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractConf","outputs":[{"components":[{"internalType":"bool","name":"tradingEnabled","type":"bool"},{"internalType":"bool","name":"autoSwapFees","type":"bool"},{"internalType":"uint16","name":"buyTax","type":"uint16"},{"internalType":"uint16","name":"sellTax","type":"uint16"},{"internalType":"address payable","name":"vaultAddress","type":"address"},{"internalType":"address payable","name":"devAddress","type":"address"},{"internalType":"uint256","name":"maxBuyPercent","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"internalType":"struct REEEEE.ContractConf","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getGame","outputs":[{"components":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"game","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"name","type":"string"}],"internalType":"struct REEEEE.Games","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGamesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player_","type":"address"},{"internalType":"address","name":"account_","type":"address"}],"name":"getPlayerBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotals","outputs":[{"components":[{"internalType":"uint256","name":"deposited","type":"uint256"},{"internalType":"uint256","name":"withdrawn","type":"uint256"}],"internalType":"struct REEEEE.Total","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmountEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmountEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"removeGame","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"sendEth","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"},{"internalType":"address","name":"address_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"bool","name":"active_","type":"bool"}],"name":"setGame","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"percent_","type":"uint8"}],"name":"setMaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"percent_","type":"uint8"}],"name":"setMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyTax_","type":"uint16"},{"internalType":"uint16","name":"sellTax_","type":"uint16"}],"name":"setTaxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setVaultAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensToEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"toggleExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"toggleGame","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transferBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"}],"name":"transferToMain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"player_","type":"address"},{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"withdrawTokenERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000126012600a620006e7565b6200002290633b9aca00620006f8565b608090815260408051808201825260008082526020918201819052600f81905560108190558251610160810184528181529182015260c89181019190915261012c60608201527386ce96cbf4b26a38f822d8b533da5cbb11ee30be9181019190915273f89c3f44ae28a026bbaca5ae8fc75b9301cd849e60a0820152606460c082015260e08101620000b76012600a620006e7565b620000c69062989680620006f8565b815260646020820152604001620000e06012600a620006e7565b620000ef9062989680620006f8565b8152602001620001026012600a620006e7565b620001119062989680620006f8565b905280516011805460208401516040808601516060870151608088015161ffff1990951696151561ff0019169690961761010093151584021765ffffffff000019166201000061ffff9283160261ffff60201b191617640100000000919096160294909417600160301b600160d01b03191666010000000000006001600160a01b03938416021790925560a0840151601280546001600160a01b0319169190921617905560c083015160135560e08301516014558201516015556101208201516016556101409091015160175551620037ea38819003908190833981016040819052620001fe9162000712565b620002093362000512565b60018055600054600e80546001600160a01b039092166001600160a01b03199092168217905560118054600160301b600160d01b03191666010000000000008302179055620002689060056200056260201b62001ae31790919060201c565b50620002843060056200056260201b62001ae31790919060201c565b50601154620002b590600590660100000000000090046001600160a01b031662000562602090811b62001ae317901c565b50601254620002dc906005906001600160a01b031662000562602090811b62001ae317901c565b50600a80546001600160a01b0383166001600160a01b03199182168117909255600b8054909116821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000369919062000712565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000712565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000466919062000712565b600c80546001600160a01b03929092166001600160a01b03199283168117909155600d805490921617905560805160026000620004a03390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6080516040516200050391815260200190565b60405180910390a35062000744565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600062000579836001600160a01b03841662000582565b90505b92915050565b6000818152600183016020526040812054620005cb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200057c565b5060006200057c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200062b5781600019048211156200060f576200060f620005d4565b808516156200061d57918102915b93841c9390800290620005ef565b509250929050565b60008262000644575060016200057c565b8162000653575060006200057c565b81600181146200066c5760028114620006775762000697565b60019150506200057c565b60ff8411156200068b576200068b620005d4565b50506001821b6200057c565b5060208310610133831016604e8410600b8410161715620006bc575081810a6200057c565b620006c88383620005ea565b8060001904821115620006df57620006df620005d4565b029392505050565b60006200057960ff84168362000633565b80820281158282048414176200057c576200057c620005d4565b6000602082840312156200072557600080fd5b81516001600160a01b03811681146200073d57600080fd5b9392505050565b60805161307c6200076e600039600081816103ac015281816119070152611a0c015261307c6000f3fe60806040526004361061029a5760003560e01c806384e10a9011610161578063bce24669116100ca578063d9caed1211610084578063de1c57f511610061578063de1c57f514610952578063f2fde38b14610972578063f8967ddc1461099257005b8063d9caed12146108cc578063dbdf2dc0146108ec578063dd62ed3e1461090c57005b8063cfc54848116100b2578063cfc5484814610875578063d0d41fe114610895578063d824d00a146108b557005b8063bce2466914610833578063bed16fa61461085357005b806395d89b411161011b578063a606b94a11610103578063a606b94a146107d3578063a9059cbb146107f3578063ac0f33861461081357005b806395d89b411461076d578063a457c2d7146107b357005b80638a8c523c116101495780638a8c523c146107035780638d1a4b28146107185780638da5cb5b1461074557005b806384e10a901461069857806385535cc5146106e357005b80633344819f1161020357806368616182116101bd57806370a08231116101a557806370a082311461062d578063715018a6146106635780638340f5491461067857005b806368616182146105ed578063705285141461060d57005b80633fda926e116101eb5780633fda926e1461055e578063503ac6491461057e57806352db64bf1461059357005b80633344819f1461051e578063395093511461053e57005b80631785de9711610254578063187a960c1161023c578063187a960c146103d057806323b872dd146104e2578063313ce5671461050257005b80631785de971461038657806318160ddd1461039d57005b8063095ea7b311610282578063095ea7b31461032757806309c95a1b1461034757806310cd58ce1461036657005b806304f9df6e146102a357806306fdde03146102d857005b366102a157005b005b3480156102af57600080fd5b506102c36102be3660046129d7565b6109a7565b60405190151581526020015b60405180910390f35b3480156102e457600080fd5b5060408051808201909152600781527f524545454545210000000000000000000000000000000000000000000000000060208201525b6040516102cf9190612a89565b34801561033357600080fd5b506102c3610342366004612a9c565b610ae0565b34801561035357600080fd5b506016545b6040519081526020016102cf565b34801561037257600080fd5b506102c3610381366004612ac8565b610af7565b34801561039257600080fd5b5060165415156102c3565b3480156103a957600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610358565b3480156103dc57600080fd5b506104d56040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915250604080516101608101825260115460ff808216151583526101008083049091161515602084015261ffff620100008304811694840194909452640100000000820490931660608301526001600160a01b036601000000000000909104811660808301526012541660a082015260135460c082015260145460e08201526015549181019190915260165461012082015260175461014082015290565b6040516102cf9190612ae5565b3480156104ee57600080fd5b506102c36104fd366004612ba4565b610b5f565b34801561050e57600080fd5b50604051601281526020016102cf565b34801561052a57600080fd5b506102a1610539366004612ac8565b610bb0565b34801561054a57600080fd5b506102c3610559366004612a9c565b610c07565b34801561056a57600080fd5b506102c3610579366004612be5565b610c3d565b34801561058a57600080fd5b50601454610358565b34801561059f57600080fd5b506105d86105ae366004612c35565b6001600160a01b038083166000908152600260205260408082205492841682529020549250929050565b604080519283526020830191909152016102cf565b3480156105f957600080fd5b506102c3610608366004612ac8565b610d5a565b34801561061957600080fd5b506102c3610628366004612c80565b610dec565b34801561063957600080fd5b50610358610648366004612ac8565b6001600160a01b031660009081526002602052604090205490565b34801561066f57600080fd5b506102a1610ef8565b34801561068457600080fd5b506105d8610693366004612ba4565b610f0c565b3480156106a457600080fd5b50604080518082018252600080825260209182015281518083018352600f548082526010549183019182528351908152905191810191909152016102cf565b3480156106ef57600080fd5b506102a16106fe366004612ac8565b61110b565b34801561070f57600080fd5b506102a16111f3565b34801561072457600080fd5b50610738610733366004612ac8565b61121a565b6040516102cf9190612cb3565b34801561075157600080fd5b506000546040516001600160a01b0390911681526020016102cf565b34801561077957600080fd5b5060408051808201909152600681527f5245454545450000000000000000000000000000000000000000000000000000602082015261031a565b3480156107bf57600080fd5b506102c36107ce366004612a9c565b611325565b3480156107df57600080fd5b506105d86107ee366004612ba4565b61135b565b3480156107ff57600080fd5b506102c361080e366004612a9c565b6113ba565b34801561081f57600080fd5b506102c361082e366004612a9c565b6113c7565b34801561083f57600080fd5b506102c361084e366004612ac8565b611563565b34801561085f57600080fd5b50610868611607565b6040516102cf9190612d3b565b34801561088157600080fd5b506102c3610890366004612d4e565b611618565b3480156108a157600080fd5b506102a16108b0366004612ac8565b61162b565b3480156108c157600080fd5b5060145415156102c3565b3480156108d857600080fd5b506105d86108e7366004612ba4565b61169c565b3480156108f857600080fd5b50610358610907366004612d67565b61187b565b34801561091857600080fd5b50610358610927366004612c35565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095e57600080fd5b5061035861096d366004612d67565b611980565b34801561097e57600080fd5b506102a161098d366004612ac8565b611a7f565b34801561099e57600080fd5b506102a1611ad3565b60006109b1611aff565b6109bb6008611b43565b8511156109f4576040517fbb97cc9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ff600885611b4d565b610a245760405163664444ad60e01b8152600060048201526024015b60405180910390fd5b6040805160808101825283151581526001600160a01b0386811660208084018281528486018b8152606086018a8152600094855260079093529590922084518154935174ffffffffffffffffffffffffffffffffffffffffff199094169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100939094169290920292909217815592516001840155519091906002820190610ad29082612e12565b506001979650505050505050565b6000610aed338484611b6f565b5060015b92915050565b6000610b01611aff565b610b0c600883611b4d565b610b2c5760405163664444ad60e01b815260006004820152602401610a1b565b506001600160a01b0381166000908152600760205260409020805460ff19811660ff91821615908117909255165b919050565b6000610b6c848484611c1f565b6001600160a01b038416600090815260036020908152604080832033808552925290912054610ba6918691610ba19086612082565b611b6f565b5060019392505050565b610bbd335b600890611b4d565b610bda5760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040902054610c02908290309060016120d2565b505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aed918590610ba190866121d9565b6000610c47611aff565b610c52600884611b4d565b15610c735760405163664444ad60e01b815260016004820152602401610a1b565b610c7e600584611ae3565b50610c8a600884611ae3565b5060408051608081018252600081526001600160a01b0385166020820152908101610cb56008611b43565b815260209081018490526001600160a01b03858116600090815260078352604090819020845181549486015174ffffffffffffffffffffffffffffffffffffffffff199095169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff16176101009490931693909302919091178255820151600182015560608201516002820190610d4e9082612e12565b50600195945050505050565b6000610d64611aff565b610d6f600583611b4d565b15610d8557610d7f600583612222565b50610d92565b610d90600583611ae3565b505b7fff13a07d1a0c0980096f2ebe1a4fc999c3ef9c6821645b111dfb11b0510c98c282610dbf600582611b4d565b604080516001600160a01b03909316835290151560208301520160405180910390a1610af1600583611b4d565b6000610df6611aff565b6000610e028385612ee8565b905060058161ffff161115610e46576040517f0f9fba1b00000000000000000000000000000000000000000000000000000000815260056004820152602401610a1b565b6040805161ffff8681168083521515602083015285168183018190521515606082015290517f6d1a5cd8d32dd95c4f0526e254c43a26c5fa20faf091297983ca758e3c1c5c9f9181900360800190a1610ea0846064612f03565b6011805461ffff92909216620100000263ffff000019909216919091179055610eca836064612f03565b6011805461ffff929092166401000000000265ffff0000000019909216919091179055506001905092915050565b610f00611aff565b610f0a6000612237565b565b600080610f17612294565b6001600160a01b0385161580610f3457506001600160a01b038416155b15610f525760405163d92e233d60e01b815260040160405180910390fd5b82600003610f7357604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038516600090815260026020526040902054831115610fd6576001600160a01b038516600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482015260448101849052606401610a1b565b6000546001600160a01b03163314801590610ff15750333014155b1561101c57610fff33610bb5565b61101c5760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b0385811660009081526004602052604090205416611077576001600160a01b038581166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b61108485858560006120d2565b5050600f5461109390846121d9565b600f556040518381526001600160a01b038616907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020015b60405180910390a250506001600160a01b0380841660009081526002602052604080822054928516825290205461110360018055565b935093915050565b611113611aff565b6001600160a01b03811661113a5760405163d92e233d60e01b815260040160405180910390fd5b6011546001600160a01b038281166601000000000000909204161461119a57601180547fffffffffffff0000000000000000000000000000000000000000ffffffffffff1666010000000000006001600160a01b038416021790556111b3565b60405163c23f6ccb60e01b815260040160405180910390fd5b6040516001600160a01b03821681527f5c06d966572db101b61cacf1a095f31609e34873f11016fc5cb333651e969f67906020015b60405180910390a150565b6111fb611aff565b60115460ff161561120b57600080fd5b6011805460ff19166001179055565b60408051608081018252600080825260208201819052918101919091526060808201526001600160a01b038083166000908152600760209081526040918290208251608081018452815460ff81161515825261010090049094169184019190915260018101549183019190915260028101805460608401919061129c90612d8a565b80601f01602080910402602001604051908101604052809291908181526020018280546112c890612d8a565b80156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050815250509050919050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aed918590610ba19086612082565b600e5460009081906001600160a01b0316336001600160a01b0316146113a15761138433610bb5565b6113a15760405163ea8e4eb560e01b815260040160405180910390fd5b6113ae85858560016120d2565b91509150935093915050565b6000610aed338484611c1f565b60006113d1611aff565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810183905283906001600160a01b0382169063095ea7b3906044016020604051808303816000875af1158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d9190612f29565b50806001600160a01b03166323b872dd306114806000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af11580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190612f29565b60408051308152602081018690526001600160a01b0387168183015290519193507f034bacc4249aebc55a08898dcd85b04c71b5269fdf2324428b1ebd2dce757d96919081900360600190a15092915050565b600061156d611aff565b50600061157b600883611b4d565b1561159e5761158b600883612222565b9050611598600583612222565b506115b7565b60405163f201e6b360e01b815260040160405180910390fd5b6001600160a01b0382166000908152600760205260408120805474ffffffffffffffffffffffffffffffffffffffffff19168155600181018290559061160060028301826128c3565b5050919050565b606061161360086122d7565b905090565b6000611622611aff565b610af1826122e4565b611633611aff565b6001600160a01b03811661165a5760405163d92e233d60e01b815260040160405180910390fd5b6012546001600160a01b0382811691161461119a576012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556111b3565b6000806116a7612294565b6001600160a01b03851615806116c457506001600160a01b038416155b156116e25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03858116600090815260046020526040902054811690851614611738576040517f8363912d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361175957604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0384166000908152600260205260409020548311156117d6576001600160a01b03848116600090815260026020526040908190205490517f9ab73c700000000000000000000000000000000000000000000000000000000081529187166004830152602482015260448101849052606401610a1b565b6000546001600160a01b031633148015906117f15750333014155b8015611803575061180133610bb5565b155b156118215760405163f201e6b360e01b815260040160405180910390fd5b61182e84868560006120d2565b505060105461183d90846121d9565b6010556040518381526001600160a01b038616907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020016110cd565b6000611885611aff565b60135460ff8316036118aa5760405163c23f6ccb60e01b815260040160405180910390fd5b60ff8216156118e65760018260ff1610806118c8575060648260ff16115b156118e657604051632a9ffab760e21b815260040160405180910390fd5b6118f1826064612f46565b60ff166013819055611932906127109061192c907f00000000000000000000000000000000000000000000000000000000000000009061243d565b9061249f565b60148190556013546040517f5b0331c3b76cf2ba9a12dbf0bdf966349c1b78ecedfd9ac8b99558992da5fe5892611970928252602082015260400190565b60405180910390a1505060145490565b600061198a611aff565b60155460ff8316036119af5760405163c23f6ccb60e01b815260040160405180910390fd5b60ff8216156119eb5760018260ff1610806119cd575060648260ff16115b156119eb57604051632a9ffab760e21b815260040160405180910390fd5b6119f6826064612f46565b60ff166015819055611a31906127109061192c907f00000000000000000000000000000000000000000000000000000000000000009061243d565b60168190556015546040517f5b0331c3b76cf2ba9a12dbf0bdf966349c1b78ecedfd9ac8b99558992da5fe5892611a6f928252602082015260400190565b60405180910390a1505060165490565b611a87611aff565b6001600160a01b038116611ac7576040517fb8c2cc5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ad081612237565b50565b611adb611aff565b610f0a6124e6565b6000611af8836001600160a01b03841661255b565b9392505050565b6000546001600160a01b03163314610f0a576040517fa5653ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af1825490565b6001600160a01b03811660009081526001830160205260408120541515611af8565b6001600160a01b038316611b965760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611bbd5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c465760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611c6d5760405163d92e233d60e01b815260040160405180910390fd5b80600003611cbb57816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051611c1291815260200190565b6001600160a01b038316600090815260026020526040902054811115611d1e576001600160a01b038316600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482018390526044820152606401610a1b565b611d29600584611b4d565b80611d3a5750611d3a600583611b4d565b80611d585750600e546001600160a01b0316336001600160a01b0316145b15611d7157611d6a83838360006120d2565b5050505050565b60115460ff16158015611d8c5750611d8a600584611b4d565b155b8015611da05750611d9e600583611b4d565b155b15611dd7576040517fbcb8b8fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546000906001600160a01b038581169116148015611e055750600b546001600160a01b03848116911614155b600d549091506000906001600160a01b038581169116148015611e365750600b546001600160a01b03868116911614155b9050600082158015611e46575081155b80611e53575060185460ff165b90508015611e7257611e6886868660006120d2565b5050505050505050565b6000838015611e8c575060115462010000900461ffff1615155b15611eb857601154611eb1906127109061192c90889062010000900461ffff1661243d565b9050611efc565b828015611ed25750601154640100000000900461ffff1615155b15611efc57601154611ef9906127109061192c908890640100000000900461ffff1661243d565b90505b8015611f1f57611f0f87308360006120d2565b50611f1c90508582612082565b94505b838015611f2d575060135415155b8015611f3a575060145485115b15611f78576014546040517fcf6d21980000000000000000000000000000000000000000000000000000000081526004810191909152602401610a1b565b8380611f815750815b8015611f8e575060155415155b8015611fa357506001600160a01b0386163014155b8015611fbd5750600d546001600160a01b03878116911614155b1561202d576001600160a01b038616600090815260026020526040812054611fe590876121d9565b60165490915081111561202b576016546040517f78121d190000000000000000000000000000000000000000000000000000000081526004810191909152602401610a1b565b505b6017543060009081526002602052604090205411801561204a5750825b801561205d5750601154610100900460ff165b1561206a5761206a6124e6565b61207787878760006120d2565b505050505050505050565b6000828211156120be576040517f111429ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ca8385612f62565b949350505050565b6000808280156120f957506001600160a01b03861660009081526002602052604090205484115b15612141576001600160a01b038616600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482015260448101859052606401610a1b565b6001600160a01b03808716600081815260026020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121a39088815260200190565b60405180910390a350506001600160a01b0380851660009081526002602052604080822054928616825290205494509492505050565b6000806121e68385612f75565b905083811015611af8576040517f819afb9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611af8836001600160a01b0384166125aa565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036122d0576040517f8ac2de0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b60606000611af8836126a4565b6000814710156122f657506000919050565b600061230383600261249f565b601154604051919250660100000000000090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015612348573d6000803e3d6000fd5b506011546040805166010000000000009092046001600160a01b03168252602082018390527fe520273e4aa4a339e37bc204a23e5b9efd94c81719a6a4aed539c0f769e0f4cb910160405180910390a16012546001600160a01b03166108fc6123b18584612082565b6040518115909202916000818181858888f193505050501580156123d9573d6000803e3d6000fd5b506012547fe520273e4aa4a339e37bc204a23e5b9efd94c81719a6a4aed539c0f769e0f4cb906001600160a01b03166124128584612082565b604080516001600160a01b03909316835260208301919091520160405180910390a150600192915050565b60008260000361244f57506000610af1565b600061245b8385612f88565b9050826124688583612f9f565b14611af8576040517f69dc93ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008082116124da576040517fa0c6ea4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ca8385612f9f565b306000908152600260205260409020546124fe612700565b612507476122e4565b506011546040805166010000000000009092046001600160a01b031682526020820183905247908201527f5a003f93a29ab074e5d773f8520ce3e2e20cbf9ee23b3ce27da93a1eb865e99f906060016111e8565b60008181526001830160205260408120546125a257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610af1565b506000610af1565b600081815260018301602052604081205480156126935760006125ce600183612f62565b85549091506000906125e290600190612f62565b905081811461264757600086600001828154811061260257612602612fc1565b906000526020600020015490508087600001848154811061262557612625612fc1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061265857612658612fd7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610af1565b6000915050610af1565b5092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156126f457602002820191906000526020600020905b8154815260200190600101908083116126e0575b50505050509050919050565b6018805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061274257612742612fc1565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d89190612fed565b816001815181106127eb576127eb612fc1565b6001600160a01b03928316602091820292909201810191909152600b543060008181526002909352604090922054612827939190911690611b6f565b600a54306000818152600260205260408082205490517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363791ac947936128849391879190429060040161300a565b600060405180830381600087803b15801561289e57600080fd5b505af11580156128b2573d6000803e3d6000fd5b50506018805460ff19169055505050565b5080546128cf90612d8a565b6000825580601f106128df575050565b601f016020900490600052602060002090810190611ad091905b8082111561290d57600081556001016128f9565b5090565b6001600160a01b0381168114611ad057600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261294d57600080fd5b813567ffffffffffffffff8082111561296857612968612926565b604051601f8301601f19908116603f0116810190828211818310171561299057612990612926565b816040528381528660208588010111156129a957600080fd5b836020870160208301376000602085830101528094505050505092915050565b8015158114611ad057600080fd5b600080600080608085870312156129ed57600080fd5b8435935060208501356129ff81612911565b9250604085013567ffffffffffffffff811115612a1b57600080fd5b612a278782880161293c565b9250506060850135612a38816129c9565b939692955090935050565b6000815180845260005b81811015612a6957602081850181015186830182015201612a4d565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611af86020830184612a43565b60008060408385031215612aaf57600080fd5b8235612aba81612911565b946020939093013593505050565b600060208284031215612ada57600080fd5b8135611af881612911565b81511515815261016081016020830151612b03602084018215159052565b506040830151612b19604084018261ffff169052565b506060830151612b2f606084018261ffff169052565b506080830151612b4a60808401826001600160a01b03169052565b5060a0830151612b6560a08401826001600160a01b03169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b600080600060608486031215612bb957600080fd5b8335612bc481612911565b92506020840135612bd481612911565b929592945050506040919091013590565b60008060408385031215612bf857600080fd5b8235612c0381612911565b9150602083013567ffffffffffffffff811115612c1f57600080fd5b612c2b8582860161293c565b9150509250929050565b60008060408385031215612c4857600080fd5b8235612c5381612911565b91506020830135612c6381612911565b809150509250929050565b803561ffff81168114610b5a57600080fd5b60008060408385031215612c9357600080fd5b612c9c83612c6e565b9150612caa60208401612c6e565b90509250929050565b602081528151151560208201526001600160a01b03602083015116604082015260408201516060820152600060608301516080808401526120ca60a0840182612a43565b600081518084526020808501945080840160005b83811015612d305781516001600160a01b031687529582019590820190600101612d0b565b509495945050505050565b602081526000611af86020830184612cf7565b600060208284031215612d6057600080fd5b5035919050565b600060208284031215612d7957600080fd5b813560ff81168114611af857600080fd5b600181811c90821680612d9e57607f821691505b602082108103612dbe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610c0257600081815260208120601f850160051c81016020861015612deb5750805b601f850160051c820191505b81811015612e0a57828155600101612df7565b505050505050565b815167ffffffffffffffff811115612e2c57612e2c612926565b612e4081612e3a8454612d8a565b84612dc4565b602080601f831160018114612e755760008415612e5d5750858301515b600019600386901b1c1916600185901b178555612e0a565b600085815260208120601f198616915b82811015612ea457888601518255948401946001909101908401612e85565b5085821015612ec25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561269d5761269d612ed2565b61ffff818116838216028082169190828114612f2157612f21612ed2565b505092915050565b600060208284031215612f3b57600080fd5b8151611af8816129c9565b60ff818116838216029081169081811461269d5761269d612ed2565b81810381811115610af157610af1612ed2565b80820180821115610af157610af1612ed2565b8082028115828204841417610af157610af1612ed2565b600082612fbc57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215612fff57600080fd5b8151611af881612911565b85815284602082015260a06040820152600061302960a0830186612cf7565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220dadb91423072fa0c82baae71ecc597cf14da71ad3d2230791644ba18118647d764736f6c634300081100330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061029a5760003560e01c806384e10a9011610161578063bce24669116100ca578063d9caed1211610084578063de1c57f511610061578063de1c57f514610952578063f2fde38b14610972578063f8967ddc1461099257005b8063d9caed12146108cc578063dbdf2dc0146108ec578063dd62ed3e1461090c57005b8063cfc54848116100b2578063cfc5484814610875578063d0d41fe114610895578063d824d00a146108b557005b8063bce2466914610833578063bed16fa61461085357005b806395d89b411161011b578063a606b94a11610103578063a606b94a146107d3578063a9059cbb146107f3578063ac0f33861461081357005b806395d89b411461076d578063a457c2d7146107b357005b80638a8c523c116101495780638a8c523c146107035780638d1a4b28146107185780638da5cb5b1461074557005b806384e10a901461069857806385535cc5146106e357005b80633344819f1161020357806368616182116101bd57806370a08231116101a557806370a082311461062d578063715018a6146106635780638340f5491461067857005b806368616182146105ed578063705285141461060d57005b80633fda926e116101eb5780633fda926e1461055e578063503ac6491461057e57806352db64bf1461059357005b80633344819f1461051e578063395093511461053e57005b80631785de9711610254578063187a960c1161023c578063187a960c146103d057806323b872dd146104e2578063313ce5671461050257005b80631785de971461038657806318160ddd1461039d57005b8063095ea7b311610282578063095ea7b31461032757806309c95a1b1461034757806310cd58ce1461036657005b806304f9df6e146102a357806306fdde03146102d857005b366102a157005b005b3480156102af57600080fd5b506102c36102be3660046129d7565b6109a7565b60405190151581526020015b60405180910390f35b3480156102e457600080fd5b5060408051808201909152600781527f524545454545210000000000000000000000000000000000000000000000000060208201525b6040516102cf9190612a89565b34801561033357600080fd5b506102c3610342366004612a9c565b610ae0565b34801561035357600080fd5b506016545b6040519081526020016102cf565b34801561037257600080fd5b506102c3610381366004612ac8565b610af7565b34801561039257600080fd5b5060165415156102c3565b3480156103a957600080fd5b507f0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000610358565b3480156103dc57600080fd5b506104d56040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915250604080516101608101825260115460ff808216151583526101008083049091161515602084015261ffff620100008304811694840194909452640100000000820490931660608301526001600160a01b036601000000000000909104811660808301526012541660a082015260135460c082015260145460e08201526015549181019190915260165461012082015260175461014082015290565b6040516102cf9190612ae5565b3480156104ee57600080fd5b506102c36104fd366004612ba4565b610b5f565b34801561050e57600080fd5b50604051601281526020016102cf565b34801561052a57600080fd5b506102a1610539366004612ac8565b610bb0565b34801561054a57600080fd5b506102c3610559366004612a9c565b610c07565b34801561056a57600080fd5b506102c3610579366004612be5565b610c3d565b34801561058a57600080fd5b50601454610358565b34801561059f57600080fd5b506105d86105ae366004612c35565b6001600160a01b038083166000908152600260205260408082205492841682529020549250929050565b604080519283526020830191909152016102cf565b3480156105f957600080fd5b506102c3610608366004612ac8565b610d5a565b34801561061957600080fd5b506102c3610628366004612c80565b610dec565b34801561063957600080fd5b50610358610648366004612ac8565b6001600160a01b031660009081526002602052604090205490565b34801561066f57600080fd5b506102a1610ef8565b34801561068457600080fd5b506105d8610693366004612ba4565b610f0c565b3480156106a457600080fd5b50604080518082018252600080825260209182015281518083018352600f548082526010549183019182528351908152905191810191909152016102cf565b3480156106ef57600080fd5b506102a16106fe366004612ac8565b61110b565b34801561070f57600080fd5b506102a16111f3565b34801561072457600080fd5b50610738610733366004612ac8565b61121a565b6040516102cf9190612cb3565b34801561075157600080fd5b506000546040516001600160a01b0390911681526020016102cf565b34801561077957600080fd5b5060408051808201909152600681527f5245454545450000000000000000000000000000000000000000000000000000602082015261031a565b3480156107bf57600080fd5b506102c36107ce366004612a9c565b611325565b3480156107df57600080fd5b506105d86107ee366004612ba4565b61135b565b3480156107ff57600080fd5b506102c361080e366004612a9c565b6113ba565b34801561081f57600080fd5b506102c361082e366004612a9c565b6113c7565b34801561083f57600080fd5b506102c361084e366004612ac8565b611563565b34801561085f57600080fd5b50610868611607565b6040516102cf9190612d3b565b34801561088157600080fd5b506102c3610890366004612d4e565b611618565b3480156108a157600080fd5b506102a16108b0366004612ac8565b61162b565b3480156108c157600080fd5b5060145415156102c3565b3480156108d857600080fd5b506105d86108e7366004612ba4565b61169c565b3480156108f857600080fd5b50610358610907366004612d67565b61187b565b34801561091857600080fd5b50610358610927366004612c35565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095e57600080fd5b5061035861096d366004612d67565b611980565b34801561097e57600080fd5b506102a161098d366004612ac8565b611a7f565b34801561099e57600080fd5b506102a1611ad3565b60006109b1611aff565b6109bb6008611b43565b8511156109f4576040517fbb97cc9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ff600885611b4d565b610a245760405163664444ad60e01b8152600060048201526024015b60405180910390fd5b6040805160808101825283151581526001600160a01b0386811660208084018281528486018b8152606086018a8152600094855260079093529590922084518154935174ffffffffffffffffffffffffffffffffffffffffff199094169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100939094169290920292909217815592516001840155519091906002820190610ad29082612e12565b506001979650505050505050565b6000610aed338484611b6f565b5060015b92915050565b6000610b01611aff565b610b0c600883611b4d565b610b2c5760405163664444ad60e01b815260006004820152602401610a1b565b506001600160a01b0381166000908152600760205260409020805460ff19811660ff91821615908117909255165b919050565b6000610b6c848484611c1f565b6001600160a01b038416600090815260036020908152604080832033808552925290912054610ba6918691610ba19086612082565b611b6f565b5060019392505050565b610bbd335b600890611b4d565b610bda5760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040902054610c02908290309060016120d2565b505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aed918590610ba190866121d9565b6000610c47611aff565b610c52600884611b4d565b15610c735760405163664444ad60e01b815260016004820152602401610a1b565b610c7e600584611ae3565b50610c8a600884611ae3565b5060408051608081018252600081526001600160a01b0385166020820152908101610cb56008611b43565b815260209081018490526001600160a01b03858116600090815260078352604090819020845181549486015174ffffffffffffffffffffffffffffffffffffffffff199095169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff16176101009490931693909302919091178255820151600182015560608201516002820190610d4e9082612e12565b50600195945050505050565b6000610d64611aff565b610d6f600583611b4d565b15610d8557610d7f600583612222565b50610d92565b610d90600583611ae3565b505b7fff13a07d1a0c0980096f2ebe1a4fc999c3ef9c6821645b111dfb11b0510c98c282610dbf600582611b4d565b604080516001600160a01b03909316835290151560208301520160405180910390a1610af1600583611b4d565b6000610df6611aff565b6000610e028385612ee8565b905060058161ffff161115610e46576040517f0f9fba1b00000000000000000000000000000000000000000000000000000000815260056004820152602401610a1b565b6040805161ffff8681168083521515602083015285168183018190521515606082015290517f6d1a5cd8d32dd95c4f0526e254c43a26c5fa20faf091297983ca758e3c1c5c9f9181900360800190a1610ea0846064612f03565b6011805461ffff92909216620100000263ffff000019909216919091179055610eca836064612f03565b6011805461ffff929092166401000000000265ffff0000000019909216919091179055506001905092915050565b610f00611aff565b610f0a6000612237565b565b600080610f17612294565b6001600160a01b0385161580610f3457506001600160a01b038416155b15610f525760405163d92e233d60e01b815260040160405180910390fd5b82600003610f7357604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038516600090815260026020526040902054831115610fd6576001600160a01b038516600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482015260448101849052606401610a1b565b6000546001600160a01b03163314801590610ff15750333014155b1561101c57610fff33610bb5565b61101c5760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b0385811660009081526004602052604090205416611077576001600160a01b038581166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b61108485858560006120d2565b5050600f5461109390846121d9565b600f556040518381526001600160a01b038616907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020015b60405180910390a250506001600160a01b0380841660009081526002602052604080822054928516825290205461110360018055565b935093915050565b611113611aff565b6001600160a01b03811661113a5760405163d92e233d60e01b815260040160405180910390fd5b6011546001600160a01b038281166601000000000000909204161461119a57601180547fffffffffffff0000000000000000000000000000000000000000ffffffffffff1666010000000000006001600160a01b038416021790556111b3565b60405163c23f6ccb60e01b815260040160405180910390fd5b6040516001600160a01b03821681527f5c06d966572db101b61cacf1a095f31609e34873f11016fc5cb333651e969f67906020015b60405180910390a150565b6111fb611aff565b60115460ff161561120b57600080fd5b6011805460ff19166001179055565b60408051608081018252600080825260208201819052918101919091526060808201526001600160a01b038083166000908152600760209081526040918290208251608081018452815460ff81161515825261010090049094169184019190915260018101549183019190915260028101805460608401919061129c90612d8a565b80601f01602080910402602001604051908101604052809291908181526020018280546112c890612d8a565b80156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050815250509050919050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aed918590610ba19086612082565b600e5460009081906001600160a01b0316336001600160a01b0316146113a15761138433610bb5565b6113a15760405163ea8e4eb560e01b815260040160405180910390fd5b6113ae85858560016120d2565b91509150935093915050565b6000610aed338484611c1f565b60006113d1611aff565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810183905283906001600160a01b0382169063095ea7b3906044016020604051808303816000875af1158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d9190612f29565b50806001600160a01b03166323b872dd306114806000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af11580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190612f29565b60408051308152602081018690526001600160a01b0387168183015290519193507f034bacc4249aebc55a08898dcd85b04c71b5269fdf2324428b1ebd2dce757d96919081900360600190a15092915050565b600061156d611aff565b50600061157b600883611b4d565b1561159e5761158b600883612222565b9050611598600583612222565b506115b7565b60405163f201e6b360e01b815260040160405180910390fd5b6001600160a01b0382166000908152600760205260408120805474ffffffffffffffffffffffffffffffffffffffffff19168155600181018290559061160060028301826128c3565b5050919050565b606061161360086122d7565b905090565b6000611622611aff565b610af1826122e4565b611633611aff565b6001600160a01b03811661165a5760405163d92e233d60e01b815260040160405180910390fd5b6012546001600160a01b0382811691161461119a576012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556111b3565b6000806116a7612294565b6001600160a01b03851615806116c457506001600160a01b038416155b156116e25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03858116600090815260046020526040902054811690851614611738576040517f8363912d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361175957604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0384166000908152600260205260409020548311156117d6576001600160a01b03848116600090815260026020526040908190205490517f9ab73c700000000000000000000000000000000000000000000000000000000081529187166004830152602482015260448101849052606401610a1b565b6000546001600160a01b031633148015906117f15750333014155b8015611803575061180133610bb5565b155b156118215760405163f201e6b360e01b815260040160405180910390fd5b61182e84868560006120d2565b505060105461183d90846121d9565b6010556040518381526001600160a01b038616907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020016110cd565b6000611885611aff565b60135460ff8316036118aa5760405163c23f6ccb60e01b815260040160405180910390fd5b60ff8216156118e65760018260ff1610806118c8575060648260ff16115b156118e657604051632a9ffab760e21b815260040160405180910390fd5b6118f1826064612f46565b60ff166013819055611932906127109061192c907f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000009061243d565b9061249f565b60148190556013546040517f5b0331c3b76cf2ba9a12dbf0bdf966349c1b78ecedfd9ac8b99558992da5fe5892611970928252602082015260400190565b60405180910390a1505060145490565b600061198a611aff565b60155460ff8316036119af5760405163c23f6ccb60e01b815260040160405180910390fd5b60ff8216156119eb5760018260ff1610806119cd575060648260ff16115b156119eb57604051632a9ffab760e21b815260040160405180910390fd5b6119f6826064612f46565b60ff166015819055611a31906127109061192c907f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000009061243d565b60168190556015546040517f5b0331c3b76cf2ba9a12dbf0bdf966349c1b78ecedfd9ac8b99558992da5fe5892611a6f928252602082015260400190565b60405180910390a1505060165490565b611a87611aff565b6001600160a01b038116611ac7576040517fb8c2cc5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ad081612237565b50565b611adb611aff565b610f0a6124e6565b6000611af8836001600160a01b03841661255b565b9392505050565b6000546001600160a01b03163314610f0a576040517fa5653ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af1825490565b6001600160a01b03811660009081526001830160205260408120541515611af8565b6001600160a01b038316611b965760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611bbd5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c465760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611c6d5760405163d92e233d60e01b815260040160405180910390fd5b80600003611cbb57816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051611c1291815260200190565b6001600160a01b038316600090815260026020526040902054811115611d1e576001600160a01b038316600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482018390526044820152606401610a1b565b611d29600584611b4d565b80611d3a5750611d3a600583611b4d565b80611d585750600e546001600160a01b0316336001600160a01b0316145b15611d7157611d6a83838360006120d2565b5050505050565b60115460ff16158015611d8c5750611d8a600584611b4d565b155b8015611da05750611d9e600583611b4d565b155b15611dd7576040517fbcb8b8fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546000906001600160a01b038581169116148015611e055750600b546001600160a01b03848116911614155b600d549091506000906001600160a01b038581169116148015611e365750600b546001600160a01b03868116911614155b9050600082158015611e46575081155b80611e53575060185460ff165b90508015611e7257611e6886868660006120d2565b5050505050505050565b6000838015611e8c575060115462010000900461ffff1615155b15611eb857601154611eb1906127109061192c90889062010000900461ffff1661243d565b9050611efc565b828015611ed25750601154640100000000900461ffff1615155b15611efc57601154611ef9906127109061192c908890640100000000900461ffff1661243d565b90505b8015611f1f57611f0f87308360006120d2565b50611f1c90508582612082565b94505b838015611f2d575060135415155b8015611f3a575060145485115b15611f78576014546040517fcf6d21980000000000000000000000000000000000000000000000000000000081526004810191909152602401610a1b565b8380611f815750815b8015611f8e575060155415155b8015611fa357506001600160a01b0386163014155b8015611fbd5750600d546001600160a01b03878116911614155b1561202d576001600160a01b038616600090815260026020526040812054611fe590876121d9565b60165490915081111561202b576016546040517f78121d190000000000000000000000000000000000000000000000000000000081526004810191909152602401610a1b565b505b6017543060009081526002602052604090205411801561204a5750825b801561205d5750601154610100900460ff165b1561206a5761206a6124e6565b61207787878760006120d2565b505050505050505050565b6000828211156120be576040517f111429ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ca8385612f62565b949350505050565b6000808280156120f957506001600160a01b03861660009081526002602052604090205484115b15612141576001600160a01b038616600081815260026020526040908190205490516301b02f2d60e41b81526004810192909252602482015260448101859052606401610a1b565b6001600160a01b03808716600081815260026020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121a39088815260200190565b60405180910390a350506001600160a01b0380851660009081526002602052604080822054928616825290205494509492505050565b6000806121e68385612f75565b905083811015611af8576040517f819afb9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611af8836001600160a01b0384166125aa565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036122d0576040517f8ac2de0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b60606000611af8836126a4565b6000814710156122f657506000919050565b600061230383600261249f565b601154604051919250660100000000000090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015612348573d6000803e3d6000fd5b506011546040805166010000000000009092046001600160a01b03168252602082018390527fe520273e4aa4a339e37bc204a23e5b9efd94c81719a6a4aed539c0f769e0f4cb910160405180910390a16012546001600160a01b03166108fc6123b18584612082565b6040518115909202916000818181858888f193505050501580156123d9573d6000803e3d6000fd5b506012547fe520273e4aa4a339e37bc204a23e5b9efd94c81719a6a4aed539c0f769e0f4cb906001600160a01b03166124128584612082565b604080516001600160a01b03909316835260208301919091520160405180910390a150600192915050565b60008260000361244f57506000610af1565b600061245b8385612f88565b9050826124688583612f9f565b14611af8576040517f69dc93ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008082116124da576040517fa0c6ea4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ca8385612f9f565b306000908152600260205260409020546124fe612700565b612507476122e4565b506011546040805166010000000000009092046001600160a01b031682526020820183905247908201527f5a003f93a29ab074e5d773f8520ce3e2e20cbf9ee23b3ce27da93a1eb865e99f906060016111e8565b60008181526001830160205260408120546125a257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610af1565b506000610af1565b600081815260018301602052604081205480156126935760006125ce600183612f62565b85549091506000906125e290600190612f62565b905081811461264757600086600001828154811061260257612602612fc1565b906000526020600020015490508087600001848154811061262557612625612fc1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061265857612658612fd7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610af1565b6000915050610af1565b5092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156126f457602002820191906000526020600020905b8154815260200190600101908083116126e0575b50505050509050919050565b6018805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061274257612742612fc1565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d89190612fed565b816001815181106127eb576127eb612fc1565b6001600160a01b03928316602091820292909201810191909152600b543060008181526002909352604090922054612827939190911690611b6f565b600a54306000818152600260205260408082205490517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363791ac947936128849391879190429060040161300a565b600060405180830381600087803b15801561289e57600080fd5b505af11580156128b2573d6000803e3d6000fd5b50506018805460ff19169055505050565b5080546128cf90612d8a565b6000825580601f106128df575050565b601f016020900490600052602060002090810190611ad091905b8082111561290d57600081556001016128f9565b5090565b6001600160a01b0381168114611ad057600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261294d57600080fd5b813567ffffffffffffffff8082111561296857612968612926565b604051601f8301601f19908116603f0116810190828211818310171561299057612990612926565b816040528381528660208588010111156129a957600080fd5b836020870160208301376000602085830101528094505050505092915050565b8015158114611ad057600080fd5b600080600080608085870312156129ed57600080fd5b8435935060208501356129ff81612911565b9250604085013567ffffffffffffffff811115612a1b57600080fd5b612a278782880161293c565b9250506060850135612a38816129c9565b939692955090935050565b6000815180845260005b81811015612a6957602081850181015186830182015201612a4d565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611af86020830184612a43565b60008060408385031215612aaf57600080fd5b8235612aba81612911565b946020939093013593505050565b600060208284031215612ada57600080fd5b8135611af881612911565b81511515815261016081016020830151612b03602084018215159052565b506040830151612b19604084018261ffff169052565b506060830151612b2f606084018261ffff169052565b506080830151612b4a60808401826001600160a01b03169052565b5060a0830151612b6560a08401826001600160a01b03169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b600080600060608486031215612bb957600080fd5b8335612bc481612911565b92506020840135612bd481612911565b929592945050506040919091013590565b60008060408385031215612bf857600080fd5b8235612c0381612911565b9150602083013567ffffffffffffffff811115612c1f57600080fd5b612c2b8582860161293c565b9150509250929050565b60008060408385031215612c4857600080fd5b8235612c5381612911565b91506020830135612c6381612911565b809150509250929050565b803561ffff81168114610b5a57600080fd5b60008060408385031215612c9357600080fd5b612c9c83612c6e565b9150612caa60208401612c6e565b90509250929050565b602081528151151560208201526001600160a01b03602083015116604082015260408201516060820152600060608301516080808401526120ca60a0840182612a43565b600081518084526020808501945080840160005b83811015612d305781516001600160a01b031687529582019590820190600101612d0b565b509495945050505050565b602081526000611af86020830184612cf7565b600060208284031215612d6057600080fd5b5035919050565b600060208284031215612d7957600080fd5b813560ff81168114611af857600080fd5b600181811c90821680612d9e57607f821691505b602082108103612dbe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610c0257600081815260208120601f850160051c81016020861015612deb5750805b601f850160051c820191505b81811015612e0a57828155600101612df7565b505050505050565b815167ffffffffffffffff811115612e2c57612e2c612926565b612e4081612e3a8454612d8a565b84612dc4565b602080601f831160018114612e755760008415612e5d5750858301515b600019600386901b1c1916600185901b178555612e0a565b600085815260208120601f198616915b82811015612ea457888601518255948401946001909101908401612e85565b5085821015612ec25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561269d5761269d612ed2565b61ffff818116838216028082169190828114612f2157612f21612ed2565b505092915050565b600060208284031215612f3b57600080fd5b8151611af8816129c9565b60ff818116838216029081169081811461269d5761269d612ed2565b81810381811115610af157610af1612ed2565b80820180821115610af157610af1612ed2565b8082028115828204841417610af157610af1612ed2565b600082612fbc57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215612fff57600080fd5b8151611af881612911565b85815284602082015260a06040820152600061302960a0830186612cf7565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220dadb91423072fa0c82baae71ecc597cf14da71ad3d2230791644ba18118647d764736f6c63430008110033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

17644:21595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37327:540;;;;;;;;;;-1:-1:-1;37327:540:0;;;;;:::i;:::-;;:::i;:::-;;;2136:14:1;;2129:22;2111:41;;2099:2;2084:18;37327:540:0;;;;;;;;22108:97;;;;;;;;;;-1:-1:-1;22193:4:0;;;;;;;;;;;;;;;;;22108:97;;;;;;;:::i;23076:189::-;;;;;;;;;;-1:-1:-1;23076:189:0;;;;;:::i;:::-;;:::i;38975:124::-;;;;;;;;;;-1:-1:-1;39071:20:0;;38975:124;;;3282:25:1;;;3270:2;3255:18;38975:124:0;3136:177:1;37017:302:0;;;;;;;;;;-1:-1:-1;37017:302:0;;;;;:::i;:::-;;:::i;39107:129::-;;;;;;;;;;-1:-1:-1;39204:20:0;;:24;;39107:129;;22427:115;;;;;;;;;;-1:-1:-1;22522:12:0;22427:115;;32143:116;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32240:11:0;;;;;;;;32247:4;32240:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32240:11:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32143:116;;;;;;;;:::i;24140:312::-;;;;;;;;;;-1:-1:-1;24140:312:0;;;;;:::i;:::-;;:::i;22322:97::-;;;;;;;;;;-1:-1:-1;22322:97:0;;18517:2;5650:36:1;;5638:2;5623:18;22322:97:0;5508:184:1;38141:227:0;;;;;;;;;;-1:-1:-1;38141:227:0;;;;;:::i;:::-;;:::i;23626:244::-;;;;;;;;;;-1:-1:-1;23626:244:0;;;;;:::i;:::-;;:::i;36111:491::-;;;;;;;;;;-1:-1:-1;36111:491:0;;;;;:::i;:::-;;:::i;38718:118::-;;;;;;;;;;-1:-1:-1;38811:17:0;;38718:118;;38376:222;;;;;;;;;;-1:-1:-1;38376:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;38550:18:0;;;38497:7;38550:18;;;:9;:18;;;;;;;38570:19;;;;;;;;38376:222;;;;;;;;;;6726:25:1;;;6782:2;6767:18;;6760:34;;;;6699:18;38376:222:0;6552:248:1;30286:429:0;;;;;;;;;;-1:-1:-1;30286:429:0;;;;;:::i;:::-;;:::i;27567:428::-;;;;;;;;;;-1:-1:-1;27567:428:0;;;;;:::i;:::-;;:::i;22550:136::-;;;;;;;;;;-1:-1:-1;22550:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;22659:19:0;22632:7;22659:19;;;:9;:19;;;;;;;22550:136;10170:103;;;;;;;;;;;;;:::i;33203:1062::-;;;;;;;;;;-1:-1:-1;33203:1062:0;;;;;:::i;:::-;;:::i;38606:104::-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;38690:12:0;;;;;;;38697:5;38690:12;;;;;;;;;;;;38606:104;;7420:32:1;;;7490:24;;7468:20;;;7461:54;;;;7393:18;38606:104:0;7230:291:1;26792:372:0;;;;;;;;;;-1:-1:-1;26792:372:0;;;;;:::i;:::-;;:::i;21967:133::-;;;;;;;;;;;;;:::i;37875:113::-;;;;;;;;;;-1:-1:-1;37875:113:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9938:87::-;;;;;;;;;;-1:-1:-1;9984:7:0;10011:6;9938:87;;-1:-1:-1;;;;;10011:6:0;;;8255:74:1;;8243:2;8228:18;9938:87:0;8109:226:1;22213:101:0;;;;;;;;;;-1:-1:-1;22300:6:0;;;;;;;;;;;;;;;;;22213:101;;23878:254;;;;;;;;;;-1:-1:-1;23878:254:0;;;;;:::i;:::-;;:::i;29345:394::-;;;;;;;;;;-1:-1:-1;29345:394:0;;;;;:::i;:::-;;:::i;22694:195::-;;;;;;;;;;-1:-1:-1;22694:195:0;;;;;:::i;:::-;;:::i;32267:382::-;;;;;;;;;;-1:-1:-1;32267:382:0;;;;;:::i;:::-;;:::i;36610:399::-;;;;;;;;;;-1:-1:-1;36610:399:0;;;;;:::i;:::-;;:::i;37996:137::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31535:150::-;;;;;;;;;;-1:-1:-1;31535:150:0;;;;;:::i;:::-;;:::i;27172:366::-;;;;;;;;;;-1:-1:-1;27172:366:0;;;;;:::i;:::-;;:::i;38844:123::-;;;;;;;;;;-1:-1:-1;38938:17:0;;:21;;38844:123;;35032:1071;;;;;;;;;;-1:-1:-1;35032:1071:0;;;;;:::i;:::-;;:::i;28003:651::-;;;;;;;;;;-1:-1:-1;28003:651:0;;;;;:::i;:::-;;:::i;22897:171::-;;;;;;;;;;-1:-1:-1;22897:171:0;;;;;:::i;:::-;-1:-1:-1;;;;;23031:19:0;;;23004:7;23031:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;22897:171;28662:675;;;;;;;;;;-1:-1:-1;28662:675:0;;;;;:::i;:::-;;:::i;10281:197::-;;;;;;;;;;-1:-1:-1;10281:197:0;;;;;:::i;:::-;;:::i;30723:79::-;;;;;;;;;;;;;:::i;37327:540::-;37490:4;9897:13;:11;:13::i;:::-;37523:18:::1;:9;:16;:18::i;:::-;37517:3;:24;37513:79;;;37565:15;;;;;;;;;;;;;;37513:79;37607:28;:9;37626:8:::0;37607:18:::1;:28::i;:::-;37602:82;;37659:13;::::0;-1:-1:-1;;;37659:13:0;;37666:5:::1;37659:13;::::0;::::1;2111:41:1::0;2084:18;;37659:13:0::1;;;;;;;;37602:82;37712:125;::::0;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;;;;;37712:125:0;;::::1;;::::0;;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;37694:15:0;;;:5:::1;:15:::0;;;;;;;:143;;;;;;-1:-1:-1;;37694:143:0;;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;37694:143:0;::::1;::::0;;37712:125;;37694:15;:143:::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;37855:4:0::1;::::0;37327:540;-1:-1:-1;;;;;;;37327:540:0:o;23076:189::-;23177:4;23194:41;9509:10;23217:8;23227:7;23194:8;:41::i;:::-;-1:-1:-1;23253:4:0;23076:189;;;;;:::o;37017:302::-;37108:4;9897:13;:11;:13::i;:::-;37136:28:::1;:9;37155:8:::0;37136:18:::1;:28::i;:::-;37131:82;;37188:13;::::0;-1:-1:-1;;;37188:13:0;;37195:5:::1;37188:13;::::0;::::1;2111:41:1::0;2084:18;;37188:13:0::1;1971:187:1::0;37131:82:0::1;-1:-1:-1::0;;;;;;37249:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:22;;-1:-1:-1;;37223:48:0;::::1;37249:22;::::0;;::::1;37248:23;37223:48:::0;;::::1;::::0;;;37289:22;9921:1:::1;37017:302:::0;;;:::o;24140:312::-;24274:4;24291:39;24301:7;24310:10;24322:7;24291:9;:39::i;:::-;-1:-1:-1;;;;;24374:20:0;;;;;;:11;:20;;;;;;;;9509:10;24374:34;;;;;;;;;24342:80;;24351:7;;24374:47;;24413:7;24374:38;:47::i;:::-;24342:8;:80::i;:::-;-1:-1:-1;24440:4:0;24140:312;;;;;:::o;38141:227::-;38205:32;9509:10;38224:12;38205:9;;:18;:32::i;:::-;38200:88;;38261:15;;-1:-1:-1;;;38261:15:0;;;;;;;;;;;38200:88;-1:-1:-1;;;;;38337:16:0;;;;;;:9;:16;;;;;;38298:62;;38315:5;;38330:4;;38355;38298:16;:62::i;:::-;;;38141:227;:::o;23626:244::-;9509:10;23740:4;23789:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23789:34:0;;;;;;;;;;23740:4;;23757:83;;23780:7;;23789:50;;23828:10;23789:38;:50::i;36111:491::-;36229:4;9897:13;:11;:13::i;:::-;36256:28:::1;:9;36275:8:::0;36256:18:::1;:28::i;:::-;36252:80;;;36308:12;::::0;-1:-1:-1;;;36308:12:0;;36315:4:::1;36308:12;::::0;::::1;2111:41:1::0;2084:18;;36308:12:0::1;1971:187:1::0;36252:80:0::1;36342:29;:15;36362:8:::0;36342:19:::1;:29::i;:::-;-1:-1:-1::0;36382:23:0::1;:9;36396:8:::0;36382:13:::1;:23::i;:::-;-1:-1:-1::0;36434:138:0::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;36434:138:0;;-1:-1:-1;;;;;36434:138:0;::::1;;::::0;::::1;::::0;;;;36459:18:::1;:9;:16;:18::i;:::-;36434:138:::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;36416:15:0;;::::1;-1:-1:-1::0;36416:15:0;;;:5:::1;:15:::0;;;;;;;:156;;;;;;::::1;::::0;-1:-1:-1;;36416:156:0;;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;36416:156:0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;36590:4:0::1;::::0;36111:491;-1:-1:-1;;;;;36111:491:0:o;30286:429::-;30388:4;9897:13;:11;:13::i;:::-;30415:34:::1;:15;30440:8:::0;30415:24:::1;:34::i;:::-;30411:161;;;30466:32;:15;30489:8:::0;30466:22:::1;:32::i;:::-;;30411:161;;;30531:29;:15;30551:8:::0;30531:19:::1;:29::i;:::-;;30411:161;30587:68;30610:8:::0;30620:34:::1;:15;30610:8:::0;30620:24:::1;:34::i;:::-;30587:68;::::0;;-1:-1:-1;;;;;12386:55:1;;;12368:74;;12485:14;;12478:22;12473:2;12458:18;;12451:50;12341:18;30587:68:0::1;;;;;;;30673:34;:15;30698:8:::0;30673:24:::1;:34::i;27567:428::-:0;27682:4;9897:13;:11;:13::i;:::-;27705:15:::1;27723:18;27733:8:::0;27723:7;:18:::1;:::i;:::-;27705:36;;27767:1;27756:8;:12;;;27752:66;;;27792:14;::::0;::::1;::::0;;27804:1:::1;27792:14;::::0;::::1;13027:38:1::0;13000:18;;27792:14:0::1;12874:197:1::0;27752:66:0::1;27833:54;::::0;;27851:11:::1;::::0;;::::1;13316:34:1::0;;;27851:11:0;;13381:2:1;13366:18;;13359:50;27874:12:0;::::1;13425:18:1::0;;;13418:43;;;27874:12:0;;13492:2:1;13477:18;;13470:50;27833:54:0;;::::1;::::0;;;;13278:3:1;27833:54:0;;::::1;27912:13;:7:::0;27922:3:::1;27912:13;:::i;:::-;27898:4;:27:::0;;::::1;::::0;;;::::1;::::0;::::1;-1:-1:-1::0;;27898:27:0;;::::1;::::0;;;::::1;::::0;;27951:14:::1;:8:::0;27962:3:::1;27951:14;:::i;:::-;27936:4;:29:::0;;::::1;::::0;;;::::1;::::0;::::1;-1:-1:-1::0;;27936:29:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;27567:428:0;;;;:::o;10170:103::-;9897:13;:11;:13::i;:::-;10235:30:::1;10262:1;10235:18;:30::i;:::-;10170:103::o:0;33203:1062::-;33346:7;33355;15549:21;:19;:21::i;:::-;-1:-1:-1;;;;;33385:21:0;::::1;::::0;;:47:::1;;-1:-1:-1::0;;;;;;33410:22:0;::::1;::::0;33385:47:::1;33381:100;;;33456:13;;-1:-1:-1::0;;;33456:13:0::1;;;;;;;;;;;33381:100;33495:7;33506:1;33495:12:::0;33491:64:::1;;33531:12;;-1:-1:-1::0;;;33531:12:0::1;;;;;;;;;;;33491:64;-1:-1:-1::0;;;;;33579:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;33569:28;::::1;33565:118;;;-1:-1:-1::0;;;;;33643:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;33621:50;;-1:-1:-1;;;33621:50:0;;::::1;::::0;::::1;13983:74:1::0;;;;14073:18;;;14066:34;14116:18;;;14109:34;;;13956:18;;33621:50:0::1;13781:368:1::0;33565:118:0::1;9984:7:::0;10011:6;-1:-1:-1;;;;;10011:6:0;9509:10;33697:23:::1;::::0;::::1;::::0;:56:::1;;-1:-1:-1::0;9509:10:0;33748:4:::1;33724:29;;33697:56;33693:193;;;33775:41;9509:10:::0;33802:12:::1;9429:98:::0;33775:41:::1;33770:105;;33844:15;;-1:-1:-1::0;;;33844:15:0::1;;;;;;;;;;;33770:105;-1:-1:-1::0;;;;;33900:17:0;;::::1;33929:1;33900:17:::0;;;:8:::1;:17;::::0;;;;;::::1;33896:92;;-1:-1:-1::0;;;;;33948:17:0;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:28;;-1:-1:-1;;33948:28:0::1;::::0;;::::1;::::0;;;::::1;::::0;;33896:92:::1;34047:51;34064:7;34073:8;34083:7;34092:5;34047:16;:51::i;:::-;-1:-1:-1::0;;34127:5:0::1;:15:::0;:28:::1;::::0;34147:7;34127:19:::1;:28::i;:::-;34109:5;:46:::0;34171:27:::1;::::0;3282:25:1;;;-1:-1:-1;;;;;34171:27:0;::::1;::::0;::::1;::::0;3270:2:1;3255:18;34171:27:0::1;;;;;;;;-1:-1:-1::0;;;;;;;34217:18:0;;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;34237:19;;::::1;::::0;;;;;15593:20;15365:1;15836:22;;15787:79;15593:20;33203:1062;;;;;;:::o;26792:372::-;9897:13;:11;:13::i;:::-;-1:-1:-1;;;;;26885:22:0;::::1;26881:75;;26931:13;;-1:-1:-1::0;;;26931:13:0::1;;;;;;;;;;;26881:75;26970:4;:17:::0;-1:-1:-1;;;;;26970:29:0;;::::1;:17:::0;;;::::1;;:29;26966:150;;27016:4;:37:::0;;;::::1;::::0;-1:-1:-1;;;;;27016:37:0;::::1;;;::::0;;26966:150:::1;;;27093:11;;-1:-1:-1::0;;;27093:11:0::1;;;;;;;;;;;26966:150;27131:25;::::0;-1:-1:-1;;;;;8273:55:1;;8255:74;;27131:25:0::1;::::0;8243:2:1;8228:18;27131:25:0::1;;;;;;;;26792:372:::0;:::o;21967:133::-;9897:13;:11;:13::i;:::-;22026:4:::1;:19:::0;::::1;;22022:33;;;22047:8;::::0;::::1;22022:33;22066:4;:26:::0;;-1:-1:-1;;22066:26:0::1;22088:4;22066:26;::::0;;21967:133::o;37875:113::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37965:15:0;;;;;;;:5;:15;;;;;;;;;37958:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37875:113;;;:::o;23878:254::-;9509:10;23997:4;24046:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;24046:34:0;;;;;;;;;;23997:4;;24014:88;;24037:7;;24046:55;;24085:15;24046:38;:55::i;29345:394::-;29541:6;;29476:7;;;;-1:-1:-1;;;;;29541:6:0;9509:10;-1:-1:-1;;;;;29525:22:0;;29521:150;;29569:32;9509:10;29588:12;9429:98;29569:32;29564:96;;29629:15;;-1:-1:-1;;;29629:15:0;;;;;;;;;;;29564:96;29688:43;29705:5;29712:3;29717:7;29726:4;29688:16;:43::i;:::-;29681:50;;;;29345:394;;;;;;:::o;22694:195::-;22798:4;22815:44;9509:10;22839;22851:7;22815:9;:44::i;32267:382::-;32380:12;9897:13;:11;:13::i;:::-;32445:37:::1;::::0;;;;32467:4:::1;32445:37;::::0;::::1;14328:74:1::0;14418:18;;;14411:34;;;32427:6:0;;-1:-1:-1;;;;;32445:13:0;::::1;::::0;::::1;::::0;14301:18:1;;32445:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32503:5;-1:-1:-1::0;;;;;32503:18:0::1;;32530:4;32537:7;9984::::0;10011:6;-1:-1:-1;;;;;10011:6:0;;9938:87;32537:7:::1;32503:51;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;14987:15:1;;;32503:51:0::1;::::0;::::1;14969:34:1::0;15039:15;;15019:18;;;15012:43;15071:18;;;15064:34;;;14881:18;;32503:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32570:46;::::0;;32593:4:::1;15372:34:1::0;;15437:2;15422:18;;15415:34;;;-1:-1:-1;;;;;15485:15:1;;15465:18;;;15458:43;32570:46:0;;32493:61;;-1:-1:-1;32570:46:0::1;::::0;;;;;15299:2:1;32570:46:0;;::::1;32627:14;32267:382:::0;;;;:::o;36610:399::-;36692:12;9897:13;:11;:13::i;:::-;-1:-1:-1;36727:5:0::1;36747:28;:9;36766:8:::0;36747:18:::1;:28::i;:::-;36743:201;;;36802:26;:9;36819:8:::0;36802:16:::1;:26::i;:::-;36792:36:::0;-1:-1:-1;36843:32:0::1;:15;36866:8:::0;36843:22:::1;:32::i;:::-;;36743:201;;;36915:17;;-1:-1:-1::0;;;36915:17:0::1;;;;;;;;;;;36743:201;-1:-1:-1::0;;;;;36961:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;36954:22;;-1:-1:-1;;36954:22:0;;;;;::::1;::::0;;;36961:15;36954:22:::1;;::::0;::::1;36961:15:::0;36954:22:::1;:::i;:::-;;;36610:399:::0;;;:::o;37996:137::-;38052:16;38094:31;38115:9;38094:20;:31::i;:::-;38087:38;;37996:137;:::o;31535:150::-;31622:12;9897:13;:11;:13::i;:::-;31660:17:::1;31669:7;31660:8;:17::i;27172:366::-:0;9897:13;:11;:13::i;:::-;-1:-1:-1;;;;;27263:22:0;::::1;27259:75;;27309:13;;-1:-1:-1::0;;;27309:13:0::1;;;;;;;;;;;27259:75;27348:15:::0;;-1:-1:-1;;;;;27348:27:0;;::::1;:15:::0;::::1;:27;27344:146;;27392:15:::0;:35;;-1:-1:-1;;27392:35:0::1;-1:-1:-1::0;;;;;27392:35:0;::::1;;::::0;;27344:146:::1;;35032:1071:::0;35177:7;35186;15549:21;:19;:21::i;:::-;-1:-1:-1;;;;;35216:21:0;::::1;::::0;;:47:::1;;-1:-1:-1::0;;;;;;35241:22:0;::::1;::::0;35216:47:::1;35212:100;;;35287:13;;-1:-1:-1::0;;;35287:13:0::1;;;;;;;;;;;35212:100;-1:-1:-1::0;;;;;35326:17:0;;::::1;;::::0;;;:8:::1;:17;::::0;;;;;;::::1;:29:::0;;::::1;;35322:88;;35379:19;;;;;;;;;;;;;;35322:88;35424:7;35435:1;35424:12:::0;35420:64:::1;;35460:12;;-1:-1:-1::0;;;35460:12:0::1;;;;;;;;;;;35420:64;-1:-1:-1::0;;;;;35508:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;35498:29;::::1;35494:127;;;-1:-1:-1::0;;;;;35580:19:0;;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;35551:58;;::::1;::::0;;14001:55:1;;;35551:58:0::1;::::0;::::1;13983:74:1::0;14073:18;;;14066:34;14116:18;;;14109:34;;;13956:18;;35551:58:0::1;13781:368:1::0;35494:127:0::1;9984:7:::0;10011:6;-1:-1:-1;;;;;10011:6:0;9509:10;35635:23:::1;::::0;::::1;::::0;:70:::1;;-1:-1:-1::0;9509:10:0;35700:4:::1;35676:29;;35635:70;:129;;;;-1:-1:-1::0;35723:41:0::1;9509:10:::0;35750:12:::1;9429:98:::0;35723:41:::1;35722:42;35635:129;35631:186;;;35788:17;;-1:-1:-1::0;;;35788:17:0::1;;;;;;;;;;;35631:186;35885:51;35902:8;35912:7;35921;35930:5;35885:16;:51::i;:::-;-1:-1:-1::0;;35965:15:0;;:28:::1;::::0;35985:7;35965:19:::1;:28::i;:::-;35947:15:::0;:46;36009:27:::1;::::0;3282:25:1;;;-1:-1:-1;;;;;36009:27:0;::::1;::::0;::::1;::::0;3270:2:1;3255:18;36009:27:0::1;3136:177:1::0;28003:651:0;28091:7;9897:13;:11;:13::i;:::-;28133:18;;28121:30:::1;::::0;::::1;::::0;28117:81:::1;;28175:11;;-1:-1:-1::0;;;28175:11:0::1;;;;;;;;;;;28117:81;28243:13;::::0;::::1;::::0;28239:187:::1;;28338:1;28327:8;:12;;;:30;;;;28354:3;28343:8;:14;;;28327:30;28323:92;;;28385:14;;-1:-1:-1::0;;;28385:14:0::1;;;;;;;;;;;28323:92;28457:14;:8:::0;28468:3:::1;28457:14;:::i;:::-;28436:35;;:18:::0;:35;;;28502:45:::1;::::0;28543:3:::1;::::0;28502:36:::1;::::0;:12:::1;::::0;:16:::1;:36::i;:::-;:40:::0;::::1;:45::i;:::-;28482:17:::0;:65;;;28573:18;;28563:48:::1;::::0;::::1;::::0;::::1;::::0;6726:25:1;;6782:2;6767:18;;6760:34;6714:2;6699:18;;6552:248;28563:48:0::1;;;;;;;;-1:-1:-1::0;;28629:17:0;;;28003:651::o;28662:675::-;28753:7;9897:13;:11;:13::i;:::-;28795:21;;28783:33:::1;::::0;::::1;::::0;28779:84:::1;;28840:11;;-1:-1:-1::0;;;28840:11:0::1;;;;;;;;;;;28779:84;28908:13;::::0;::::1;::::0;28904:187:::1;;29003:1;28992:8;:12;;;:30;;;;29019:3;29008:8;:14;;;28992:30;28988:92;;;29050:14;;-1:-1:-1::0;;;29050:14:0::1;;;;;;;;;;;28988:92;29125:14;:8:::0;29136:3:::1;29125:14;:::i;:::-;29101:38;;:21:::0;:38;;;29173:48:::1;::::0;29217:3:::1;::::0;29173:39:::1;::::0;:12:::1;::::0;:16:::1;:39::i;:48::-;29150:20:::0;:71;;;29247:21;;29237:54:::1;::::0;::::1;::::0;::::1;::::0;6726:25:1;;6782:2;6767:18;;6760:34;6714:2;6699:18;;6552:248;29237:54:0::1;;;;;;;;-1:-1:-1::0;;29309:20:0;;;28662:675::o;10281:197::-;9897:13;:11;:13::i;:::-;-1:-1:-1;;;;;10366:22:0;::::1;10362:69;;10397:34;;;;;;;;;;;;;;10362:69;10442:28;10461:8;10442:18;:28::i;:::-;10281:197:::0;:::o;30723:79::-;9897:13;:11;:13::i;:::-;30780:14:::1;:12;:14::i;12341:152::-:0;12411:4;12435:50;12440:3;-1:-1:-1;;;;;12460:23:0;;12435:4;:50::i;:::-;12428:57;12341:152;-1:-1:-1;;;12341:152:0:o;10033:129::-;9984:7;10011:6;-1:-1:-1;;;;;10011:6:0;9509:10;10093:23;10089:65;;10125:29;;;;;;;;;;;;;;12842:117;12905:7;12932:19;12940:3;12005:18;;11922:109;12667:167;-1:-1:-1;;;;;12801:23:0;;12747:4;11882:19;;;:12;;;:19;;;;;;:24;;12771:55;11785:129;23273:345;-1:-1:-1;;;;;23408:20:0;;23404:46;;23437:13;;-1:-1:-1;;;23437:13:0;;;;;;;;;;;23404:46;-1:-1:-1;;;;;23465:22:0;;23461:48;;23496:13;;-1:-1:-1;;;23496:13:0;;;;;;;;;;;23461:48;-1:-1:-1;;;;;23520:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;23575:35;;3282:25:1;;;23575:35:0;;3255:18:1;23575:35:0;;;;;;;;23273:345;;;:::o;24460:2324::-;-1:-1:-1;;;;;24581:19:0;;24577:45;;24609:13;;-1:-1:-1;;;24609:13:0;;;;;;;;;;;24577:45;-1:-1:-1;;;;;24637:17:0;;24633:43;;24663:13;;-1:-1:-1;;;24663:13:0;;;;;;;;;;;24633:43;24701:7;24712:1;24701:12;24697:94;;24751:3;-1:-1:-1;;;;;24735:23:0;24744:5;-1:-1:-1;;;;;24735:23:0;;24756:1;24735:23;;;;3282:25:1;;3270:2;3255:18;;3136:177;24697:94:0;-1:-1:-1;;;;;24817:16:0;;;;;;:9;:16;;;;;;24807:26;;24803:112;;;-1:-1:-1;;;;;24886:16:0;;;;;;:9;:16;;;;;;;;24857:46;;-1:-1:-1;;;24857:46:0;;;;;13983:74:1;;;;14073:18;;;14066:34;;;14116:18;;;14109:34;13956:18;;24857:46:0;13781:368:1;24803:112:0;24931:31;:15;24956:5;24931:24;:31::i;:::-;:78;;;-1:-1:-1;24980:29:0;:15;25005:3;24980:24;:29::i;:::-;24931:117;;;-1:-1:-1;25042:6:0;;-1:-1:-1;;;;;25042:6:0;9509:10;-1:-1:-1;;;;;25026:22:0;;24931:117;24927:225;;;25075:44;25092:5;25099:3;25104:7;25113:5;25075:16;:44::i;:::-;;;24460:2324;;;:::o;24927:225::-;25169:4;:19;;;25168:20;:70;;;;-1:-1:-1;25207:31:0;:15;25232:5;25207:24;:31::i;:::-;25206:32;25168:70;:117;;;;-1:-1:-1;25256:29:0;:15;25281:3;25256:24;:29::i;:::-;25255:30;25168:117;25164:184;;;25319:17;;;;;;;;;;;;;;25164:184;25380:5;;25360:8;;-1:-1:-1;;;;;25371:14:0;;;25380:5;;25371:14;:32;;;;-1:-1:-1;25396:7:0;;-1:-1:-1;;;;;25389:14:0;;;25396:7;;25389:14;;25371:32;25433:5;;25360:43;;-1:-1:-1;25414:9:0;;-1:-1:-1;;;;;25426:12:0;;;25433:5;;25426:12;:32;;;;-1:-1:-1;25451:7:0;;-1:-1:-1;;;;;25442:16:0;;;25451:7;;25442:16;;25426:32;25414:44;;25469:8;25482:3;25481:4;:13;;;;;25490:4;25489:5;25481:13;25480:25;;;-1:-1:-1;25499:6:0;;;;25480:25;25469:36;;25533:3;25529:101;;;25553:44;25570:5;25577:3;25582:7;25591:5;25553:16;:44::i;:::-;;;25612:7;;;24460:2324;;;:::o;25529:101::-;25642:11;25672:3;:22;;;;-1:-1:-1;25679:4:0;:11;;;;;;:15;;25672:22;25668:207;;;25729:4;:11;25717:33;;25746:3;;25717:24;;:7;;25729:11;;;;;25717;:24::i;:33::-;25711:39;;25668:207;;;25782:4;:24;;;;-1:-1:-1;25790:4:0;:12;;;;;;:16;;25782:24;25778:97;;;25841:4;:12;25829:34;;25859:3;;25829:25;;:7;;25841:12;;;;;25829:11;:25::i;:34::-;25823:40;;25778:97;25891:7;;25887:131;;25915:50;25932:5;25947:4;25954:3;25959:5;25915:16;:50::i;:::-;-1:-1:-1;25990:16:0;;-1:-1:-1;25990:7:0;26002:3;25990:11;:16::i;:::-;25980:26;;25887:131;26034:3;:43;;;;-1:-1:-1;26055:18:0;;:22;;26034:43;:88;;;;-1:-1:-1;26105:17:0;;26095:27;;26034:88;26030:167;;;26167:17;;26156:29;;;;;;;;3282:25:1;;;;3255:18;;26156:29:0;3136:177:1;26030:167:0;26214:3;:10;;;;26221:3;26214:10;26213:55;;;;-1:-1:-1;26243:21:0;;:25;;26213:55;:92;;;;-1:-1:-1;;;;;;26285:20:0;;26300:4;26285:20;;26213:92;:121;;;;-1:-1:-1;26329:5:0;;-1:-1:-1;;;;;26322:12:0;;;26329:5;;26322:12;;26213:121;26209:341;;;-1:-1:-1;;;;;26382:14:0;;26361:18;26382:14;;;:9;:14;;;;;;:27;;26401:7;26382:18;:27::i;:::-;26440:20;;26361:48;;-1:-1:-1;26427:33:0;;26424:115;;;26502:20;;26488:35;;;;;;;;3282:25:1;;;;3255:18;;26488:35:0;3136:177:1;26424:115:0;26346:204;26209:341;26593:18;;26584:4;26566:24;;;;:9;:24;;;;;;:45;:66;;;;;26628:4;26566:66;:101;;;;-1:-1:-1;26650:4:0;:17;;;;;;26566:101;26562:158;;;26694:14;:12;:14::i;:::-;26732:44;26749:5;26756:3;26761:7;26770:5;26732:16;:44::i;:::-;;;24566:2218;;;;24460:2324;;;:::o;14533:208::-;14591:7;14619:1;14615;:5;14611:76;;;14644:31;;;;;;;;;;;;;;14611:76;14697:9;14709:5;14713:1;14709;:5;:::i;:::-;14697:17;14533:208;-1:-1:-1;;;;14533:208:0:o;29747:531::-;29900:7;29909;29939:6;:36;;;;-1:-1:-1;;;;;;29959:16:0;;;;;;:9;:16;;;;;;29949:26;;29939:36;29935:122;;;-1:-1:-1;;;;;30019:16:0;;;;;;:9;:16;;;;;;;;29999:46;;-1:-1:-1;;;29999:46:0;;;;;13983:74:1;;;;14073:18;;;14066:34;14116:18;;;14109:34;;;13956:18;;29999:46:0;13781:368:1;29935:122:0;-1:-1:-1;;;;;30092:16:0;;;;;;;:9;:16;;;;;;:27;;;;;;;30134:14;;;;;;;;;;:25;;;;;;30189:29;;;;;;30112:7;3282:25:1;;3270:2;3255:18;;3136:177;30189:29:0;;;;;;;;-1:-1:-1;;;;;;;30237:16:0;;;;;;;:9;:16;;;;;;;30255:14;;;;;;;;29747:531;;;;;;;:::o;14321:204::-;14379:7;;14411:5;14415:1;14411;:5;:::i;:::-;14399:17;;14435:1;14431;:5;14427:72;;;14460:27;;;;;;;;;;;;;;12501:158;12574:4;12598:53;12606:3;-1:-1:-1;;;;;12626:23:0;;12598:7;:53::i;10486:191::-;10560:16;10579:6;;-1:-1:-1;;;;;10596:17:0;;;-1:-1:-1;;10596:17:0;;;;;;10629:40;;10579:6;;;;;;;10629:40;;10560:16;10629:40;10549:128;10486:191;:::o;15629:150::-;15409:1;15683:7;;:19;15679:63;;15711:31;;;;;;;;;;;;;;15679:63;15409:1;15753:7;:18;15629:150::o;13133:310::-;13196:16;13225:22;13250:19;13258:3;13250:7;:19::i;31693:442::-;31771:12;31830:7;31806:21;:31;31802:49;;;-1:-1:-1;31846:5:0;;31693:442;-1:-1:-1;31693:442:0:o;31802:49::-;31862:14;31879;:7;31891:1;31879:11;:14::i;:::-;31904:4;:17;:34;;31862:31;;-1:-1:-1;31904:17:0;;;-1:-1:-1;;;;;31904:17:0;;:34;;;;;31862:31;;31904:17;:34;:17;:34;31862:31;31904:17;:34;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31962:4:0;:17;31954:34;;;31962:17;;;;-1:-1:-1;;;;;31962:17:0;14328:74:1;;14433:2;14418:18;;14411:34;;;31954::0;;14301:18:1;31954:34:0;;;;;;;31999:15;;-1:-1:-1;;;;;31999:15:0;:45;32024:19;:7;32036:6;32024:11;:19::i;:::-;31999:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32068:15:0;;32060:45;;-1:-1:-1;;;;;32068:15:0;32085:19;:7;32097:6;32085:11;:19::i;:::-;32060:45;;;-1:-1:-1;;;;;14346:55:1;;;14328:74;;14433:2;14418:18;;14411:34;;;;14301:18;32060:45:0;;;;;;;-1:-1:-1;32123:4:0;;31693:442;-1:-1:-1;;31693:442:0:o;14749:271::-;14807:7;14831:1;14836;14831:6;14827:47;;-1:-1:-1;14861:1:0;14854:8;;14827:47;14884:9;14896:5;14900:1;14896;:5;:::i;:::-;14884:17;-1:-1:-1;14924:1:0;14915:5;14919:1;14884:17;14915:5;:::i;:::-;:10;14912:82;;14949:33;;;;;;;;;;;;;;15028:203;15086:7;15115:1;15110;:6;15106:71;;15140:25;;;;;;;;;;;;;;15106:71;15187:9;15199:5;15203:1;15199;:5;:::i;30810:250::-;30889:4;30853:15;30871:24;;;:9;:24;;;;;;30906:18;:16;:18::i;:::-;30935:31;30944:21;30935:8;:31::i;:::-;-1:-1:-1;31002:4:0;:17;30982:70;;;31002:17;;;;-1:-1:-1;;;;;31002:17:0;13983:74:1;;14088:2;14073:18;;14066:34;;;31030:21:0;14116:18:1;;;14109:34;30982:70:0;;13971:2:1;13956:18;30982:70:0;13781:368:1;10815:291:0;10878:4;11882:19;;;:12;;;:19;;;;;;10895:204;;-1:-1:-1;10938:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;10998:18;;10976:19;;;:12;;;:19;;;;;;:40;;;;11031:11;;10895:204;-1:-1:-1;11082:5:0;11075:12;;11114:663;11180:4;11218:19;;;:12;;;:19;;;;;;11252:15;;11248:522;;11284:21;11308:14;11321:1;11308:10;:14;:::i;:::-;11357:18;;11284:38;;-1:-1:-1;11337:17:0;;11357:22;;11378:1;;11357:22;:::i;:::-;11337:42;;11411:13;11398:9;:26;11394:221;;11445:17;11465:3;:11;;11477:9;11465:22;;;;;;;;:::i;:::-;;;;;;;;;11445:42;;11535:9;11506:3;:11;;11518:13;11506:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;11563:23;;;:12;;;:23;;;;;:36;;;11394:221;11629:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11668:3;:12;;:19;11681:5;11668:19;;;;;;;;;;;11661:26;;;11709:4;11702:11;;;;;;;11248:522;11753:5;11746:12;;;;;11248:522;11186:591;11114:663;;;;:::o;12167:111::-;12223:16;12259:3;:11;;12252:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12167:111;;;:::o;31068:459::-;19726:6;:13;;-1:-1:-1;;19726:13:0;19735:4;19726:13;;;31151:16:::1;::::0;;31165:1:::1;31151:16:::0;;;;;::::1;::::0;;-1:-1:-1;;31151:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;31151:16:0::1;31127:40;;31196:4;31178;31183:1;31178:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31178:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;31222:6:::1;::::0;:13:::1;::::0;;;;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;31178:7;;31222:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31212:4;31217:1;31212:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31212:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;31270:7:::1;::::0;31263:4:::1;31270:7;31279:24:::0;;;:9:::1;:24:::0;;;;;;;;31246:58:::1;::::0;31270:7;;;::::1;::::0;31246:8:::1;:58::i;:::-;31315:6;::::0;31405:4:::1;31315:6;31387:24:::0;;;:9:::1;:24;::::0;;;;;;31315:204;;;;;-1:-1:-1;;;;;31315:6:0;;::::1;::::0;:57:::1;::::0;:204:::1;::::0;:6;31444:4;;31405;31493:15:::1;::::0;31315:204:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;19762:6:0;:14;;-1:-1:-1;;19762:14:0;;;-1:-1:-1;;;31068:459:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:154:1:-;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:184;-1:-1:-1;;;222:1:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:719;405:5;458:3;451:4;443:6;439:17;435:27;425:55;;476:1;473;466:12;425:55;512:6;499:20;538:18;575:2;571;568:10;565:36;;;581:18;;:::i;:::-;656:2;650:9;624:2;710:13;;-1:-1:-1;;706:22:1;;;730:2;702:31;698:40;686:53;;;754:18;;;774:22;;;751:46;748:72;;;800:18;;:::i;:::-;840:10;836:2;829:22;875:2;867:6;860:18;921:3;914:4;909:2;901:6;897:15;893:26;890:35;887:55;;;938:1;935;928:12;887:55;1002:2;995:4;987:6;983:17;976:4;968:6;964:17;951:54;1049:1;1042:4;1037:2;1029:6;1025:15;1021:26;1014:37;1069:6;1060:15;;;;;;362:719;;;;:::o;1086:118::-;1172:5;1165:13;1158:21;1151:5;1148:32;1138:60;;1194:1;1191;1184:12;1209:661;1302:6;1310;1318;1326;1379:3;1367:9;1358:7;1354:23;1350:33;1347:53;;;1396:1;1393;1386:12;1347:53;1432:9;1419:23;1409:33;;1492:2;1481:9;1477:18;1464:32;1505:31;1530:5;1505:31;:::i;:::-;1555:5;-1:-1:-1;1611:2:1;1596:18;;1583:32;1638:18;1627:30;;1624:50;;;1670:1;1667;1660:12;1624:50;1693;1735:7;1726:6;1715:9;1711:22;1693:50;:::i;:::-;1683:60;;;1795:2;1784:9;1780:18;1767:32;1808:30;1830:7;1808:30;:::i;:::-;1209:661;;;;-1:-1:-1;1209:661:1;;-1:-1:-1;;1209:661:1:o;2163:423::-;2205:3;2243:5;2237:12;2270:6;2265:3;2258:19;2295:1;2305:162;2319:6;2316:1;2313:13;2305:162;;;2381:4;2437:13;;;2433:22;;2427:29;2409:11;;;2405:20;;2398:59;2334:12;2305:162;;;2309:3;2512:1;2505:4;2496:6;2491:3;2487:16;2483:27;2476:38;2575:4;2568:2;2564:7;2559:2;2551:6;2547:15;2543:29;2538:3;2534:39;2530:50;2523:57;;;2163:423;;;;:::o;2591:220::-;2740:2;2729:9;2722:21;2703:4;2760:45;2801:2;2790:9;2786:18;2778:6;2760:45;:::i;2816:315::-;2884:6;2892;2945:2;2933:9;2924:7;2920:23;2916:32;2913:52;;;2961:1;2958;2951:12;2913:52;3000:9;2987:23;3019:31;3044:5;3019:31;:::i;:::-;3069:5;3121:2;3106:18;;;;3093:32;;-1:-1:-1;;;2816:315:1:o;3318:247::-;3377:6;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;3485:9;3472:23;3504:31;3529:5;3504:31;:::i;3805:1237::-;4026:13;;1945;1938:21;1926:34;;3997:3;3982:19;;4098:4;4090:6;4086:17;4080:24;4113:51;4158:4;4147:9;4143:20;4129:12;1945:13;1938:21;1926:34;;1875:91;4113:51;;4213:4;4205:6;4201:17;4195:24;4228:55;4277:4;4266:9;4262:20;4246:14;3646:6;3635:18;3623:31;;3570:90;4228:55;;4332:4;4324:6;4320:17;4314:24;4347:55;4396:4;4385:9;4381:20;4365:14;3646:6;3635:18;3623:31;;3570:90;4347:55;;4451:4;4443:6;4439:17;4433:24;4466:64;4524:4;4513:9;4509:20;4493:14;-1:-1:-1;;;;;3739:54:1;3727:67;;3665:135;4466:64;;4579:4;4571:6;4567:17;4561:24;4594:64;4652:4;4641:9;4637:20;4621:14;-1:-1:-1;;;;;3739:54:1;3727:67;;3665:135;4594:64;;4714:4;4706:6;4702:17;4696:24;4689:4;4678:9;4674:20;4667:54;4777:4;4769:6;4765:17;4759:24;4752:4;4741:9;4737:20;4730:54;4803:6;4863:2;4855:6;4851:15;4845:22;4840:2;4829:9;4825:18;4818:50;;4887:6;4947:2;4939:6;4935:15;4929:22;4924:2;4913:9;4909:18;4902:50;;4971:6;5031:2;5023:6;5019:15;5013:22;5008:2;4997:9;4993:18;4986:50;;3805:1237;;;;:::o;5047:456::-;5124:6;5132;5140;5193:2;5181:9;5172:7;5168:23;5164:32;5161:52;;;5209:1;5206;5199:12;5161:52;5248:9;5235:23;5267:31;5292:5;5267:31;:::i;:::-;5317:5;-1:-1:-1;5374:2:1;5359:18;;5346:32;5387:33;5346:32;5387:33;:::i;:::-;5047:456;;5439:7;;-1:-1:-1;;;5493:2:1;5478:18;;;;5465:32;;5047:456::o;5697:457::-;5775:6;5783;5836:2;5824:9;5815:7;5811:23;5807:32;5804:52;;;5852:1;5849;5842:12;5804:52;5891:9;5878:23;5910:31;5935:5;5910:31;:::i;:::-;5960:5;-1:-1:-1;6016:2:1;6001:18;;5988:32;6043:18;6032:30;;6029:50;;;6075:1;6072;6065:12;6029:50;6098;6140:7;6131:6;6120:9;6116:22;6098:50;:::i;:::-;6088:60;;;5697:457;;;;;:::o;6159:388::-;6227:6;6235;6288:2;6276:9;6267:7;6263:23;6259:32;6256:52;;;6304:1;6301;6294:12;6256:52;6343:9;6330:23;6362:31;6387:5;6362:31;:::i;:::-;6412:5;-1:-1:-1;6469:2:1;6454:18;;6441:32;6482:33;6441:32;6482:33;:::i;:::-;6534:7;6524:17;;;6159:388;;;;;:::o;6805:159::-;6872:20;;6932:6;6921:18;;6911:29;;6901:57;;6954:1;6951;6944:12;6969:256;7035:6;7043;7096:2;7084:9;7075:7;7071:23;7067:32;7064:52;;;7112:1;7109;7102:12;7064:52;7135:28;7153:9;7135:28;:::i;:::-;7125:38;;7182:37;7215:2;7204:9;7200:18;7182:37;:::i;:::-;7172:47;;6969:256;;;;;:::o;7526:578::-;7699:2;7688:9;7681:21;7758:6;7752:13;7745:21;7738:29;7733:2;7722:9;7718:18;7711:57;-1:-1:-1;;;;;7826:2:1;7818:6;7814:15;7808:22;7804:71;7799:2;7788:9;7784:18;7777:99;7930:2;7922:6;7918:15;7912:22;7907:2;7896:9;7892:18;7885:50;7662:4;7982:2;7974:6;7970:15;7964:22;8024:4;8017;8006:9;8002:20;7995:34;8046:52;8093:3;8082:9;8078:19;8064:12;8046:52;:::i;8340:484::-;8393:3;8431:5;8425:12;8458:6;8453:3;8446:19;8484:4;8513:2;8508:3;8504:12;8497:19;;8550:2;8543:5;8539:14;8571:1;8581:218;8595:6;8592:1;8589:13;8581:218;;;8660:13;;-1:-1:-1;;;;;8656:62:1;8644:75;;8739:12;;;;8774:15;;;;8617:1;8610:9;8581:218;;;-1:-1:-1;8815:3:1;;8340:484;-1:-1:-1;;;;;8340:484:1:o;8829:261::-;9008:2;8997:9;8990:21;8971:4;9028:56;9080:2;9069:9;9065:18;9057:6;9028:56;:::i;9095:180::-;9154:6;9207:2;9195:9;9186:7;9182:23;9178:32;9175:52;;;9223:1;9220;9213:12;9175:52;-1:-1:-1;9246:23:1;;9095:180;-1:-1:-1;9095:180:1:o;9280:269::-;9337:6;9390:2;9378:9;9369:7;9365:23;9361:32;9358:52;;;9406:1;9403;9396:12;9358:52;9445:9;9432:23;9495:4;9488:5;9484:16;9477:5;9474:27;9464:55;;9515:1;9512;9505:12;9554:437;9633:1;9629:12;;;;9676;;;9697:61;;9751:4;9743:6;9739:17;9729:27;;9697:61;9804:2;9796:6;9793:14;9773:18;9770:38;9767:218;;-1:-1:-1;;;9838:1:1;9831:88;9942:4;9939:1;9932:15;9970:4;9967:1;9960:15;9767:218;;9554:437;;;:::o;10122:545::-;10224:2;10219:3;10216:11;10213:448;;;10260:1;10285:5;10281:2;10274:17;10330:4;10326:2;10316:19;10400:2;10388:10;10384:19;10381:1;10377:27;10371:4;10367:38;10436:4;10424:10;10421:20;10418:47;;;-1:-1:-1;10459:4:1;10418:47;10514:2;10509:3;10505:12;10502:1;10498:20;10492:4;10488:31;10478:41;;10569:82;10587:2;10580:5;10577:13;10569:82;;;10632:17;;;10613:1;10602:13;10569:82;;;10573:3;;;10122:545;;;:::o;10843:1352::-;10969:3;10963:10;10996:18;10988:6;10985:30;10982:56;;;11018:18;;:::i;:::-;11047:97;11137:6;11097:38;11129:4;11123:11;11097:38;:::i;:::-;11091:4;11047:97;:::i;:::-;11199:4;;11263:2;11252:14;;11280:1;11275:663;;;;11982:1;11999:6;11996:89;;;-1:-1:-1;12051:19:1;;;12045:26;11996:89;-1:-1:-1;;10800:1:1;10796:11;;;10792:24;10788:29;10778:40;10824:1;10820:11;;;10775:57;12098:81;;11245:944;;11275:663;10069:1;10062:14;;;10106:4;10093:18;;-1:-1:-1;;11311:20:1;;;11429:236;11443:7;11440:1;11437:14;11429:236;;;11532:19;;;11526:26;11511:42;;11624:27;;;;11592:1;11580:14;;;;11459:19;;11429:236;;;11433:3;11693:6;11684:7;11681:19;11678:201;;;11754:19;;;11748:26;-1:-1:-1;;11837:1:1;11833:14;;;11849:3;11829:24;11825:37;11821:42;11806:58;11791:74;;11678:201;-1:-1:-1;;;;;11925:1:1;11909:14;;;11905:22;11892:36;;-1:-1:-1;10843:1352:1:o;12512:184::-;-1:-1:-1;;;12561:1:1;12554:88;12661:4;12658:1;12651:15;12685:4;12682:1;12675:15;12701:168;12768:6;12794:10;;;12806;;;12790:27;;12829:11;;;12826:37;;;12843:18;;:::i;13531:245::-;13602:6;13640:10;;;13652;;;13636:27;13683:20;;;;13602:6;13722:24;;;13712:58;;13750:18;;:::i;:::-;13712:58;;13531:245;;;;:::o;14456:::-;14523:6;14576:2;14564:9;14555:7;14551:23;14547:32;14544:52;;;14592:1;14589;14582:12;14544:52;14624:9;14618:16;14643:28;14665:5;14643:28;:::i;15512:225::-;15616:4;15595:12;;;15609;;;15591:31;15642:22;;;;15683:24;;;15673:58;;15711:18;;:::i;15932:128::-;15999:9;;;16020:11;;;16017:37;;;16034:18;;:::i;16065:125::-;16130:9;;;16151:10;;;16148:36;;;16164:18;;:::i;16505:168::-;16578:9;;;16609;;16626:15;;;16620:22;;16606:37;16596:71;;16647:18;;:::i;16678:274::-;16718:1;16744;16734:189;;-1:-1:-1;;;16776:1:1;16769:88;16880:4;16877:1;16870:15;16908:4;16905:1;16898:15;16734:189;-1:-1:-1;16937:9:1;;16678:274::o;17338:184::-;-1:-1:-1;;;17387:1:1;17380:88;17487:4;17484:1;17477:15;17511:4;17508:1;17501:15;17527:184;-1:-1:-1;;;17576:1:1;17569:88;17676:4;17673:1;17666:15;17700:4;17697:1;17690:15;17716:251;17786:6;17839:2;17827:9;17818:7;17814:23;17810:32;17807:52;;;17855:1;17852;17845:12;17807:52;17887:9;17881:16;17906:31;17931:5;17906:31;:::i;17972:605::-;18271:6;18260:9;18253:25;18314:6;18309:2;18298:9;18294:18;18287:34;18357:3;18352:2;18341:9;18337:18;18330:31;18234:4;18378:57;18430:3;18419:9;18415:19;18407:6;18378:57;:::i;:::-;-1:-1:-1;;;;;18471:55:1;;;;18466:2;18451:18;;18444:83;-1:-1:-1;18558:3:1;18543:19;18536:35;18370:65;17972:605;-1:-1:-1;;;17972:605:1:o

Swarm Source

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