ETH Price: $1,884.89 (-4.58%)
Gas: 0.04 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve242633312026-01-18 18:07:5935 days ago1768759679IN
0x4F27d2DE...b9c90ebAc
0 ETH0.000002490.05389
Approve236281762025-10-21 20:00:59124 days ago1761076859IN
0x4F27d2DE...b9c90ebAc
0 ETH0.000074391.60982672
Transfer231417302025-08-14 20:41:47192 days ago1755204107IN
0x4F27d2DE...b9c90ebAc
0 ETH0.000173772.16980692
Approve222662602025-04-14 9:13:35315 days ago1744622015IN
0x4F27d2DE...b9c90ebAc
0 ETH0.000024870.93498159
Approve222662592025-04-14 9:13:23315 days ago1744622003IN
0x4F27d2DE...b9c90ebAc
0 ETH0.000041250.88692634
Approve192197082024-02-13 14:34:35740 days ago1707834875IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0016966470.20805434
Approve187462852023-12-09 4:27:11807 days ago1702096031IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0012397726.65603236
Approve186635682023-11-27 14:26:59818 days ago1701095219IN
0x4F27d2DE...b9c90ebAc
0 ETH0.001887640.92289707
Approve186562682023-11-26 13:52:59819 days ago1701006779IN
0x4F27d2DE...b9c90ebAc
0 ETH0.001290327.77846443
Approve186456472023-11-25 2:11:23821 days ago1700878283IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0005323220.29749579
Approve186456442023-11-25 2:10:47821 days ago1700878247IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0009811221.27057106
Approve186444632023-11-24 22:12:47821 days ago1700863967IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0014962932.43939334
Approve186444262023-11-24 22:05:11821 days ago1700863511IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0015925234.52548422
Approve186444172023-11-24 22:03:23821 days ago1700863403IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0018354339.79173574
Approve186395142023-11-24 5:34:35822 days ago1700804075IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0010594322.77856306
Approve186394102023-11-24 5:13:35822 days ago1700802815IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0008985319.47484419
Approve186247932023-11-22 4:06:23824 days ago1700625983IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0015488133.34372089
Approve186223222023-11-21 19:48:23824 days ago1700596103IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0029279163.03365903
Approve186223182023-11-21 19:47:35824 days ago1700596055IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0030362665.28196381
Approve186223152023-11-21 19:46:59824 days ago1700596019IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0040411186.90945835
Approve186223122023-11-21 19:46:23824 days ago1700595983IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0033167971.33197175
Approve186184902023-11-21 6:55:35825 days ago1700549735IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0013241928.47109809
Approve177902552023-07-28 8:06:47941 days ago1690531607IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0017587238.05931943
Approve171506292023-04-29 8:40:231031 days ago1682757623IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0014793532.05546772
Approve171126222023-04-24 0:36:351036 days ago1682296595IN
0x4F27d2DE...b9c90ebAc
0 ETH0.0018624140.09502104
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer170272452023-04-11 20:37:591048 days ago1681245479
0x4F27d2DE...b9c90ebAc
0.98037349 ETH
Transfer170218222023-04-11 2:10:111049 days ago1681179011
0x4F27d2DE...b9c90ebAc
0.01213634 ETH
Transfer170218222023-04-11 2:10:111049 days ago1681179011
0x4F27d2DE...b9c90ebAc
0.02275564 ETH
Transfer170218222023-04-11 2:10:111049 days ago1681179011
0x4F27d2DE...b9c90ebAc
0.04551128 ETH
Add Liquidity ET...170218182023-04-11 2:09:111049 days ago1681178951
0x4F27d2DE...b9c90ebAc
0.00679045 ETH
Transfer170218182023-04-11 2:09:111049 days ago1681178951
0x4F27d2DE...b9c90ebAc
0.01552104 ETH
Transfer170218182023-04-11 2:09:111049 days ago1681178951
0x4F27d2DE...b9c90ebAc
0.02910195 ETH
Transfer170218182023-04-11 2:09:111049 days ago1681178951
0x4F27d2DE...b9c90ebAc
0.05238352 ETH
Transfer170218112023-04-11 2:07:471049 days ago1681178867
0x4F27d2DE...b9c90ebAc
0.00991597 ETH
Transfer170218112023-04-11 2:07:471049 days ago1681178867
0x4F27d2DE...b9c90ebAc
0.01859244 ETH
Transfer170218112023-04-11 2:07:471049 days ago1681178867
0x4F27d2DE...b9c90ebAc
0.03718488 ETH
Transfer170218082023-04-11 2:07:111049 days ago1681178831
0x4F27d2DE...b9c90ebAc
0.01035298 ETH
Transfer170218082023-04-11 2:07:111049 days ago1681178831
0x4F27d2DE...b9c90ebAc
0.01941185 ETH
Transfer170218082023-04-11 2:07:111049 days ago1681178831
0x4F27d2DE...b9c90ebAc
0.0388237 ETH
Transfer170218062023-04-11 2:06:471049 days ago1681178807
0x4F27d2DE...b9c90ebAc
0.03239798 ETH
Transfer170218042023-04-11 2:06:231049 days ago1681178783
0x4F27d2DE...b9c90ebAc
0.00709609 ETH
Transfer170218042023-04-11 2:06:231049 days ago1681178783
0x4F27d2DE...b9c90ebAc
0.01330517 ETH
Transfer170218042023-04-11 2:06:231049 days ago1681178783
0x4F27d2DE...b9c90ebAc
0.02661035 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.00967238 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.01813573 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.03627146 ETH
Add Liquidity ET...170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.00741833 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.0169562 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.03179287 ETH
Transfer170218032023-04-11 2:06:111049 days ago1681178771
0x4F27d2DE...b9c90ebAc
0.05722718 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XCorp

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 10 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-04-11
*/

/* 


*/


// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.17;

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    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 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;
}

interface InterfaceLP {
    function sync() external;
}

contract XCorp is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "X CORP";
    string constant _symbol = "X";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private devFee          = 1;
    uint256 private utilityFee      = 1; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = utilityFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellpercent = 900;
    uint256 buypercent = 1600;
    uint256 transferpercent = 100; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private utilityFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

    bool public whitelistMode = false;
    mapping (address => bool) public iswhitelisted;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 22 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexempt[msg.sender] = true;
        isFeeexempt[devFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[devFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x960da572289f017f90B7F2A61F4c82404dA1a244;
        devFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function editMaxHolding(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxSell(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    function removelimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }
      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
             if(whitelistMode){
                require(iswhitelisted[recipient],"Not whitelisted"); 
          }
        }
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeexempt[sender] || isFeeexempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitexempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;

        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function removeStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(utilityFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function manualUnclog() external onlyOwner {
           swapBack();
    
    }

     function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);

    }

    function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function updateTaxAmount(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellpercent = _sell;
        buypercent = _buy;
        transferpercent = _trans;    
          
    }

     function enableWhitelist(bool _status) public onlyOwner {
        whitelistMode = _status;
    }

    function setIsWhitelisted(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            iswhitelisted[addresses[i]] = status;
        }
    }

    function openTrade() public onlyOwner {
        TradingOpen = true;
        
    }

     function dogeToTheMoon() public onlyOwner {
        buypercent = 550;
        sellpercent = 1000;
        transferpercent = 1500;
    }
        
           
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setInternalAddress(address holder, bool exempt) external onlyOwner {
        isFeeexempt[holder] = exempt;
        isTxLimitexempt[holder] = exempt;
    }

    
    function updateFees(uint256 _liquidityFee, uint256 _utilityFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        utilityFee = _utilityFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_utilityFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _utilityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
    }

    function setSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

