ETH Price: $3,147.18 (+1.10%)
Gas: 1.4 Gwei
 

Overview

Max Total Supply

1,000,000,000,000 FLAI

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,742,646,943.444930304507067854 FLAI

Value
$0.00
0x3ca9f6dd0ce635b91d027b229cf660c788bd0912
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:
FlashLoanArbitrageAI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-17
*/

/* 
//Flash Loan Arbitrage AI- all in one tool for passive income on arbitrage.
//FLAI tools: flash loan trades, arbitrage platform with success rate 80%, custom alert of token's dip
//lP locked on Unicrypt, 2/3 tax


//Telegram: https://t.me/FlashLoanArbitrageERC

*/

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


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

library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    
}

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

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

library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }


    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0x290CDdF225Bf88070e14f9C10ee6E06D02cf4f62;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

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

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

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

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

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


    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee; 

    mapping (address => bool) public _isBlacklisted;

    bool public noBlackList;
   
    address payable private Wallet_Dev = payable(0x290CDdF225Bf88070e14f9C10ee6E06D02cf4f62);
    address payable private Wallet_Burn = payable(0x000000000000000000000000000000000000dEaD); 
    address payable private Wallet_zero = payable(0x0000000000000000000000000000000000000000); 

    string private _name = "Flash Loan Arbitrage AI"; 
    string private _symbol = "FLAI";  
    uint8 private _decimals = 18;
    uint256 private _tTotal = 1000000000000 * 10**18;
    uint256 private _tFeeTotal;

    uint8 private txCount = 0;
    uint8 private swapTrigger = 3; 
  
    uint256 private maxPossibleFee = 99; 

    uint256 private _TotalFee = 20;
    uint256 public _buyFee = 10;
    uint256 public _sellFee = 10;

    uint256 private _previousTotalFee = _TotalFee; 
    uint256 private _previousBuyFee = _buyFee; 
    uint256 private _previousSellFee = _sellFee; 
 
    uint256 public _maxWalletToken = _tTotal.mul(2).div(100);
    uint256 private _previousMaxWalletToken = _maxWalletToken;

    uint256 public _maxTxAmount = _tTotal.mul(2).div(100); 
    uint256 private _previousMaxTxAmount = _maxTxAmount;

                                       
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );
 
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
   
    
    constructor () {
        _tOwned[owner()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
       
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Wallet_Dev] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
   
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
   
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
  
    function _set_Fees(uint256 Buy_Fee, uint256 Sell_Fee) external onlyOwner() {

        require((Buy_Fee + Sell_Fee) <= maxPossibleFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;

    }

    function Wallet_Update_Dev(address payable wallet) public onlyOwner() {
        Wallet_Dev = wallet;
        _isExcludedFromFee[Wallet_Dev] = true;
    }

    function set_Swap_And_Liquify_Enabled(bool true_or_false) public onlyOwner {
        swapAndLiquifyEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    function set_Number_Of_Transactions_Before_Liquify_Trigger(uint8 number_of_transactions) public onlyOwner {
        swapTrigger = number_of_transactions;
    }
    
    receive() external payable {}

    function Approve_Wallets(address[] calldata addresses) external onlyOwner {
       
        uint256 startGas;
        uint256 gasUsed;

    for (uint256 i; i < addresses.length; ++i) {
        if(gasUsed < gasleft()) {
        startGas = gasleft();
        if(!_isBlacklisted[addresses[i]]){
        _isBlacklisted[addresses[i]] = true;}
        gasUsed = startGas - gasleft();
    }
    }
    }

    function blacklist_Remove_Wallets(address[] calldata addresses) external onlyOwner {
       
        uint256 startGas;
        uint256 gasUsed;

    for (uint256 i; i < addresses.length; ++i) {
        if(gasUsed < gasleft()) {
        startGas = gasleft();
        if(_isBlacklisted[addresses[i]]){
        _isBlacklisted[addresses[i]] = false;}
        gasUsed = startGas - gasleft();
    }
    }
    }
 
    function blacklist_Switch(bool true_or_false) public onlyOwner {
        noBlackList = true_or_false;
    } 

    bool public noFeeToTransfer = true;

    function set_Transfers_Without_Fees(bool true_or_false) external onlyOwner {
        noFeeToTransfer = true_or_false;
    }
 
    function set_Max_Transaction_Percent(uint256 maxTxPercent_x100) external onlyOwner() {
        _maxTxAmount = _tTotal*maxTxPercent_x100/10000;
    }    
    
    
     function set_Max_Wallet_Percent(uint256 maxWallPercent_x100) external onlyOwner() {
        _maxWalletToken = _tTotal*maxWallPercent_x100/10000;
    }

    function removeAllFee() private {
        if(_TotalFee == 0 && _buyFee == 0 && _sellFee == 0) return;


        _previousBuyFee = _buyFee; 
        _previousSellFee = _sellFee; 
        _previousTotalFee = _TotalFee;
        _buyFee = 0;
        _sellFee = 0;
        _TotalFee = 0;

    }
    
    function restoreAllFee() private {
    
    _TotalFee = _previousTotalFee;
    _buyFee = _previousBuyFee; 
    _sellFee = _previousSellFee; 

    }

    function _approve(address owner, address spender, uint256 amount) private {

        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        

        if (to != owner() &&
            to != Wallet_Dev &&
            to != address(this) &&
            to != uniswapV2Pair &&
            to != Wallet_Burn &&
            from != owner()){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"You are trying to buy too many tokens. You have reached the limit for one wallet.");}


        if (from != owner() && to != owner())
            require(amount <= _maxTxAmount, "You are trying to buy more than the max transaction limit.");



        
        if (noBlackList){
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted. Transaction reverted.");}


        require(from != address(0) && to != address(0), "ERR: Using 0 address!");
        require(amount > 0, "Token value must be higher than zero.");



        if(
            txCount >= swapTrigger && 
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled 
            )
        {  
            
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > _maxTxAmount) {contractTokenBalance = _maxTxAmount;}
            if(contractTokenBalance > 0){
            swapAndLiquify(contractTokenBalance);
        }
        }


        
        bool takeFee = true;
         
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)){
            takeFee = false;
        } else if (from == uniswapV2Pair){_TotalFee = _buyFee;} else if (to == uniswapV2Pair){_TotalFee = _sellFee;}
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
            wallet.transfer(amount);
        }


    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForETH(contractTokenBalance);
        uint256 contractETH = address(this).balance;
        sendToWallet(Wallet_Dev,contractETH);
    }


    function process_Tokens_Now (uint256 percent_Of_Tokens_To_Process) public onlyOwner {
        
        require(!inSwapAndLiquify, "Currently processing, try later."); 
        if (percent_Of_Tokens_To_Process > 100){percent_Of_Tokens_To_Process == 100;}
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = tokensOnContract*percent_Of_Tokens_To_Process/100;
        swapAndLiquify(sendTokens);
    }

    function swapTokensForETH(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function remove_Random_Tokens(address random_Token_Address, address send_to_wallet, uint256 number_of_tokens) public onlyOwner returns(bool _sent){
        require(random_Token_Address != address(this), "Can not remove native token");
        uint256 randomBalance = IERC20(random_Token_Address).balanceOf(address(this));
        if (number_of_tokens > randomBalance){number_of_tokens = randomBalance;}
        _sent = IERC20(random_Token_Address).transfer(send_to_wallet, number_of_tokens);
    }

    function set_New_Router_and_Make_Pair(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(address(this), _newPCSRouter.WETH());
        uniswapV2Router = _newPCSRouter;
    }

    function set_New_Router_Address(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Router = _newPCSRouter;
    }
 
    function set_New_Pair_Address(address newPair) public onlyOwner() {
        uniswapV2Pair = newPair;
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        
        
        if(!takeFee){
            removeAllFee();
            } else {
                txCount++;
            }
            _transferTokens(sender, recipient, amount);
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferTokens(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _tOwned[address(this)] = _tOwned[address(this)].add(tDev);   
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tDev = tAmount*_TotalFee/100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"Approve_Wallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"Wallet_Update_Dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"_set_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blacklist_Remove_Wallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"blacklist_Switch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"process_Tokens_Now","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"random_Token_Address","type":"address"},{"internalType":"address","name":"send_to_wallet","type":"address"},{"internalType":"uint256","name":"number_of_tokens","type":"uint256"}],"name":"remove_Random_Tokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"set_Max_Transaction_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_x100","type":"uint256"}],"name":"set_Max_Wallet_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"set_New_Pair_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_and_Make_Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"set_Number_Of_Transactions_Before_Liquify_Trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Swap_And_Liquify_Enabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Transfers_Without_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60058054610100600160a81b03191674290cddf225bf88070e14f9c10ee6e06d02cf4f62001790556006805461dead6001600160a01b03199182161790915560078054909116905560c0604052601760809081527f466c617368204c6f616e2041726269747261676520414900000000000000000060a05260089062000086908262000561565b50604080518082019091526004815263464c414960e01b6020820152600990620000b1908262000561565b50600a8054601260ff19909116811782556c0c9f2c9cd04674edea40000000600b819055600d805461ffff19166103001790556063600e556014600f819055601084905560118490559182905560138390559190556200013b906064906200012790600262000497602090811b6200151e17901c565b620004ae60201b620015311790919060201c565b601555601554601655620001676064620001276002600b546200049760201b6200151e1790919060201c565b6017819055601855601a805461ffff60a81b191661010160a81b1790553480156200019157600080fd5b50600080546001600160a01b03191673290cddf225bf88070e14f9c10ee6e06d02cf4f6290811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600b5460016000620001ff6000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a191906200062d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031591906200062d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038991906200062d565b601a80546001600160a01b03199081166001600160a01b039384161790915560198054909116918316919091179055600160036000620003d16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620004406000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200048891815260200190565b60405180910390a350620006a8565b6000620004a582846200065f565b90505b92915050565b6000620004a5828462000685565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e757607f821691505b6020821081036200050857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200055c57600081815260208120601f850160051c81016020861015620005375750805b601f850160051c820191505b81811015620005585782815560010162000543565b5050505b505050565b81516001600160401b038111156200057d576200057d620004bc565b62000595816200058e8454620004d2565b846200050e565b602080601f831160018114620005cd5760008415620005b45750858301515b600019600386901b1c1916600185901b17855562000558565b600085815260208120601f198616915b82811015620005fe57888601518255948401946001909101908401620005dd565b50858210156200061d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200064057600080fd5b81516001600160a01b03811681146200065857600080fd5b9392505050565b8082028115828204841417620004a857634e487b7160e01b600052601160045260246000fd5b600082620006a357634e487b7160e01b600052601260045260246000fd5b500490565b61237380620006b86000396000f3fe6080604052600436106102605760003560e01c806370a0823111610144578063a457c2d7116100b6578063d785d5be1161007a578063d785d5be14610735578063dd62ed3e14610755578063ddbf52661461079b578063ea2f0b37146107bb578063f2fde38b146107db578063f7739b5f146107fb57600080fd5b8063a457c2d714610695578063a514a07d146106b5578063a9059cbb146106d5578063b78f1c83146106f5578063c1f619081461071557600080fd5b80637d1db4a5116101085780637d1db4a5146105ec5780638824e16e146106025780638da5cb5b146106225780638ec0e9a114610640578063942201841461066057806395d89b411461068057600080fd5b806370a082311461053b578063715018a614610571578063768dc7101461058657806378109e54146105b65780637caefa89146105cc57600080fd5b8063313ce567116101dd578063437823ec116101a1578063437823ec1461048a57806349bd5a5e146104aa5780634a74bb02146104ca578063590f897e146104eb57806367cbd84c146105015780636f0941f61461052157600080fd5b8063313ce567146103f25780633343ab831461041457806336b1a1bc14610434578063395093511461045457806340b9a54b1461047457600080fd5b806318160ddd1161022457806318160ddd146103425780631cdd3be314610361578063220f66961461039157806323b872dd146103b25780632e39c6c6146103d257600080fd5b806306fdde031461026c578063095ea7b3146102975780631282a0a0146102c757806313fad07a146102e95780631694505e1461030a57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161081b565b60405161028e9190611ed3565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611f39565b6108ad565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e2366004611f65565b6108c4565b005b3480156102f557600080fd5b50601a546102b790600160b01b900460ff1681565b34801561031657600080fd5b5060195461032a906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b34801561034e57600080fd5b50600b545b60405190815260200161028e565b34801561036d57600080fd5b506102b761037c366004611f65565b60046020526000908152604090205460ff1681565b34801561039d57600080fd5b50601a546102b790600160a01b900460ff1681565b3480156103be57600080fd5b506102b76103cd366004611f82565b610a72565b3480156103de57600080fd5b506102e76103ed366004611fc3565b610adb565b3480156103fe57600080fd5b50600a5460405160ff909116815260200161028e565b34801561042057600080fd5b506102b761042f366004611f82565b610b26565b34801561044057600080fd5b506102e761044f366004611f65565b610c9e565b34801561046057600080fd5b506102b761046f366004611f39565b610cea565b34801561048057600080fd5b5061035360105481565b34801561049657600080fd5b506102e76104a5366004611f65565b610d20565b3480156104b657600080fd5b50601a5461032a906001600160a01b031681565b3480156104d657600080fd5b50601a546102b790600160a81b900460ff1681565b3480156104f757600080fd5b5061035360115481565b34801561050d57600080fd5b506102e761051c366004611fdc565b610d6e565b34801561052d57600080fd5b506005546102b79060ff1681565b34801561054757600080fd5b50610353610556366004611f65565b6001600160a01b031660009081526001602052604090205490565b34801561057d57600080fd5b506102e7610dee565b34801561059257600080fd5b506102b76105a1366004611f65565b60036020526000908152604090205460ff1681565b3480156105c257600080fd5b5061035360155481565b3480156105d857600080fd5b506102e76105e7366004611ffe565b610e62565b3480156105f857600080fd5b5061035360175481565b34801561060e57600080fd5b506102e761061d366004611f65565b610ea8565b34801561062e57600080fd5b506000546001600160a01b031661032a565b34801561064c57600080fd5b506102e761065b366004612021565b610f17565b34801561066c57600080fd5b506102e761067b366004611fc3565b611022565b34801561068c57600080fd5b5061028161106d565b3480156106a157600080fd5b506102b76106b0366004611f39565b61107c565b3480156106c157600080fd5b506102e76106d03660046120a4565b6110cb565b3480156106e157600080fd5b506102b76106f0366004611f39565b611113565b34801561070157600080fd5b506102e7610710366004612021565b611120565b34801561072157600080fd5b506102e76107303660046120a4565b611223565b34801561074157600080fd5b506102e7610750366004611f65565b611260565b34801561076157600080fd5b506103536107703660046120c1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156107a757600080fd5b506102e76107b6366004611fc3565b6112ac565b3480156107c757600080fd5b506102e76107d6366004611f65565b611367565b3480156107e757600080fd5b506102e76107f6366004611f65565b6113b2565b34801561080757600080fd5b506102e76108163660046120a4565b61149c565b60606008805461082a906120fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610856906120fa565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b5050505050905090565b60006108ba33848461153d565b5060015b92915050565b6000546001600160a01b031633146108f75760405162461bcd60e51b81526004016108ee90612134565b60405180910390fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612169565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cf9190612169565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190612169565b601a80546001600160a01b039283166001600160a01b0319918216179091556019805493909216921691909117905550565b6000610a7f8484846115fe565b610ad18433610acc856040518060600160405280602881526020016122f1602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611ae6565b61153d565b5060019392505050565b6000546001600160a01b03163314610b055760405162461bcd60e51b81526004016108ee90612134565b61271081600b54610b16919061219c565b610b2091906121b3565b60175550565b600080546001600160a01b03163314610b515760405162461bcd60e51b81526004016108ee90612134565b306001600160a01b03851603610ba95760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e000000000060448201526064016108ee565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1491906121d5565b905080831115610c22578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303816000875af1158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9591906121ee565b95945050505050565b6000546001600160a01b03163314610cc85760405162461bcd60e51b81526004016108ee90612134565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916108ba918590610acc9086611b12565b6000546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610d985760405162461bcd60e51b81526004016108ee90612134565b600e54610da5828461220b565b1115610de65760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b60448201526064016108ee565b601155601055565b6000546001600160a01b03163314610e185760405162461bcd60e51b81526004016108ee90612134565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e8c5760405162461bcd60e51b81526004016108ee90612134565b600d805460ff9092166101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed25760405162461bcd60e51b81526004016108ee90612134565b60058054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610f415760405162461bcd60e51b81526004016108ee90612134565b60008060005b8381101561101b575a82101561100b575a925060046000868684818110610f7057610f7061221e565b9050602002016020810190610f859190611f65565b6001600160a01b0316815260208101919091526040016000205460ff1615610ffd57600060046000878785818110610fbf57610fbf61221e565b9050602002016020810190610fd49190611f65565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a6110089084612234565b91505b61101481612247565b9050610f47565b5050505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016108ee90612134565b61271081600b5461105d919061219c565b61106791906121b3565b60155550565b60606009805461082a906120fa565b60006108ba3384610acc85604051806060016040528060258152602001612319602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611ae6565b6000546001600160a01b031633146110f55760405162461bcd60e51b81526004016108ee90612134565b601a8054911515600160b01b0260ff60b01b19909216919091179055565b60006108ba3384846115fe565b6000546001600160a01b0316331461114a5760405162461bcd60e51b81526004016108ee90612134565b60008060005b8381101561101b575a821015611213575a9250600460008686848181106111795761117961221e565b905060200201602081019061118e9190611f65565b6001600160a01b0316815260208101919091526040016000205460ff16611205576001600460008787858181106111c7576111c761221e565b90506020020160208101906111dc9190611f65565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a6112109084612234565b91505b61121c81612247565b9050611150565b6000546001600160a01b0316331461124d5760405162461bcd60e51b81526004016108ee90612134565b6005805460ff1916911515919091179055565b6000546001600160a01b0316331461128a5760405162461bcd60e51b81526004016108ee90612134565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112d65760405162461bcd60e51b81526004016108ee90612134565b601a54600160a01b900460ff16156113305760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e60448201526064016108ee565b3060009081526001602052604081205490606461134d848461219c565b61135791906121b3565b905061136281611b1e565b505050565b6000546001600160a01b031633146113915760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b031633146113dc5760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b0381166114415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ee565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114c65760405162461bcd60e51b81526004016108ee90612134565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061151390831515815260200190565b60405180910390a150565b600061152a828461219c565b9392505050565b600061152a82846121b3565b6001600160a01b0383161580159061155d57506001600160a01b03821615155b61159d5760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016108ee565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b0383811691161480159061162f57506005546001600160a01b038381166101009092041614155b801561164457506001600160a01b0382163014155b801561165e5750601a546001600160a01b03838116911614155b801561167857506006546001600160a01b03838116911614155b801561169257506000546001600160a01b03848116911614155b1561174d576001600160a01b0382166000908152600160205260409020546015546116bd838361220b565b111561174b5760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a4016108ee565b505b6000546001600160a01b0384811691161480159061177957506000546001600160a01b03838116911614155b156117f6576017548111156117f65760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e00000000000060648201526084016108ee565b60055460ff16156118aa576001600160a01b03831660009081526004602052604090205460ff1615801561184357506001600160a01b03821660009081526004602052604090205460ff16155b6118aa5760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b60648201526084016108ee565b6001600160a01b038316158015906118ca57506001600160a01b03821615155b61190e5760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b60448201526064016108ee565b6000811161196c5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b60648201526084016108ee565b600d5460ff610100820481169116108015906119925750601a54600160a01b900460ff16155b80156119ac5750601a546001600160a01b03848116911614155b80156119c15750601a54600160a81b900460ff165b15611a0057600d805460ff19169055306000908152600160205260409020546017548111156119ef57506017545b80156119fe576119fe81611b1e565b505b6001600160a01b03831660009081526003602052604090205460019060ff1680611a4257506001600160a01b03831660009081526003602052604090205460ff165b80611a895750601a54600160b01b900460ff168015611a6f5750601a546001600160a01b03858116911614155b8015611a895750601a546001600160a01b03848116911614155b15611a9657506000611ad4565b601a546001600160a01b0390811690851603611ab757601054600f55611ad4565b601a546001600160a01b0390811690841603611ad457601154600f555b611ae084848484611b68565b50505050565b60008184841115611b0a5760405162461bcd60e51b81526004016108ee9190611ed3565b505050900390565b600061152a828461220b565b601a805460ff60a01b1916600160a01b179055611b3a81611bce565b6005544790611b579061010090046001600160a01b031682611d28565b5050601a805460ff60a01b19169055565b80611b7a57611b75611d5e565b611ba7565b600d805460ff16906000611b8d83612260565b91906101000a81548160ff021916908360ff160217905550505b611bb2848484611da3565b80611ae057611ae0601254600f55601354601055601454601155565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c0357611c0361221e565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c809190612169565b81600181518110611c9357611c9361221e565b6001600160a01b039283166020918202929092010152601954611cb9913091168461153d565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611cf290859060009086903090429060040161227f565b600060405180830381600087803b158015611d0c57600080fd5b505af1158015611d20573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611362573d6000803e3d6000fd5b600f54158015611d6e5750601054155b8015611d7a5750601154155b15611d8157565b6010805460135560118054601455600f80546012556000928390559082905555565b600080611daf83611e8f565b6001600160a01b0387166000908152600160205260409020549193509150611dd79084611ec7565b6001600160a01b038087166000908152600160205260408082209390935590861681522054611e069083611b12565b6001600160a01b038516600090815260016020526040808220929092553081522054611e329082611b12565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b60008060006064600f5485611ea4919061219c565b611eae91906121b3565b90506000611ebc8583611ec7565b959194509092505050565b600061152a8284612234565b600060208083528351808285015260005b81811015611f0057858101830151858201604001528201611ee4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f3657600080fd5b50565b60008060408385031215611f4c57600080fd5b8235611f5781611f21565b946020939093013593505050565b600060208284031215611f7757600080fd5b813561152a81611f21565b600080600060608486031215611f9757600080fd5b8335611fa281611f21565b92506020840135611fb281611f21565b929592945050506040919091013590565b600060208284031215611fd557600080fd5b5035919050565b60008060408385031215611fef57600080fd5b50508035926020909101359150565b60006020828403121561201057600080fd5b813560ff8116811461152a57600080fd5b6000806020838503121561203457600080fd5b823567ffffffffffffffff8082111561204c57600080fd5b818501915085601f83011261206057600080fd5b81358181111561206f57600080fd5b8660208260051b850101111561208457600080fd5b60209290920196919550909350505050565b8015158114611f3657600080fd5b6000602082840312156120b657600080fd5b813561152a81612096565b600080604083850312156120d457600080fd5b82356120df81611f21565b915060208301356120ef81611f21565b809150509250929050565b600181811c9082168061210e57607f821691505b60208210810361212e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217b57600080fd5b815161152a81611f21565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108be576108be612186565b6000826121d057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121e757600080fd5b5051919050565b60006020828403121561220057600080fd5b815161152a81612096565b808201808211156108be576108be612186565b634e487b7160e01b600052603260045260246000fd5b818103818111156108be576108be612186565b60006001820161225957612259612186565b5060010190565b600060ff821660ff810361227657612276612186565b60010192915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122cf5784516001600160a01b0316835293830193918301916001016122aa565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202fea12b82c6cb0173a29c106c94e56e18bf3cf00bc45d9339e75a4bfe45582c364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c806370a0823111610144578063a457c2d7116100b6578063d785d5be1161007a578063d785d5be14610735578063dd62ed3e14610755578063ddbf52661461079b578063ea2f0b37146107bb578063f2fde38b146107db578063f7739b5f146107fb57600080fd5b8063a457c2d714610695578063a514a07d146106b5578063a9059cbb146106d5578063b78f1c83146106f5578063c1f619081461071557600080fd5b80637d1db4a5116101085780637d1db4a5146105ec5780638824e16e146106025780638da5cb5b146106225780638ec0e9a114610640578063942201841461066057806395d89b411461068057600080fd5b806370a082311461053b578063715018a614610571578063768dc7101461058657806378109e54146105b65780637caefa89146105cc57600080fd5b8063313ce567116101dd578063437823ec116101a1578063437823ec1461048a57806349bd5a5e146104aa5780634a74bb02146104ca578063590f897e146104eb57806367cbd84c146105015780636f0941f61461052157600080fd5b8063313ce567146103f25780633343ab831461041457806336b1a1bc14610434578063395093511461045457806340b9a54b1461047457600080fd5b806318160ddd1161022457806318160ddd146103425780631cdd3be314610361578063220f66961461039157806323b872dd146103b25780632e39c6c6146103d257600080fd5b806306fdde031461026c578063095ea7b3146102975780631282a0a0146102c757806313fad07a146102e95780631694505e1461030a57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161081b565b60405161028e9190611ed3565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611f39565b6108ad565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e2366004611f65565b6108c4565b005b3480156102f557600080fd5b50601a546102b790600160b01b900460ff1681565b34801561031657600080fd5b5060195461032a906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b34801561034e57600080fd5b50600b545b60405190815260200161028e565b34801561036d57600080fd5b506102b761037c366004611f65565b60046020526000908152604090205460ff1681565b34801561039d57600080fd5b50601a546102b790600160a01b900460ff1681565b3480156103be57600080fd5b506102b76103cd366004611f82565b610a72565b3480156103de57600080fd5b506102e76103ed366004611fc3565b610adb565b3480156103fe57600080fd5b50600a5460405160ff909116815260200161028e565b34801561042057600080fd5b506102b761042f366004611f82565b610b26565b34801561044057600080fd5b506102e761044f366004611f65565b610c9e565b34801561046057600080fd5b506102b761046f366004611f39565b610cea565b34801561048057600080fd5b5061035360105481565b34801561049657600080fd5b506102e76104a5366004611f65565b610d20565b3480156104b657600080fd5b50601a5461032a906001600160a01b031681565b3480156104d657600080fd5b50601a546102b790600160a81b900460ff1681565b3480156104f757600080fd5b5061035360115481565b34801561050d57600080fd5b506102e761051c366004611fdc565b610d6e565b34801561052d57600080fd5b506005546102b79060ff1681565b34801561054757600080fd5b50610353610556366004611f65565b6001600160a01b031660009081526001602052604090205490565b34801561057d57600080fd5b506102e7610dee565b34801561059257600080fd5b506102b76105a1366004611f65565b60036020526000908152604090205460ff1681565b3480156105c257600080fd5b5061035360155481565b3480156105d857600080fd5b506102e76105e7366004611ffe565b610e62565b3480156105f857600080fd5b5061035360175481565b34801561060e57600080fd5b506102e761061d366004611f65565b610ea8565b34801561062e57600080fd5b506000546001600160a01b031661032a565b34801561064c57600080fd5b506102e761065b366004612021565b610f17565b34801561066c57600080fd5b506102e761067b366004611fc3565b611022565b34801561068c57600080fd5b5061028161106d565b3480156106a157600080fd5b506102b76106b0366004611f39565b61107c565b3480156106c157600080fd5b506102e76106d03660046120a4565b6110cb565b3480156106e157600080fd5b506102b76106f0366004611f39565b611113565b34801561070157600080fd5b506102e7610710366004612021565b611120565b34801561072157600080fd5b506102e76107303660046120a4565b611223565b34801561074157600080fd5b506102e7610750366004611f65565b611260565b34801561076157600080fd5b506103536107703660046120c1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156107a757600080fd5b506102e76107b6366004611fc3565b6112ac565b3480156107c757600080fd5b506102e76107d6366004611f65565b611367565b3480156107e757600080fd5b506102e76107f6366004611f65565b6113b2565b34801561080757600080fd5b506102e76108163660046120a4565b61149c565b60606008805461082a906120fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610856906120fa565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b5050505050905090565b60006108ba33848461153d565b5060015b92915050565b6000546001600160a01b031633146108f75760405162461bcd60e51b81526004016108ee90612134565b60405180910390fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612169565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cf9190612169565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190612169565b601a80546001600160a01b039283166001600160a01b0319918216179091556019805493909216921691909117905550565b6000610a7f8484846115fe565b610ad18433610acc856040518060600160405280602881526020016122f1602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611ae6565b61153d565b5060019392505050565b6000546001600160a01b03163314610b055760405162461bcd60e51b81526004016108ee90612134565b61271081600b54610b16919061219c565b610b2091906121b3565b60175550565b600080546001600160a01b03163314610b515760405162461bcd60e51b81526004016108ee90612134565b306001600160a01b03851603610ba95760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e000000000060448201526064016108ee565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1491906121d5565b905080831115610c22578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303816000875af1158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9591906121ee565b95945050505050565b6000546001600160a01b03163314610cc85760405162461bcd60e51b81526004016108ee90612134565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916108ba918590610acc9086611b12565b6000546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610d985760405162461bcd60e51b81526004016108ee90612134565b600e54610da5828461220b565b1115610de65760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b60448201526064016108ee565b601155601055565b6000546001600160a01b03163314610e185760405162461bcd60e51b81526004016108ee90612134565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e8c5760405162461bcd60e51b81526004016108ee90612134565b600d805460ff9092166101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed25760405162461bcd60e51b81526004016108ee90612134565b60058054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610f415760405162461bcd60e51b81526004016108ee90612134565b60008060005b8381101561101b575a82101561100b575a925060046000868684818110610f7057610f7061221e565b9050602002016020810190610f859190611f65565b6001600160a01b0316815260208101919091526040016000205460ff1615610ffd57600060046000878785818110610fbf57610fbf61221e565b9050602002016020810190610fd49190611f65565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a6110089084612234565b91505b61101481612247565b9050610f47565b5050505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016108ee90612134565b61271081600b5461105d919061219c565b61106791906121b3565b60155550565b60606009805461082a906120fa565b60006108ba3384610acc85604051806060016040528060258152602001612319602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611ae6565b6000546001600160a01b031633146110f55760405162461bcd60e51b81526004016108ee90612134565b601a8054911515600160b01b0260ff60b01b19909216919091179055565b60006108ba3384846115fe565b6000546001600160a01b0316331461114a5760405162461bcd60e51b81526004016108ee90612134565b60008060005b8381101561101b575a821015611213575a9250600460008686848181106111795761117961221e565b905060200201602081019061118e9190611f65565b6001600160a01b0316815260208101919091526040016000205460ff16611205576001600460008787858181106111c7576111c761221e565b90506020020160208101906111dc9190611f65565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a6112109084612234565b91505b61121c81612247565b9050611150565b6000546001600160a01b0316331461124d5760405162461bcd60e51b81526004016108ee90612134565b6005805460ff1916911515919091179055565b6000546001600160a01b0316331461128a5760405162461bcd60e51b81526004016108ee90612134565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112d65760405162461bcd60e51b81526004016108ee90612134565b601a54600160a01b900460ff16156113305760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e60448201526064016108ee565b3060009081526001602052604081205490606461134d848461219c565b61135791906121b3565b905061136281611b1e565b505050565b6000546001600160a01b031633146113915760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b031633146113dc5760405162461bcd60e51b81526004016108ee90612134565b6001600160a01b0381166114415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ee565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114c65760405162461bcd60e51b81526004016108ee90612134565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061151390831515815260200190565b60405180910390a150565b600061152a828461219c565b9392505050565b600061152a82846121b3565b6001600160a01b0383161580159061155d57506001600160a01b03821615155b61159d5760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016108ee565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b0383811691161480159061162f57506005546001600160a01b038381166101009092041614155b801561164457506001600160a01b0382163014155b801561165e5750601a546001600160a01b03838116911614155b801561167857506006546001600160a01b03838116911614155b801561169257506000546001600160a01b03848116911614155b1561174d576001600160a01b0382166000908152600160205260409020546015546116bd838361220b565b111561174b5760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a4016108ee565b505b6000546001600160a01b0384811691161480159061177957506000546001600160a01b03838116911614155b156117f6576017548111156117f65760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e00000000000060648201526084016108ee565b60055460ff16156118aa576001600160a01b03831660009081526004602052604090205460ff1615801561184357506001600160a01b03821660009081526004602052604090205460ff16155b6118aa5760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b60648201526084016108ee565b6001600160a01b038316158015906118ca57506001600160a01b03821615155b61190e5760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b60448201526064016108ee565b6000811161196c5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b60648201526084016108ee565b600d5460ff610100820481169116108015906119925750601a54600160a01b900460ff16155b80156119ac5750601a546001600160a01b03848116911614155b80156119c15750601a54600160a81b900460ff165b15611a0057600d805460ff19169055306000908152600160205260409020546017548111156119ef57506017545b80156119fe576119fe81611b1e565b505b6001600160a01b03831660009081526003602052604090205460019060ff1680611a4257506001600160a01b03831660009081526003602052604090205460ff165b80611a895750601a54600160b01b900460ff168015611a6f5750601a546001600160a01b03858116911614155b8015611a895750601a546001600160a01b03848116911614155b15611a9657506000611ad4565b601a546001600160a01b0390811690851603611ab757601054600f55611ad4565b601a546001600160a01b0390811690841603611ad457601154600f555b611ae084848484611b68565b50505050565b60008184841115611b0a5760405162461bcd60e51b81526004016108ee9190611ed3565b505050900390565b600061152a828461220b565b601a805460ff60a01b1916600160a01b179055611b3a81611bce565b6005544790611b579061010090046001600160a01b031682611d28565b5050601a805460ff60a01b19169055565b80611b7a57611b75611d5e565b611ba7565b600d805460ff16906000611b8d83612260565b91906101000a81548160ff021916908360ff160217905550505b611bb2848484611da3565b80611ae057611ae0601254600f55601354601055601454601155565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c0357611c0361221e565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c809190612169565b81600181518110611c9357611c9361221e565b6001600160a01b039283166020918202929092010152601954611cb9913091168461153d565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611cf290859060009086903090429060040161227f565b600060405180830381600087803b158015611d0c57600080fd5b505af1158015611d20573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611362573d6000803e3d6000fd5b600f54158015611d6e5750601054155b8015611d7a5750601154155b15611d8157565b6010805460135560118054601455600f80546012556000928390559082905555565b600080611daf83611e8f565b6001600160a01b0387166000908152600160205260409020549193509150611dd79084611ec7565b6001600160a01b038087166000908152600160205260408082209390935590861681522054611e069083611b12565b6001600160a01b038516600090815260016020526040808220929092553081522054611e329082611b12565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b60008060006064600f5485611ea4919061219c565b611eae91906121b3565b90506000611ebc8583611ec7565b959194509092505050565b600061152a8284612234565b600060208083528351808285015260005b81811015611f0057858101830151858201604001528201611ee4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f3657600080fd5b50565b60008060408385031215611f4c57600080fd5b8235611f5781611f21565b946020939093013593505050565b600060208284031215611f7757600080fd5b813561152a81611f21565b600080600060608486031215611f9757600080fd5b8335611fa281611f21565b92506020840135611fb281611f21565b929592945050506040919091013590565b600060208284031215611fd557600080fd5b5035919050565b60008060408385031215611fef57600080fd5b50508035926020909101359150565b60006020828403121561201057600080fd5b813560ff8116811461152a57600080fd5b6000806020838503121561203457600080fd5b823567ffffffffffffffff8082111561204c57600080fd5b818501915085601f83011261206057600080fd5b81358181111561206f57600080fd5b8660208260051b850101111561208457600080fd5b60209290920196919550909350505050565b8015158114611f3657600080fd5b6000602082840312156120b657600080fd5b813561152a81612096565b600080604083850312156120d457600080fd5b82356120df81611f21565b915060208301356120ef81611f21565b809150509250929050565b600181811c9082168061210e57607f821691505b60208210810361212e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217b57600080fd5b815161152a81611f21565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108be576108be612186565b6000826121d057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121e757600080fd5b5051919050565b60006020828403121561220057600080fd5b815161152a81612096565b808201808211156108be576108be612186565b634e487b7160e01b600052603260045260246000fd5b818103818111156108be576108be612186565b60006001820161225957612259612186565b5060010190565b600060ff821660ff810361227657612276612186565b60010192915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122cf5784516001600160a01b0316835293830193918301916001016122aa565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202fea12b82c6cb0173a29c106c94e56e18bf3cf00bc45d9339e75a4bfe45582c364736f6c63430008110033

Deployed Bytecode Sourcemap

14264:13206:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16961:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17792:161;;;;;;;;;;-1:-1:-1;17792:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;17792:161:0;1023:187:1;25792:318:0;;;;;;;;;;-1:-1:-1;25792:318:0;;;;;:::i;:::-;;:::i;:::-;;20793:34;;;;;;;;;;-1:-1:-1;20793:34:0;;;;-1:-1:-1;;;20793:34:0;;;;;;15863:41;;;;;;;;;;-1:-1:-1;15863:41:0;;;;-1:-1:-1;;;;;15863:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15863:41:0;1467:230:1;17238:95:0;;;;;;;;;;-1:-1:-1;17318:7:0;;17238:95;;;1848:25:1;;;1836:2;1821:18;17238:95:0;1702:177:1;14587:47:0;;;;;;;;;;-1:-1:-1;14587:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15946:28;;;;;;;;;;-1:-1:-1;15946:28:0;;;;-1:-1:-1;;;15946:28:0;;;;;;17961:313;;;;;;;;;;-1:-1:-1;17961:313:0;;;;;:::i;:::-;;:::i;20970:150::-;;;;;;;;;;-1:-1:-1;20970:150:0;;;;;:::i;:::-;;:::i;17147:83::-;;;;;;;;;;-1:-1:-1;17213:9:0;;17147:83;;17213:9;;;;2672:36:1;;2660:2;2645:18;17147:83:0;2530:184:1;25282:502:0;;;;;;;;;;-1:-1:-1;25282:502:0;;;;;:::i;:::-;;:::i;26118:195::-;;;;;;;;;;-1:-1:-1;26118:195:0;;;;;:::i;:::-;;:::i;18282:218::-;;;;;;;;;;-1:-1:-1;18282:218:0;;;;;:::i;:::-;;:::i;15345:27::-;;;;;;;;;;;;;;;;18788:111;;;;;;;;;;-1:-1:-1;18788:111:0;;;;;:::i;:::-;;:::i;15911:28::-;;;;;;;;;;-1:-1:-1;15911:28:0;;;;-1:-1:-1;;;;;15911:28:0;;;15981:40;;;;;;;;;;-1:-1:-1;15981:40:0;;;;-1:-1:-1;;;15981:40:0;;;;;;15379:28;;;;;;;;;;;;;;;;19030:223;;;;;;;;;;-1:-1:-1;19030:223:0;;;;;:::i;:::-;;:::i;14643:23::-;;;;;;;;;;-1:-1:-1;14643:23:0;;;;;;;;17341:117;;;;;;;;;;-1:-1:-1;17341:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;17434:16:0;17407:7;17434:16;;;:7;:16;;;;;;;17341:117;6055:148;;;;;;;;;;;;;:::i;14526:51::-;;;;;;;;;;-1:-1:-1;14526:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15572:56;;;;;;;;;;;;;;;;19623:161;;;;;;;;;;-1:-1:-1;19623:161:0;;;;;:::i;:::-;;:::i;15701:53::-;;;;;;;;;;;;;;;;19261:156;;;;;;;;;;-1:-1:-1;19261:156:0;;;;;:::i;:::-;;:::i;5832:87::-;;;;;;;;;;-1:-1:-1;5878:7:0;5905:6;-1:-1:-1;;;;;5905:6:0;5832:87;;20249:417;;;;;;;;;;-1:-1:-1;20249:417:0;;;;;:::i;:::-;;:::i;21143:152::-;;;;;;;;;;-1:-1:-1;21143:152:0;;;;;:::i;:::-;;:::i;17052:87::-;;;;;;;;;;;;;:::i;18508:269::-;;;;;;;;;;-1:-1:-1;18508:269:0;;;;;:::i;:::-;;:::i;20836:125::-;;;;;;;;;;-1:-1:-1;20836:125:0;;;;;:::i;:::-;;:::i;17466:167::-;;;;;;;;;;-1:-1:-1;17466:167:0;;;;;:::i;:::-;;:::i;19833:408::-;;;;;;;;;;-1:-1:-1;19833:408:0;;;;;:::i;:::-;;:::i;20675:109::-;;;;;;;;;;-1:-1:-1;20675:109:0;;;;;:::i;:::-;;:::i;26322:108::-;;;;;;;;;;-1:-1:-1;26322:108:0;;;;;:::i;:::-;;:::i;17641:143::-;;;;;;;;;;-1:-1:-1;17641:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17749:18:0;;;17722:7;17749:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17641:143;24349:443;;;;;;;;;;-1:-1:-1;24349:443:0;;;;;:::i;:::-;;:::i;18910:110::-;;;;;;;;;;-1:-1:-1;18910:110:0;;;;;:::i;:::-;;:::i;6211:244::-;;;;;;;;;;-1:-1:-1;6211:244:0;;;;;:::i;:::-;;:::i;19425:190::-;;;;;;;;;;-1:-1:-1;19425:190:0;;;;;:::i;:::-;;:::i;16961:83::-;16998:13;17031:5;17024:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16961:83;:::o;17792:161::-;17867:4;17884:39;2033:10;17907:7;17916:6;17884:8;:39::i;:::-;-1:-1:-1;17941:4:0;17792:161;;;;;:::o;25792:318::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;;;;;;;;;25879:32:::1;25933:9;25879:64;;25988:13;-1:-1:-1::0;;;;;25988:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25970:53:0::1;;26032:4;26039:13;-1:-1:-1::0;;;;;26039:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25970:90;::::0;-1:-1:-1;;;;;;25970:90:0::1;::::0;;;;;;-1:-1:-1;;;;;6328:15:1;;;25970:90:0::1;::::0;::::1;6310:34:1::0;6380:15;;6360:18;;;6353:43;6245:18;;25970:90:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25954:13;:106:::0;;-1:-1:-1;;;;;25954:106:0;;::::1;-1:-1:-1::0;;;;;;25954:106:0;;::::1;;::::0;;;26071:15:::1;:31:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;25792:318:0:o;17961:313::-;18059:4;18076:36;18086:6;18094:9;18105:6;18076:9;:36::i;:::-;18123:121;18132:6;2033:10;18154:89;18192:6;18154:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18154:19:0;;;;;;:11;:19;;;;;;;;2033:10;18154:33;;;;;;;;;;:37;:89::i;:::-;18123:8;:121::i;:::-;-1:-1:-1;18262:4:0;17961:313;;;;;:::o;20970:150::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;21107:5:::1;21089:17;21081:7;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;21066:12;:46:::0;-1:-1:-1;20970:150:0:o;25282:502::-;25417:10;5905:6;;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;25479:4:::1;-1:-1:-1::0;;;;;25447:37:0;::::1;::::0;25439:77:::1;;;::::0;-1:-1:-1;;;25439:77:0;;7136:2:1;25439:77:0::1;::::0;::::1;7118:21:1::0;7175:2;7155:18;;;7148:30;7214:29;7194:18;;;7187:57;7261:18;;25439:77:0::1;6934:351:1::0;25439:77:0::1;25551:53;::::0;-1:-1:-1;;;25551:53:0;;25598:4:::1;25551:53;::::0;::::1;1640:51:1::0;25527:21:0::1;::::0;-1:-1:-1;;;;;25551:38:0;::::1;::::0;::::1;::::0;1613:18:1;;25551:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25527:77;;25638:13;25619:16;:32;25615:72;;;25672:13;25653:32;;25615:72;25705:71;::::0;-1:-1:-1;;;25705:71:0;;-1:-1:-1;;;;;7671:32:1;;;25705:71:0::1;::::0;::::1;7653:51:1::0;7720:18;;;7713:34;;;25705:37:0;::::1;::::0;::::1;::::0;7626:18:1;;25705:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25697:79:::0;25282:502;-1:-1:-1;;;;;25282:502:0:o;26118:195::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;26274:15:::1;:31:::0;;-1:-1:-1;;;;;;26274:31:0::1;-1:-1:-1::0;;;;;26274:31:0;;;::::1;::::0;;;::::1;::::0;;26118:195::o;18282:218::-;2033:10;18370:4;18419:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18419:34:0;;;;;;;;;;18370:4;;18387:83;;18410:7;;18419:50;;18458:10;18419:38;:50::i;18788:111::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18857:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;18857:34:0::1;18887:4;18857:34;::::0;;18788:111::o;19030:223::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;19150:14:::1;::::0;19127:18:::1;19137:8:::0;19127:7;:18:::1;:::i;:::-;19126:38;;19118:67;;;::::0;-1:-1:-1;;;19118:67:0;;8340:2:1;19118:67:0::1;::::0;::::1;8322:21:1::0;8379:2;8359:18;;;8352:30;-1:-1:-1;;;8398:18:1;;;8391:46;8454:18;;19118:67:0::1;8138:340:1::0;19118:67:0::1;19196:8;:19:::0;19226:7:::1;:17:::0;19030:223::o;6055:148::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;6162:1:::1;6146:6:::0;;6125:40:::1;::::0;-1:-1:-1;;;;;6146:6:0;;::::1;::::0;6125:40:::1;::::0;6162:1;;6125:40:::1;6193:1;6176:19:::0;;-1:-1:-1;;;;;;6176:19:0::1;::::0;;6055:148::o;19623:161::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;19740:11:::1;:36:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;19740:36:0;;::::1;::::0;;;::::1;::::0;;19623:161::o;19261:156::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;19342:10:::1;:19:::0;;-1:-1:-1;;;;;;19342:19:0::1;;-1:-1:-1::0;;;;;19342:19:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;19391:10;::::1;;-1:-1:-1::0;19372:30:0;;;:18:::1;:30;::::0;;;;:37;;-1:-1:-1;;19372:37:0::1;-1:-1:-1::0;19372:37:0::1;::::0;;19261:156::o;20249:417::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;20352:16:::1;20379:15:::0;20408:9:::1;20403:256;20419:20:::0;;::::1;20403:256;;;20470:9;20460:7;:19;20457:195;;;20503:9;20492:20;;20526:14;:28;20541:9;;20551:1;20541:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20526:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20526:28:0;;::::1;;20523:81;;;20597:5;20566:14;:28;20581:9;;20591:1;20581:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20566:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20566:28:0;:36;;-1:-1:-1;;20566:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20523:81:::1;20635:9;20624:20;::::0;:8;:20:::1;:::i;:::-;20614:30;;20457:195;20441:3;::::0;::::1;:::i;:::-;;;20403:256;;;;20332:334;;20249:417:::0;;:::o;21143:152::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;21282:5:::1;21262:19;21254:7;;:27;;;;:::i;:::-;:33;;;;:::i;:::-;21236:15;:51:::0;-1:-1:-1;21143:152:0:o;17052:87::-;17091:13;17124:7;17117:14;;;;;:::i;18508:269::-;18601:4;18618:129;2033:10;18641:7;18650:96;18689:15;18650:96;;;;;;;;;;;;;;;;;2033:10;18650:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18650:34:0;;;;;;;;;;;;:38;:96::i;20836:125::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;20922:15:::1;:31:::0;;;::::1;;-1:-1:-1::0;;;20922:31:0::1;-1:-1:-1::0;;;;20922:31:0;;::::1;::::0;;;::::1;::::0;;20836:125::o;17466:167::-;17544:4;17561:42;2033:10;17585:9;17596:6;17561:9;:42::i;19833:408::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;19927:16:::1;19954:15:::0;19983:9:::1;19978:256;19994:20:::0;;::::1;19978:256;;;20045:9;20035:7;:19;20032:195;;;20078:9;20067:20;;20102:14;:28;20117:9;;20127:1;20117:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20102:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20102:28:0;;::::1;;20098:81;;20173:4;20142:14;:28;20157:9;;20167:1;20157:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20142:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20142:28:0;:35;;-1:-1:-1;;20142:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20098:81:::1;20210:9;20199:20;::::0;:8;:20:::1;:::i;:::-;20189:30;;20032:195;20016:3;::::0;::::1;:::i;:::-;;;19978:256;;20675:109:::0;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;20749:11:::1;:27:::0;;-1:-1:-1;;20749:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20675:109::o;26322:108::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;26399:13:::1;:23:::0;;-1:-1:-1;;;;;;26399:23:0::1;-1:-1:-1::0;;;;;26399:23:0;;;::::1;::::0;;;::::1;::::0;;26322:108::o;24349:443::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;24463:16:::1;::::0;-1:-1:-1;;;24463:16:0;::::1;;;24462:17;24454:62;;;::::0;-1:-1:-1;;;24454:62:0;;9090:2:1;24454:62:0::1;::::0;::::1;9072:21:1::0;;;9109:18;;;9102:30;9168:34;9148:18;;;9141:62;9220:18;;24454:62:0::1;8888:356:1::0;24454:62:0::1;24660:4;24615:24;17434:16:::0;;;:7;:16;;;;;;;24744:3:::1;24698:45;24715:28:::0;17434:16;24698:45:::1;:::i;:::-;:49;;;;:::i;:::-;24677:70;;24758:26;24773:10;24758:14;:26::i;:::-;24433:359;;24349:443:::0;:::o;18910:110::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18977:27:0::1;19007:5;18977:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18977:35:0::1;::::0;;18910:110::o;6211:244::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6300:22:0;::::1;6292:73;;;::::0;-1:-1:-1;;;6292:73:0;;9451:2:1;6292:73:0::1;::::0;::::1;9433:21:1::0;9490:2;9470:18;;;9463:30;9529:34;9509:18;;;9502:62;-1:-1:-1;;;9580:18:1;;;9573:36;9626:19;;6292:73:0::1;9249:402:1::0;6292:73:0::1;6402:6;::::0;;6381:38:::1;::::0;-1:-1:-1;;;;;6381:38:0;;::::1;::::0;6402:6;::::1;::::0;6381:38:::1;::::0;::::1;6430:6;:17:::0;;-1:-1:-1;;;;;;6430:17:0::1;-1:-1:-1::0;;;;;6430:17:0;;;::::1;::::0;;;::::1;::::0;;6211:244::o;19425:190::-;5878:7;5905:6;-1:-1:-1;;;;;5905:6:0;2033:10;5967:23;5959:68;;;;-1:-1:-1;;;5959:68:0;;;;;;;:::i;:::-;19511:21:::1;:37:::0;;;::::1;;-1:-1:-1::0;;;19511:37:0::1;-1:-1:-1::0;;;;19511:37:0;;::::1;;::::0;;19564:43:::1;::::0;::::1;::::0;::::1;::::0;19535:13;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;19564:43:0::1;;;;;;;;19425:190:::0;:::o;1268:98::-;1326:7;1353:5;1357:1;1353;:5;:::i;:::-;1346:12;1268:98;-1:-1:-1;;;1268:98:0:o;1378:::-;1436:7;1463:5;1467:1;1463;:5;:::i;21776:266::-;-1:-1:-1;;;;;21871:19:0;;;;;;:44;;-1:-1:-1;;;;;;21894:21:0;;;;21871:44;21863:74;;;;-1:-1:-1;;;21863:74:0;;9858:2:1;21863:74:0;;;9840:21:1;9897:2;9877:18;;;9870:30;-1:-1:-1;;;9916:18:1;;;9909:47;9973:18;;21863:74:0;9656:341:1;21863:74:0;-1:-1:-1;;;;;21948:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22000:32;;1848:25:1;;;22000:32:0;;1821:18:1;22000:32:0;;;;;;;21776:266;;;:::o;22050:1909::-;5878:7;5905:6;-1:-1:-1;;;;;22180:13:0;;;5905:6;;22180:13;;;;:46;;-1:-1:-1;22216:10:0;;-1:-1:-1;;;;;22210:16:0;;;22216:10;;;;;22210:16;;22180:46;:82;;;;-1:-1:-1;;;;;;22243:19:0;;22257:4;22243:19;;22180:82;:118;;;;-1:-1:-1;22285:13:0;;-1:-1:-1;;;;;22279:19:0;;;22285:13;;22279:19;;22180:118;:152;;;;-1:-1:-1;22321:11:0;;-1:-1:-1;;;;;22315:17:0;;;22321:11;;22315:17;;22180:152;:184;;;;-1:-1:-1;5878:7:0;5905:6;-1:-1:-1;;;;;22349:15:0;;;5905:6;;22349:15;;22180:184;22176:388;;;-1:-1:-1;;;;;17434:16:0;;22380:18;17434:16;;;:7;:16;;;;;;22462:15;;22438:19;22451:6;17434:16;22438:19;:::i;:::-;22437:40;;22429:133;;;;-1:-1:-1;;;22429:133:0;;10204:2:1;22429:133:0;;;10186:21:1;10243:2;10223:18;;;10216:30;10282:34;10262:18;;;10255:62;10353:34;10333:18;;;10326:62;-1:-1:-1;;;10404:19:1;;;10397:48;10462:19;;22429:133:0;10002:485:1;22429:133:0;22365:199;22176:388;5878:7;5905:6;-1:-1:-1;;;;;22582:15:0;;;5905:6;;22582:15;;;;:32;;-1:-1:-1;5878:7:0;5905:6;-1:-1:-1;;;;;22601:13:0;;;5905:6;;22601:13;;22582:32;22578:144;;;22647:12;;22637:6;:22;;22629:93;;;;-1:-1:-1;;;22629:93:0;;10694:2:1;22629:93:0;;;10676:21:1;10733:2;10713:18;;;10706:30;10772:34;10752:18;;;10745:62;10843:28;10823:18;;;10816:56;10889:19;;22629:93:0;10492:422:1;22629:93:0;22753:11;;;;22749:136;;;-1:-1:-1;;;;;22785:20:0;;;;;;:14;:20;;;;;;;;22784:21;:44;;;;-1:-1:-1;;;;;;22810:18:0;;;;;;:14;:18;;;;;;;;22809:19;22784:44;22776:107;;;;-1:-1:-1;;;22776:107:0;;11121:2:1;22776:107:0;;;11103:21:1;11160:2;11140:18;;;11133:30;11199:34;11179:18;;;11172:62;-1:-1:-1;;;11250:18:1;;;11243:48;11308:19;;22776:107:0;10919:414:1;22776:107:0;-1:-1:-1;;;;;22907:18:0;;;;;;:38;;-1:-1:-1;;;;;;22929:16:0;;;;22907:38;22899:72;;;;-1:-1:-1;;;22899:72:0;;11540:2:1;22899:72:0;;;11522:21:1;11579:2;11559:18;;;11552:30;-1:-1:-1;;;11598:18:1;;;11591:51;11659:18;;22899:72:0;11338:345:1;22899:72:0;22999:1;22990:6;:10;22982:60;;;;-1:-1:-1;;;22982:60:0;;11890:2:1;22982:60:0;;;11872:21:1;11929:2;11909:18;;;11902:30;11968:34;11948:18;;;11941:62;-1:-1:-1;;;12019:18:1;;;12012:35;12064:19;;22982:60:0;11688:401:1;22982:60:0;23087:11;;;;;;;;23076:7;;:22;;;;:57;;-1:-1:-1;23117:16:0;;-1:-1:-1;;;23117:16:0;;;;23116:17;23076:57;:95;;;;-1:-1:-1;23158:13:0;;-1:-1:-1;;;;;23150:21:0;;;23158:13;;23150:21;;23076:95;:133;;;;-1:-1:-1;23188:21:0;;-1:-1:-1;;;23188:21:0;;;;23076:133;23059:497;;;23266:7;:11;;-1:-1:-1;;23266:11:0;;;23341:4;-1:-1:-1;17434:16:0;;;-1:-1:-1;17434:16:0;;;;;;23388:12;;23365:35;;23362:78;;;-1:-1:-1;23426:12:0;;23362:78;23457:24;;23454:91;;23497:36;23512:20;23497:14;:36::i;:::-;23235:321;23059:497;-1:-1:-1;;;;;23624:24:0;;23580:12;23624:24;;;:18;:24;;;;;;23595:4;;23624:24;;;:50;;-1:-1:-1;;;;;;23652:22:0;;;;;;:18;:22;;;;;;;;23624:50;:119;;;-1:-1:-1;23679:15:0;;-1:-1:-1;;;23679:15:0;;;;:40;;;;-1:-1:-1;23706:13:0;;-1:-1:-1;;;;;23698:21:0;;;23706:13;;23698:21;;23679:40;:63;;;;-1:-1:-1;23729:13:0;;-1:-1:-1;;;;;23723:19:0;;;23729:13;;23723:19;;23679:63;23621:272;;;-1:-1:-1;23769:5:0;23621:272;;;23804:13;;-1:-1:-1;;;;;23804:13:0;;;23796:21;;;;23792:101;;23831:7;;23819:9;:19;23792:101;;;23856:13;;-1:-1:-1;;;;;23856:13:0;;;23850:19;;;;23846:47;;23883:8;;23871:9;:20;23846:47;23913:38;23928:4;23933:2;23936:6;23943:7;23913:14;:38::i;:::-;22153:1806;22050:1909;;;:::o;1484:206::-;1570:7;1631:12;1623:6;;;;1615:29;;;;-1:-1:-1;;;1615:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1666:5:0;;;1484:206::o;1056:98::-;1114:7;1141:5;1145:1;1141;:5;:::i;24097:242::-;16267:16;:23;;-1:-1:-1;;;;16267:23:0;-1:-1:-1;;;16267:23:0;;;24192:38:::1;24209:20:::0;24192:16:::1;:38::i;:::-;24308:10;::::0;24263:21:::1;::::0;24295:36:::1;::::0;24308:10:::1;::::0;::::1;-1:-1:-1::0;;;;;24308:10:0::1;24263:21:::0;24295:12:::1;:36::i;:::-;-1:-1:-1::0;;16313:16:0;:24;;-1:-1:-1;;;;16313:24:0;;;24097:242::o;26438:360::-;26569:7;26565:107;;26592:14;:12;:14::i;:::-;26565:107;;;26647:7;:9;;;;;:7;:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;26565:107;26686:42;26702:6;26710:9;26721:6;26686:15;:42::i;:::-;26753:7;26749:41;;26775:15;21673:17;;21661:9;:29;21707:15;;21697:7;:25;21741:16;;21730:8;:27;21615:153;24800:474;24892:16;;;24906:1;24892:16;;;;;;;;24868:21;;24892:16;;;;;;;;;;-1:-1:-1;24892:16:0;24868:40;;24937:4;24919;24924:1;24919:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24919:23:0;;;:7;;;;;;;;;;:23;;;;24963:15;;:22;;;-1:-1:-1;;;24963:22:0;;;;:15;;;;;:20;;:22;;;;;24919:7;;24963:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24953:4;24958:1;24953:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24953:32:0;;;:7;;;;;;;;;:32;25028:15;;24996:62;;25013:4;;25028:15;25046:11;24996:8;:62::i;:::-;25069:15;;:197;;-1:-1:-1;;;25069:197:0;;-1:-1:-1;;;;;25069:15:0;;;;:66;;:197;;25150:11;;25069:15;;25193:4;;25220;;25240:15;;25069:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24855:419;24800:474;:::o;23967:120::-;24052:23;;-1:-1:-1;;;;;24052:15:0;;;:23;;;;;24068:6;;24052:23;;;;24068:6;24052:15;:23;;;;;;;;;;;;;;;;;;;21303:300;21349:9;;:14;:30;;;;-1:-1:-1;21367:7:0;;:12;21349:30;:47;;;;-1:-1:-1;21383:8:0;;:13;21349:47;21346:59;;;21303:300::o;21346:59::-;21437:7;;;21419:15;:25;21475:8;;;21456:16;:27;21515:9;;;21495:17;:29;-1:-1:-1;21535:11:0;;;;21557:12;;;;21580:13;21303:300::o;26806:424::-;26903:23;26928:12;26944:19;26955:7;26944:10;:19::i;:::-;-1:-1:-1;;;;;26992:15:0;;;;;;:7;:15;;;;;;26902:61;;-1:-1:-1;26902:61:0;-1:-1:-1;26992:28:0;;27012:7;26992:19;:28::i;:::-;-1:-1:-1;;;;;26974:15:0;;;;;;;:7;:15;;;;;;:46;;;;27052:18;;;;;;;:39;;27075:15;27052:22;:39::i;:::-;-1:-1:-1;;;;;27031:18:0;;;;;;:7;:18;;;;;;:60;;;;27143:4;27127:22;;;;:32;;27154:4;27127:26;:32::i;:::-;27118:4;27102:22;;;;:7;:22;;;;;;;;;:57;;;;27178:44;1848:25:1;;;-1:-1:-1;;;;;27178:44:0;;;;;;;;;;1821:18:1;27178:44:0;;;;;;;26891:339;;26806:424;;;:::o;27238:227::-;27297:7;27306;27326:12;27359:3;27349:9;;27341:7;:17;;;;:::i;:::-;:21;;;;:::i;:::-;27326:36;-1:-1:-1;27373:23:0;27399:17;:7;27326:36;27399:11;:17::i;:::-;27373:43;27452:4;;-1:-1:-1;27238:227:0;;-1:-1:-1;;;27238:227:0:o;1162:98::-;1220:7;1247:5;1251:1;1247;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2345:180::-;2404:6;2457:2;2445:9;2436:7;2432:23;2428:32;2425:52;;;2473:1;2470;2463:12;2425:52;-1:-1:-1;2496:23:1;;2345:180;-1:-1:-1;2345:180:1:o;2927:248::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;-1:-1:-1;;3095:23:1;;;3165:2;3150:18;;;3137:32;;-1:-1:-1;2927:248:1:o;3180:269::-;3237:6;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3395:4;3388:5;3384:16;3377:5;3374:27;3364:55;;3415:1;3412;3405:12;3714:615;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3917:9;3904:23;3946:18;3987:2;3979:6;3976:14;3973:34;;;4003:1;4000;3993:12;3973:34;4041:6;4030:9;4026:22;4016:32;;4086:7;4079:4;4075:2;4071:13;4067:27;4057:55;;4108:1;4105;4098:12;4057:55;4148:2;4135:16;4174:2;4166:6;4163:14;4160:34;;;4190:1;4187;4180:12;4160:34;4243:7;4238:2;4228:6;4225:1;4221:14;4217:2;4213:23;4209:32;4206:45;4203:65;;;4264:1;4261;4254:12;4203:65;4295:2;4287:11;;;;;4317:6;;-1:-1:-1;3714:615:1;;-1:-1:-1;;;;3714:615:1:o;4334:118::-;4420:5;4413:13;4406:21;4399:5;4396:32;4386:60;;4442:1;4439;4432:12;4457:241;4513:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:52;;;4582:1;4579;4572:12;4534:52;4621:9;4608:23;4640:28;4662:5;4640:28;:::i;4703:388::-;4771:6;4779;4832:2;4820:9;4811:7;4807:23;4803:32;4800:52;;;4848:1;4845;4838:12;4800:52;4887:9;4874:23;4906:31;4931:5;4906:31;:::i;:::-;4956:5;-1:-1:-1;5013:2:1;4998:18;;4985:32;5026:33;4985:32;5026:33;:::i;:::-;5078:7;5068:17;;;4703:388;;;;;:::o;5096:380::-;5175:1;5171:12;;;;5218;;;5239:61;;5293:4;5285:6;5281:17;5271:27;;5239:61;5346:2;5338:6;5335:14;5315:18;5312:38;5309:161;;5392:10;5387:3;5383:20;5380:1;5373:31;5427:4;5424:1;5417:15;5455:4;5452:1;5445:15;5309:161;;5096:380;;;:::o;5481:356::-;5683:2;5665:21;;;5702:18;;;5695:30;5761:34;5756:2;5741:18;;5734:62;5828:2;5813:18;;5481:356::o;5842:251::-;5912:6;5965:2;5953:9;5944:7;5940:23;5936:32;5933:52;;;5981:1;5978;5971:12;5933:52;6013:9;6007:16;6032:31;6057:5;6032:31;:::i;6407:127::-;6468:10;6463:3;6459:20;6456:1;6449:31;6499:4;6496:1;6489:15;6523:4;6520:1;6513:15;6539:168;6612:9;;;6643;;6660:15;;;6654:22;;6640:37;6630:71;;6681:18;;:::i;6712:217::-;6752:1;6778;6768:132;;6822:10;6817:3;6813:20;6810:1;6803:31;6857:4;6854:1;6847:15;6885:4;6882:1;6875:15;6768:132;-1:-1:-1;6914:9:1;;6712:217::o;7290:184::-;7360:6;7413:2;7401:9;7392:7;7388:23;7384:32;7381:52;;;7429:1;7426;7419:12;7381:52;-1:-1:-1;7452:16:1;;7290:184;-1:-1:-1;7290:184:1:o;7758:245::-;7825:6;7878:2;7866:9;7857:7;7853:23;7849:32;7846:52;;;7894:1;7891;7884:12;7846:52;7926:9;7920:16;7945:28;7967:5;7945:28;:::i;8008:125::-;8073:9;;;8094:10;;;8091:36;;;8107:18;;:::i;8483:127::-;8544:10;8539:3;8535:20;8532:1;8525:31;8575:4;8572:1;8565:15;8599:4;8596:1;8589:15;8615:128;8682:9;;;8703:11;;;8700:37;;;8717:18;;:::i;8748:135::-;8787:3;8808:17;;;8805:43;;8828:18;;:::i;:::-;-1:-1:-1;8875:1:1;8864:13;;8748:135::o;12094:175::-;12131:3;12175:4;12168:5;12164:16;12204:4;12195:7;12192:17;12189:43;;12212:18;;:::i;:::-;12261:1;12248:15;;12094:175;-1:-1:-1;;12094:175:1:o;12406:980::-;12668:4;12716:3;12705:9;12701:19;12747:6;12736:9;12729:25;12773:2;12811:6;12806:2;12795:9;12791:18;12784:34;12854:3;12849:2;12838:9;12834:18;12827:31;12878:6;12913;12907:13;12944:6;12936;12929:22;12982:3;12971:9;12967:19;12960:26;;13021:2;13013:6;13009:15;12995:29;;13042:1;13052:195;13066:6;13063:1;13060:13;13052:195;;;13131:13;;-1:-1:-1;;;;;13127:39:1;13115:52;;13222:15;;;;13187:12;;;;13163:1;13081:9;13052:195;;;-1:-1:-1;;;;;;;13303:32:1;;;;13298:2;13283:18;;13276:60;-1:-1:-1;;;13367:3:1;13352:19;13345:35;13264:3;12406:980;-1:-1:-1;;;12406:980:1:o

Swarm Source

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