ETH Price: $3,619.01 (-2.86%)

Contract

0x42fa14d6e4642b3789d8B0272534a41d415663A9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer213154892024-12-02 14:42:112 hrs ago1733150531IN
0x42fa14d6...d415663A9
0 ETH0.0049298126.13054649
Approve213105822024-12-01 22:14:4719 hrs ago1733091287IN
0x42fa14d6...d415663A9
0 ETH0.0009185519.89467277
Approve213100082024-12-01 20:19:5921 hrs ago1733084399IN
0x42fa14d6...d415663A9
0 ETH0.0011717825.20892908
Approve213095252024-12-01 18:42:5922 hrs ago1733078579IN
0x42fa14d6...d415663A9
0 ETH0.0008771518.99297667
Transfer213092282024-12-01 17:42:4723 hrs ago1733074967IN
0x42fa14d6...d415663A9
0 ETH0.0032262917.10209469
Approve213081412024-12-01 14:04:5927 hrs ago1733061899IN
0x42fa14d6...d415663A9
0 ETH0.0007425115.99460621
Approve213081312024-12-01 14:02:5927 hrs ago1733061779IN
0x42fa14d6...d415663A9
0 ETH0.0007482716.11864025
Transfer213080102024-12-01 13:38:4727 hrs ago1733060327IN
0x42fa14d6...d415663A9
0 ETH0.0027685214.67458391
Transfer213079992024-12-01 13:36:3527 hrs ago1733060195IN
0x42fa14d6...d415663A9
0 ETH0.0028460215.08537873
Approve213010502024-11-30 14:20:352 days ago1732976435IN
0x42fa14d6...d415663A9
0 ETH0.0005489611.8899187
Approve212999662024-11-30 10:42:232 days ago1732963343IN
0x42fa14d6...d415663A9
0 ETH0.000358517.71277244
Transfer212935372024-11-29 13:05:593 days ago1732885559IN
0x42fa14d6...d415663A9
0 ETH0.0023285512.34251684
Transfer212935302024-11-29 13:04:353 days ago1732885475IN
0x42fa14d6...d415663A9
0 ETH0.0021784711.54701915
Transfer212935262024-11-29 13:03:473 days ago1732885427IN
0x42fa14d6...d415663A9
0 ETH0.0023234912.31649964
Approve212921072024-11-29 8:18:113 days ago1732868291IN
0x42fa14d6...d415663A9
0 ETH0.000344547.47199841
Approve212920862024-11-29 8:13:593 days ago1732868039IN
0x42fa14d6...d415663A9
0 ETH0.000349257.52334862
Approve212920662024-11-29 8:09:593 days ago1732867799IN
0x42fa14d6...d415663A9
0 ETH0.000331247.13540381
Approve212920392024-11-29 8:04:353 days ago1732867475IN
0x42fa14d6...d415663A9
0 ETH0.000359127.7358558
Approve212919802024-11-29 7:52:233 days ago1732866743IN
0x42fa14d6...d415663A9
0 ETH0.00036027.81376233
Approve212917492024-11-29 7:05:233 days ago1732863923IN
0x42fa14d6...d415663A9
0 ETH0.000326847.04055597
Approve212910882024-11-29 4:51:593 days ago1732855919IN
0x42fa14d6...d415663A9
0 ETH0.000129644.42110651
Approve212910702024-11-29 4:48:233 days ago1732855703IN
0x42fa14d6...d415663A9
0 ETH0.00020474.43941016
Approve212909902024-11-29 4:32:233 days ago1732854743IN
0x42fa14d6...d415663A9
0 ETH0.000235125.09238838
Claim Dividend212879192024-11-28 18:14:473 days ago1732817687IN
0x42fa14d6...d415663A9
0 ETH0.0006282716.46170489
Claim Dividend212876082024-11-28 17:11:474 days ago1732813907IN
0x42fa14d6...d415663A9
0 ETH0.0004580712.00214208
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212919832024-11-29 7:52:593 days ago1732866779
0x42fa14d6...d415663A9
0.09712712 ETH
212919832024-11-29 7:52:593 days ago1732866779
0x42fa14d6...d415663A9
0.09712712 ETH
212919832024-11-29 7:52:593 days ago1732866779
0x42fa14d6...d415663A9
0.19425425 ETH
212398112024-11-22 0:52:5910 days ago1732236779
0x42fa14d6...d415663A9
0.14241099 ETH
212398112024-11-22 0:52:5910 days ago1732236779
0x42fa14d6...d415663A9
0.07120549 ETH
212398112024-11-22 0:52:5910 days ago1732236779
0x42fa14d6...d415663A9
0.21361648 ETH
212325292024-11-21 0:28:4711 days ago1732148927
0x42fa14d6...d415663A9
0.34233953 ETH
212325292024-11-21 0:28:4711 days ago1732148927
0x42fa14d6...d415663A9
0.17116976 ETH
212325292024-11-21 0:28:4711 days ago1732148927
0x42fa14d6...d415663A9
0.5135093 ETH
212187352024-11-19 2:17:3513 days ago1731982655
0x42fa14d6...d415663A9
0.43823418 ETH
212187352024-11-19 2:17:3513 days ago1731982655
0x42fa14d6...d415663A9
0.21911709 ETH
212187352024-11-19 2:17:3513 days ago1731982655
0x42fa14d6...d415663A9
0.65735128 ETH
212183712024-11-19 1:04:4713 days ago1731978287
0x42fa14d6...d415663A9
0.17797621 ETH
212183712024-11-19 1:04:4713 days ago1731978287
0x42fa14d6...d415663A9
0.0889881 ETH
212183712024-11-19 1:04:4713 days ago1731978287
0x42fa14d6...d415663A9
0.26696431 ETH
212181612024-11-19 0:22:3513 days ago1731975755
0x42fa14d6...d415663A9
0.00976228 ETH
212181612024-11-19 0:22:3513 days ago1731975755
0x42fa14d6...d415663A9
0.00488114 ETH
212181612024-11-19 0:22:3513 days ago1731975755
0x42fa14d6...d415663A9
0.01464343 ETH
212181562024-11-19 0:21:3513 days ago1731975695
0x42fa14d6...d415663A9
0.00991832 ETH
212181562024-11-19 0:21:3513 days ago1731975695
0x42fa14d6...d415663A9
0.00495916 ETH
212181562024-11-19 0:21:3513 days ago1731975695
0x42fa14d6...d415663A9
0.01487748 ETH
212181472024-11-19 0:19:4713 days ago1731975587
0x42fa14d6...d415663A9
0.01016389 ETH
212181472024-11-19 0:19:4713 days ago1731975587
0x42fa14d6...d415663A9
0.00508194 ETH
212181472024-11-19 0:19:4713 days ago1731975587
0x42fa14d6...d415663A9
0.01524583 ETH
212181472024-11-19 0:19:4713 days ago1731975587
0x42fa14d6...d415663A9
0.01017653 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Trend

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-11
*/

// SPDX-License-Identifier: MIT
/*

            ▓▒▒
   ▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒   
 ▒▒▒▓▓▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 
 ▒▒▓▓▓▓▒░▒▒▒▓▓▒▒▒▒▒▓▓▒▒▒▒▒ 
 ▒▒▒▓▓▓▒▒▒▒▒▓▓▓▒▒▒▒▓▓▓▒▒▒▒ 
 ▓▒▒▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 
 ▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒ 
 ▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 
  ▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒  
    ▒▒▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒    
  ▓▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
 ▓▓▒▒░▒▒▓▒▒░▒▒▒▒▒▒▒▓▓▒▒▒▒  
 ▓▓▒▒▒▒▒▓▒▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒ 
 ▓▓▒▒▒▒▓▓▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒ 
 ▓▓▓▒▒▓▓▓▒▒▒▒▒▓▒▒▒▒▒▒▒▓▓▓  
  ▓▓▓▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒     
       ▓▓▓▓▒▒▒▒▒▒▒▒▒       
         ▒▓▓▒▒▒▒▒▒    

___ ____ ____ _  _ ___ 
 |  |__/ |___ |\ | |  \
 |  |  \ |___ | \| |__/

In the bustling realm of cryptocurrency, 
where trends shift faster than light, 
meet Trendy. This pint-sized orange robot 
whizzes through the digital world, his 
metallic antennae twitching as he scans 
the market. Trendy's one and only purpose? 
To be your personal crypto guardian via 
the CoinRanker Suite. With a cheerful 
chirp and a flashing LED eye, he delivers 
real-time buy notifications directly to 
every cryptocurrency project in existence. 
No project is too big or too small for 
Trendy's watchful gaze.

Rewards: https://trendbot.io/rewards
Telegram: https://t.me/coinrankersuite
X: https://x.com/trend_bot_io

54 52 45 4E 44
- .-. . -. -..
*/

pragma solidity >=0.8.2 <0.9.0;

interface IERC20 {
    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 Auth {
    address internal m_Owner;
    mapping(address => bool) internal m_Admins;
    
    event OwnershipTransferred(address _owner);

    constructor(address _owner) {
        m_Owner = _owner;
    }

    modifier onlyOwner() {
        require(msg.sender == m_Owner, "!Owner"); 
        _;
    }

    modifier onlyAdmin() {
        require(m_Admins[msg.sender] == true || msg.sender == m_Owner, "!Admin");
        _;
    }
    
    function transferOwnership(address payable _addr) onlyOwner public {
        m_Owner = _addr;
        emit OwnershipTransferred(_addr);
    }

    function isAdmin(address _addr) onlyAdmin external view returns (bool) {
        return m_Admins[_addr];
    }
    
    function _updateAdmin(address _addr, bool _status) internal {
        require(msg.sender != _addr || msg.sender == m_Owner, "!AdminSelf");
        m_Admins[_addr] = _status;
    }
}

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 IDividendDistributor {
    function setShare(address _shareholder, uint256 _amount) external;
    function deposit() external payable;
    function claimDividend(address _shareholder) external;
}

contract DividendDistributor is IDividendDistributor {
    address private m_Token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] private m_Shareholders;
    mapping (address => uint256) private m_ShareholderIndexes;
    mapping (address => Share) public m_Shares;

    uint256 public m_TotalShares;
    uint256 public m_TotalDividends;
    uint256 public m_TotalDistributed;
    uint256 public m_DividendsPerShare;
    uint256 private m_DividendsPerShareAccuracyFactor = 10 ** 36;

    modifier onlyToken() {
        require(msg.sender == m_Token); 
        _;
    }

    constructor () {
        m_Token = msg.sender;
    }