API
[{"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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","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":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dogeToTheMoon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"editMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removelimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setInternalAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"updateFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateTaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006e6565b6200004290633b9aca00620006f7565b6005556200007c6064620000686001600554620004b660201b6200117a1790919060201c565b6200054d60201b620011fc1790919060201c565b600655620000a26064620000686001600554620004b660201b6200117a1790919060201c565b6007556001600c556002600d556001600e556001600f556000601055601054600e54600c54600d54600f54620000d9919062000711565b620000e5919062000711565b620000f1919062000711565b620000fd919062000711565b601155606460128190556103846013556106406014556015819055601e601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546103e8906200014f906016620006f7565b6200015b919062000727565b6022553480156200016b57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025191906200074a565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d691906200074a565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e91906200074a565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055306000818152600960209081526040808320601d54881684528252808320600019905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b168752848720805483168417905596865283862080549091169091179055601680548716821790558454861673960da572289f017f90b7f2a61f4c82404da1a2441790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007c5565b600082600003620004ca5750600062000547565b6000620004d88385620006f7565b905082620004e7858362000727565b14620005445760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059760201b60201c565b60008183620005bb5760405162461bcd60e51b81526004016200053b919062000775565b506000620005ca848662000727565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200062a5781600019048211156200060e576200060e620005d3565b808516156200061c57918102915b93841c9390800290620005ee565b509250929050565b600082620006435750600162000547565b81620006525750600062000547565b81600181146200066b5760028114620006765762000696565b600191505062000547565b60ff8411156200068a576200068a620005d3565b50506001821b62000547565b5060208310610133831016604e8410600b8410161715620006bb575081810a62000547565b620006c78383620005e9565b8060001904821115620006de57620006de620005d3565b029392505050565b60006200054460ff84168362000632565b8082028115828204841417620005475762000547620005d3565b80820180821115620005475762000547620005d3565b6000826200074557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200075d57600080fd5b81516001600160a01b03811681146200054457600080fd5b600060208083528351808285015260005b81811015620007a45785810183015185820160400152820162000786565b506000604082860101526040601f19601f8301168501019250505092915050565b61237680620007d56000396000f3fe6080604052600436106102065760003560e01c8063040b6583146102125780630445b6671461023457806306fdde031461025d57806308fd3d0514610295578063095ea7b3146102c6578063115db610146102e65780631161ae391461031557806318160ddd146103355780631df4ccfc1461034a578063201e7991146103605780632219e91d1461038057806323b872dd146103a05780632ad75672146103c05780632b112e49146103e0578063313ce567146103f557806338347fa414610411578063571ac8b0146104265780635e4ae81b1461044657806360c898871461045b5780636ddd17131461047b57806370a082311461049557806370c757ec146104b5578063715018a6146104d657806378109e54146104eb5780637d1db4a5146105015780637fa4a5bb146105175780638821004f14610537578063893d20e8146105575780638da5cb5b1461057e57806395d89b411461059c578063992c58e4146105c6578063a8aa1b31146105e6578063a9059cbb14610606578063aba1193d14610626578063b2bdfa7b14610646578063d17b71f914610666578063d51ed1c814610686578063dd62ed3e146106a6578063ef998cf0146106ec578063f0a9e3651461070c578063f28202291461072c578063f2fde38b14610741578063f429389014610761578063f887ea4014610776578063fb201b1d1461079657600080fd5b3661020d57005b600080fd5b34801561021e57600080fd5b5061023261022d366004611e1a565b6107ab565b005b34801561024057600080fd5b5061024a60225481565b6040519081526020015b60405180910390f35b34801561026957600080fd5b5060408051808201909152600681526505820434f52560d41b60208201525b6040516102549190611e37565b3480156102a157600080fd5b50601f546102b690600160a01b900460ff1681565b6040519015158152602001610254565b3480156102d257600080fd5b506102b66102e1366004611ea1565b6107fc565b3480156102f257600080fd5b506102b6610301366004611ecb565b602080526000908152604090205460ff1681565b34801561032157600080fd5b506102b6610330366004611ee6565b610869565b34801561034157600080fd5b5060055461024a565b34801561035657600080fd5b5061024a60115481565b34801561036c57600080fd5b5061023261037b366004611ee6565b61087d565b34801561038c57600080fd5b5061023261039b366004611f08565b6108b2565b3480156103ac57600080fd5b506102b66103bb366004611f34565b6108ed565b3480156103cc57600080fd5b506102326103db366004611f70565b6109af565b3480156103ec57600080fd5b5061024a610a38565b34801561040157600080fd5b5060405160098152602001610254565b34801561041d57600080fd5b50610232610a81565b34801561043257600080fd5b506102b6610441366004611ecb565b610ab5565b34801561045257600080fd5b50610232610ac3565b34801561046757600080fd5b50610232610476366004611fd5565b610afa565b34801561048757600080fd5b506021546102b69060ff1681565b3480156104a157600080fd5b5061024a6104b0366004611ecb565b610b99565b3480156104c157600080fd5b50601f546102b690600160a81b900460ff1681565b3480156104e257600080fd5b50610232610bb4565b3480156104f757600080fd5b5061024a60075481565b34801561050d57600080fd5b5061024a60065481565b34801561052357600080fd5b5061023261053236600461205a565b610c16565b34801561054357600080fd5b50610232610552366004612091565b610c7e565b34801561056357600080fd5b506000546001600160a01b03165b60405161025491906120aa565b34801561058a57600080fd5b506000546001600160a01b0316610571565b3480156105a857600080fd5b506040805180820190915260018152600b60fb1b6020820152610288565b3480156105d257600080fd5b506102326105e13660046120be565b610cd2565b3480156105f257600080fd5b50601f54610571906001600160a01b031681565b34801561061257600080fd5b506102b6610621366004611ea1565b610d98565b34801561063257600080fd5b50610232610641366004612101565b610da5565b34801561065257600080fd5b50600054610571906001600160a01b031681565b34801561067257600080fd5b50610232610681366004612091565b610de6565b34801561069257600080fd5b5061024a6106a1366004612091565b610e4f565b3480156106b257600080fd5b5061024a6106c136600461211f565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106f857600080fd5b50610232610707366004612091565b610e8f565b34801561071857600080fd5b506102b6610727366004611ea1565b610ef8565b34801561073857600080fd5b50610232610fe9565b34801561074d57600080fd5b5061023261075c366004611ecb565b611027565b34801561076d57600080fd5b506102326110ff565b34801561078257600080fd5b50601d54610571906001600160a01b031681565b3480156107a257600080fd5b5061023261113b565b6000546001600160a01b031633146107de5760405162461bcd60e51b81526004016107d590612152565b60405180910390fd5b601f8054911515600160a81b0260ff60a81b19909216919091179055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108579086815260200190565b60405180910390a35060015b92915050565b60008261087583610e4f565b119392505050565b6000546001600160a01b031633146108a75760405162461bcd60e51b81526004016107d590612152565b601b91909155601c55565b6000546001600160a01b031633146108dc5760405162461bcd60e51b81526004016107d590612152565b601391909155601491909155601555565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461099a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461097591849061123b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6109a5848484611275565b90505b9392505050565b6000546001600160a01b031633146109d95760405162461bcd60e51b81526004016107d590612152565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b600454600090610a7c90610a54906001600160a01b0316610b99565b600354610a7690610a6d906001600160a01b0316610b99565b6005549061163b565b9061163b565b905090565b6000546001600160a01b03163314610aab5760405162461bcd60e51b81526004016107d590612152565b610ab361167d565b565b6000610863826000196107fc565b6000546001600160a01b03163314610aed5760405162461bcd60e51b81526004016107d590612152565b6005546006819055600755565b6000546001600160a01b03163314610b245760405162461bcd60e51b81526004016107d590612152565b60005b82811015610b93578160206000868685818110610b4657610b46612187565b9050602002016020810190610b5b9190611ecb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b8c816121b3565b9050610b27565b50505050565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610bde5760405162461bcd60e51b81526004016107d590612152565b600080546040516001600160a01b0390911690600080516020612301833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c405760405162461bcd60e51b81526004016107d590612152565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b60195447906001600160a01b03166108fc6064610c9b85856121cc565b610ca591906121e3565b6040518115909202916000818181858888f19350505050158015610ccd573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b81526004016107d590612152565b600c869055600f859055600d849055600e8390556010829055610d2d82610d27858188818c8c611a64565b90611a64565b6011556012819055610d406005826121e3565b60115410610d905760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107d5565b505050505050565b60006109a8338484611275565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b81526004016107d590612152565b6021805460ff191692151592909217909155602255565b6000546001600160a01b03163314610e105760405162461bcd60e51b81526004016107d590612152565b6103e8600554610e2091906121e3565b6007541015610e2e57600080fd5b6103e881600554610e3f91906121cc565b610e4991906121e3565b60075550565b6000610863610e5c610a38565b601f54610e8990610e8290600290610e7c906001600160a01b0316610b99565b9061117a565b859061117a565b906111fc565b6000546001600160a01b03163314610eb95760405162461bcd60e51b81526004016107d590612152565b6103e8600554610ec991906121e3565b6006541015610ed757600080fd5b6103e881600554610ee891906121cc565b610ef291906121e3565b60065550565b600081600003610f72576040516370a0823160e01b81526001600160a01b038416906370a0823190610f2e9030906004016120aa565b602060405180830381865afa158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190612205565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a8919061221e565b6000546001600160a01b031633146110135760405162461bcd60e51b81526004016107d590612152565b6102266014556103e86013556105dc601555565b6000546001600160a01b031633146110515760405162461bcd60e51b81526004016107d590612152565b6001600160a01b0381166110b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d5565b600080546040516001600160a01b038085169392169160008051602061230183398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611138573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111655760405162461bcd60e51b81526004016107d590612152565b601f805460ff60a01b1916600160a01b179055565b60008260000361118c57506000610863565b600061119883856121cc565b9050826111a585836121e3565b146109a85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d5565b60006109a883836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ac1565b6000818484111561125f5760405162461bcd60e51b81526004016107d59190611e37565b50600061126c848661223b565b95945050505050565b60235460009060ff16156112955761128e848484611aef565b90506109a8565b6001600160a01b03841660009081526001602052604090205460ff161580156112d757506001600160a01b03831660009081526001602052604090205460ff16155b1561139757601f54600160a01b900460ff1661132c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107d5565b601f54600160a81b900460ff1615611397576001600160a01b038316600090815260208052604090205460ff166113975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107d5565b6001600160a01b03841660009081526001602052604090205460ff161580156113c957506001600160a01b0383163014155b80156113e357506003546001600160a01b03848116911614155b80156113fd5750601f546001600160a01b03848116911614155b80156114175750601a546001600160a01b03848116911614155b801561143157506017546001600160a01b03848116911614155b801561145657506001600160a01b0383166000908152600b602052604090205460ff16155b156114ec57600061146684610b99565b600754909150611476848361224e565b11156114ea5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107d5565b505b6114f68483611bc3565b6114fe611c30565b1561150b5761150b61167d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461155d91849061123b565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16806115aa57506001600160a01b0384166000908152600a602052604090205460ff165b6115be576115b9858486611c7f565b6115c0565b825b6001600160a01b0385166000908152600860205260409020549091506115e69082611a64565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612321833981519152906116289085815260200190565b60405180910390a3506001949350505050565b60006109a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061123b565b6023805460ff19166001179055601b54601c5460009161169c91610869565b6116a857600c546116ab565b60005b905060006116cf6002610e89601154610e898660225461117a90919063ffffffff16565b905060006116e88260225461163b90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061172257611722612187565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061175357611753612187565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac9479061179d908690600090879030904290600401612261565b600060405180830381600087803b1580156117b757600080fd5b505af11580156117cb573d6000803e3d6000fd5b5050505060006117e4824761163b90919063ffffffff16565b905060006117ff6117f68860026111fc565b6011549061163b565b905060006118146002610e898481878d61117a565b9050600061183183610e89600d548761117a90919063ffffffff16565b9050600061184e84610e89600f548861117a90919063ffffffff16565b9050600061186b85610e89600e548961117a90919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146118bd576040519150601f19603f3d011682016040523d82523d6000602084013e6118c2565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611912576040519150601f19603f3d011682016040523d82523d6000602084013e611917565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611967576040519150601f19603f3d011682016040523d82523d6000602084013e61196c565b606091505b5060009250508b159050611a4c57601d5460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af11580156119ea573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a0f91906122d2565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b600080611a71838561224e565b9050838110156109a85760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b60448201526064016107d5565b60008183611ae25760405162461bcd60e51b81526004016107d59190611e37565b50600061126c84866121e3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b4091849061123b565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b6f9083611a64565b6001600160a01b03808516600081815260086020526040908190209390935591519086169060008051602061232183398151915290611bb19086815260200190565b60405180910390a35060019392505050565b60065481111580611bec57506001600160a01b0382166000908152600b602052604090205460ff165b611c2c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107d5565b5050565b601f546000906001600160a01b03163314801590611c51575060235460ff16155b8015611c5f575060215460ff165b8015610a7c57505060225430600090815260086020526040902054101590565b601554601f54600091906001600160a01b0390811690841603611ca55750601354611cc0565b601f546001600160a01b0390811690861603611cc057506014545b6000611ced6012546064611cd491906121cc565b610e8984610e7c6011548a61117a90919063ffffffff16565b90506000611d0c601154610e896010548561117a90919063ffffffff16565b90506000611d1a838361163b565b30600090815260086020526040902054909150611d379082611a64565b3060009081526008602052604080822092909255601a546001600160a01b031681522054611d659083611a64565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b1691600080516020612321833981519152910160405180910390a38115611df657600554611dbf908361163b565b6005556004546040518381526001600160a01b03918216918a16906000805160206123218339815191529060200160405180910390a35b611e00878461163b565b98975050505050505050565b801515811461113857600080fd5b600060208284031215611e2c57600080fd5b81356109a881611e0c565b600060208083528351808285015260005b81811015611e6457858101830151858201604001528201611e48565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e9c57600080fd5b919050565b60008060408385031215611eb457600080fd5b611ebd83611e85565b946020939093013593505050565b600060208284031215611edd57600080fd5b6109a882611e85565b60008060408385031215611ef957600080fd5b50508035926020909101359150565b600080600060608486031215611f1d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611f4957600080fd5b611f5284611e85565b9250611f6060208501611e85565b9150604084013590509250925092565b600080600080600060a08688031215611f8857600080fd5b611f9186611e85565b9450611f9f60208701611e85565b9350611fad60408701611e85565b9250611fbb60608701611e85565b9150611fc960808701611e85565b90509295509295909350565b600080600060408486031215611fea57600080fd5b83356001600160401b038082111561200157600080fd5b818601915086601f83011261201557600080fd5b81358181111561202457600080fd5b8760208260051b850101111561203957600080fd5b6020928301955093505084013561204f81611e0c565b809150509250925092565b6000806040838503121561206d57600080fd5b61207683611e85565b9150602083013561208681611e0c565b809150509250929050565b6000602082840312156120a357600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060008060008060c087890312156120d757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561211457600080fd5b8235611ebd81611e0c565b6000806040838503121561213257600080fd5b61213b83611e85565b915061214960208401611e85565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121c5576121c561219d565b5060010190565b80820281158282048414176108635761086361219d565b60008261220057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561221757600080fd5b5051919050565b60006020828403121561223057600080fd5b81516109a881611e0c565b818103818111156108635761086361219d565b808201808211156108635761086361219d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122b15784516001600160a01b03168352938301939183019160010161228c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156122e757600080fd5b835192506020840151915060408401519050925092509256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220207bc226f6d27dd7ffe6c23b00c88ce6763084dbf7cc0feaac6deb4f2712b20b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102065760003560e01c8063040b6583146102125780630445b6671461023457806306fdde031461025d57806308fd3d0514610295578063095ea7b3146102c6578063115db610146102e65780631161ae391461031557806318160ddd146103355780631df4ccfc1461034a578063201e7991146103605780632219e91d1461038057806323b872dd146103a05780632ad75672146103c05780632b112e49146103e0578063313ce567146103f557806338347fa414610411578063571ac8b0146104265780635e4ae81b1461044657806360c898871461045b5780636ddd17131461047b57806370a082311461049557806370c757ec146104b5578063715018a6146104d657806378109e54146104eb5780637d1db4a5146105015780637fa4a5bb146105175780638821004f14610537578063893d20e8146105575780638da5cb5b1461057e57806395d89b411461059c578063992c58e4146105c6578063a8aa1b31146105e6578063a9059cbb14610606578063aba1193d14610626578063b2bdfa7b14610646578063d17b71f914610666578063d51ed1c814610686578063dd62ed3e146106a6578063ef998cf0146106ec578063f0a9e3651461070c578063f28202291461072c578063f2fde38b14610741578063f429389014610761578063f887ea4014610776578063fb201b1d1461079657600080fd5b3661020d57005b600080fd5b34801561021e57600080fd5b5061023261022d366004611e1a565b6107ab565b005b34801561024057600080fd5b5061024a60225481565b6040519081526020015b60405180910390f35b34801561026957600080fd5b5060408051808201909152600681526505820434f52560d41b60208201525b6040516102549190611e37565b3480156102a157600080fd5b50601f546102b690600160a01b900460ff1681565b6040519015158152602001610254565b3480156102d257600080fd5b506102b66102e1366004611ea1565b6107fc565b3480156102f257600080fd5b506102b6610301366004611ecb565b602080526000908152604090205460ff1681565b34801561032157600080fd5b506102b6610330366004611ee6565b610869565b34801561034157600080fd5b5060055461024a565b34801561035657600080fd5b5061024a60115481565b34801561036c57600080fd5b5061023261037b366004611ee6565b61087d565b34801561038c57600080fd5b5061023261039b366004611f08565b6108b2565b3480156103ac57600080fd5b506102b66103bb366004611f34565b6108ed565b3480156103cc57600080fd5b506102326103db366004611f70565b6109af565b3480156103ec57600080fd5b5061024a610a38565b34801561040157600080fd5b5060405160098152602001610254565b34801561041d57600080fd5b50610232610a81565b34801561043257600080fd5b506102b6610441366004611ecb565b610ab5565b34801561045257600080fd5b50610232610ac3565b34801561046757600080fd5b50610232610476366004611fd5565b610afa565b34801561048757600080fd5b506021546102b69060ff1681565b3480156104a157600080fd5b5061024a6104b0366004611ecb565b610b99565b3480156104c157600080fd5b50601f546102b690600160a81b900460ff1681565b3480156104e257600080fd5b50610232610bb4565b3480156104f757600080fd5b5061024a60075481565b34801561050d57600080fd5b5061024a60065481565b34801561052357600080fd5b5061023261053236600461205a565b610c16565b34801561054357600080fd5b50610232610552366004612091565b610c7e565b34801561056357600080fd5b506000546001600160a01b03165b60405161025491906120aa565b34801561058a57600080fd5b506000546001600160a01b0316610571565b3480156105a857600080fd5b506040805180820190915260018152600b60fb1b6020820152610288565b3480156105d257600080fd5b506102326105e13660046120be565b610cd2565b3480156105f257600080fd5b50601f54610571906001600160a01b031681565b34801561061257600080fd5b506102b6610621366004611ea1565b610d98565b34801561063257600080fd5b50610232610641366004612101565b610da5565b34801561065257600080fd5b50600054610571906001600160a01b031681565b34801561067257600080fd5b50610232610681366004612091565b610de6565b34801561069257600080fd5b5061024a6106a1366004612091565b610e4f565b3480156106b257600080fd5b5061024a6106c136600461211f565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106f857600080fd5b50610232610707366004612091565b610e8f565b34801561071857600080fd5b506102b6610727366004611ea1565b610ef8565b34801561073857600080fd5b50610232610fe9565b34801561074d57600080fd5b5061023261075c366004611ecb565b611027565b34801561076d57600080fd5b506102326110ff565b34801561078257600080fd5b50601d54610571906001600160a01b031681565b3480156107a257600080fd5b5061023261113b565b6000546001600160a01b031633146107de5760405162461bcd60e51b81526004016107d590612152565b60405180910390fd5b601f8054911515600160a81b0260ff60a81b19909216919091179055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108579086815260200190565b60405180910390a35060015b92915050565b60008261087583610e4f565b119392505050565b6000546001600160a01b031633146108a75760405162461bcd60e51b81526004016107d590612152565b601b91909155601c55565b6000546001600160a01b031633146108dc5760405162461bcd60e51b81526004016107d590612152565b601391909155601491909155601555565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461099a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461097591849061123b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6109a5848484611275565b90505b9392505050565b6000546001600160a01b031633146109d95760405162461bcd60e51b81526004016107d590612152565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b600454600090610a7c90610a54906001600160a01b0316610b99565b600354610a7690610a6d906001600160a01b0316610b99565b6005549061163b565b9061163b565b905090565b6000546001600160a01b03163314610aab5760405162461bcd60e51b81526004016107d590612152565b610ab361167d565b565b6000610863826000196107fc565b6000546001600160a01b03163314610aed5760405162461bcd60e51b81526004016107d590612152565b6005546006819055600755565b6000546001600160a01b03163314610b245760405162461bcd60e51b81526004016107d590612152565b60005b82811015610b93578160206000868685818110610b4657610b46612187565b9050602002016020810190610b5b9190611ecb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b8c816121b3565b9050610b27565b50505050565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610bde5760405162461bcd60e51b81526004016107d590612152565b600080546040516001600160a01b0390911690600080516020612301833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c405760405162461bcd60e51b81526004016107d590612152565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b60195447906001600160a01b03166108fc6064610c9b85856121cc565b610ca591906121e3565b6040518115909202916000818181858888f19350505050158015610ccd573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b81526004016107d590612152565b600c869055600f859055600d849055600e8390556010829055610d2d82610d27858188818c8c611a64565b90611a64565b6011556012819055610d406005826121e3565b60115410610d905760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107d5565b505050505050565b60006109a8338484611275565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b81526004016107d590612152565b6021805460ff191692151592909217909155602255565b6000546001600160a01b03163314610e105760405162461bcd60e51b81526004016107d590612152565b6103e8600554610e2091906121e3565b6007541015610e2e57600080fd5b6103e881600554610e3f91906121cc565b610e4991906121e3565b60075550565b6000610863610e5c610a38565b601f54610e8990610e8290600290610e7c906001600160a01b0316610b99565b9061117a565b859061117a565b906111fc565b6000546001600160a01b03163314610eb95760405162461bcd60e51b81526004016107d590612152565b6103e8600554610ec991906121e3565b6006541015610ed757600080fd5b6103e881600554610ee891906121cc565b610ef291906121e3565b60065550565b600081600003610f72576040516370a0823160e01b81526001600160a01b038416906370a0823190610f2e9030906004016120aa565b602060405180830381865afa158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190612205565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a8919061221e565b6000546001600160a01b031633146110135760405162461bcd60e51b81526004016107d590612152565b6102266014556103e86013556105dc601555565b6000546001600160a01b031633146110515760405162461bcd60e51b81526004016107d590612152565b6001600160a01b0381166110b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d5565b600080546040516001600160a01b038085169392169160008051602061230183398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611138573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111655760405162461bcd60e51b81526004016107d590612152565b601f805460ff60a01b1916600160a01b179055565b60008260000361118c57506000610863565b600061119883856121cc565b9050826111a585836121e3565b146109a85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d5565b60006109a883836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ac1565b6000818484111561125f5760405162461bcd60e51b81526004016107d59190611e37565b50600061126c848661223b565b95945050505050565b60235460009060ff16156112955761128e848484611aef565b90506109a8565b6001600160a01b03841660009081526001602052604090205460ff161580156112d757506001600160a01b03831660009081526001602052604090205460ff16155b1561139757601f54600160a01b900460ff1661132c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107d5565b601f54600160a81b900460ff1615611397576001600160a01b038316600090815260208052604090205460ff166113975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107d5565b6001600160a01b03841660009081526001602052604090205460ff161580156113c957506001600160a01b0383163014155b80156113e357506003546001600160a01b03848116911614155b80156113fd5750601f546001600160a01b03848116911614155b80156114175750601a546001600160a01b03848116911614155b801561143157506017546001600160a01b03848116911614155b801561145657506001600160a01b0383166000908152600b602052604090205460ff16155b156114ec57600061146684610b99565b600754909150611476848361224e565b11156114ea5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107d5565b505b6114f68483611bc3565b6114fe611c30565b1561150b5761150b61167d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461155d91849061123b565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16806115aa57506001600160a01b0384166000908152600a602052604090205460ff165b6115be576115b9858486611c7f565b6115c0565b825b6001600160a01b0385166000908152600860205260409020549091506115e69082611a64565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612321833981519152906116289085815260200190565b60405180910390a3506001949350505050565b60006109a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061123b565b6023805460ff19166001179055601b54601c5460009161169c91610869565b6116a857600c546116ab565b60005b905060006116cf6002610e89601154610e898660225461117a90919063ffffffff16565b905060006116e88260225461163b90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061172257611722612187565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061175357611753612187565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac9479061179d908690600090879030904290600401612261565b600060405180830381600087803b1580156117b757600080fd5b505af11580156117cb573d6000803e3d6000fd5b5050505060006117e4824761163b90919063ffffffff16565b905060006117ff6117f68860026111fc565b6011549061163b565b905060006118146002610e898481878d61117a565b9050600061183183610e89600d548761117a90919063ffffffff16565b9050600061184e84610e89600f548861117a90919063ffffffff16565b9050600061186b85610e89600e548961117a90919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146118bd576040519150601f19603f3d011682016040523d82523d6000602084013e6118c2565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611912576040519150601f19603f3d011682016040523d82523d6000602084013e611917565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611967576040519150601f19603f3d011682016040523d82523d6000602084013e61196c565b606091505b5060009250508b159050611a4c57601d5460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af11580156119ea573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a0f91906122d2565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b600080611a71838561224e565b9050838110156109a85760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b60448201526064016107d5565b60008183611ae25760405162461bcd60e51b81526004016107d59190611e37565b50600061126c84866121e3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b4091849061123b565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b6f9083611a64565b6001600160a01b03808516600081815260086020526040908190209390935591519086169060008051602061232183398151915290611bb19086815260200190565b60405180910390a35060019392505050565b60065481111580611bec57506001600160a01b0382166000908152600b602052604090205460ff165b611c2c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107d5565b5050565b601f546000906001600160a01b03163314801590611c51575060235460ff16155b8015611c5f575060215460ff165b8015610a7c57505060225430600090815260086020526040902054101590565b601554601f54600091906001600160a01b0390811690841603611ca55750601354611cc0565b601f546001600160a01b0390811690861603611cc057506014545b6000611ced6012546064611cd491906121cc565b610e8984610e7c6011548a61117a90919063ffffffff16565b90506000611d0c601154610e896010548561117a90919063ffffffff16565b90506000611d1a838361163b565b30600090815260086020526040902054909150611d379082611a64565b3060009081526008602052604080822092909255601a546001600160a01b031681522054611d659083611a64565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b1691600080516020612321833981519152910160405180910390a38115611df657600554611dbf908361163b565b6005556004546040518381526001600160a01b03918216918a16906000805160206123218339815191529060200160405180910390a35b611e00878461163b565b98975050505050505050565b801515811461113857600080fd5b600060208284031215611e2c57600080fd5b81356109a881611e0c565b600060208083528351808285015260005b81811015611e6457858101830151858201604001528201611e48565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e9c57600080fd5b919050565b60008060408385031215611eb457600080fd5b611ebd83611e85565b946020939093013593505050565b600060208284031215611edd57600080fd5b6109a882611e85565b60008060408385031215611ef957600080fd5b50508035926020909101359150565b600080600060608486031215611f1d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611f4957600080fd5b611f5284611e85565b9250611f6060208501611e85565b9150604084013590509250925092565b600080600080600060a08688031215611f8857600080fd5b611f9186611e85565b9450611f9f60208701611e85565b9350611fad60408701611e85565b9250611fbb60608701611e85565b9150611fc960808701611e85565b90509295509295909350565b600080600060408486031215611fea57600080fd5b83356001600160401b038082111561200157600080fd5b818601915086601f83011261201557600080fd5b81358181111561202457600080fd5b8760208260051b850101111561203957600080fd5b6020928301955093505084013561204f81611e0c565b809150509250925092565b6000806040838503121561206d57600080fd5b61207683611e85565b9150602083013561208681611e0c565b809150509250929050565b6000602082840312156120a357600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060008060008060c087890312156120d757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561211457600080fd5b8235611ebd81611e0c565b6000806040838503121561213257600080fd5b61213b83611e85565b915061214960208401611e85565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121c5576121c561219d565b5060010190565b80820281158282048414176108635761086361219d565b60008261220057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561221757600080fd5b5051919050565b60006020828403121561223057600080fd5b81516109a881611e0c565b818103818111156108635761086361219d565b808201808211156108635761086361219d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122b15784516001600160a01b03168352938301939183019160010161228c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156122e757600080fd5b835192506020840151915060408401519050925092509256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220207bc226f6d27dd7ffe6c23b00c88ce6763084dbf7cc0feaac6deb4f2712b20b64736f6c63430008110033

Deployed Bytecode Sourcemap

4997:13988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14402:98;;;;;;;;;;-1:-1:-1;14402:98:0;;;;;:::i;:::-;;:::i;:::-;;6782:55;;;;;;;;;;;;;;;;;;;529:25:1;;;517:2;502:18;6782:55:0;;;;;;;;8287:80;;;;;;;;;;-1:-1:-1;8359:5:0;;;;;;;;;;;;-1:-1:-1;;;8359:5:0;;;;8287:80;;;;;;;:::i;6606:31::-;;;;;;;;;;-1:-1:-1;6606:31:0;;;;-1:-1:-1;;;6606:31:0;;;;;;;;;1283:14:1;;1276:22;1258:41;;1246:2;1231:18;6606:31:0;1118:187:1;8709:216:0;;;;;;;;;;-1:-1:-1;8709:216:0;;;;;:::i;:::-;;:::i;6687:46::-;;;;;;;;;;-1:-1:-1;6687:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18763:150;;;;;;;;;;-1:-1:-1;18763:150:0;;;;;:::i;:::-;;:::i;8017:88::-;;;;;;;;;;-1:-1:-1;8090:12:0;;8017:88;;5962:93;;;;;;;;;;;;;;;;18244:182;;;;;;;;;;-1:-1:-1;18244:182:0;;;;;:::i;:::-;;:::i;14187:206::-;;;;;;;;;;-1:-1:-1;14187:206:0;;;;;:::i;:::-;;:::i;9227:370::-;;;;;;;;;;-1:-1:-1;9227:370:0;;;;;:::i;:::-;;:::i;17624:449::-;;;;;;;;;;-1:-1:-1;17624:449:0;;;;;:::i;:::-;;:::i;18438:142::-;;;;;;;;;;;;;:::i;8111:80::-;;;;;;;;;;-1:-1:-1;8111:80:0;;5329:1;3476:36:1;;3464:2;3449:18;8111:80:0;3334:184:1;13677:81:0;;;;;;;;;;;;;:::i;8933:122::-;;;;;;;;;;-1:-1:-1;8933:122:0;;;;;:::i;:::-;;:::i;10035:139::-;;;;;;;;;;;;;:::i;14508:210::-;;;;;;;;;;-1:-1:-1;14508:210:0;;;;;:::i;:::-;;:::i;6745:30::-;;;;;;;;;;-1:-1:-1;6745:30:0;;;;;;;;8457:105;;;;;;;;;;-1:-1:-1;8457:105:0;;;;;:::i;:::-;;:::i;6647:33::-;;;;;;;;;;-1:-1:-1;6647:33:0;;;;-1:-1:-1;;;6647:33:0;;;;;;3054:148;;;;;;;;;;;;;:::i;5466:61::-;;;;;;;;;;;;;;;;5401:58;;;;;;;;;;;;;;;;16869:166;;;;;;;;;;-1:-1:-1;16869:166:0;;;;;:::i;:::-;;:::i;13466:202::-;;;;;;;;;;-1:-1:-1;13466:202:0;;;;;:::i;:::-;;:::i;8373:78::-;;;;;;;;;;-1:-1:-1;8425:7:0;2905:6;-1:-1:-1;;;;;2905:6:0;8373:78;;;;;;;:::i;2840:79::-;;;;;;;;;;-1:-1:-1;2878:7:0;2905:6;-1:-1:-1;;;;;2905:6:0;2840:79;;8197:84;;;;;;;;;;-1:-1:-1;8271:7:0;;;;;;;;;;;;-1:-1:-1;;;8271:7:0;;;;8197:84;;17049:567;;;;;;;;;;-1:-1:-1;17049:567:0;;;;;:::i;:::-;;:::i;6574:19::-;;;;;;;;;;-1:-1:-1;6574:19:0;;;;-1:-1:-1;;;;;6574:19:0;;;9063:156;;;;;;;;;;-1:-1:-1;9063:156:0;;;;;:::i;:::-;;:::i;18081:155::-;;;;;;;;;;-1:-1:-1;18081:155:0;;;;;:::i;:::-;;:::i;2460:21::-;;;;;;;;;;-1:-1:-1;2460:21:0;;;;-1:-1:-1;;;;;2460:21:0;;;9609:221;;;;;;;;;;-1:-1:-1;9609:221:0;;;;;:::i;:::-;;:::i;18588:167::-;;;;;;;;;;-1:-1:-1;18588:167:0;;;;;:::i;:::-;;:::i;8568:133::-;;;;;;;;;;-1:-1:-1;8568:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8670:19:0;;;8652:7;8670:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8568:133;9838:189;;;;;;;;;;-1:-1:-1;9838:189:0;;;;;:::i;:::-;;:::i;13895:284::-;;;;;;;;;;-1:-1:-1;13895:284:0;;;;;:::i;:::-;;:::i;14820:139::-;;;;;;;;;;;;;:::i;3210:244::-;;;;;;;;;;-1:-1:-1;3210:244:0;;;;;:::i;:::-;;:::i;13767:120::-;;;;;;;;;;;;;:::i;6504:24::-;;;;;;;;;;-1:-1:-1;6504:24:0;;;;-1:-1:-1;;;;;6504:24:0;;;14726:85;;;;;;;;;;;;;:::i;14402:98::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;;;;;;;;;14469:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14469:23:0::1;-1:-1:-1::0;;;;14469:23:0;;::::1;::::0;;;::::1;::::0;;14402:98::o;8709:216::-;8813:10;8784:4;8801:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8801:32:0;;;;;;;;;;:41;;;8858:37;8784:4;;8801:32;;8858:37;;;;8836:6;529:25:1;;517:2;502:18;;383:177;8858:37:0;;;;;;;;-1:-1:-1;8913:4:0;8709:216;;;;;:::o;18763:150::-;18843:4;18899:6;18867:29;18887:8;18867:19;:29::i;:::-;:38;;18763:150;-1:-1:-1;;;18763:150:0:o;18244:182::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;18341:15:::1;:25:::0;;;;18377:26:::1;:41:::0;18244:182::o;14187:206::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;14287:11:::1;:19:::0;;;;14317:10:::1;:17:::0;;;;14345:15:::1;:24:::0;14187:206::o;9227:370::-;-1:-1:-1;;;;;9347:19:0;;9327:4;9347:19;;;:11;:19;;;;;;;;9367:10;9347:31;;;;;;;;-1:-1:-1;;9347:52:0;9344:186;;9449:69;;;;;;;;;;;-1:-1:-1;;;9449:69:0;;;;;;;;-1:-1:-1;;;;;9449:19:0;;-1:-1:-1;9449:19:0;;;:11;:19;;;;;9469:10;9449:31;;;;;;;;;;:69;;9485:6;;9449:35;:69::i;:::-;-1:-1:-1;;;;;9415:19:0;;;;;;:11;:19;;;;;;;;9435:10;9415:31;;;;;;;:103;9344:186;9549:40;9563:6;9571:9;9582:6;9549:13;:40::i;:::-;9542:47;;9227:370;;;;;;:::o;17624:449::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;17825:21:::1;:46:::0;;-1:-1:-1;;;;;;17825:46:0;;::::1;-1:-1:-1::0;;;;;17825:46:0;;::::1;;::::0;;;17882:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17937:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17980:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18025:18:::1;:40:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;17624:449::o;18438:142::-;18566:4;;18491:7;;18518:54;;18556:15;;-1:-1:-1;;;;;18566:4:0;18556:9;:15::i;:::-;18545:4;;18518:33;;18535:15;;-1:-1:-1;;;;;18545:4:0;18535:9;:15::i;:::-;18518:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18511:61;;18438:142;:::o;13677:81::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;13734:10:::1;:8;:10::i;:::-;13677:81::o:0;8933:122::-;8988:4;9012:35;9020:7;-1:-1:-1;;9012:7:0;:35::i;10035:139::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;10109:12:::1;::::0;10094::::1;:27:::0;;;10136:15:::1;:30:::0;10035:139::o;14508:210::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;14610:9:::1;14605:106;14621:20:::0;;::::1;14605:106;;;14693:6;14663:13;:27;14677:9;;14687:1;14677:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14663:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14663:27:0;:36;;-1:-1:-1;;14663:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14643:3:::1;::::0;::::1;:::i;:::-;;;14605:106;;;;14508:210:::0;;;:::o;8457:105::-;-1:-1:-1;;;;;8541:18:0;8523:7;8541:18;;;:9;:18;;;;;;;8457:105::o;3054:148::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;3161:1:::1;3145:6:::0;;3124:40:::1;::::0;-1:-1:-1;;;;;3145:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;3124:40:0;3161:1;;3124:40:::1;3192:1;3175:19:::0;;-1:-1:-1;;;;;;3175:19:0::1;::::0;;3054:148::o;16869:166::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16956:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16956:28:0;;::::1;::::0;::::1;::::0;;;16995:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;16869:166::o;13466:202::-;13596:18;;13556:21;;-1:-1:-1;;;;;13596:18:0;13588:72;13656:3;13625:28;13637:16;13556:21;13625:28;:::i;:::-;:34;;;;:::i;:::-;13588:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13525:143;13466:202;:::o;17049:567::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;17226:12:::1;:28:::0;;;17265:10:::1;:24:::0;;;17300:12:::1;:28:::0;;;17339:6:::1;:16:::0;;;17366:7:::1;:18:::0;;;17406:76:::1;17376:8:::0;17406:62:::1;17348:7:::0;17406:62;17315:13;17406:62;17241:13;17278:11;17406:17:::1;:30::i;:::-;:34:::0;::::1;:49::i;:76::-;17395:8;:87:::0;17493:14:::1;:32:::0;;;17555:18:::1;17572:1;17510:15:::0;17555:18:::1;:::i;:::-;17544:8;;:29;17536:71;;;::::0;-1:-1:-1;;;17536:71:0;;7686:2:1;17536:71:0::1;::::0;::::1;7668:21:1::0;7725:2;7705:18;;;7698:30;7764:31;7744:18;;;7737:59;7813:18;;17536:71:0::1;7484:353:1::0;17536:71:0::1;17049:567:::0;;;;;;:::o;9063:156::-;9143:4;9167:44;9181:10;9193:9;9204:6;9167:13;:44::i;18081:155::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;18172:11:::1;:22:::0;;-1:-1:-1;;18172:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;18205:13:::1;:23:::0;18081:155::o;9609:221::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;9730:4:::1;9715:12;;:19;;;;:::i;:::-;9696:15;;:38;;9688:47;;;::::0;::::1;;9800:4;9781:14;9766:12;;:29;;;;:::i;:::-;9765:39;;;;:::i;:::-;9747:15;:57:::0;-1:-1:-1;9609:221:0:o;18588:167::-;18656:7;18683:64;18724:22;:20;:22::i;:::-;18706:4;;18683:36;;18696:22;;18716:1;;18696:15;;-1:-1:-1;;;;;18706:4:0;18696:9;:15::i;:::-;:19;;:22::i;:::-;18683:8;;:12;:36::i;:::-;:40;;:64::i;9838:189::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;9950:4:::1;9935:12;;:19;;;;:::i;:::-;9919:12;;:35;;9911:44;;;::::0;::::1;;10015:4;9998:12;9983;;:27;;;;:::i;:::-;9982:37;;;;:::i;:::-;9967:12;:52:::0;-1:-1:-1;9838:189:0:o;13895:284::-;13976:4;14003:6;14013:1;14003:11;14000:95;;14039:44;;-1:-1:-1;;;14039:44:0;;-1:-1:-1;;;;;14039:29:0;;;;;:44;;14077:4;;14039:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14030:53;;14000:95;14141:21;;14112:59;;-1:-1:-1;;;14112:59:0;;-1:-1:-1;;;;;14141:21:0;;;14112:59;;;8205:51:1;8272:18;;;8265:34;;;14112:28:0;;;;;;8178:18:1;;14112:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14820:139::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;14886:3:::1;14873:10;:16:::0;14914:4:::1;14900:11;:18:::0;14947:4:::1;14929:15;:22:::0;14820:139::o;3210:244::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3299:22:0;::::1;3291:73;;;::::0;-1:-1:-1;;;3291:73:0;;8762:2:1;3291:73:0::1;::::0;::::1;8744:21:1::0;8801:2;8781:18;;;8774:30;8840:34;8820:18;;;8813:62;-1:-1:-1;;;8891:18:1;;;8884:36;8937:19;;3291:73:0::1;8560:402:1::0;3291:73:0::1;3401:6;::::0;;3380:38:::1;::::0;-1:-1:-1;;;;;3380:38:0;;::::1;::::0;3401:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;3380:38:0;::::1;3429:6;:17:::0;;-1:-1:-1;;;;;;3429:17:0::1;-1:-1:-1::0;;;;;3429:17:0;;;::::1;::::0;;;::::1;::::0;;3210:244::o;13767:120::-;13823:21;;13815:62;;-1:-1:-1;;;;;13823:21:0;;;;13855;13815:62;;;;;13823:21;13815:62;13823:21;13815:62;13855:21;13823;13815:62;;;;;;;;;;;;;;;;;;;;;13767:120::o;14726:85::-;2967:6;;-1:-1:-1;;;;;2967:6:0;2277:10;2967:22;2959:67;;;;-1:-1:-1;;;2959:67:0;;;;;;;:::i;:::-;14775:11:::1;:18:::0;;-1:-1:-1;;;;14775:18:0::1;-1:-1:-1::0;;;14775:18:0::1;::::0;;14726:85::o;639:250::-;697:7;721:1;726;721:6;717:47;;-1:-1:-1;751:1:0;744:8;;717:47;776:9;788:5;792:1;788;:5;:::i;:::-;776:17;-1:-1:-1;821:1:0;812:5;816:1;776:17;812:5;:::i;:::-;:10;804:56;;;;-1:-1:-1;;;804:56:0;;9169:2:1;804:56:0;;;9151:21:1;9208:2;9188:18;;;9181:30;9247:34;9227:18;;;9220:62;-1:-1:-1;;;9298:18:1;;;9291:31;9339:19;;804:56:0;8967:397:1;895:132:0;953:7;980:39;984:1;987;980:39;;;;;;;;;;;;;-1:-1:-1;;;980:39:0;;;:3;:39::i;441:192::-;527:7;563:12;555:6;;;;547:29;;;;-1:-1:-1;;;547:29:0;;;;;;;;:::i;:::-;-1:-1:-1;587:9:0;599:5;603:1;599;:5;:::i;:::-;587:17;441:192;-1:-1:-1;;;;;441:192:0:o;10188:1433::-;10300:6;;10280:4;;10300:6;;10297:63;;;10316:41;10331:6;10339:9;10350:6;10316:14;:41::i;:::-;10309:48;;;;10297:63;-1:-1:-1;;;;;10376:22:0;;;;;;:14;:22;;;;;;;;10375:23;:53;;;;-1:-1:-1;;;;;;10403:25:0;;;;;;:14;:25;;;;;;;;10402:26;10375:53;10372:254;;;10452:11;;-1:-1:-1;;;10452:11:0;;;;10444:43;;;;-1:-1:-1;;;10444:43:0;;9704:2:1;10444:43:0;;;9686:21:1;9743:2;9723:18;;;9716:30;-1:-1:-1;;;9762:18:1;;;9755:50;9822:18;;10444:43:0;9502:344:1;10444:43:0;10516:13;;-1:-1:-1;;;10516:13:0;;;;10513:102;;;-1:-1:-1;;;;;10557:24:0;;;;;;:13;:24;;;;;;;;10549:51;;;;-1:-1:-1;;;10549:51:0;;10053:2:1;10549:51:0;;;10035:21:1;10092:2;10072:18;;;10065:30;-1:-1:-1;;;10111:18:1;;;10104:45;10166:18;;10549:51:0;9851:339:1;10549:51:0;-1:-1:-1;;;;;10658:22:0;;;;;;:14;:22;;;;;;;;10657:23;:53;;;;-1:-1:-1;;;;;;10684:26:0;;10705:4;10684:26;;10657:53;:84;;;;-1:-1:-1;10736:4:0;;-1:-1:-1;;;;;10715:26:0;;;10736:4;;10715:26;;10657:84;:105;;;;-1:-1:-1;10758:4:0;;-1:-1:-1;;;;;10745:17:0;;;10758:4;;10745:17;;10657:105;:137;;;;-1:-1:-1;10779:15:0;;-1:-1:-1;;;;;10766:28:0;;;10779:15;;10766:28;;10657:137;:174;;;;-1:-1:-1;10811:20:0;;-1:-1:-1;;;;;10798:33:0;;;10811:20;;10798:33;;10657:174;:205;;;;-1:-1:-1;;;;;;10836:26:0;;;;;;:15;:26;;;;;;;;10835:27;10657:205;10653:397;;;10878:18;10899:20;10909:9;10899;:20::i;:::-;10967:15;;10878:41;;-1:-1:-1;10943:19:0;10956:6;10878:41;10943:19;:::i;:::-;10942:40;;10934:114;;;;-1:-1:-1;;;10934:114:0;;10527:2:1;10934:114:0;;;10509:21:1;10566:2;10546:18;;;10539:30;10605:34;10585:18;;;10578:62;10676:32;10656:18;;;10649:60;10726:19;;10934:114:0;10325:426:1;10934:114:0;10863:187;10653:397;11115:28;11128:6;11136;11115:12;:28::i;:::-;11160:16;:14;:16::i;:::-;11157:35;;;11179:10;:8;:10::i;:::-;11272:53;;;;;;;;;;;-1:-1:-1;;;11272:53:0;;;;;;;;-1:-1:-1;;;;;11272:17:0;;-1:-1:-1;11272:17:0;;;:9;:17;;;;;;;;:53;;11294:6;;11272:21;:53::i;:::-;-1:-1:-1;;;;;11252:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11364:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11387:22:0;;;;;;:11;:22;;;;;;;;11364:45;11363:93;;11422:34;11430:6;11438;11446:9;11422:7;:34::i;:::-;11363:93;;;11413:6;11363:93;-1:-1:-1;;;;;11490:20:0;;;;;;:9;:20;;;;;;11338:118;;-1:-1:-1;11490:40:0;;11338:118;11490:24;:40::i;:::-;-1:-1:-1;;;;;11467:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11548:43;;;;;;-1:-1:-1;;;;;;;;;;;11548:43:0;;;11576:14;529:25:1;;517:2;502:18;;383:177;11548:43:0;;;;;;;;-1:-1:-1;11609:4:0;;10188:1433;-1:-1:-1;;;;10188:1433:0:o;299:136::-;357:7;384:43;388:1;391;384:43;;;;;;;;;;;;;;;;;:3;:43::i;14988:1873::-;6885:6;:13;;-1:-1:-1;;6885:13:0;6894:4;6885:13;;;15083:15:::1;::::0;15100:26:::1;::::0;6885:6;;15067:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15134:12;;15067:79;;;15130:1;15067:79;15037:109;;15157:23;15183:59;15240:1;15183:52;15226:8;;15183:38;15201:19;15183:13;;:17;;:38;;;;:::i;:59::-;15157:85;;15253:20;15276:34;15294:15;15276:13;;:17;;:34;;;;:::i;:::-;15347:16;::::0;;15361:1:::1;15347:16:::0;;;;;::::1;::::0;;15253:57;;-1:-1:-1;15323:21:0::1;::::0;15347:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15347:16:0::1;15323:40;;15392:4;15374;15379:1;15374:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15374:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15418:4:::1;::::0;15408:7;;15418:4;::::1;::::0;15408;;15418;;15408:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15408:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15493:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15493:188:0;;15459:21:::1;::::0;15493:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15565:12;;15435:21:::1;::::0;15608:4;;15635::::1;::::0;15655:15:::1;::::0;15493:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15694:17;15714:40;15740:13;15714:21;:25;;:40;;;;:::i;:::-;15694:60:::0;-1:-1:-1;15767:19:0::1;15789:40;15802:26;:19:::0;15826:1:::1;15802:23;:26::i;:::-;15789:8;::::0;;:12:::1;:40::i;:::-;15767:62:::0;-1:-1:-1;15850:26:0::1;15879:58;15935:1;15879:51;15767:62:::0;15879:51;:9;15893:19;15879:13:::1;:34::i;:58::-;15850:87;;15948:26;15977:44;16009:11;15977:27;15991:12;;15977:9;:13;;:27;;;;:::i;:44::-;15948:73;;16032:24;16059:42;16089:11;16059:25;16073:10;;16059:9;:13;;:25;;;;:::i;:42::-;16032:69;;16112:20;16135:38;16161:11;16135:21;16149:6;;16135:9;:13;;:21;;;;:::i;:38::-;16215:20;::::0;16207:65:::1;::::0;16112:61;;-1:-1:-1;16187:15:0::1;::::0;-1:-1:-1;;;;;16215:20:0;;::::1;::::0;16249:18;;16187:15;16207:65;16187:15;16207:65;16249:18;16215:20;16207:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16307:14:0::1;::::0;16299:53:::1;::::0;16186:86;;-1:-1:-1;;;;;;16307:14:0::1;::::0;16335:12;;16299:53:::1;::::0;;;16335:12;16307:14;16299:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16387:18:0::1;::::0;16379:61:::1;::::0;16283:69;;-1:-1:-1;;;;;;16387:18:0::1;::::0;16419:16;;16379:61:::1;::::0;;;16419:16;16387:18;16379:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16474:5:0::1;::::0;-1:-1:-1;;16495:19:0;;;-1:-1:-1;16492:362:0::1;;16530:6;::::0;16704:21:::1;::::0;16530:244:::1;::::0;-1:-1:-1;;;16530:244:0;;16606:4:::1;16530:244;::::0;::::1;12424:34:1::0;12474:18;;;12467:34;;;16530:6:0::1;12517:18:1::0;;;12510:34;;;12560:18;;;12553:34;-1:-1:-1;;;;;16704:21:0;;::::1;12603:19:1::0;;;12596:44;16744:15:0::1;12656:19:1::0;;;12649:35;16530:6:0;::::1;::::0;:22:::1;::::0;16560:18;;12358:19:1;;16530:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16794:48:0::1;::::0;;13180:25:1;;;13236:2;13221:18;;13214:34;;;16794:48:0::1;::::0;-1:-1:-1;13153:18:1;16794:48:0::1;;;;;;;16492:362;-1:-1:-1::0;;6903:6:0;:14;;-1:-1:-1;;6903:14:0;;;-1:-1:-1;;;;;;;;;;14988:1873:0:o;112:181::-;170:7;;202:5;206:1;202;:5;:::i;:::-;190:17;;231:1;226;:6;;218:46;;;;-1:-1:-1;;;218:46:0;;13461:2:1;218:46:0;;;13443:21:1;13500:2;13480:18;;;13473:30;-1:-1:-1;;;13519:18:1;;;13512:57;13586:18;;218:46:0;13259:351:1;1033:189:0;1119:7;1154:12;1147:5;1139:28;;;;-1:-1:-1;;;1139:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1178:9:0;1190:5;1194:1;1190;:5;:::i;11633:330::-;11763:53;;;;;;;;;;;-1:-1:-1;;;11763:53:0;;;;;;;;-1:-1:-1;;;;;11763:17:0;;11726:4;11763:17;;;:9;:17;;;;;;;:53;;11785:6;;11763:21;:53::i;:::-;-1:-1:-1;;;;;11743:17:0;;;;;;;:9;:17;;;;;;:73;;;;11850:20;;;;;;;:32;;11875:6;11850:24;:32::i;:::-;-1:-1:-1;;;;;11827:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11898:35;;;;;;-1:-1:-1;;;;;;;;;;;11898:35:0;;;11926:6;529:25:1;;517:2;502:18;;383:177;11898:35:0;;;;;;;;-1:-1:-1;11951:4:0;11633:330;;;;;:::o;11971:166::-;12068:12;;12058:6;:22;;:49;;;-1:-1:-1;;;;;;12084:23:0;;;;;;:15;:23;;;;;;;;12058:49;12050:79;;;;-1:-1:-1;;;12050:79:0;;13817:2:1;12050:79:0;;;13799:21:1;13856:2;13836:18;;;13829:30;-1:-1:-1;;;13875:18:1;;;13868:47;13932:18;;12050:79:0;13615:341:1;12050:79:0;11971:166;;:::o;13261:197::-;13348:4;;13310;;-1:-1:-1;;;;;13348:4:0;13334:10;:18;;;;:38;;-1:-1:-1;13366:6:0;;;;13365:7;13334:38;:62;;;;-1:-1:-1;13385:11:0;;;;13334:62;:116;;;;-1:-1:-1;;13437:13:0;;13427:4;13409:24;;;;:9;:24;;;;;;:41;;;13261:197::o;12267:986::-;12401:15;;12445:4;;12353:7;;12401:15;-1:-1:-1;;;;;12445:4:0;;;12432:17;;;;12429:142;;-1:-1:-1;12476:11:0;;12429:142;;;12518:4;;-1:-1:-1;;;;;12518:4:0;;;12508:14;;;;12505:66;;-1:-1:-1;12549:10:0;;12505:66;12583:17;12603:59;12641:14;;12658:3;12641:20;;;;:::i;:::-;12603:33;12628:7;12603:20;12614:8;;12603:6;:10;;:20;;;;:::i;:59::-;12583:79;;12673:18;12694:36;12721:8;;12694:22;12708:7;;12694:9;:13;;:22;;;;:::i;:36::-;12673:57;-1:-1:-1;12741:22:0;12766:25;:9;12673:57;12766:13;:25::i;:::-;12849:4;12831:24;;;;:9;:24;;;;;;12741:50;;-1:-1:-1;12831:44:0;;12741:50;12831:28;:44::i;:::-;12822:4;12804:24;;;;:9;:24;;;;;;:71;;;;12925:15;;-1:-1:-1;;;;;12925:15:0;12915:26;;;;:42;;12946:10;12915:30;:42::i;:::-;12896:15;;-1:-1:-1;;;;;12896:15:0;;;12886:26;;;;:9;:26;;;;;;;;;:71;;;;12973:47;529:25:1;;;12998:4:0;;12973:47;;;;-1:-1:-1;;;;;;;;;;;12973:47:0;502:18:1;12973:47:0;;;;;;;13054:14;;13051:154;;13099:12;;:28;;13116:10;13099:16;:28::i;:::-;13084:12;:43;13164:4;;13147:34;;529:25:1;;;-1:-1:-1;;;;;13164:4:0;;;;13147:34;;;-1:-1:-1;;;;;;;;;;;13147:34:0;517:2:1;502:18;13147:34:0;;;;;;;13051:154;13224:21;:6;13235:9;13224:10;:21::i;:::-;13217:28;12267:986;-1:-1:-1;;;;;;;;12267:986:0:o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;565:548::-;677:4;706:2;735;724:9;717:21;767:6;761:13;810:6;805:2;794:9;790:18;783:34;835:1;845:140;859:6;856:1;853:13;845:140;;;954:14;;;950:23;;944:30;920:17;;;939:2;916:26;909:66;874:10;;845:140;;;849:3;1034:1;1029:2;1020:6;1009:9;1005:22;1001:31;994:42;1104:2;1097;1093:7;1088:2;1080:6;1076:15;1072:29;1061:9;1057:45;1053:54;1045:62;;;;565:548;;;;:::o;1310:173::-;1378:20;;-1:-1:-1;;;;;1427:31:1;;1417:42;;1407:70;;1473:1;1470;1463:12;1407:70;1310:173;;;:::o;1488:254::-;1556:6;1564;1617:2;1605:9;1596:7;1592:23;1588:32;1585:52;;;1633:1;1630;1623:12;1585:52;1656:29;1675:9;1656:29;:::i;:::-;1646:39;1732:2;1717:18;;;;1704:32;;-1:-1:-1;;;1488:254:1:o;1747:186::-;1806:6;1859:2;1847:9;1838:7;1834:23;1830:32;1827:52;;;1875:1;1872;1865:12;1827:52;1898:29;1917:9;1898:29;:::i;1938:248::-;2006:6;2014;2067:2;2055:9;2046:7;2042:23;2038:32;2035:52;;;2083:1;2080;2073:12;2035:52;-1:-1:-1;;2106:23:1;;;2176:2;2161:18;;;2148:32;;-1:-1:-1;1938:248:1:o;2191:316::-;2268:6;2276;2284;2337:2;2325:9;2316:7;2312:23;2308:32;2305:52;;;2353:1;2350;2343:12;2305:52;-1:-1:-1;;2376:23:1;;;2446:2;2431:18;;2418:32;;-1:-1:-1;2497:2:1;2482:18;;;2469:32;;2191:316;-1:-1:-1;2191:316:1:o;2512:328::-;2589:6;2597;2605;2658:2;2646:9;2637:7;2633:23;2629:32;2626:52;;;2674:1;2671;2664:12;2626:52;2697:29;2716:9;2697:29;:::i;:::-;2687:39;;2745:38;2779:2;2768:9;2764:18;2745:38;:::i;:::-;2735:48;;2830:2;2819:9;2815:18;2802:32;2792:42;;2512:328;;;;;:::o;2845:484::-;2940:6;2948;2956;2964;2972;3025:3;3013:9;3004:7;3000:23;2996:33;2993:53;;;3042:1;3039;3032:12;2993:53;3065:29;3084:9;3065:29;:::i;:::-;3055:39;;3113:38;3147:2;3136:9;3132:18;3113:38;:::i;:::-;3103:48;;3170:38;3204:2;3193:9;3189:18;3170:38;:::i;:::-;3160:48;;3227:38;3261:2;3250:9;3246:18;3227:38;:::i;:::-;3217:48;;3284:39;3318:3;3307:9;3303:19;3284:39;:::i;:::-;3274:49;;2845:484;;;;;;;;:::o;3523:750::-;3615:6;3623;3631;3684:2;3672:9;3663:7;3659:23;3655:32;3652:52;;;3700:1;3697;3690:12;3652:52;3727:23;;-1:-1:-1;;;;;3799:14:1;;;3796:34;;;3826:1;3823;3816:12;3796:34;3864:6;3853:9;3849:22;3839:32;;3909:7;3902:4;3898:2;3894:13;3890:27;3880:55;;3931:1;3928;3921:12;3880:55;3971:2;3958:16;3997:2;3989:6;3986:14;3983:34;;;4013:1;4010;4003:12;3983:34;4068:7;4061:4;4051:6;4048:1;4044:14;4040:2;4036:23;4032:34;4029:47;4026:67;;;4089:1;4086;4079:12;4026:67;4120:4;4112:13;;;;-1:-1:-1;4144:6:1;-1:-1:-1;;4185:20:1;;4172:34;4215:28;4172:34;4215:28;:::i;:::-;4262:5;4252:15;;;3523:750;;;;;:::o;4278:315::-;4343:6;4351;4404:2;4392:9;4383:7;4379:23;4375:32;4372:52;;;4420:1;4417;4410:12;4372:52;4443:29;4462:9;4443:29;:::i;:::-;4433:39;;4522:2;4511:9;4507:18;4494:32;4535:28;4557:5;4535:28;:::i;:::-;4582:5;4572:15;;;4278:315;;;;;:::o;4598:180::-;4657:6;4710:2;4698:9;4689:7;4685:23;4681:32;4678:52;;;4726:1;4723;4716:12;4678:52;-1:-1:-1;4749:23:1;;4598:180;-1:-1:-1;4598:180:1:o;4783:203::-;-1:-1:-1;;;;;4947:32:1;;;;4929:51;;4917:2;4902:18;;4783:203::o;4991:523::-;5095:6;5103;5111;5119;5127;5135;5188:3;5176:9;5167:7;5163:23;5159:33;5156:53;;;5205:1;5202;5195:12;5156:53;-1:-1:-1;;5228:23:1;;;5298:2;5283:18;;5270:32;;-1:-1:-1;5349:2:1;5334:18;;5321:32;;5400:2;5385:18;;5372:32;;-1:-1:-1;5451:3:1;5436:19;;5423:33;;-1:-1:-1;5503:3:1;5488:19;5475:33;;-1:-1:-1;4991:523:1;-1:-1:-1;4991:523:1:o;5519:309::-;5584:6;5592;5645:2;5633:9;5624:7;5620:23;5616:32;5613:52;;;5661:1;5658;5651:12;5613:52;5700:9;5687:23;5719:28;5741:5;5719:28;:::i;5833:260::-;5901:6;5909;5962:2;5950:9;5941:7;5937:23;5933:32;5930:52;;;5978:1;5975;5968:12;5930:52;6001:29;6020:9;6001:29;:::i;:::-;5991:39;;6049:38;6083:2;6072:9;6068:18;6049:38;:::i;:::-;6039:48;;5833:260;;;;;:::o;6324:356::-;6526:2;6508:21;;;6545:18;;;6538:30;6604:34;6599:2;6584:18;;6577:62;6671:2;6656:18;;6324:356::o;6685:127::-;6746:10;6741:3;6737:20;6734:1;6727:31;6777:4;6774:1;6767:15;6801:4;6798:1;6791:15;6817:127;6878:10;6873:3;6869:20;6866:1;6859:31;6909:4;6906:1;6899:15;6933:4;6930:1;6923:15;6949:135;6988:3;7009:17;;;7006:43;;7029:18;;:::i;:::-;-1:-1:-1;7076:1:1;7065:13;;6949:135::o;7089:168::-;7162:9;;;7193;;7210:15;;;7204:22;;7190:37;7180:71;;7231:18;;:::i;7262:217::-;7302:1;7328;7318:132;;7372:10;7367:3;7363:20;7360:1;7353:31;7407:4;7404:1;7397:15;7435:4;7432:1;7425:15;7318:132;-1:-1:-1;7464:9:1;;7262:217::o;7842:184::-;7912:6;7965:2;7953:9;7944:7;7940:23;7936:32;7933:52;;;7981:1;7978;7971:12;7933:52;-1:-1:-1;8004:16:1;;7842:184;-1:-1:-1;7842:184:1:o;8310:245::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8497:28;8519:5;8497:28;:::i;9369:128::-;9436:9;;;9457:11;;;9454:37;;;9471:18;;:::i;10195:125::-;10260:9;;;10281:10;;;10278:36;;;10294:18;;:::i;10888:980::-;11150:4;11198:3;11187:9;11183:19;11229:6;11218:9;11211:25;11255:2;11293:6;11288:2;11277:9;11273:18;11266:34;11336:3;11331:2;11320:9;11316:18;11309:31;11360:6;11395;11389:13;11426:6;11418;11411:22;11464:3;11453:9;11449:19;11442:26;;11503:2;11495:6;11491:15;11477:29;;11524:1;11534:195;11548:6;11545:1;11542:13;11534:195;;;11613:13;;-1:-1:-1;;;;;11609:39:1;11597:52;;11704:15;;;;11669:12;;;;11645:1;11563:9;11534:195;;;-1:-1:-1;;;;;;;11785:32:1;;;;11780:2;11765:18;;11758:60;-1:-1:-1;;;11849:3:1;11834:19;11827:35;11746:3;10888:980;-1:-1:-1;;;10888:980:1:o;12695:306::-;12783:6;12791;12799;12852:2;12840:9;12831:7;12827:23;12823:32;12820:52;;;12868:1;12865;12858:12;12820:52;12897:9;12891:16;12881:26;;12947:2;12936:9;12932:18;12926:25;12916:35;;12991:2;12980:9;12976:18;12970:25;12960:35;;12695:306;;;;;:::o

Swarm Source

ipfs://207bc226f6d27dd7ffe6c23b00c88ce6763084dbf7cc0feaac6deb4f2712b20b

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.