    function setShare(address _shareholder, uint256 _amount) external override onlyToken {
        if(m_Shares[_shareholder].amount > 0){
            distributeDividend(_shareholder);
        }

        if(_amount > 0 && m_Shares[_shareholder].amount == 0){
            addShareholder(_shareholder);
        }else if(_amount == 0 && m_Shares[_shareholder].amount > 0){
            removeShareholder(_shareholder);
        }

        m_TotalShares = m_TotalShares - m_Shares[_shareholder].amount + _amount;
        m_Shares[_shareholder].amount = _amount;
        m_Shares[_shareholder].totalExcluded = getCumulativeDividends(m_Shares[_shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 _amount = msg.value;

        if (m_TotalShares == 0) {
            return;
        }

        m_TotalDividends = m_TotalDividends + _amount;
        m_DividendsPerShare = m_DividendsPerShare + (m_DividendsPerShareAccuracyFactor * _amount / m_TotalShares);
    }
    
    function distributeDividend(address _shareholder) internal {
        if(m_Shares[_shareholder].amount == 0){ return; }

        uint256 _amount = getUnrealizedEarnings(_shareholder);
        if(_amount > 0){
            m_TotalDistributed = m_TotalDistributed + _amount;
            m_Shares[_shareholder].totalRealised = m_Shares[_shareholder].totalRealised + _amount;
            m_Shares[_shareholder].totalExcluded = getCumulativeDividends(m_Shares[_shareholder].amount);
            payable(_shareholder).transfer(_amount);
        }
    }
    
    function claimDividend(address _shareholder) external override onlyToken {
        distributeDividend(_shareholder);
    }

    function getUnrealizedEarnings(address _shareholder) public view returns (uint256) {
        if(m_Shares[_shareholder].amount == 0) { 
            return 0; 
        }

        uint256 _shareholderTotalDividends = getCumulativeDividends(m_Shares[_shareholder].amount);
        uint256 _shareholderTotalExcluded = m_Shares[_shareholder].totalExcluded;

        if(_shareholderTotalDividends <= _shareholderTotalExcluded) { 
            return 0; 
        }

        return _shareholderTotalDividends - _shareholderTotalExcluded;
    }

    function getCumulativeDividends(uint256 _share) internal view returns (uint256) {
        return _share * m_DividendsPerShare / m_DividendsPerShareAccuracyFactor;
    }

    function getRealizedEarnings(address _shareholder) external view returns (uint256) {
        return m_Shares[_shareholder].totalRealised;
    }

    function getTotalDistributed() external view returns (uint256) {
        return m_TotalDistributed;
    }

    function addShareholder(address _shareholder) internal {
        m_ShareholderIndexes[_shareholder] = m_Shareholders.length;
        m_Shareholders.push(_shareholder);
    }

    function removeShareholder(address _shareholder) internal {
        m_Shareholders[m_ShareholderIndexes[_shareholder]] = m_Shareholders[m_Shareholders.length-1];
        m_ShareholderIndexes[m_Shareholders[m_Shareholders.length-1]] = m_ShareholderIndexes[_shareholder];
        m_Shareholders.pop();
    }

}

contract Trend is IERC20, Auth {
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    string private constant  m_Name = "TREND";
    string private constant m_Symbol = "TREND";
    uint8 private constant m_Decimals = 9;
    
    uint256 private m_TotalSupply = 10500000000 * (10 ** m_Decimals);
    uint256 private m_MaxBuyAmount = m_TotalSupply;
    uint256 private m_MaxSellAmount = m_TotalSupply;

    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;

    mapping (address => bool) private m_IsFeeExempt;
    mapping (address => bool) private m_IsTxLimitExempt;
    mapping (address => bool) private m_IsDividendExempt;
    mapping (address => bool) private m_IsBot;
    mapping (address => bool) private m_Pairs;

    uint256 private m_TransferOutLimitPeriod = 30 * 24 * 60 * 60; // 30 days
    uint256 private m_TransferOutLimit = 5000000 * (10 ** m_Decimals); // 5M tokens
    // time left in period for user before m_TransferOutAmount resets
    mapping (address => uint256) private m_TransferOutLimitExpiration;
    // amount transferred out before m_TransferOutLimitExpiration
    mapping (address => uint256) private m_TransferOutAmount;
    
    bool m_FeeLock;
    uint256 private m_HolderFee = 2;
    uint256 private m_TeamFee = 4;
    uint256 private m_TotalFee = 6;
    uint256 private m_FeeDenominator = 100;

    address private m_TeamReceiver;

    IDEXRouter private m_Router;
    address public router;
    address public initialPair;
    uint256 public launchedAt;
    address public WETH;

    DividendDistributor private m_Distributor;

    bool public swapEnabled = true;
    uint256 public swapThreshold = 1000000 * (10 ** m_Decimals); // 1M
    
    bool private m_InSwap;
    modifier swapping() { 
        m_InSwap = true;
        _; 
        m_InSwap = false; 
    }

    constructor (
        address _owner,
        address _teamWallet,
        address _airdropWallet,
        address _router
    ) Auth(_owner) {
        // Exemptions
        m_IsDividendExempt[address(this)] = true;
        m_IsDividendExempt[DEAD] = true;
        m_IsTxLimitExempt[DEAD] = true;
        m_IsDividendExempt[ZERO] = true;
        m_IsTxLimitExempt[ZERO] = true;
        
        // Admins
        m_Admins[_owner] = true;
        setAdminStatus(_owner, true);
        setAdminStatus(_teamWallet, true);
        setAdminStatus(_airdropWallet, true);
        m_TeamReceiver = _teamWallet;

        // router
        router = _router;
        _initRouter();

        // reflections
        m_Distributor = new DividendDistributor();

        m_Balances[_airdropWallet] = m_TotalSupply;
        emit Transfer(address(0), _airdropWallet, m_TotalSupply);
    }

    receive() external payable { }
    function totalSupply() external view override returns (uint256) { return m_TotalSupply; }
    function decimals() external pure override returns (uint8) { return m_Decimals; }
    function symbol() external pure override returns (string memory) { return m_Symbol; }
    function name() external pure override returns (string memory) { return m_Name; }
    function getOwner() external view override returns (address) { return m_Owner; }
    function balanceOf(address _account) public view override returns (uint256) { return m_Balances[_account]; }
    function allowance(address _holder, address _spender) external view override returns (uint256) { return m_Allowances[_holder][_spender]; }

    function approve(address _spender, uint256 _amount) public override returns (bool) {
        m_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(m_Allowances[_sender][msg.sender] != type(uint256).max){
            m_Allowances[_sender][msg.sender] = m_Allowances[_sender][msg.sender] - _amount;
        }

        return _transferFrom(_sender, _recipient, _amount);
    }

    function _transferFrom(address _sender, address _recipient, uint256 _amount) internal returns (bool) {
        if(m_InSwap) { 
            return _basicTransfer(_sender, _recipient, _amount); 
        }
        
        _checkTxLimit(_sender, _recipient, _amount);
        _checkTransferOutLimit(_sender, _amount);

        if(_shouldEmitFees()) { 
            _emitFees(); 
        }

        if(!_isLaunched() && _isPair(_recipient)) { 
            require(m_Balances[_sender] > 0); 
            _launch(); 
        } 

        m_Balances[_sender] = m_Balances[_sender] - _amount;

        uint256 _amountReceived = _shouldTakeFee(_sender, _recipient) ? _takeFee(_sender, _recipient, _amount) : _amount;
        
        m_Balances[_recipient] = m_Balances[_recipient] + _amountReceived;

        if(!_isPair(_sender) && !m_IsDividendExempt[_sender]) { 
            try m_Distributor.setShare(_sender, m_Balances[_sender]) {
            } catch {} 
        }
        if(!_isPair(_recipient) && !m_IsDividendExempt[_recipient]) { 
            try m_Distributor.setShare(_recipient, m_Balances[_recipient]) {
            } catch {} 
        }

        emit Transfer(_sender, _recipient, _amountReceived);
        return true;
    }
    
    function _basicTransfer(address _sender, address _recipient, uint256 _amount) internal returns (bool) {
        m_Balances[_sender] = m_Balances[_sender] - _amount;
        m_Balances[_recipient] = m_Balances[_recipient] + _amount;
        emit Transfer(_sender, _recipient, _amount);
        return true;
    }

    function _checkTxLimit(address _sender, address _recipient, uint256 _amount) internal view {
        _isPair(_sender) ? 
            require(_amount <= m_MaxBuyAmount || m_IsTxLimitExempt[_recipient], "Buy Limit Exceeded") :
            require(_amount <= m_MaxSellAmount || m_IsTxLimitExempt[_sender], "Sell Limit Exceeded");
    }

    function _checkTransferOutLimit(address _sender, uint256 _amount) internal {
        if (!_isLaunched()) return;
        if (_sender == address(this)) return;
        if (_isPair(_sender)) return;
        if (m_IsTxLimitExempt[_sender]) return;
        if (m_Admins[_sender]) return;

        if (block.timestamp > m_TransferOutLimitExpiration[_sender]) {
            m_TransferOutLimitExpiration[_sender] = block.timestamp + m_TransferOutLimitPeriod;
            m_TransferOutAmount[_sender] = _amount;
        } else {
            m_TransferOutAmount[_sender] += _amount;
        }

        require(m_TransferOutAmount[_sender] <= m_TransferOutLimit, "TRANSFER_OUT_LIMIT_EXCEEDED_FOR_PERIOD");
    }

    function getTransferOutStatusForSender(address _sender) 
        onlyAdmin 
        external 
        view 
        returns (
            uint256 _transferOutAmount, 
            uint256 _transferOutExpiration, 
            uint256 _transferOutLimit,
            uint256 _blockTime
        ) 
    {
        return (
            m_TransferOutAmount[_sender],
            m_TransferOutLimitExpiration[_sender],
            m_TransferOutLimit,
            block.timestamp
        );
    }

    function getTransferOutStatus() 
        external 
        view 
        returns (
            uint256 _transferOutAmount, 
            uint256 _transferOutExpiration, 
            uint256 _transferOutLimit,
            uint256 _blockTime
        ) 
    {
        return (
            m_TransferOutAmount[msg.sender],
            m_TransferOutLimitExpiration[msg.sender],
            m_TransferOutLimit,
            block.timestamp
        );
    }

    function isTransferOutLimited(address _sender) onlyAdmin external view returns (bool) {
        return m_TransferOutAmount[_sender] > m_TransferOutLimit;
    }

    function liftTransferOutLimit(address _sender) onlyAdmin external {
        m_TransferOutAmount[_sender] = 0;
        m_TransferOutLimitExpiration[_sender] = block.timestamp + m_TransferOutLimitPeriod;
    }

    function setTransferOutLimits(uint256 _amount, uint256 _period) external onlyAdmin {
        m_TransferOutLimit = _amount;
        m_TransferOutLimitPeriod = _period;
    }

    function transferOutLimitPeriod() external view returns (uint256) {
        return m_TransferOutLimitPeriod;
    }

    function transferOutLimit() external view returns (uint256) {
        return m_TransferOutLimit;
    }

    function _shouldTakeFee(address _sender, address _recipient) internal view returns (bool) {
        return !(m_IsFeeExempt[_sender] || m_IsFeeExempt[_recipient]) && !m_FeeLock;
    }

    function _takeFee(address _sender, address _recipient, uint256 _amount) internal returns (uint256) {
        uint256 _feeAmount;
        bool _bot;
        
        // Add all the fees to the contract. In case of Sell, it will be multiplied fees.
        if (!_isPair(_sender)) {
            _bot = m_IsBot[_sender];
        } else {
            _bot = m_IsBot[_recipient];
        }
        
        // if this is a bot
        if (_bot) {
            _feeAmount = _amount * (m_FeeDenominator - 1) / m_FeeDenominator;
            m_Balances[DEAD] = m_Balances[DEAD] + _feeAmount;
            emit Transfer(_sender, DEAD, _feeAmount);
        } 
        // normal trade
        else {
            // tax buys, sells, and transfers differently
            _feeAmount = _isTransfer(_sender, _recipient) ? 0 : _amount * m_TotalFee / m_FeeDenominator;
            m_Balances[address(this)] = m_Balances[address(this)] + _feeAmount;
            emit Transfer(_sender, address(this), _feeAmount);
        }

        return _amount - _feeAmount;
    }

    function _shouldEmitFees() internal view returns (bool) {
        return 
            // # TODO should we do this on transfers? or only sells?
            // if not a buy
            !_isPair(msg.sender) 
            // if not swapping
            && !m_InSwap
            // if swapping enabled
            && swapEnabled
            // if fees accrued meet threshold
            && m_Balances[address(this)] >= swapThreshold
            && !m_FeeLock;
    }

    function _emitFees() internal swapping {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = WETH;

        uint256 _balanceBefore = address(this).balance;

        m_FeeLock = true;
        m_Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            _path,
            address(this),
            block.timestamp
        );
        m_FeeLock = false;
        uint256 _amountETH = address(this).balance - _balanceBefore;
        uint256 _amountReflection = _amountETH * m_HolderFee / m_TotalFee;
        uint256 _amountTeam = _amountETH - _amountReflection;

        try m_Distributor.deposit{value: _amountReflection}() {
        } catch {}
        
        payable(m_TeamReceiver).transfer(_amountTeam);
    }

    function _isLaunched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function _launch() internal {
        //To know when it was launched
        launchedAt = block.number;
    }

    function _isPair(address _addr) internal view returns (bool) {
        return m_Pairs[_addr];
    }

    function _isTransfer(address _sender, address _recipient) internal view returns (bool) {
        return !_isPair(_sender) && !_isPair(_recipient);
    }

    function setPair(address _pair, bool _status) onlyAdmin public {
        m_Pairs[_pair] = _status;
        m_IsDividendExempt[_pair] = _status;
        m_IsTxLimitExempt[_pair] = _status;
    }
    
    function setBuyTxLimit(uint256 _amount) external onlyAdmin {
        m_MaxBuyAmount = _amount;
    }
    
    function setSellTxLimit(uint256 _amount) external onlyAdmin {
        m_MaxSellAmount = _amount;
    }
    
    function setBot(address _address, bool _toggle) external onlyAdmin {
        m_IsBot[_address] = _toggle;
        _setIsDividendExempt(_address, _toggle);
    }
    
    function isBot(address _address) external view onlyAdmin returns (bool) {
        return m_IsBot[_address];
    }
    
    function _setIsDividendExempt(address _holder, bool _exempt) internal {
        require(_holder != address(this) && !_isPair(_holder));
        m_IsDividendExempt[_holder] = _exempt;
        if(_exempt){
            m_Distributor.setShare(_holder, 0);
        }else{
            m_Distributor.setShare(_holder, m_Balances[_holder]);
        }
    }

    function setIsDividendExempt(address _holder, bool _exempt) external onlyAdmin {
        _setIsDividendExempt(_holder, _exempt);
    }

    function setIsFeeExempt(address _holder, bool _exempt) external onlyAdmin {
        m_IsFeeExempt[_holder] = _exempt;
    }

    function setIsTxLimitExempt(address _holder, bool _exempt) external onlyAdmin {
        m_IsTxLimitExempt[_holder] = _exempt;
    }

    function setFees(uint256 _holderFee, uint256 _teamFee, uint256 _feeDenominator) external onlyAdmin {
        m_HolderFee = _holderFee;
        m_TeamFee = _teamFee;
        m_TotalFee = _holderFee + _teamFee;
        m_FeeDenominator = _feeDenominator;
        //Total fees has to be less than 50%
        require(m_TotalFee < m_FeeDenominator/2);
    }

    function setFeeReceiver(address _teamReceiver) external onlyAdmin {
        m_TeamReceiver = _teamReceiver;
    }
    
    function manualSend() external onlyAdmin {
        uint256 _contractETHBalance = address(this).balance;
        payable(m_TeamReceiver).transfer(_contractETHBalance);
    }

    function setFeeEmitSettings(bool _enabled, uint256 _emissionThresholdAmount) external onlyAdmin {
        swapEnabled = _enabled;
        swapThreshold = _emissionThresholdAmount;
    }
    
    function claimDividend() external {
        m_Distributor.claimDividend(msg.sender);
    }
    
    function claimDividendForHolder(address _holder) external onlyAdmin {
        m_Distributor.claimDividend(_holder);
    }
    
    function getUnpaidEarnings(address _shareholder) public view returns (uint256) {
        return m_Distributor.getUnrealizedEarnings(_shareholder);
    }
    
    function getPaidEarnings(address _shareholder) public view returns (uint256) {
        return m_Distributor.getRealizedEarnings(_shareholder);
    }
    
    function getTotalPaidEarnings() public view returns (uint256) {
        return m_Distributor.getTotalDistributed();
    }

    function manualBurn(uint256 _amount) external onlyAdmin returns (bool) {
        return _basicTransfer(address(this), DEAD, _amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return m_TotalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function setTeamReceiver(address _addr) external onlyAdmin {
        m_TeamReceiver = _addr;
    }

    function isLaunched() external view returns (bool) {
        return launchedAt != 0;
    }

    function _initRouter() internal {
        m_Router = IDEXRouter(router);
        WETH = m_Router.WETH();
        initialPair = IDEXFactory(m_Router.factory()).createPair(WETH, address(this));
        setPair(initialPair, true);
        m_Allowances[address(this)][router] = type(uint256).max;
    }

    function addLiquidityOnce() external payable onlyAdmin {
        require(!_isLaunched(), "ALREADY_LAUNCHED");
        require(balanceOf(address(this)) > 0, "LIQUIDITY_BALANCE_MISSING");
        
        m_FeeLock = true;

        try m_Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            balanceOf(address(this)),
            msg.value,
            msg.sender,
            block.timestamp + 60*10
        ) {
        } catch {
            revert("addLiquidityOnce failed");
        }

        m_FeeLock = false;
    }

    function panic() onlyAdmin external {
        payable(msg.sender).transfer(address(this).balance);
    }

    function distributor() onlyAdmin external view returns (address) {
        return address(m_Distributor);
    }

    function setAdminStatus(address _admin, bool _status) onlyAdmin public {
        _updateAdmin(_admin, _status);
        m_IsDividendExempt[_admin] = _status;
        m_IsFeeExempt[_admin] = _status;
        m_IsTxLimitExempt[_admin] = _status;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_airdropWallet","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","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":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityOnce","outputs":[],"stateMutability":"payable","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":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"claimDividendForHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"_shareholder","type":"address"}],"name":"getPaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferOutStatus","outputs":[{"internalType":"uint256","name":"_transferOutAmount","type":"uint256"},{"internalType":"uint256","name":"_transferOutExpiration","type":"uint256"},{"internalType":"uint256","name":"_transferOutLimit","type":"uint256"},{"internalType":"uint256","name":"_blockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"getTransferOutStatusForSender","outputs":[{"internalType":"uint256","name":"_transferOutAmount","type":"uint256"},{"internalType":"uint256","name":"_transferOutExpiration","type":"uint256"},{"internalType":"uint256","name":"_transferOutLimit","type":"uint256"},{"internalType":"uint256","name":"_blockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"isTransferOutLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"liftTransferOutLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"panic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAdminStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setBuyTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_emissionThresholdAmount","type":"uint256"}],"name":"setFeeEmitSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_holderFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSellTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setTeamReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setTransferOutLimits","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":"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":[],"name":"transferOutLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferOutLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_addr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a6200078c565b6200004390640271d94900620007a4565b6004819055600581905560065562278d00600e55620000656009600a6200078c565b6200007490624c4b40620007a4565b600f556002601355600460145560066015556064601655601d805460ff60a01b1916600160a01b179055620000ac6009600a6200078c565b620000bb90620f4240620007a4565b601e55348015620000cb57600080fd5b506040516200392b3803806200392b833981016040819052620000ee91620007e3565b600080546001600160a01b0319166001600160a01b038681169182178355308352600b60208181526040808620805460ff199081166001908117909255600280548716895283892080548316841790555486168852600a80855283892080548316841790556003805488168a52958552838920805483168417905594549095168752928252808620805485168417905593855281905291909220805490921681179091556200019f90859062000292565b620001ac83600162000292565b620001b982600162000292565b601780546001600160a01b038086166001600160a01b0319928316179092556019805492841692909116919091179055620001f362000355565b604051620002019062000669565b604051809103906000f0801580156200021e573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316179055600454908316600081815260076020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050506200085e565b3360009081526001602081905260409091205460ff1615151480620002c157506000546001600160a01b031633145b620002fc5760405162461bcd60e51b815260206004820152600660248201526510a0b236b4b760d11b60448201526064015b60405180910390fd5b6200030882826200052d565b6001600160a01b039091166000908152600b60209081526040808320805494151560ff199586168117909155600983528184208054861682179055600a9092529091208054909216179055565b601954601880546001600160a01b0319166001600160a01b039092169182179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620003b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d8919062000840565b601c80546001600160a01b0319166001600160a01b039283161790556018546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000437573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045d919062000840565b601c546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620004af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d5919062000840565b601a80546001600160a01b0319166001600160a01b0392909216918217905562000501906001620005b6565b3060009081526008602090815260408083206019546001600160a01b0316845290915290206000199055565b336001600160a01b0383161415806200055057506000546001600160a01b031633145b6200058b5760405162461bcd60e51b815260206004820152600a60248201526910a0b236b4b729b2b63360b11b6044820152606401620002f3565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b3360009081526001602081905260409091205460ff1615151480620005e557506000546001600160a01b031633145b6200061c5760405162461bcd60e51b815260206004820152600660248201526510a0b236b4b760d11b6044820152606401620002f3565b6001600160a01b039091166000908152600d60209081526040808320805494151560ff199586168117909155600b83528184208054861682179055600a9092529091208054909216179055565b61085780620030d483390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006ce578160001904821115620006b257620006b262000677565b80851615620006c057918102915b93841c939080029062000692565b509250929050565b600082620006e75750600162000786565b81620006f65750600062000786565b81600181146200070f57600281146200071a576200073a565b600191505062000786565b60ff8411156200072e576200072e62000677565b50506001821b62000786565b5060208310610133831016604e8410600b84101617156200075f575081810a62000786565b6200076b83836200068d565b806000190482111562000782576200078262000677565b0290505b92915050565b60006200079d60ff841683620006d6565b9392505050565b6000816000190483118215151615620007c157620007c162000677565b500290565b80516001600160a01b0381168114620007de57600080fd5b919050565b60008060008060808587031215620007fa57600080fd5b6200080585620007c6565b93506200081560208601620007c6565b92506200082560408601620007c6565b91506200083560608601620007c6565b905092959194509250565b6000602082840312156200085357600080fd5b6200079d82620007c6565b612866806200086e6000396000f3fe6080604052600436106102e75760003560e01c8063658d4b7f11610190578063bfe10928116100dc578063f1c81a6f11610095578063f42938901161006f578063f4293890146108b8578063f708a64f146108cd578063f84ba65d146108ed578063f887ea401461090d57600080fd5b8063f1c81a6f14610863578063f2fde38b14610878578063f3b08a931461089857600080fd5b8063bfe10928146107b3578063cec10c11146107c8578063dd62ed3e146107e8578063e4c777451461082e578063efdcd9741461073d578063f0fc6bca1461084e57600080fd5b806386a22eff11610149578063991937ed11610123578063991937ed1461073d578063a9059cbb1461075d578063ad5c46481461077d578063bf56b3711461079d57600080fd5b806386a22eff146106eb578063893d20e81461070b57806395d89b411461036d57600080fd5b8063658d4b7f14610614578063687337b9146106345780636c71f1cd146106545780636ddd17131461067457806370a0823114610695578063736ad050146106cb57600080fd5b806324d7806c1161024f5780633bbac579116102085780634f5bee44116101e25780634f5bee441461059457806352f48158146105b4578063571ac8b0146105d45780636085f3ba146105f457600080fd5b80633bbac5791461052d5780634700d3051461054d57806348dcb5cc1461056257600080fd5b806324d7806c1461048557806328fd3198146104a55780632b112e49146104c5578063307aebc9146104da578063313ce567146104f1578063342aa8b51461050d57600080fd5b8063095ea7b3116102a1578063095ea7b3146103e35780630cb284bb1461041357806318160ddd146104285780631b0570d91461043d57806323b635851461044557806323b872dd1461046557600080fd5b8062ac9eeb146102f357806302d36107146103175780630445b6671461035757806306fdde031461036d5780630720515e146103a157806308cad4e5146103c357600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50600f545b6040519081526020015b60405180910390f35b34801561032357600080fd5b506103376103323660046124bc565b61092d565b60408051948552602085019390935291830152606082015260800161030e565b34801561036357600080fd5b50610304601e5481565b34801561037957600080fd5b506040805180820182526005815264151491539160da1b6020820152905161030e91906124d9565b3480156103ad57600080fd5b506103c16103bc3660046124bc565b6109bb565b005b3480156103cf57600080fd5b506103c16103de36600461252e565b610a47565b3480156103ef57600080fd5b506104036103fe366004612547565b610a96565b604051901515815260200161030e565b34801561041f57600080fd5b50610304610b02565b34801561043457600080fd5b50600454610304565b6103c1610b75565b34801561045157600080fd5b5061040361046036600461252e565b610da1565b34801561047157600080fd5b50610403610480366004612573565b610e0a565b34801561049157600080fd5b506104036104a03660046124bc565b610e9f565b3480156104b157600080fd5b506103046104c03660046124bc565b610f07565b3480156104d157600080fd5b50610304610f77565b3480156104e657600080fd5b50601b541515610403565b3480156104fd57600080fd5b506040516009815260200161030e565b34801561051957600080fd5b506103c16105283660046125c4565b610fc4565b34801561053957600080fd5b506104036105483660046124bc565b611040565b34801561055957600080fd5b506103c16110a8565b34801561056e57600080fd5b5033600090815260116020908152604080832054601090925290912054600f5442610337565b3480156105a057600080fd5b506103c16105af3660046125c4565b611121565b3480156105c057600080fd5b506103046105cf3660046124bc565b6111c2565b3480156105e057600080fd5b506104036105ef3660046124bc565b6111f5565b34801561060057600080fd5b506103c161060f3660046124bc565b611203565b34801561062057600080fd5b506103c161062f3660046125c4565b6112af565b34801561064057600080fd5b506103c161064f3660046125f9565b611324565b34801561066057600080fd5b5061040361066f3660046124bc565b611390565b34801561068057600080fd5b50601d5461040390600160a01b900460ff1681565b3480156106a157600080fd5b506103046106b03660046124bc565b6001600160a01b031660009081526007602052604090205490565b3480156106d757600080fd5b506103c16106e636600461252e565b6113fc565b3480156106f757600080fd5b506103c16107063660046125c4565b61144b565b34801561071757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161030e565b34801561074957600080fd5b506103c16107583660046124bc565b6114e2565b34801561076957600080fd5b50610403610778366004612547565b61154e565b34801561078957600080fd5b50601c54610725906001600160a01b031681565b3480156107a957600080fd5b50610304601b5481565b3480156107bf57600080fd5b5061072561155b565b3480156107d457600080fd5b506103c16107e3366004612615565b6115b4565b3480156107f457600080fd5b50610304610803366004612641565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561083a57600080fd5b50601a54610725906001600160a01b031681565b34801561085a57600080fd5b506103c1611637565b34801561086f57600080fd5b50600e54610304565b34801561088457600080fd5b506103c16108933660046124bc565b611696565b3480156108a457600080fd5b506103c16108b336600461267a565b61172d565b3480156108c457600080fd5b506103c1611782565b3480156108d957600080fd5b506103c16108e83660046125c4565b611806565b3480156108f957600080fd5b506103c16109083660046125c4565b61185a565b34801561091957600080fd5b50601954610725906001600160a01b031681565b33600090815260016020819052604082205482918291829160ff9091161515148061096257506000546001600160a01b031633145b6109875760405162461bcd60e51b815260040161097e9061269c565b60405180910390fd5b505050506001600160a01b0316600090815260116020908152604080832054601090925290912054600f5491929091904290565b3360009081526001602081905260409091205460ff16151514806109e957506000546001600160a01b031633145b610a055760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b038116600090815260116020526040812055600e54610a2b90426126d2565b6001600160a01b03909116600090815260106020526040902055565b3360009081526001602081905260409091205460ff1615151480610a7557506000546001600160a01b031633145b610a915760405162461bcd60e51b815260040161097e9061269c565b600655565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610af19086815260200190565b60405180910390a350600192915050565b601d5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7091906126ea565b905090565b3360009081526001602081905260409091205460ff1615151480610ba357506000546001600160a01b031633145b610bbf5760405162461bcd60e51b815260040161097e9061269c565b601b5415610c025760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d310555390d2115160821b604482015260640161097e565b3060009081526007602052604081205411610c5f5760405162461bcd60e51b815260206004820152601960248201527f4c49515549444954595f42414c414e43455f4d495353494e4700000000000000604482015260640161097e565b6012805460ff191660011790556018546001600160a01b031663f305d7193430610c9e816001600160a01b031660009081526007602052604090205490565b306000908152600760205260409020543433610cbc426102586126d2565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af193505050508015610d46575060408051601f3d908101601f19168201909252610d4391810190612703565b60015b610d925760405162461bcd60e51b815260206004820152601760248201527f6164644c69717569646974794f6e6365206661696c6564000000000000000000604482015260640161097e565b5050506012805460ff19169055565b33600090815260016020819052604082205460ff1615151480610dce57506000546001600160a01b031633145b610dea5760405162461bcd60e51b815260040161097e9061269c565b600254610e029030906001600160a01b0316846118cf565b90505b919050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610e8a576001600160a01b0384166000908152600860209081526040808320338452909152902054610e65908390612731565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610e95848484611977565b90505b9392505050565b33600090815260016020819052604082205460ff1615151480610ecc57506000546001600160a01b031633145b610ee85760405162461bcd60e51b815260040161097e9061269c565b506001600160a01b031660009081526001602052604090205460ff1690565b601d546040516352f4968560e11b81526001600160a01b038381166004830152600092169063a5e92d0a906024015b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0291906126ea565b6003546001600160a01b03166000908152600760205260408120546002546001600160a01b0316600090815260076020526040902054600454610fba9190612731565b610b709190612731565b3360009081526001602081905260409091205460ff1615151480610ff257506000546001600160a01b031633145b61100e5760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b0382166000908152600c60205260409020805460ff191682151517905561103c8282611c34565b5050565b33600090815260016020819052604082205460ff161515148061106d57506000546001600160a01b031633145b6110895760405162461bcd60e51b815260040161097e9061269c565b506001600160a01b03166000908152600c602052604090205460ff1690565b3360009081526001602081905260409091205460ff16151514806110d657506000546001600160a01b031633145b6110f25760405162461bcd60e51b815260040161097e9061269c565b60405133904780156108fc02916000818181858888f1935050505015801561111e573d6000803e3d6000fd5b50565b3360009081526001602081905260409091205460ff161515148061114f57506000546001600160a01b031633145b61116b5760405162461bcd60e51b815260040161097e9061269c565b6111758282611d3d565b6001600160a01b039091166000908152600b60209081526040808320805494151560ff199586168117909155600983528184208054861682179055600a9092529091208054909216179055565b601d5460405163ed80d1a960e01b81526001600160a01b038381166004830152600092169063ed80d1a990602401610f36565b6000610e0282600019610a96565b3360009081526001602081905260409091205460ff161515148061123157506000546001600160a01b031633145b61124d5760405162461bcd60e51b815260040161097e9061269c565b601d54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b15801561129457600080fd5b505af11580156112a8573d6000803e3d6000fd5b5050505050565b3360009081526001602081905260409091205460ff16151514806112dd57506000546001600160a01b031633145b6112f95760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360009081526001602081905260409091205460ff161515148061135257506000546001600160a01b031633145b61136e5760405162461bcd60e51b815260040161097e9061269c565b601d8054921515600160a01b0260ff60a01b1990931692909217909155601e55565b33600090815260016020819052604082205460ff16151514806113bd57506000546001600160a01b031633145b6113d95760405162461bcd60e51b815260040161097e9061269c565b50600f546001600160a01b03821660009081526011602052604090205411919050565b3360009081526001602081905260409091205460ff161515148061142a57506000546001600160a01b031633145b6114465760405162461bcd60e51b815260040161097e9061269c565b600555565b3360009081526001602081905260409091205460ff161515148061147957506000546001600160a01b031633145b6114955760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b039091166000908152600d60209081526040808320805494151560ff199586168117909155600b83528184208054861682179055600a9092529091208054909216179055565b3360009081526001602081905260409091205460ff161515148061151057506000546001600160a01b031633145b61152c5760405162461bcd60e51b815260040161097e9061269c565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e98338484611977565b33600090815260016020819052604082205460ff161515148061158857506000546001600160a01b031633145b6115a45760405162461bcd60e51b815260040161097e9061269c565b50601d546001600160a01b031690565b3360009081526001602081905260409091205460ff16151514806115e257506000546001600160a01b031633145b6115fe5760405162461bcd60e51b815260040161097e9061269c565b6013839055601482905561161282846126d2565b6015556016819055611625600282612748565b6015541061163257600080fd5b505050565b601d54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146116d95760405162461bcd60e51b815260206004820152600660248201526510a7bbb732b960d11b604482015260640161097e565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b3360009081526001602081905260409091205460ff161515148061175b57506000546001600160a01b031633145b6117775760405162461bcd60e51b815260040161097e9061269c565b600f91909155600e55565b3360009081526001602081905260409091205460ff16151514806117b057506000546001600160a01b031633145b6117cc5760405162461bcd60e51b815260040161097e9061269c565b60175460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561103c573d6000803e3d6000fd5b3360009081526001602081905260409091205460ff161515148061183457506000546001600160a01b031633145b6118505760405162461bcd60e51b815260040161097e9061269c565b61103c8282611c34565b3360009081526001602081905260409091205460ff161515148061188857506000546001600160a01b031633145b6118a45760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600760205260408120546118f3908390612731565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546119239083906126d2565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612811833981519152906119659086815260200190565b60405180910390a35060019392505050565b601f5460009060ff1615611997576119908484846118cf565b9050610e98565b6119a2848484611dc3565b6119ac8483611ea5565b6119b4612020565b156119c1576119c161207f565b601b541580156119d557506119d583612271565b15611a05576001600160a01b0384166000908152600760205260409020546119fc57600080fd5b611a0543601b55565b6001600160a01b038416600090815260076020526040902054611a29908390612731565b6001600160a01b038516600090815260076020526040812091909155611a4f858561228f565b611a595782611a64565b611a648585856122e4565b6001600160a01b038516600090815260076020526040902054909150611a8b9082906126d2565b6001600160a01b038516600090815260076020526040902055611aad85612271565b158015611ad357506001600160a01b0385166000908152600b602052604090205460ff16155b15611b4957601d546001600160a01b0386811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b3657600080fd5b505af1925050508015611b47575060015b505b611b5284612271565b158015611b7857506001600160a01b0384166000908152600b602052604090205460ff16155b15611bee57601d546001600160a01b0385811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bdb57600080fd5b505af1925050508015611bec575060015b505b836001600160a01b0316856001600160a01b031660008051602061281183398151915283604051611c2191815260200190565b60405180910390a3506001949350505050565b6001600160a01b0382163014801590611c535750611c5182612271565b155b611c5c57600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155611cf457601d54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b158015611cd857600080fd5b505af1158015611cec573d6000803e3d6000fd5b505050505050565b601d546001600160a01b0383811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611cbe565b336001600160a01b038316141580611d5f57506000546001600160a01b031633145b611d985760405162461bcd60e51b815260206004820152600a60248201526910a0b236b4b729b2b63360b11b604482015260640161097e565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b611dcc83612271565b611e3b5760065481111580611df957506001600160a01b0383166000908152600a602052604090205460ff165b6116325760405162461bcd60e51b815260206004820152601360248201527214d95b1b08131a5b5a5d08115e18d959591959606a1b604482015260640161097e565b60055481111580611e6457506001600160a01b0382166000908152600a602052604090205460ff165b6116325760405162461bcd60e51b8152602060048201526012602482015271109d5e48131a5b5a5d08115e18d95959195960721b604482015260640161097e565b601b54611eb0575050565b306001600160a01b03831603611ec4575050565b611ecd82612271565b15611ed6575050565b6001600160a01b0382166000908152600a602052604090205460ff1615611efb575050565b6001600160a01b03821660009081526001602052604090205460ff1615611f20575050565b6001600160a01b038216600090815260106020526040902054421115611f7957600e54611f4d90426126d2565b6001600160a01b0383166000908152601060209081526040808320939093556011905220819055611fa7565b6001600160a01b03821660009081526011602052604081208054839290611fa19084906126d2565b90915550505b600f546001600160a01b038316600090815260116020526040902054111561103c5760405162461bcd60e51b815260206004820152602660248201527f5452414e534645525f4f55545f4c494d49545f45584345454445445f464f525f6044820152651411549253d160d21b606482015260840161097e565b600061202b33612271565b15801561203b5750601f5460ff16155b80156120505750601d54600160a01b900460ff165b801561206d5750601e543060009081526007602052604090205410155b8015610b7057505060125460ff161590565b601f805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106120c1576120c161276a565b6001600160a01b039283166020918202929092010152601c548251911690829060019081106120f2576120f261276a565b6001600160a01b0392831660209182029290920101526012805460ff19166001179055601854601e5460405163791ac94760e01b81524793929092169163791ac9479161214a91600090879030904290600401612780565b600060405180830381600087803b15801561216457600080fd5b505af1158015612178573d6000803e3d6000fd5b50506012805460ff1916905550600090506121938247612731565b90506000601554601354836121a891906127f1565b6121b29190612748565b905060006121c08284612731565b9050601d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561221257600080fd5b505af193505050508015612224575060015b506017546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561225f573d6000803e3d6000fd5b5050601f805460ff1916905550505050565b6001600160a01b03166000908152600d602052604090205460ff1690565b6001600160a01b03821660009081526009602052604081205460ff16806122ce57506001600160a01b03821660009081526009602052604090205460ff165b158015610e9857505060125460ff161592915050565b60008060006122f286612271565b61231857506001600160a01b0385166000908152600c602052604090205460ff16612336565b506001600160a01b0384166000908152600c602052604090205460ff165b80156123d95760165461234a600182612731565b61235490866127f1565b61235e9190612748565b6002546001600160a01b03166000908152600760205260409020549092506123879083906126d2565b600280546001600160a01b0390811660009081526007602090815260409182902094909455915491518581529181169290891691600080516020612811833981519152910160405180910390a361246f565b6123e38686612483565b612406576016546015546123f790866127f1565b6124019190612748565b612409565b60005b306000908152600760205260409020549092506124279083906126d2565b30600081815260076020526040908190209290925590516001600160a01b03881690600080516020612811833981519152906124669086815260200190565b60405180910390a35b6124798285612731565b9695505050505050565b600061248e83612271565b158015610e98575061249f82612271565b159392505050565b6001600160a01b038116811461111e57600080fd5b6000602082840312156124ce57600080fd5b8135610e98816124a7565b600060208083528351808285015260005b81811015612506578581018301518582016040015282016124ea565b81811115612518576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561254057600080fd5b5035919050565b6000806040838503121561255a57600080fd5b8235612565816124a7565b946020939093013593505050565b60008060006060848603121561258857600080fd5b8335612593816124a7565b925060208401356125a3816124a7565b929592945050506040919091013590565b80358015158114610e0557600080fd5b600080604083850312156125d757600080fd5b82356125e2816124a7565b91506125f0602084016125b4565b90509250929050565b6000806040838503121561260c57600080fd5b612565836125b4565b60008060006060848603121561262a57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561265457600080fd5b823561265f816124a7565b9150602083013561266f816124a7565b809150509250929050565b6000806040838503121561268d57600080fd5b50508035926020909101359150565b60208082526006908201526510a0b236b4b760d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156126e5576126e56126bc565b500190565b6000602082840312156126fc57600080fd5b5051919050565b60008060006060848603121561271857600080fd5b8351925060208401519150604084015190509250925092565b600082821015612743576127436126bc565b500390565b60008261276557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d05784516001600160a01b0316835293830193918301916001016127ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561280b5761280b6126bc565b50029056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c73b9bcbf39672f9dde40455bba03e9ba60d7156080002d78ee8a10e9a031cb64736f6c634300080d003360806040526ec097ce7bc90715b34b9f100000000060085534801561002357600080fd5b50600080546001600160a01b03191633179055610812806100456000396000f3fe60806040526004361061009c5760003560e01c8063a5e92d0a11610064578063a5e92d0a14610178578063a639050914610198578063a8de58a8146101ae578063cad9f350146101c4578063d0e30db0146101da578063ed80d1a9146101e257600080fd5b8063040624fc146100a157806314b6ca96146100ca57806315f7e05e146100ec578063536ed22a1461010c5780635695fa5814610163575b600080fd5b3480156100ad57600080fd5b506100b760065481565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b506100ea6100e53660046106de565b61021b565b005b3480156100f857600080fd5b506100ea610107366004610708565b610392565b34801561011857600080fd5b50610148610127366004610708565b60036020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100c1565b34801561016f57600080fd5b506006546100b7565b34801561018457600080fd5b506100b7610193366004610708565b6103b5565b3480156101a457600080fd5b506100b760075481565b3480156101ba57600080fd5b506100b760055481565b3480156101d057600080fd5b506100b760045481565b6100ea610440565b3480156101ee57600080fd5b506100b76101fd366004610708565b6001600160a01b031660009081526003602052604090206002015490565b6000546001600160a01b0316331461023257600080fd5b6001600160a01b0382166000908152600360205260409020541561025957610259826104a5565b60008111801561027f57506001600160a01b038216600090815260036020526040902054155b156102e457600180546001600160a01b03841660008181526002602052604081208390558284018455929092527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055610317565b8015801561030957506001600160a01b03821660009081526003602052604090205415155b15610317576103178261058c565b6001600160a01b038216600090815260036020526040902054600454829161033e91610740565b6103489190610757565b6004556001600160a01b038216600090815260036020526040902081905561036f8161069f565b6001600160a01b0390921660009081526003602052604090206001019190915550565b6000546001600160a01b031633146103a957600080fd5b6103b2816104a5565b50565b6001600160a01b03811660009081526003602052604081205481036103dc57506000919050565b6001600160a01b0382166000908152600360205260408120546103fe9061069f565b6001600160a01b03841660009081526003602052604090206001015490915080821161042e575060009392505050565b6104388183610740565b949350505050565b6000546001600160a01b0316331461045757600080fd5b60045434906000036104665750565b806005546104749190610757565b60055560045460085461048890839061076f565b610492919061078e565b60075461049f9190610757565b60075550565b6001600160a01b03811660009081526003602052604081205490036104c75750565b60006104d2826103b5565b9050801561058857806006546104e89190610757565b6006556001600160a01b038216600090815260036020526040902060020154610512908290610757565b6001600160a01b038316600090815260036020526040902060028101919091555461053c9061069f565b6001600160a01b038316600081815260036020526040808220600101939093559151909183156108fc02918491818181858888f19350505050158015610586573d6000803e3d6000fd5b505b5050565b6001805461059b908290610740565b815481106105ab576105ab6107b0565b60009182526020808320909101546001600160a01b03848116845260029092526040909220546001805492909316929181106105e9576105e96107b0565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260029182905260408120546001805491939291610634908290610740565b81548110610644576106446107b0565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600180548061067a5761067a6107c6565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600854600754836106b2919061076f565b6106bc919061078e565b92915050565b80356001600160a01b03811681146106d957600080fd5b919050565b600080604083850312156106f157600080fd5b6106fa836106c2565b946020939093013593505050565b60006020828403121561071a57600080fd5b610723826106c2565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156107525761075261072a565b500390565b6000821982111561076a5761076a61072a565b500190565b60008160001904831182151516156107895761078961072a565b500290565b6000826107ab57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212200f6b34a9763e6b1ab8eae48344965217e11a4d4d34bcde4cf60be91cfbdf4b0a64736f6c634300080d0033000000000000000000000000e750a15dbe1929ec631afd01312f0ebc88ca421600000000000000000000000058da7c9ba472b2a2c104ba9a3c082a2ced95f9c9000000000000000000000000b7e774bc805a0be3a34948ff72ffe3bc27a6e2af0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102e75760003560e01c8063658d4b7f11610190578063bfe10928116100dc578063f1c81a6f11610095578063f42938901161006f578063f4293890146108b8578063f708a64f146108cd578063f84ba65d146108ed578063f887ea401461090d57600080fd5b8063f1c81a6f14610863578063f2fde38b14610878578063f3b08a931461089857600080fd5b8063bfe10928146107b3578063cec10c11146107c8578063dd62ed3e146107e8578063e4c777451461082e578063efdcd9741461073d578063f0fc6bca1461084e57600080fd5b806386a22eff11610149578063991937ed11610123578063991937ed1461073d578063a9059cbb1461075d578063ad5c46481461077d578063bf56b3711461079d57600080fd5b806386a22eff146106eb578063893d20e81461070b57806395d89b411461036d57600080fd5b8063658d4b7f14610614578063687337b9146106345780636c71f1cd146106545780636ddd17131461067457806370a0823114610695578063736ad050146106cb57600080fd5b806324d7806c1161024f5780633bbac579116102085780634f5bee44116101e25780634f5bee441461059457806352f48158146105b4578063571ac8b0146105d45780636085f3ba146105f457600080fd5b80633bbac5791461052d5780634700d3051461054d57806348dcb5cc1461056257600080fd5b806324d7806c1461048557806328fd3198146104a55780632b112e49146104c5578063307aebc9146104da578063313ce567146104f1578063342aa8b51461050d57600080fd5b8063095ea7b3116102a1578063095ea7b3146103e35780630cb284bb1461041357806318160ddd146104285780631b0570d91461043d57806323b635851461044557806323b872dd1461046557600080fd5b8062ac9eeb146102f357806302d36107146103175780630445b6671461035757806306fdde031461036d5780630720515e146103a157806308cad4e5146103c357600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50600f545b6040519081526020015b60405180910390f35b34801561032357600080fd5b506103376103323660046124bc565b61092d565b60408051948552602085019390935291830152606082015260800161030e565b34801561036357600080fd5b50610304601e5481565b34801561037957600080fd5b506040805180820182526005815264151491539160da1b6020820152905161030e91906124d9565b3480156103ad57600080fd5b506103c16103bc3660046124bc565b6109bb565b005b3480156103cf57600080fd5b506103c16103de36600461252e565b610a47565b3480156103ef57600080fd5b506104036103fe366004612547565b610a96565b604051901515815260200161030e565b34801561041f57600080fd5b50610304610b02565b34801561043457600080fd5b50600454610304565b6103c1610b75565b34801561045157600080fd5b5061040361046036600461252e565b610da1565b34801561047157600080fd5b50610403610480366004612573565b610e0a565b34801561049157600080fd5b506104036104a03660046124bc565b610e9f565b3480156104b157600080fd5b506103046104c03660046124bc565b610f07565b3480156104d157600080fd5b50610304610f77565b3480156104e657600080fd5b50601b541515610403565b3480156104fd57600080fd5b506040516009815260200161030e565b34801561051957600080fd5b506103c16105283660046125c4565b610fc4565b34801561053957600080fd5b506104036105483660046124bc565b611040565b34801561055957600080fd5b506103c16110a8565b34801561056e57600080fd5b5033600090815260116020908152604080832054601090925290912054600f5442610337565b3480156105a057600080fd5b506103c16105af3660046125c4565b611121565b3480156105c057600080fd5b506103046105cf3660046124bc565b6111c2565b3480156105e057600080fd5b506104036105ef3660046124bc565b6111f5565b34801561060057600080fd5b506103c161060f3660046124bc565b611203565b34801561062057600080fd5b506103c161062f3660046125c4565b6112af565b34801561064057600080fd5b506103c161064f3660046125f9565b611324565b34801561066057600080fd5b5061040361066f3660046124bc565b611390565b34801561068057600080fd5b50601d5461040390600160a01b900460ff1681565b3480156106a157600080fd5b506103046106b03660046124bc565b6001600160a01b031660009081526007602052604090205490565b3480156106d757600080fd5b506103c16106e636600461252e565b6113fc565b3480156106f757600080fd5b506103c16107063660046125c4565b61144b565b34801561071757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161030e565b34801561074957600080fd5b506103c16107583660046124bc565b6114e2565b34801561076957600080fd5b50610403610778366004612547565b61154e565b34801561078957600080fd5b50601c54610725906001600160a01b031681565b3480156107a957600080fd5b50610304601b5481565b3480156107bf57600080fd5b5061072561155b565b3480156107d457600080fd5b506103c16107e3366004612615565b6115b4565b3480156107f457600080fd5b50610304610803366004612641565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561083a57600080fd5b50601a54610725906001600160a01b031681565b34801561085a57600080fd5b506103c1611637565b34801561086f57600080fd5b50600e54610304565b34801561088457600080fd5b506103c16108933660046124bc565b611696565b3480156108a457600080fd5b506103c16108b336600461267a565b61172d565b3480156108c457600080fd5b506103c1611782565b3480156108d957600080fd5b506103c16108e83660046125c4565b611806565b3480156108f957600080fd5b506103c16109083660046125c4565b61185a565b34801561091957600080fd5b50601954610725906001600160a01b031681565b33600090815260016020819052604082205482918291829160ff9091161515148061096257506000546001600160a01b031633145b6109875760405162461bcd60e51b815260040161097e9061269c565b60405180910390fd5b505050506001600160a01b0316600090815260116020908152604080832054601090925290912054600f5491929091904290565b3360009081526001602081905260409091205460ff16151514806109e957506000546001600160a01b031633145b610a055760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b038116600090815260116020526040812055600e54610a2b90426126d2565b6001600160a01b03909116600090815260106020526040902055565b3360009081526001602081905260409091205460ff1615151480610a7557506000546001600160a01b031633145b610a915760405162461bcd60e51b815260040161097e9061269c565b600655565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610af19086815260200190565b60405180910390a350600192915050565b601d5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7091906126ea565b905090565b3360009081526001602081905260409091205460ff1615151480610ba357506000546001600160a01b031633145b610bbf5760405162461bcd60e51b815260040161097e9061269c565b601b5415610c025760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d310555390d2115160821b604482015260640161097e565b3060009081526007602052604081205411610c5f5760405162461bcd60e51b815260206004820152601960248201527f4c49515549444954595f42414c414e43455f4d495353494e4700000000000000604482015260640161097e565b6012805460ff191660011790556018546001600160a01b031663f305d7193430610c9e816001600160a01b031660009081526007602052604090205490565b306000908152600760205260409020543433610cbc426102586126d2565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af193505050508015610d46575060408051601f3d908101601f19168201909252610d4391810190612703565b60015b610d925760405162461bcd60e51b815260206004820152601760248201527f6164644c69717569646974794f6e6365206661696c6564000000000000000000604482015260640161097e565b5050506012805460ff19169055565b33600090815260016020819052604082205460ff1615151480610dce57506000546001600160a01b031633145b610dea5760405162461bcd60e51b815260040161097e9061269c565b600254610e029030906001600160a01b0316846118cf565b90505b919050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610e8a576001600160a01b0384166000908152600860209081526040808320338452909152902054610e65908390612731565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610e95848484611977565b90505b9392505050565b33600090815260016020819052604082205460ff1615151480610ecc57506000546001600160a01b031633145b610ee85760405162461bcd60e51b815260040161097e9061269c565b506001600160a01b031660009081526001602052604090205460ff1690565b601d546040516352f4968560e11b81526001600160a01b038381166004830152600092169063a5e92d0a906024015b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0291906126ea565b6003546001600160a01b03166000908152600760205260408120546002546001600160a01b0316600090815260076020526040902054600454610fba9190612731565b610b709190612731565b3360009081526001602081905260409091205460ff1615151480610ff257506000546001600160a01b031633145b61100e5760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b0382166000908152600c60205260409020805460ff191682151517905561103c8282611c34565b5050565b33600090815260016020819052604082205460ff161515148061106d57506000546001600160a01b031633145b6110895760405162461bcd60e51b815260040161097e9061269c565b506001600160a01b03166000908152600c602052604090205460ff1690565b3360009081526001602081905260409091205460ff16151514806110d657506000546001600160a01b031633145b6110f25760405162461bcd60e51b815260040161097e9061269c565b60405133904780156108fc02916000818181858888f1935050505015801561111e573d6000803e3d6000fd5b50565b3360009081526001602081905260409091205460ff161515148061114f57506000546001600160a01b031633145b61116b5760405162461bcd60e51b815260040161097e9061269c565b6111758282611d3d565b6001600160a01b039091166000908152600b60209081526040808320805494151560ff199586168117909155600983528184208054861682179055600a9092529091208054909216179055565b601d5460405163ed80d1a960e01b81526001600160a01b038381166004830152600092169063ed80d1a990602401610f36565b6000610e0282600019610a96565b3360009081526001602081905260409091205460ff161515148061123157506000546001600160a01b031633145b61124d5760405162461bcd60e51b815260040161097e9061269c565b601d54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b15801561129457600080fd5b505af11580156112a8573d6000803e3d6000fd5b5050505050565b3360009081526001602081905260409091205460ff16151514806112dd57506000546001600160a01b031633145b6112f95760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b3360009081526001602081905260409091205460ff161515148061135257506000546001600160a01b031633145b61136e5760405162461bcd60e51b815260040161097e9061269c565b601d8054921515600160a01b0260ff60a01b1990931692909217909155601e55565b33600090815260016020819052604082205460ff16151514806113bd57506000546001600160a01b031633145b6113d95760405162461bcd60e51b815260040161097e9061269c565b50600f546001600160a01b03821660009081526011602052604090205411919050565b3360009081526001602081905260409091205460ff161515148061142a57506000546001600160a01b031633145b6114465760405162461bcd60e51b815260040161097e9061269c565b600555565b3360009081526001602081905260409091205460ff161515148061147957506000546001600160a01b031633145b6114955760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b039091166000908152600d60209081526040808320805494151560ff199586168117909155600b83528184208054861682179055600a9092529091208054909216179055565b3360009081526001602081905260409091205460ff161515148061151057506000546001600160a01b031633145b61152c5760405162461bcd60e51b815260040161097e9061269c565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e98338484611977565b33600090815260016020819052604082205460ff161515148061158857506000546001600160a01b031633145b6115a45760405162461bcd60e51b815260040161097e9061269c565b50601d546001600160a01b031690565b3360009081526001602081905260409091205460ff16151514806115e257506000546001600160a01b031633145b6115fe5760405162461bcd60e51b815260040161097e9061269c565b6013839055601482905561161282846126d2565b6015556016819055611625600282612748565b6015541061163257600080fd5b505050565b601d54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146116d95760405162461bcd60e51b815260206004820152600660248201526510a7bbb732b960d11b604482015260640161097e565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b3360009081526001602081905260409091205460ff161515148061175b57506000546001600160a01b031633145b6117775760405162461bcd60e51b815260040161097e9061269c565b600f91909155600e55565b3360009081526001602081905260409091205460ff16151514806117b057506000546001600160a01b031633145b6117cc5760405162461bcd60e51b815260040161097e9061269c565b60175460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561103c573d6000803e3d6000fd5b3360009081526001602081905260409091205460ff161515148061183457506000546001600160a01b031633145b6118505760405162461bcd60e51b815260040161097e9061269c565b61103c8282611c34565b3360009081526001602081905260409091205460ff161515148061188857506000546001600160a01b031633145b6118a45760405162461bcd60e51b815260040161097e9061269c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600760205260408120546118f3908390612731565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546119239083906126d2565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612811833981519152906119659086815260200190565b60405180910390a35060019392505050565b601f5460009060ff1615611997576119908484846118cf565b9050610e98565b6119a2848484611dc3565b6119ac8483611ea5565b6119b4612020565b156119c1576119c161207f565b601b541580156119d557506119d583612271565b15611a05576001600160a01b0384166000908152600760205260409020546119fc57600080fd5b611a0543601b55565b6001600160a01b038416600090815260076020526040902054611a29908390612731565b6001600160a01b038516600090815260076020526040812091909155611a4f858561228f565b611a595782611a64565b611a648585856122e4565b6001600160a01b038516600090815260076020526040902054909150611a8b9082906126d2565b6001600160a01b038516600090815260076020526040902055611aad85612271565b158015611ad357506001600160a01b0385166000908152600b602052604090205460ff16155b15611b4957601d546001600160a01b0386811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b3657600080fd5b505af1925050508015611b47575060015b505b611b5284612271565b158015611b7857506001600160a01b0384166000908152600b602052604090205460ff16155b15611bee57601d546001600160a01b0385811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bdb57600080fd5b505af1925050508015611bec575060015b505b836001600160a01b0316856001600160a01b031660008051602061281183398151915283604051611c2191815260200190565b60405180910390a3506001949350505050565b6001600160a01b0382163014801590611c535750611c5182612271565b155b611c5c57600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155611cf457601d54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b158015611cd857600080fd5b505af1158015611cec573d6000803e3d6000fd5b505050505050565b601d546001600160a01b0383811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611cbe565b336001600160a01b038316141580611d5f57506000546001600160a01b031633145b611d985760405162461bcd60e51b815260206004820152600a60248201526910a0b236b4b729b2b63360b11b604482015260640161097e565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b611dcc83612271565b611e3b5760065481111580611df957506001600160a01b0383166000908152600a602052604090205460ff165b6116325760405162461bcd60e51b815260206004820152601360248201527214d95b1b08131a5b5a5d08115e18d959591959606a1b604482015260640161097e565b60055481111580611e6457506001600160a01b0382166000908152600a602052604090205460ff165b6116325760405162461bcd60e51b8152602060048201526012602482015271109d5e48131a5b5a5d08115e18d95959195960721b604482015260640161097e565b601b54611eb0575050565b306001600160a01b03831603611ec4575050565b611ecd82612271565b15611ed6575050565b6001600160a01b0382166000908152600a602052604090205460ff1615611efb575050565b6001600160a01b03821660009081526001602052604090205460ff1615611f20575050565b6001600160a01b038216600090815260106020526040902054421115611f7957600e54611f4d90426126d2565b6001600160a01b0383166000908152601060209081526040808320939093556011905220819055611fa7565b6001600160a01b03821660009081526011602052604081208054839290611fa19084906126d2565b90915550505b600f546001600160a01b038316600090815260116020526040902054111561103c5760405162461bcd60e51b815260206004820152602660248201527f5452414e534645525f4f55545f4c494d49545f45584345454445445f464f525f6044820152651411549253d160d21b606482015260840161097e565b600061202b33612271565b15801561203b5750601f5460ff16155b80156120505750601d54600160a01b900460ff165b801561206d5750601e543060009081526007602052604090205410155b8015610b7057505060125460ff161590565b601f805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106120c1576120c161276a565b6001600160a01b039283166020918202929092010152601c548251911690829060019081106120f2576120f261276a565b6001600160a01b0392831660209182029290920101526012805460ff19166001179055601854601e5460405163791ac94760e01b81524793929092169163791ac9479161214a91600090879030904290600401612780565b600060405180830381600087803b15801561216457600080fd5b505af1158015612178573d6000803e3d6000fd5b50506012805460ff1916905550600090506121938247612731565b90506000601554601354836121a891906127f1565b6121b29190612748565b905060006121c08284612731565b9050601d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561221257600080fd5b505af193505050508015612224575060015b506017546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561225f573d6000803e3d6000fd5b5050601f805460ff1916905550505050565b6001600160a01b03166000908152600d602052604090205460ff1690565b6001600160a01b03821660009081526009602052604081205460ff16806122ce57506001600160a01b03821660009081526009602052604090205460ff165b158015610e9857505060125460ff161592915050565b60008060006122f286612271565b61231857506001600160a01b0385166000908152600c602052604090205460ff16612336565b506001600160a01b0384166000908152600c602052604090205460ff165b80156123d95760165461234a600182612731565b61235490866127f1565b61235e9190612748565b6002546001600160a01b03166000908152600760205260409020549092506123879083906126d2565b600280546001600160a01b0390811660009081526007602090815260409182902094909455915491518581529181169290891691600080516020612811833981519152910160405180910390a361246f565b6123e38686612483565b612406576016546015546123f790866127f1565b6124019190612748565b612409565b60005b306000908152600760205260409020549092506124279083906126d2565b30600081815260076020526040908190209290925590516001600160a01b03881690600080516020612811833981519152906124669086815260200190565b60405180910390a35b6124798285612731565b9695505050505050565b600061248e83612271565b158015610e98575061249f82612271565b159392505050565b6001600160a01b038116811461111e57600080fd5b6000602082840312156124ce57600080fd5b8135610e98816124a7565b600060208083528351808285015260005b81811015612506578581018301518582016040015282016124ea565b81811115612518576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561254057600080fd5b5035919050565b6000806040838503121561255a57600080fd5b8235612565816124a7565b946020939093013593505050565b60008060006060848603121561258857600080fd5b8335612593816124a7565b925060208401356125a3816124a7565b929592945050506040919091013590565b80358015158114610e0557600080fd5b600080604083850312156125d757600080fd5b82356125e2816124a7565b91506125f0602084016125b4565b90509250929050565b6000806040838503121561260c57600080fd5b612565836125b4565b60008060006060848603121561262a57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561265457600080fd5b823561265f816124a7565b9150602083013561266f816124a7565b809150509250929050565b6000806040838503121561268d57600080fd5b50508035926020909101359150565b60208082526006908201526510a0b236b4b760d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156126e5576126e56126bc565b500190565b6000602082840312156126fc57600080fd5b5051919050565b60008060006060848603121561271857600080fd5b8351925060208401519150604084015190509250925092565b600082821015612743576127436126bc565b500390565b60008261276557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d05784516001600160a01b0316835293830193918301916001016127ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561280b5761280b6126bc565b50029056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c73b9bcbf39672f9dde40455bba03e9ba60d7156080002d78ee8a10e9a031cb64736f6c634300080d0033

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

000000000000000000000000e750a15dbe1929ec631afd01312f0ebc88ca421600000000000000000000000058da7c9ba472b2a2c104ba9a3c082a2ced95f9c9000000000000000000000000b7e774bc805a0be3a34948ff72ffe3bc27a6e2af0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _owner (address): 0xE750A15dbe1929eC631aFd01312f0EBc88CA4216
Arg [1] : _teamWallet (address): 0x58DA7C9Ba472B2a2C104bA9A3c082a2ced95F9c9
Arg [2] : _airdropWallet (address): 0xb7E774bc805A0bE3A34948FF72FfE3bC27A6e2AF
Arg [3] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000e750a15dbe1929ec631afd01312f0ebc88ca4216
Arg [1] : 00000000000000000000000058da7c9ba472b2a2c104ba9a3c082a2ced95f9c9
Arg [2] : 000000000000000000000000b7e774bc805a0be3a34948ff72ffe3bc27a6e2af
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

9637:17132:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18547:104;;;;;;;;;;-1:-1:-1;18625:18:0;;18547:104;;;160:25:1;;;148:2;133:18;18547:104:0;;;;;;;;16871:502;;;;;;;;;;-1:-1:-1;16871:502:0;;;;;:::i;:::-;;:::i;:::-;;;;815:25:1;;;871:2;856:18;;849:34;;;;899:18;;;892:34;957:2;942:18;;935:34;802:3;787:19;16871:502:0;584:391:1;11452:59:0;;;;;;;;;;;;;;;;12878:81;;;;;;;;;;-1:-1:-1;12950:6:0;;;;;;;;;;;-1:-1:-1;;;12950:6:0;;;;12878:81;;;;12950:6;12878:81;:::i;18022:210::-;;;;;;;;;;-1:-1:-1;18022:210:0;;;;;:::i;:::-;;:::i;:::-;;22072:104;;;;;;;;;;-1:-1:-1;22072:104:0;;;;;:::i;:::-;;:::i;13311:223::-;;;;;;;;;;-1:-1:-1;13311:223:0;;;;;:::i;:::-;;:::i;:::-;;;2252:14:1;;2245:22;2227:41;;2215:2;2200:18;13311:223:0;2087:187:1;24717:123:0;;;;;;;;;;;;;:::i;12605:89::-;;;;;;;;;;-1:-1:-1;12678:13:0;;12605:89;;25666:603;;;:::i;24848:141::-;;;;;;;;;;-1:-1:-1;24848:141:0;;;;;:::i;:::-;;:::i;13840:354::-;;;;;;;;;;-1:-1:-1;13840:354:0;;;;;:::i;:::-;;:::i;3657:112::-;;;;;;;;;;-1:-1:-1;3657:112:0;;;;;:::i;:::-;;:::i;24389:154::-;;;;;;;;;;-1:-1:-1;24389:154:0;;;;;:::i;:::-;;:::i;25001:137::-;;;;;;;;;;;;;:::i;25254:92::-;;;;;;;;;;-1:-1:-1;25323:10:0;;:15;;25254:92;;12700:81;;;;;;;;;;-1:-1:-1;12700:81:0;;9954:1;2882:36:1;;2870:2;2855:18;12700:81:0;2740:184:1;22188:163:0;;;;;;;;;;-1:-1:-1;22188:163:0;;;;;:::i;:::-;;:::i;22363:115::-;;;;;;;;;;-1:-1:-1;22363:115:0;;;;;:::i;:::-;;:::i;26277:106::-;;;;;;;;;;;;;:::i;17381:464::-;;;;;;;;;;-1:-1:-1;17697:10:0;17480:26;17677:31;;;:19;:31;;;;;;;;;17723:28;:40;;;;;;;17778:18;;17811:15;17381:464;;26512:254;;;;;;;;;;-1:-1:-1;26512:254:0;;;;;:::i;:::-;;:::i;24555:150::-;;;;;;;;;;-1:-1:-1;24555:150:0;;;;;:::i;:::-;;:::i;13542:124::-;;;;;;;;;;-1:-1:-1;13542:124:0;;;;;:::i;:::-;;:::i;24254:123::-;;;;;;;;;;-1:-1:-1;24254:123:0;;;;;:::i;:::-;;:::i;22998:125::-;;;;;;;;;;-1:-1:-1;22998:125:0;;;;;:::i;:::-;;:::i;23950:188::-;;;;;;;;;;-1:-1:-1;23950:188:0;;;;;:::i;:::-;;:::i;17853:161::-;;;;;;;;;;-1:-1:-1;17853:161:0;;;;;:::i;:::-;;:::i;11415:30::-;;;;;;;;;;-1:-1:-1;11415:30:0;;;;-1:-1:-1;;;11415:30:0;;;;;;13051:108;;;;;;;;;;-1:-1:-1;13051:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;13136:20:0;13118:7;13136:20;;;:10;:20;;;;;;;13051:108;21958:102;;;;;;;;;;-1:-1:-1;21958:102:0;;;;;:::i;:::-;;:::i;21749:197::-;;;;;;;;;;-1:-1:-1;21749:197:0;;;;;:::i;:::-;;:::i;12965:80::-;;;;;;;;;;-1:-1:-1;13017:7:0;13035;-1:-1:-1;;;;;13035:7:0;12965:80;;;-1:-1:-1;;;;;3831:32:1;;;3813:51;;3801:2;3786:18;12965:80:0;3667:203:1;25146:100:0;;;;;;;;;;-1:-1:-1;25146:100:0;;;;;:::i;:::-;;:::i;13674:158::-;;;;;;;;;;-1:-1:-1;13674:158:0;;;;;:::i;:::-;;:::i;11337:19::-;;;;;;;;;;-1:-1:-1;11337:19:0;;;;-1:-1:-1;;;;;11337:19:0;;;11305:25;;;;;;;;;;;;;;;;26391:113;;;;;;;;;;;;;:::i;23272:360::-;;;;;;;;;;-1:-1:-1;23272:360:0;;;;;:::i;:::-;;:::i;13165:138::-;;;;;;;;;;-1:-1:-1;13165:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;13269:21:0;;;13251:7;13269:21;;;:12;:21;;;;;;;;:31;;;;;;;;;;;;;13165:138;11272:26;;;;;;;;;;-1:-1:-1;11272:26:0;;;;-1:-1:-1;;;;;11272:26:0;;;24150:92;;;;;;;;;;;;;:::i;18423:116::-;;;;;;;;;;-1:-1:-1;18507:24:0;;18423:116;;3505:144;;;;;;;;;;-1:-1:-1;3505:144:0;;;;;:::i;:::-;;:::i;18240:175::-;;;;;;;;;;-1:-1:-1;18240:175:0;;;;;:::i;:::-;;:::i;23767:::-;;;;;;;;;;;;;:::i;22854:136::-;;;;;;;;;;-1:-1:-1;22854:136:0;;;;;:::i;:::-;;:::i;23131:133::-;;;;;;;;;;-1:-1:-1;23131:133:0;;;;;:::i;:::-;;:::i;11244:21::-;;;;;;;;;;-1:-1:-1;11244:21:0;;;;-1:-1:-1;;;;;11244:21:0;;;16871:502;3418:10;17014:26;3409:20;;;:8;:20;;;;;;;;17014:26;;;;;;3409:20;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;;;;17211:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;17254::::1;:37:::0;;;;;;;17306:18:::1;::::0;17211:28;;17254:37;;17306:18;17339:15:::1;::::0;16871:502::o;18022:210::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18099:28:0;::::1;18130:1;18099:28:::0;;;:19:::1;:28;::::0;;;;:32;18200:24:::1;::::0;18182:42:::1;::::0;:15:::1;:42;:::i;:::-;-1:-1:-1::0;;;;;18142:37:0;;::::1;;::::0;;;:28:::1;:37;::::0;;;;:82;18022:210::o;22072:104::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;22143:15:::1;:25:::0;22072:104::o;13311:223::-;13418:10;13388:4;13405:24;;;:12;:24;;;;;;;;-1:-1:-1;;;;;13405:34:0;;;;;;;;;;:44;;;13465:39;13388:4;;13405:34;;13465:39;;;;13442:7;160:25:1;;148:2;133:18;;14:177;13465:39:0;;;;;;;;-1:-1:-1;13522:4:0;13311:223;;;;:::o;24717:123::-;24797:13;;:35;;;-1:-1:-1;;;24797:35:0;;;;24770:7;;-1:-1:-1;;;;;24797:13:0;;:33;;:35;;;;;;;;;;;;;;:13;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24790:42;;24717:123;:::o;25666:603::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;25323:10;;:15;25732:43:::1;;;::::0;-1:-1:-1;;;25732:43:0;;6092:2:1;25732:43:0::1;::::0;::::1;6074:21:1::0;6131:2;6111:18;;;6104:30;-1:-1:-1;;;6150:18:1;;;6143:46;6206:18;;25732:43:0::1;5890:340:1::0;25732:43:0::1;25812:4;25821:1;13136:20:::0;;;:10;:20;;;;;;25794:28:::1;25786:66;;;::::0;-1:-1:-1;;;25786:66:0;;6437:2:1;25786:66:0::1;::::0;::::1;6419:21:1::0;6476:2;6456:18;;;6449:30;6515:27;6495:18;;;6488:55;6560:18;;25786:66:0::1;6235:349:1::0;25786:66:0::1;25873:9;:16:::0;;-1:-1:-1;;25873:16:0::1;25885:4;25873:16;::::0;;25906:8:::1;::::0;-1:-1:-1;;;;;25906:8:0::1;:24;25938:9;25971:4;25991:24;25971:4:::0;-1:-1:-1;;;;;13136:20:0;13118:7;13136:20;;;:10;:20;;;;;;;13051:108;25991:24:::1;26048:4;13118:7:::0;13136:20;;;:10;:20;;;;;;26069:9:::1;26093:10;26118:23;:15;26136:5;26118:23;:::i;:::-;25906:246;::::0;::::1;::::0;;;-1:-1:-1;;;;;;25906:246:0;;;-1:-1:-1;;;;;6932:15:1;;;25906:246:0::1;::::0;::::1;6914:34:1::0;6964:18;;;6957:34;;;;7007:18;;;7000:34;;;;7050:18;;;7043:34;;;;7114:15;;;7093:19;;;7086:44;7146:19;;;7139:35;;;;6848:19;;25906:246:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25906:246:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25906:246:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25902:330;;26187:33;::::0;-1:-1:-1;;;26187:33:0;;7698:2:1;26187:33:0::1;::::0;::::1;7680:21:1::0;7737:2;7717:18;;;7710:30;7776:25;7756:18;;;7749:53;7819:18;;26187:33:0::1;7496:347:1::0;25902:330:0::1;;;;26244:9;:17:::0;;-1:-1:-1;;26244:17:0::1;::::0;;25666:603::o;24848:141::-;3418:10;24913:4;3409:20;;;:8;:20;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;24967:4:::1;::::0;24937:44:::1;::::0;24960:4:::1;::::0;-1:-1:-1;;;;;24967:4:0::1;24973:7:::0;24937:14:::1;:44::i;:::-;24930:51;;3484:1;24848:141:::0;;;:::o;13840:354::-;-1:-1:-1;;;;;13963:21:0;;13943:4;13963:21;;;:12;:21;;;;;;;;13985:10;13963:33;;;;;;;;-1:-1:-1;;13963:54:0;13960:164;;-1:-1:-1;;;;;14069:21:0;;;;;;:12;:21;;;;;;;;14091:10;14069:33;;;;;;;;:43;;14105:7;;14069:43;:::i;:::-;-1:-1:-1;;;;;14033:21:0;;;;;;:12;:21;;;;;;;;14055:10;14033:33;;;;;;;:79;13960:164;14143:43;14157:7;14166:10;14178:7;14143:13;:43::i;:::-;14136:50;;13840:354;;;;;;:::o;3657:112::-;3418:10;3722:4;3409:20;;;:8;:20;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3746:15:0::1;;::::0;;;:8:::1;:15;::::0;;;;;::::1;;::::0;3657:112::o;24389:154::-;24486:13;;:49;;-1:-1:-1;;;24486:49:0;;-1:-1:-1;;;;;3831:32:1;;;24486:49:0;;;3813:51:1;24459:7:0;;24486:13;;:35;;3786:18:1;;24486:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25001:137::-;25125:4;;-1:-1:-1;;;;;25125:4:0;25054:7;13136:20;;;:10;:20;;;;;;25107:4;;-1:-1:-1;;;;;25107:4:0;13118:7;13136:20;;;:10;:20;;;;;;25081:13;;:31;;;;:::i;:::-;:49;;;;:::i;22188:163::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22266:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;:27;;-1:-1:-1;;22266:27:0::1;::::0;::::1;;;::::0;;22304:39:::1;22266:17:::0;:27;22304:20:::1;:39::i;:::-;22188:163:::0;;:::o;22363:115::-;3418:10;22429:4;3409:20;;;:8;:20;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22453:17:0::1;;::::0;;;:7:::1;:17;::::0;;;;;::::1;;::::0;22363:115::o;26277:106::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;26324:51:::1;::::0;26332:10:::1;::::0;26353:21:::1;26324:51:::0;::::1;;;::::0;::::1;::::0;;;26353:21;26332:10;26324:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26277:106::o:0;26512:254::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;26594:29:::1;26607:6;26615:7;26594:12;:29::i;:::-;-1:-1:-1::0;;;;;26634:26:0;;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;;:36;;;::::1;;-1:-1:-1::0;;26634:36:0;;::::1;::::0;::::1;::::0;;;26681:13:::1;:21:::0;;;;;:31;;;::::1;::::0;::::1;::::0;;26723:17:::1;:25:::0;;;;;;:35;;;;::::1;;::::0;;26512:254::o;24555:150::-;24650:13;;:47;;-1:-1:-1;;;24650:47:0;;-1:-1:-1;;;;;3831:32:1;;;24650:47:0;;;3813:51:1;24623:7:0;;24650:13;;:33;;3786:18:1;;24650:47:0;3667:203:1;13542:124:0;13598:4;13622:36;13630:8;-1:-1:-1;;13622:7:0;:36::i;24254:123::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;24333:13:::1;::::0;:36:::1;::::0;-1:-1:-1;;;24333:36:0;;-1:-1:-1;;;;;3831:32:1;;;24333:36:0::1;::::0;::::1;3813:51:1::0;24333:13:0;;::::1;::::0;:27:::1;::::0;3786:18:1;;24333:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24254:123:::0;:::o;22998:125::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23083:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:32;;-1:-1:-1;;23083:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22998:125::o;23950:188::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;24057:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;24057:22:0::1;-1:-1:-1::0;;;;24057:22:0;;::::1;::::0;;;::::1;::::0;;;24090:13:::1;:40:::0;23950:188::o;17853:161::-;3418:10;17933:4;3409:20;;;:8;:20;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;17988:18:0::1;::::0;-1:-1:-1;;;;;17957:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:49:::1;17853:161:::0;;;:::o;21958:102::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;22028:14:::1;:24:::0;21958:102::o;21749:197::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21823:14:0;;::::1;;::::0;;;:7:::1;:14;::::0;;;;;;;:24;;;::::1;;-1:-1:-1::0;;21823:24:0;;::::1;::::0;::::1;::::0;;;21858:18:::1;:25:::0;;;;;:35;;;::::1;::::0;::::1;::::0;;21904:17:::1;:24:::0;;;;;;:34;;;;::::1;;::::0;;21749:197::o;25146:100::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;25216:14:::1;:22:::0;;-1:-1:-1;;;;;;25216:22:0::1;-1:-1:-1::0;;;;;25216:22:0;;;::::1;::::0;;;::::1;::::0;;25146:100::o;13674:158::-;13755:4;13779:45;13793:10;13805;13817:6;13779:13;:45::i;26391:113::-;3418:10;26447:7;3409:20;;;:8;:20;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;26482:13:0::1;::::0;-1:-1:-1;;;;;26482:13:0::1;26391:113:::0;:::o;23272:360::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;23382:11:::1;:24:::0;;;23417:9:::1;:20:::0;;;23461:21:::1;23429:8:::0;23396:10;23461:21:::1;:::i;:::-;23448:10;:34:::0;23493:16:::1;:34:::0;;;23605:18:::1;23622:1;23512:15:::0;23605:18:::1;:::i;:::-;23592:10;;:31;23584:40;;;::::0;::::1;;23272:360:::0;;;:::o;24150:92::-;24195:13;;:39;;-1:-1:-1;;;24195:39:0;;24223:10;24195:39;;;3813:51:1;-1:-1:-1;;;;;24195:13:0;;;;:27;;3786:18:1;;24195:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24150:92::o;3505:144::-;3322:7;;-1:-1:-1;;;;;3322:7:0;3308:10;:21;3300:40;;;;-1:-1:-1;;;3300:40:0;;8402:2:1;3300:40:0;;;8384:21:1;8441:1;8421:18;;;8414:29;-1:-1:-1;;;8459:18:1;;;8452:36;8505:18;;3300:40:0;8200:329:1;3300:40:0;3583:7:::1;:15:::0;;-1:-1:-1;;;;;;3583:15:0::1;-1:-1:-1::0;;;;;3583:15:0;::::1;::::0;;::::1;::::0;;;3614:27:::1;::::0;3813:51:1;;;3614:27:0::1;::::0;3801:2:1;3786:18;3614:27:0::1;;;;;;;3505:144:::0;:::o;18240:175::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;18334:18:::1;:28:::0;;;;18373:24:::1;:34:::0;18240:175::o;23767:::-;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;23889:14:::1;::::0;23881:53:::1;::::0;23849:21:::1;::::0;-1:-1:-1;;;;;23889:14:0::1;::::0;23881:53;::::1;;;::::0;23849:21;;23819:27:::1;23881:53:::0;23819:27;23881:53;23849:21;23889:14;23881:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;22854:136:::0;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;22944:38:::1;22965:7;22974;22944:20;:38::i;23131:133::-:0;3418:10;3409:20;;;;:8;:20;;;;;;;;;;;:28;;;;:53;;-1:-1:-1;3455:7:0;;-1:-1:-1;;;;;3455:7:0;3441:10;:21;3409:53;3401:72;;;;-1:-1:-1;;;3401:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23220:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:36;;-1:-1:-1;;23220:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23131:133::o;15479:316::-;-1:-1:-1;;;;;15614:19:0;;15575:4;15614:19;;;:10;:19;;;;;;:29;;15636:7;;15614:29;:::i;:::-;-1:-1:-1;;;;;15592:19:0;;;;;;;:10;:19;;;;;;:51;;;;15679:22;;;;;;;:32;;15704:7;;15679:32;:::i;:::-;-1:-1:-1;;;;;15654:22:0;;;;;;;:10;:22;;;;;;;:57;;;;15727:38;;;;;;-1:-1:-1;;;;;;;;;;;15727:38:0;;;15757:7;160:25:1;;148:2;133:18;;14:177;15727:38:0;;;;;;;;-1:-1:-1;15783:4:0;15479:316;;;;;:::o;14202:1265::-;14317:8;;14297:4;;14317:8;;14314:93;;;14350:44;14365:7;14374:10;14386:7;14350:14;:44::i;:::-;14343:51;;;;14314:93;14427:43;14441:7;14450:10;14462:7;14427:13;:43::i;:::-;14481:40;14504:7;14513;14481:22;:40::i;:::-;14537:17;:15;:17::i;:::-;14534:62;;;14572:11;:9;:11::i;:::-;25323:10;;:15;;;14611:37;;;14629:19;14637:10;14629:7;:19::i;:::-;14608:128;;;-1:-1:-1;;;;;14674:19:0;;14696:1;14674:19;;;:10;:19;;;;;;14666:32;;;;;;14714:9;21450:12;21437:10;:25;21358:112;14714:9;-1:-1:-1;;;;;14771:19:0;;;;;;:10;:19;;;;;;:29;;14793:7;;14771:29;:::i;:::-;-1:-1:-1;;;;;14749:19:0;;;;;;:10;:19;;;;;:51;;;;14839:35;14760:7;14863:10;14839:14;:35::i;:::-;:86;;14918:7;14839:86;;;14877:38;14886:7;14895:10;14907:7;14877:8;:38::i;:::-;-1:-1:-1;;;;;14971:22:0;;;;;;:10;:22;;;;;;14813:112;;-1:-1:-1;14971:40:0;;14813:112;;14971:40;:::i;:::-;-1:-1:-1;;;;;14946:22:0;;;;;;:10;:22;;;;;:65;15028:16;15036:7;15028;:16::i;:::-;15027:17;:49;;;;-1:-1:-1;;;;;;15049:27:0;;;;;;:18;:27;;;;;;;;15048:28;15027:49;15024:164;;;15098:13;;-1:-1:-1;;;;;15130:19:0;;;15098:13;15130:19;;;:10;:19;;;;;;;;15098:52;;-1:-1:-1;;;15098:52:0;;;;;8924:51:1;;;;8991:18;;;8984:34;15098:13:0;;;:22;;8897:18:1;;15098:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15094:82;;15202:19;15210:10;15202:7;:19::i;:::-;15201:20;:55;;;;-1:-1:-1;;;;;;15226:30:0;;;;;;:18;:30;;;;;;;;15225:31;15201:55;15198:176;;;15278:13;;-1:-1:-1;;;;;15313:22:0;;;15278:13;15313:22;;;:10;:22;;;;;;;;15278:58;;-1:-1:-1;;;15278:58:0;;;;;8924:51:1;;;;8991:18;;;8984:34;15278:13:0;;;:22;;8897:18:1;;15278:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15274:88;;15409:10;-1:-1:-1;;;;;15391:46:0;15400:7;-1:-1:-1;;;;;15391:46:0;-1:-1:-1;;;;;;;;;;;15421:15:0;15391:46;;;;160:25:1;;148:2;133:18;;14:177;15391:46:0;;;;;;;;-1:-1:-1;15455:4:0;;14202:1265;-1:-1:-1;;;;14202:1265:0:o;22490:356::-;-1:-1:-1;;;;;22579:24:0;;22598:4;22579:24;;;;:45;;;22608:16;22616:7;22608;:16::i;:::-;22607:17;22579:45;22571:54;;;;;;-1:-1:-1;;;;;22636:27:0;;;;;;:18;:27;;;;;:37;;-1:-1:-1;;22636:37:0;;;;;;;;;;;;22684:155;;22710:13;;:34;;-1:-1:-1;;;22710:34:0;;-1:-1:-1;;;;;8942:32:1;;;22710:34:0;;;8924:51:1;22710:13:0;8991:18:1;;;8984:34;22710:13:0;;;;:22;;8897:18:1;;22710:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22188:163;;:::o;22684:155::-;22775:13;;-1:-1:-1;;;;;22807:19:0;;;22775:13;22807:19;;;:10;:19;;;;;;;;22775:52;;-1:-1:-1;;;22775:52:0;;;;;8924:51:1;;;;8991:18;;;8984:34;22775:13:0;;;:22;;8897:18:1;;22775:52:0;8750:274:1;3781:182:0;3860:10;-1:-1:-1;;;;;3860:19:0;;;;;:44;;-1:-1:-1;3897:7:0;;-1:-1:-1;;;;;3897:7:0;3883:10;:21;3860:44;3852:67;;;;-1:-1:-1;;;3852:67:0;;9518:2:1;3852:67:0;;;9500:21:1;9557:2;9537:18;;;9530:30;-1:-1:-1;;;9576:18:1;;;9569:40;9626:18;;3852:67:0;9316:334:1;3852:67:0;-1:-1:-1;;;;;3930:15:0;;;;;;;;:8;:15;;;;;:25;;-1:-1:-1;;3930:25:0;;;;;;;;;;3781:182::o;15803:336::-;15905:16;15913:7;15905;:16::i;:::-;:226;;16062:15;;16051:7;:26;;:56;;;-1:-1:-1;;;;;;16081:26:0;;;;;;:17;:26;;;;;;;;16051:56;16043:88;;;;-1:-1:-1;;;16043:88:0;;9857:2:1;16043:88:0;;;9839:21:1;9896:2;9876:18;;;9869:30;-1:-1:-1;;;9915:18:1;;;9908:49;9974:18;;16043:88:0;9655:343:1;15905:226:0;15957:14;;15946:7;:25;;:58;;;-1:-1:-1;;;;;;15975:29:0;;;;;;:17;:29;;;;;;;;15946:58;15938:89;;;;-1:-1:-1;;;15938:89:0;;10205:2:1;15938:89:0;;;10187:21:1;10244:2;10224:18;;;10217:30;-1:-1:-1;;;10263:18:1;;;10256:48;10321:18;;15938:89:0;10003:342:1;16147:716:0;25323:10;;16233:27;;16147:716;;:::o;16233:27::-;16293:4;-1:-1:-1;;;;;16274:24:0;;;16270:37;;16147:716;;:::o;16270:37::-;16321:16;16329:7;16321;:16::i;:::-;16317:29;;;16147:716;;:::o;16317:29::-;-1:-1:-1;;;;;16360:26:0;;;;;;:17;:26;;;;;;;;16356:39;;;16147:716;;:::o;16356:39::-;-1:-1:-1;;;;;16409:17:0;;;;;;:8;:17;;;;;;;;16405:30;;;16147:716;;:::o;16405:30::-;-1:-1:-1;;;;;16469:37:0;;;;;;:28;:37;;;;;;16451:15;:55;16447:295;;;16581:24;;16563:42;;:15;:42;:::i;:::-;-1:-1:-1;;;;;16523:37:0;;;;;;:28;:37;;;;;;;;:82;;;;16620:19;:28;;;:38;;;16447:295;;;-1:-1:-1;;;;;16691:28:0;;;;;;:19;:28;;;;;:39;;16723:7;;16691:28;:39;;16723:7;;16691:39;:::i;:::-;;;;-1:-1:-1;;16447:295:0;16794:18;;-1:-1:-1;;;;;16762:28:0;;;;;;:19;:28;;;;;;:50;;16754:101;;;;-1:-1:-1;;;16754:101:0;;10552:2:1;16754:101:0;;;10534:21:1;10591:2;10571:18;;;10564:30;10630:34;10610:18;;;10603:62;-1:-1:-1;;;10681:18:1;;;10674:36;10727:19;;16754:101:0;10350:402:1;19929:471:0;19979:4;20117:19;20125:10;20117:7;:19::i;:::-;20116:20;:79;;;;-1:-1:-1;20187:8:0;;;;20186:9;20116:79;:143;;;;-1:-1:-1;20248:11:0;;-1:-1:-1;;;20248:11:0;;;;20116:143;:249;;;;-1:-1:-1;20352:13:0;;20342:4;20323:25;;;;:10;:25;;;;;;:42;;20116:249;:276;;;;-1:-1:-1;;20383:9:0;;;;20382:10;;19929:471::o;20408:841::-;11590:8;:15;;-1:-1:-1;;11590:15:0;11601:4;11590:15;;;20483:16:::1;::::0;;20497:1:::1;20483:16:::0;;;;;::::1;::::0;;-1:-1:-1;;20483:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20483:16:0::1;20458:41;;20529:4;20510:5;20516:1;20510:8;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20510:24:0;;::::1;:8;::::0;;::::1;::::0;;;;;:24;20556:4:::1;::::0;20545:8;;20556:4;::::1;::::0;20545:5;;20556:4;;20545:8;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;20545:15:0;;::::1;:8;::::0;;::::1;::::0;;;;;:15;20632:9:::1;:16:::0;;-1:-1:-1;;20632:16:0::1;20644:4;20632:16;::::0;;20659:8:::1;::::0;20733:13:::1;::::0;20659:192:::1;::::0;-1:-1:-1;;;20659:192:0;;20598:21:::1;::::0;20659:8;;;::::1;::::0;:59:::1;::::0;:192:::1;::::0;20573:22:::1;::::0;20777:5;;20805:4:::1;::::0;20825:15:::1;::::0;20659:192:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20862:9:0::1;:17:::0;;-1:-1:-1;;20862:17:0::1;::::0;;-1:-1:-1;20874:5:0::1;::::0;-1:-1:-1;20911:38:0::1;20935:14:::0;20911:21:::1;:38;:::i;:::-;20890:59;;20960:25;21015:10;;21001:11;;20988:10;:24;;;;:::i;:::-;:37;;;;:::i;:::-;20960:65:::0;-1:-1:-1;21036:19:0::1;21058:30;20960:65:::0;21058:10;:30:::1;:::i;:::-;21036:52;;21105:13;;;;;;;;;-1:-1:-1::0;;;;;21105:13:0::1;-1:-1:-1::0;;;;;21105:21:0::1;;21134:17;21105:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21101:75:::0;21204:14:::1;::::0;21196:45:::1;::::0;-1:-1:-1;;;;;21204:14:0;;::::1;::::0;21196:45;::::1;;;::::0;21229:11;;21204:14:::1;21196:45:::0;21204:14;21196:45;21229:11;21204:14;21196:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11629:8:0;:16;;-1:-1:-1;;11629:16:0;;;-1:-1:-1;;;;20408:841:0:o;21478:101::-;-1:-1:-1;;;;;21557:14:0;21533:4;21557:14;;;:7;:14;;;;;;;;;21478:101::o;18659:184::-;-1:-1:-1;;;;;18769:22:0;;18743:4;18769:22;;;:13;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;18795:25:0;;;;;;:13;:25;;;;;;;;18769:51;18767:54;:68;;;;-1:-1:-1;;18826:9:0;;;;18825:10;;18659:184;-1:-1:-1;;18659:184:0:o;18851:1070::-;18941:7;18961:18;18990:9;19116:16;19124:7;19116;:16::i;:::-;19111:132;;-1:-1:-1;;;;;;19156:16:0;;;;;;:7;:16;;;;;;;;19111:132;;;-1:-1:-1;;;;;;19212:19:0;;;;;;:7;:19;;;;;;;;19111:132;19296:4;19292:582;;;19365:16;;19341:20;19360:1;19365:16;19341:20;:::i;:::-;19330:32;;:7;:32;:::i;:::-;:51;;;;:::i;:::-;19426:4;;-1:-1:-1;;;;;19426:4:0;19415:16;;;;:10;:16;;;;;;19317:64;;-1:-1:-1;19415:29:0;;19317:64;;19415:29;:::i;:::-;19407:4;;;-1:-1:-1;;;;;19407:4:0;;;19396:16;;;;:10;:16;;;;;;;;;:48;;;;19482:4;;19464:35;;160:25:1;;;19482:4:0;;;;19464:35;;;;-1:-1:-1;;;;;;;;;;;19464:35:0;133:18:1;19464:35:0;;;;;;;19292:582;;;19639:32;19651:7;19660:10;19639:11;:32::i;:::-;:78;;19701:16;;19688:10;;19678:20;;:7;:20;:::i;:::-;:39;;;;:::i;:::-;19639:78;;;19674:1;19639:78;19779:4;19760:25;;;;:10;:25;;;;;;19626:91;;-1:-1:-1;19760:38:0;;19626:91;;19760:38;:::i;:::-;19751:4;19732:25;;;;:10;:25;;;;;;;:66;;;;19818:44;;-1:-1:-1;;;;;19818:44:0;;;-1:-1:-1;;;;;;;;;;;19818:44:0;;;19851:10;160:25:1;;148:2;133:18;;14:177;19818:44:0;;;;;;;;19292:582;19893:20;19903:10;19893:7;:20;:::i;:::-;19886:27;18851:1070;-1:-1:-1;;;;;;18851:1070:0:o;21587:154::-;21668:4;21693:16;21701:7;21693;:16::i;:::-;21692:17;:41;;;;;21714:19;21722:10;21714:7;:19::i;:::-;21713:20;;21587:154;-1:-1:-1;;;21587:154:0:o;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:247;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;980:597::-;1092:4;1121:2;1150;1139:9;1132:21;1182:6;1176:13;1225:6;1220:2;1209:9;1205:18;1198:34;1250:1;1260:140;1274:6;1271:1;1268:13;1260:140;;;1369:14;;;1365:23;;1359:30;1335:17;;;1354:2;1331:26;1324:66;1289:10;;1260:140;;;1418:6;1415:1;1412:13;1409:91;;;1488:1;1483:2;1474:6;1463:9;1459:22;1455:31;1448:42;1409:91;-1:-1:-1;1561:2:1;1540:15;-1:-1:-1;;1536:29:1;1521:45;;;;1568:2;1517:54;;980:597;-1:-1:-1;;;980:597:1:o;1582:180::-;1641:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;-1:-1:-1;1733:23:1;;1582:180;-1:-1:-1;1582:180:1:o;1767:315::-;1835:6;1843;1896:2;1884:9;1875:7;1871:23;1867:32;1864:52;;;1912:1;1909;1902:12;1864:52;1951:9;1938:23;1970:31;1995:5;1970:31;:::i;:::-;2020:5;2072:2;2057:18;;;;2044:32;;-1:-1:-1;;;1767:315:1:o;2279:456::-;2356:6;2364;2372;2425:2;2413:9;2404:7;2400:23;2396:32;2393:52;;;2441:1;2438;2431:12;2393:52;2480:9;2467:23;2499:31;2524:5;2499:31;:::i;:::-;2549:5;-1:-1:-1;2606:2:1;2591:18;;2578:32;2619:33;2578:32;2619:33;:::i;:::-;2279:456;;2671:7;;-1:-1:-1;;;2725:2:1;2710:18;;;;2697:32;;2279:456::o;2929:160::-;2994:20;;3050:13;;3043:21;3033:32;;3023:60;;3079:1;3076;3069:12;3094:315;3159:6;3167;3220:2;3208:9;3199:7;3195:23;3191:32;3188:52;;;3236:1;3233;3226:12;3188:52;3275:9;3262:23;3294:31;3319:5;3294:31;:::i;:::-;3344:5;-1:-1:-1;3368:35:1;3399:2;3384:18;;3368:35;:::i;:::-;3358:45;;3094:315;;;;;:::o;3414:248::-;3479:6;3487;3540:2;3528:9;3519:7;3515:23;3511:32;3508:52;;;3556:1;3553;3546:12;3508:52;3579:26;3595:9;3579:26;:::i;3875:316::-;3952:6;3960;3968;4021:2;4009:9;4000:7;3996:23;3992:32;3989:52;;;4037:1;4034;4027:12;3989:52;-1:-1:-1;;4060:23:1;;;4130:2;4115:18;;4102:32;;-1:-1:-1;4181:2:1;4166:18;;;4153:32;;3875:316;-1:-1:-1;3875:316:1:o;4196:388::-;4264:6;4272;4325:2;4313:9;4304:7;4300:23;4296:32;4293:52;;;4341:1;4338;4331:12;4293:52;4380:9;4367:23;4399:31;4424:5;4399:31;:::i;:::-;4449:5;-1:-1:-1;4506:2:1;4491:18;;4478:32;4519:33;4478:32;4519:33;:::i;:::-;4571:7;4561:17;;;4196:388;;;;;:::o;4849:248::-;4917:6;4925;4978:2;4966:9;4957:7;4953:23;4949:32;4946:52;;;4994:1;4991;4984:12;4946:52;-1:-1:-1;;5017:23:1;;;5087:2;5072:18;;;5059:32;;-1:-1:-1;4849:248:1:o;5102:329::-;5304:2;5286:21;;;5343:1;5323:18;;;5316:29;-1:-1:-1;;;5376:2:1;5361:18;;5354:36;5422:2;5407:18;;5102:329::o;5436:127::-;5497:10;5492:3;5488:20;5485:1;5478:31;5528:4;5525:1;5518:15;5552:4;5549:1;5542:15;5568:128;5608:3;5639:1;5635:6;5632:1;5629:13;5626:39;;;5645:18;;:::i;:::-;-1:-1:-1;5681:9:1;;5568:128::o;5701:184::-;5771:6;5824:2;5812:9;5803:7;5799:23;5795:32;5792:52;;;5840:1;5837;5830:12;5792:52;-1:-1:-1;5863:16:1;;5701:184;-1:-1:-1;5701:184:1:o;7185:306::-;7273:6;7281;7289;7342:2;7330:9;7321:7;7317:23;7313:32;7310:52;;;7358:1;7355;7348:12;7310:52;7387:9;7381:16;7371:26;;7437:2;7426:9;7422:18;7416:25;7406:35;;7481:2;7470:9;7466:18;7460:25;7450:35;;7185:306;;;;;:::o;7848:125::-;7888:4;7916:1;7913;7910:8;7907:34;;;7921:18;;:::i;:::-;-1:-1:-1;7958:9:1;;7848:125::o;7978:217::-;8018:1;8044;8034:132;;8088:10;8083:3;8079:20;8076:1;8069:31;8123:4;8120:1;8113:15;8151:4;8148:1;8141:15;8034:132;-1:-1:-1;8180:9:1;;7978:217::o;10889:127::-;10950:10;10945:3;10941:20;10938:1;10931:31;10981:4;10978:1;10971:15;11005:4;11002:1;10995:15;11021:980;11283:4;11331:3;11320:9;11316:19;11362:6;11351:9;11344:25;11388:2;11426:6;11421:2;11410:9;11406:18;11399:34;11469:3;11464:2;11453:9;11449:18;11442:31;11493:6;11528;11522:13;11559:6;11551;11544:22;11597:3;11586:9;11582:19;11575:26;;11636:2;11628:6;11624:15;11610:29;;11657:1;11667:195;11681:6;11678:1;11675:13;11667:195;;;11746:13;;-1:-1:-1;;;;;11742:39:1;11730:52;;11837:15;;;;11802:12;;;;11778:1;11696:9;11667:195;;;-1:-1:-1;;;;;;;11918:32:1;;;;11913:2;11898:18;;11891:60;-1:-1:-1;;;11982:3:1;11967:19;11960:35;11879:3;11021:980;-1:-1:-1;;;11021:980:1:o;12006:168::-;12046:7;12112:1;12108;12104:6;12100:14;12097:1;12094:21;12089:1;12082:9;12075:17;12071:45;12068:71;;;12119:18;;:::i;:::-;-1:-1:-1;12159:9:1;;12006:168::o

Swarm Source

ipfs://0f6b34a9763e6b1ab8eae48344965217e11a4d4d34bcde4cf60be91cfbdf4b0a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.