ETH Price: $3,575.37 (-1.01%)

Contract

0xa001ec5C8a6aCF69bbe0E3BBaC867a2aE21a6D40
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve164772072023-01-24 14:16:35679 days ago1674569795IN
0xa001ec5C...aE21a6D40
0 ETH0.0010800923.22445405
Approve159461892022-11-11 10:29:47753 days ago1668162587IN
0xa001ec5C...aE21a6D40
0 ETH0.0003598714.81996795
Approve150044712022-06-21 22:10:10895 days ago1655849410IN
0xa001ec5C...aE21a6D40
0 ETH0.0007926332.64141922
Approve146569832022-04-26 0:35:36952 days ago1650933336IN
0xa001ec5C...aE21a6D40
0 ETH0.0010820444.55964451
Approve143420922022-03-07 21:17:251001 days ago1646687845IN
0xa001ec5C...aE21a6D40
0 ETH0.0014592460.09308517
Approve143267422022-03-05 11:59:491004 days ago1646481589IN
0xa001ec5C...aE21a6D40
0 ETH0.000897319.2692152
Transfer143190262022-03-04 7:16:551005 days ago1646378215IN
0xa001ec5C...aE21a6D40
0 ETH0.0045909328.48647879
Approve143029652022-03-01 19:21:101008 days ago1646162470IN
0xa001ec5C...aE21a6D40
0 ETH0.0030605565.72378031
Claim Reward142876062022-02-27 10:13:431010 days ago1645956823IN
0xa001ec5C...aE21a6D40
0 ETH0.0024766737.52997027
Claim Reward142875462022-02-27 9:58:361010 days ago1645955916IN
0xa001ec5C...aE21a6D40
0 ETH0.0014553122.05287993
Claim Reward142629132022-02-23 14:34:091014 days ago1645626849IN
0xa001ec5C...aE21a6D40
0 ETH0.0023309435.28308751
Approve142578992022-02-22 20:05:231014 days ago1645560323IN
0xa001ec5C...aE21a6D40
0 ETH0.0023345296.1382939
Approve142383312022-02-19 19:27:381018 days ago1645298858IN
0xa001ec5C...aE21a6D40
0 ETH0.00631658135.645
Claim Reward142380562022-02-19 18:25:361018 days ago1645295136IN
0xa001ec5C...aE21a6D40
0 ETH0.01052023126.60942318
Claim Reward142378772022-02-19 17:47:391018 days ago1645292859IN
0xa001ec5C...aE21a6D40
0 ETH0.0060787473.15682814
Claim Reward142352422022-02-19 7:36:351018 days ago1645256195IN
0xa001ec5C...aE21a6D40
0 ETH0.0027176332.70632845
Claim Reward142352192022-02-19 7:33:051018 days ago1645255985IN
0xa001ec5C...aE21a6D40
0 ETH0.0040444848.67473743
Claim Reward142351832022-02-19 7:23:431018 days ago1645255423IN
0xa001ec5C...aE21a6D40
0 ETH0.0033538640.363317
Claim Reward142351572022-02-19 7:18:411018 days ago1645255121IN
0xa001ec5C...aE21a6D40
0 ETH0.0044462453.50992341
Approve142039832022-02-14 11:19:571023 days ago1644837597IN
0xa001ec5C...aE21a6D40
0 ETH0.001438830.89759696
Approve141988232022-02-13 16:18:111024 days ago1644769091IN
0xa001ec5C...aE21a6D40
0 ETH0.0028409361.00743925
Approve141865112022-02-11 18:59:291026 days ago1644605969IN
0xa001ec5C...aE21a6D40
0 ETH0.00586948126.04388457
Approve141754762022-02-10 1:44:301027 days ago1644457470IN
0xa001ec5C...aE21a6D40
0 ETH0.0036747178.91253053
Approve141754122022-02-10 1:30:301027 days ago1644456630IN
0xa001ec5C...aE21a6D40
0 ETH0.0028627761.47638143
Approve141753602022-02-10 1:19:101027 days ago1644455950IN
0xa001ec5C...aE21a6D40
0 ETH0.0031451867.54115396
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
141531052022-02-06 14:41:361031 days ago1644158496
0xa001ec5C...aE21a6D40
10 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETALON

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-06
*/

/*
                                                                                           Etalon Token ERC20                                                                                           
                                                                                         https://etalontoken.org                                                                                        
                                                                                         https://t.me/etalontoken                                                                                       
                                                                                      https://twitter.com/Etalontoken                                                                                   

                                                                       *%##### *##%%%###   #%#     +%:      -*%##%#-    %%*    %*                                                                       
                                                                       #@.        -@+     =@-@=    +@-     +@=    +@+   @#@=   @#                                                                       
                                                                       #@.        -@+     @* *@    +@-    .@%      %@.  @+=@-  @#                                                                       
                                                                       #@####:    -@+    +@. .@*   +@-    -@*      #@:  @* *@. @#                                                                       
                                                                       #@.        -@+   .@%===%@:  +@-    .@%      %@.  @*  #% @#                                                                       
                                                                       #@.        -@+   #@::::-@#  +@-     *@-    -@*   @*   %#%#                                                                       
                                                                       #@#####.   -@+  -@+     +@- +@%####. =%%**%%=    @*   .@@#                                                                       
                                                                                                               ..                                                                                       
                                                                                                                                                                                                        
                                                                                                                                                                                                        
                                                                                                  .:-:                                                                                                  
                                                                                                .:::===:                                                                                                
                                                                                              .:::::=====:                                                                                              
                                                                                            .-----::===++++-                                                                                            
                                                                                          .--------:==+++++++-                                                                                          
                                                                                        :-=---------+++++++****-                                                                                        
                                                                                      :======-------++++++*******=                                                                                      
                                                                                    :==========-----++++*******####=                                                                                    
                                                                                  :=++===========---++*******########=                                                                                  
                                                                                :+++++++============********######%%%%%+.                                                                               
                                                                              .=++**#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*:                                                                              
                                                                                        ..:::--==++++++==--:::..                                                                                        
                                                                               ....:::---===+++***####****+++====----:::...                                                                             
                                                                              :**####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=                                                                              
                                                                                -*###%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=                                                                                
                                                                                  -##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@+                                                                                  
                                                                                    -#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@+                                                                                    
                                                                                      =%%@@@@@@@@@@@@@@@@@@@@@@@@+                                                                                      
                                                                                        =%@@@@@@@@@@@@@@@@@@@@@+.                                                                                       
                                                                                          --=++**#%%%%##*++==-.                                                                                         
                                                                                                                                                                                                        
                                                                                               .:...-::-.                                                                                               
                                                                                                :#@@@@%=                                                                                                
                                                                                                  -%%-                                                                                                  
                                                                                                                                                                                                        
                                                                                                                                                                                                        
*/




// File: contracts/FastSellLimit.sol

pragma solidity ^0.8.7;

abstract contract FastSellLimit {
    mapping(address => uint256) public canSellTimes; // when accounts can sell tokens

    function updateCanSellTime(
        address account,
        uint256 balance,
        uint256 onePercent
    ) internal {
        canSellTimes[account] =
            block.timestamp +
            getTimeInterval(balance, onePercent);
    }

    function checkCanSellTime(address account) internal view {
        require(block.timestamp >= canSellTimes[account], "fast sell limit");
    }

    function getTimeInterval(uint256 balance, uint256 onePercent)
        private
        pure
        returns (uint256)
    {
        if (balance >= onePercent) return 24 hours; // if more 1% of total then 24 hours
        return (24 hours * balance) / onePercent;
    }

    function getLapsedCanSellTime(address account)
        external
        view
        returns (uint256)
    {
        uint256 canSellTime = canSellTimes[account];
        if (block.timestamp >= canSellTime) return 0;
        return canSellTime - block.timestamp;
    }
}

// File: contracts/Ownable.sol

pragma solidity ^0.8.7;

abstract contract Ownable {
    address _owner;

    modifier onlyOwner() {
        require(msg.sender == _owner);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }
}

// File: contracts/IUniswapV2Factory.sol

pragma solidity ^0.8.7;

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

// File: contracts/IUniswapV2Router02.sol

pragma solidity ^0.8.7;

interface IUniswapV2Router02 {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

// File: contracts/IERC20.sol

pragma solidity ^0.8.7;

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
// File: contracts/ERC20.sol

pragma solidity ^0.8.7;


abstract contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e21;
    string _name;
    string _symbol;
    uint8 constant _decimals = 9;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

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

    function approve(address spender, uint256 amount)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        if (currentAllowance == INFINITY_ALLOWANCE) return true;
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }
}

// File: contracts/MaxWalletDynamic.sol

pragma solidity ^0.8.7;


abstract contract MaxWalletDynamic {
    uint256 startMaxWallet;
    uint256 startTime; // last increment time
    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxBuyIncrementPercentil = 1; // increment maxbyu percentil 1000=100%
    uint256 constant maxIncrements = 9; // maximum time incrementations
    uint256 maxBuyIncrementValue; // value for increment maxBuy

    function startMaxWalletDynamic(uint256 totalSupply) internal {
        startTime = block.timestamp;
        startMaxWallet = totalSupply / 1000;
        maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000;
    }

    function checkMaxWallet(uint256 walletSize) internal view {
        require(walletSize <= getMaxWallet(), "max wallet limit");
    }

    function getMaxWallet() public view returns (uint256) {
        uint256 incrementCount = (block.timestamp - startTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount >= maxIncrements) incrementCount = maxIncrements;
        return startMaxWallet + maxBuyIncrementValue * incrementCount;
    }
}

// File: contracts/RewardableErc20.sol

pragma solidity ^0.8.7;



abstract contract RewardableErc20 is ERC20, MaxWalletDynamic {
    uint256 public constant rewardIntervalDays = 7; // reward interval time
    uint256 public rewardInterval; // current reward interwal
    uint256 public rewardIntervalStartRewards; // current reward interwal start rewards
    uint256 public rewardIntervalLapsedRewards; // current reward interwal lapsed rewards
    uint256 public rewardedTotal; // total rewarded
    uint256 rewardIntervalStartTime; // time, when current reward interval starts
    mapping(address => uint256) _lastClaimedReward; // reward interwals by account claims
    uint256 startRewardsAccountsBalance; // all accounts balance on change reward interval

    function tryNextRewardInterval() public {
        if (rewardLapsedTime() > 0) return;
        _nextRewardInterval();
    }

    function _startRewardIntervals() internal {
        _nextRewardInterval();
    }

    function _nextRewardInterval() internal {
        rewardIntervalStartRewards = _balances[address(this)];
        rewardIntervalLapsedRewards = rewardIntervalStartRewards;
        rewardIntervalStartTime = block.timestamp;
        startRewardsAccountsBalance = getAccountsBalance();
        ++rewardInterval;
    }

    function getRewardForBalanceThisRewardInterval(uint256 balance)
        external
        view
        returns (uint256)
    {
        return
            _getRewardForBalance(
                balance,
                rewardIntervalStartRewards,
                startRewardsAccountsBalance
            );
    }

    function getRewardForBalanceTotal(uint256 balance)
        external
        view
        returns (uint256)
    {
        return
            _getRewardForBalance(
                balance,
                _balances[address(this)],
                getAccountsBalance()
            );
    }

    function _getRewardForBalance(
        uint256 balance,
        uint256 startRewardsCount,
        uint256 startBalanceTotal
    ) public view returns (uint256) {
        // if has no rewards on pool
        if (startBalanceTotal == 0) return 0;
        // get reward
        uint256 reward = (startRewardsCount * balance) /
            startBalanceTotal;
        // max wallet limitation
        uint256 maxWallet = getMaxWallet();
        if (balance + reward > maxWallet) reward = maxWallet - balance;
        // return reward
        return reward;
    }

    /// @dev current available reward for account
    function getRewardCount(address account) external view returns (uint256) {
        if (rewardLapsedTime() == 0)
            return _getRewardForBalance(
                _balances[account],
                _balances[address(this)],
                getAccountsBalance()
            );
        if (_lastClaimedReward[account] == rewardInterval) return 0;
        return
            _getRewardForBalance(
                _balances[account],
                rewardIntervalStartRewards,
                startRewardsAccountsBalance
            );
    }

    function canClaimReward(address account) external view returns (bool) {
        return rewardLapsedTime() == 0 || _canClaimReward(account);
    }

    function _canClaimReward(address account) internal view returns (bool) {
        return
            _lastClaimedReward[account] < rewardInterval && rewardInterval != 1;
    }

    function _tryClaimReward(address account) internal {
        tryNextRewardInterval();
        if (!_canClaimReward(account)) return;
        _claimReward(account);
    }

    function claimReward(address account) external {
        tryNextRewardInterval();
        require(_canClaimReward(account), "can not claim reward now");
        _claimReward(account);
    }

    function _claimReward(address account) private {
        _lastClaimedReward[account] = rewardInterval;
        uint256 reward = _getRewardForBalance(
            _balances[account],
            rewardIntervalStartRewards,
            startRewardsAccountsBalance
        );
        uint256 balance = _balances[account];

        if (reward > rewardIntervalLapsedRewards) return;
        _balances[address(this)] -= reward;
        rewardIntervalLapsedRewards -= reward;
        _balances[account] = balance + reward;
        rewardedTotal += reward;
        emit Transfer(address(this), account, reward);
    }

    function rewardLapsedTime() public view returns (uint256) {
        uint256 nextIntervalTime = rewardIntervalStartTime +
            rewardIntervalDays *
            1 days;
        if (block.timestamp >= nextIntervalTime) return 0;
        return nextIntervalTime - block.timestamp;
    }

    function getAccountsBalance() public view virtual returns (uint256);
}

// File: contracts/TradableErc20.sol

pragma solidity ^0.8.7;






abstract contract TradableErc20 is RewardableErc20, FastSellLimit, Ownable {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
    bool public tradingEnable = false;
    mapping(address => bool) _isExcludedFromFee;
    address public constant BURN_ADDRESS =
        0x000000000000000000000000000000000000dEaD;

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
    {
        _isExcludedFromFee[address(0)] = true;
        _isExcludedFromFee[BURN_ADDRESS] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
    }

    receive() external payable {}

    function makeLiquidity() public onlyOwner {
        require(uniswapV2Pair == address(0));
        _startRewardIntervals();
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uint256 initialLiquidity = getSupplyForMakeLiquidity();
        _balances[address(this)] = initialLiquidity;
        emit Transfer(address(0), address(this), initialLiquidity);
        _allowances[address(this)][
            address(_uniswapV2Router)
        ] = INFINITY_ALLOWANCE;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            initialLiquidity,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapV2Pair = pair;
        startMaxWalletDynamic(initialLiquidity);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        // claim rewards
        if (from != uniswapV2Pair && !_isExcludedFromFee[from])
            _tryClaimReward(from);
        if (to != uniswapV2Pair && !_isExcludedFromFee[to]) _tryClaimReward(to);

        require(_balances[from] >= amount, "not enough token for transfer");
        require(to != address(0), "incorrect address");

        // buy
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            require(tradingEnable, "trading disabled");
            // get taxes
            amount = _getFeeBuy(from, to, amount);
            // check max wallet
            checkMaxWallet(_balances[to] + amount);
        }
        // sell
        else if (
            uniswapV2Pair != address(0) &&
            to == uniswapV2Pair &&
            !_isExcludedFromFee[from]
        ) {
            require(tradingEnable, "trading disabled");
            // can sell timer
            checkCanSellTime(from);
            updateCanSellTime(from, _balances[from], _totalSupply / 100);
            // fee
            amount = _getFeeSell(from, amount);
        }
        // transfer from wallet to wallet
        else {
            if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                // can sell timer
                checkCanSellTime(from);
                updateCanSellTime(from, _balances[from], _totalSupply / 100);
                // get taxes
                amount = _getFeeTransfer(from, amount);
                // check max wallet
                checkMaxWallet(_balances[to] + amount);
            }
        }

        // transfer
        super._transfer(from, to, amount);
        if (to == address(BURN_ADDRESS)) _totalSupply -= amount;
    }

    function getBFee(uint256 amount) public view returns (uint256) {
        uint256 onePercent = _totalSupply / 100;
        if (amount >= onePercent) return amount / 5; // if more 1% of total then fee 20%
        return (amount * amount) / (5 * onePercent);
    }

    function getCFee(uint256 walletSize, uint256 amount)
        public
        view
        returns (uint256)
    {
        uint256 onePercent = _totalSupply / 100;
        if (walletSize >= onePercent) return amount / 10; // if more 1% of liquidity then fee 10%
        return (amount * walletSize) / (10 * onePercent);
    }

    function getIFee(uint256 amount)
        public
        view
        returns (uint256)
    {
        uint256 count = (_balances[uniswapV2Pair]) / 12; // 8.33% i.e. 30% fee is for 5% liquidity
        if (amount >= count) return amount / 2; // if more 8.33% of liquidity then fee 50%
        return (amount * amount) / (2 * count);
    }

    function getFeeBuy(address account, uint256 amount)
        public
        view
        returns (uint256)
    {
        uint256 a = amount / 100;
        uint256 b = getBFee(amount);
        uint256 c = getCFee(_balances[account] + amount, amount);
        return a + b + c;
    }

    function getFeeSell(address account, uint256 amount)
        public
        view
        returns (uint256)
    {
        uint256 c = getCFee(_balances[account], amount);
        uint256 i = getIFee(amount);
        return c + i;
    }

    function getFeeTransfer(address account, uint256 amount)
        public
        view
        returns (uint256)
    {
        return getCFee(_balances[account] + amount, amount);
    }

    function _getFeeBuy(address pair, address to, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(pair, amount, getFeeBuy(to, amount));
    }

    function _getFeeSell(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, getFeeSell(from, amount));
    }

    function _getFeeTransfer(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, getFeeTransfer(from, amount));
    }

    function _arrangeFee(
        address from,
        uint256 amount,
        uint256 fee
    ) private returns (uint256) {
        uint256 reward = fee / 2;
        uint256 burn = fee - reward;
        amount -= fee;
        _balances[from] -= fee;
        _balances[address(this)] += reward;
        _balances[BURN_ADDRESS] += burn;
        _totalSupply -= burn;
        emit Transfer(from, address(this), reward);
        emit Transfer(from, BURN_ADDRESS, burn);
        return amount;
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setTradingEnable(bool value) external onlyOwner {
        tradingEnable = value;
    }

    function getSupplyForMakeLiquidity() internal virtual returns (uint256);
}

// File: contracts/ETALON.sol

pragma solidity ^0.8.7;


contract ETALON is TradableErc20 {
    constructor() TradableErc20("Etalon", "ETA") {}

    function getSupplyForMakeLiquidity()
        internal
        view
        override
        returns (uint256)
    {
        return _totalSupply;
    }

    function getAccountsBalance() public view override returns (uint256) {
        return
            _totalSupply - _balances[uniswapV2Pair] - _balances[address(this)];
    }

    function balanceOf(address account)
        external
        view
        override
        returns (uint256)
    {
        if (_isExcludedFromFee[account] || !this.canClaimReward(account))
            return _balances[account];
        return _balances[account] + this.getRewardCount(account);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"startRewardsCount","type":"uint256"},{"internalType":"uint256","name":"startBalanceTotal","type":"uint256"}],"name":"_getRewardForBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"canClaimReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canSellTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAccountsBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletSize","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getCFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getIFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLapsedCanSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getRewardCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"getRewardForBalanceThisRewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"getRewardForBalanceTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"makeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardIntervalDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardIntervalLapsedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardIntervalStartRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardLapsedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setTradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tryNextRewardInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000556011805460ff60a01b191690553480156200002b57600080fd5b50604080518082018252600681526522ba30b637b760d11b60208083019182528351808501909452600384526245544160e81b90840152815191929183918391620000799160019162000131565b5080516200008f90600290602084019062000131565b5050601080546001600160a01b0319163390811790915560126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b805460ff1990811660019081179092557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f78054821683179055306000908152604080822080548416851790559381529290922080549092161790555062000214915050565b8280546200013f90620001d7565b90600052602060002090601f016020900481019282620001635760008555620001ae565b82601f106200017e57805160ff1916838001178555620001ae565b82800160010185558215620001ae579182015b82811115620001ae57825182559160200191906001019062000191565b50620001bc929150620001c0565b5090565b5b80821115620001bc5760008155600101620001c1565b600181811c90821680620001ec57607f821691505b602082108114156200020e57634e487b7160e01b600052602260045260246000fd5b50919050565b611fde80620002246000396000f3fe6080604052600436106102345760003560e01c80638295a3c71161012e578063d19a4ed7116100ab578063e70b5db41161006f578063e70b5db414610685578063f2fde38b1461069a578063f7dcc6c4146106ba578063f95fa9cf146106cf578063fccc2813146106ef57600080fd5b8063d19a4ed7146105bf578063d1faf5c8146105df578063d279c191146105ff578063d929ae5e1461061f578063dd62ed3e1461063f57600080fd5b8063b203919e116100f2578063b203919e14610549578063b60838fd1461055e578063be861ee614610574578063bec4de3f14610594578063c8d1349c146105aa57600080fd5b80638295a3c7146104c957806395d89b41146104de5780639fffeefb146104f3578063a1a7797114610509578063a9059cbb1461052957600080fd5b806323b872dd116101bc57806349bd5a5e1161018057806349bd5a5e14610402578063555eeca81461043a5780636c90b57f1461046757806370a08231146104895780637439c236146104a957600080fd5b806323b872dd14610370578063313ce56714610390578063330932eb146103ac5780633afb2b45146103cc5780633b863082146103e257600080fd5b80630fa604e4116102035780630fa604e4146102e557806314a343b1146102fa5780631693e8d41461031a57806318160ddd1461033b5780631a7951971461035057600080fd5b8063046335d01461024057806305e605671461027557806306fdde03146102a3578063095ea7b3146102c557600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b366004611b62565b610705565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610295610290366004611d5a565b610725565b60405190815260200161026c565b3480156102af57600080fd5b506102b8610788565b60405161026c9190611e08565b3480156102d157600080fd5b506102606102e0366004611c16565b61081a565b3480156102f157600080fd5b50610295610830565b34801561030657600080fd5b50610295610315366004611dae565b610885565b34801561032657600080fd5b5060115461026090600160a01b900460ff1681565b34801561034757600080fd5b50600054610295565b34801561035c57600080fd5b5061029561036b366004611c16565b6108e0565b34801561037c57600080fd5b5061026061038b366004611bd5565b610927565b34801561039c57600080fd5b506040516009815260200161026c565b3480156103b857600080fd5b506102956103c7366004611c16565b610991565b3480156103d857600080fd5b5061029560095481565b3480156103ee57600080fd5b506102956103fd366004611d5a565b6109bf565b34801561040e57600080fd5b50601154610422906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561044657600080fd5b50610295610455366004611b62565b600f6020526000908152604090205481565b34801561047357600080fd5b50610487610482366004611c42565b6109dd565b005b34801561049557600080fd5b506102956104a4366004611b62565b610a5e565b3480156104b557600080fd5b506104876104c4366004611d20565b610bb3565b3480156104d557600080fd5b50610487610be8565b3480156104ea57600080fd5b506102b8610c04565b3480156104ff57600080fd5b50610295600a5481565b34801561051557600080fd5b50610295610524366004611b62565b610c13565b34801561053557600080fd5b50610260610544366004611c16565b610ca2565b34801561055557600080fd5b50610487610caf565b34801561056a57600080fd5b50610295600b5481565b34801561058057600080fd5b5061029561058f366004611d8c565b610fda565b3480156105a057600080fd5b5061029560085481565b3480156105b657600080fd5b50610295600781565b3480156105cb57600080fd5b506102956105da366004611d5a565b61102f565b3480156105eb57600080fd5b506102956105fa366004611d5a565b611040565b34801561060b57600080fd5b5061048761061a366004611b62565b611071565b34801561062b57600080fd5b5061029561063a366004611b62565b6110df565b34801561064b57600080fd5b5061029561065a366004611b9c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561069157600080fd5b50610295611112565b3480156106a657600080fd5b506104876106b5366004611b62565b611150565b3480156106c657600080fd5b50610295611189565b3480156106db57600080fd5b506102956106ea366004611c16565b6111c2565b3480156106fb57600080fd5b5061042261dead81565b600061070f611189565b158061071f575061071f82611230565b92915050565b6011546001600160a01b0316600090815260036020526040812054819061074e90600c90611e75565b905080831061076957610762600284611e75565b9392505050565b610774816002611e97565b61077e8480611e97565b6107629190611e75565b60606001805461079790611ecd565b80601f01602080910402602001604051908101604052809291908181526020018280546107c390611ecd565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b6000610827338484611263565b50600192915050565b60008061083f6002603c611e97565b60065461084c9042611eb6565b6108569190611e75565b905060098110610864575060095b806007546108729190611e97565b60055461087f9190611e5d565b91505090565b60008161089457506000610762565b6000826108a18686611e97565b6108ab9190611e75565b905060006108b7610830565b9050806108c48388611e5d565b11156108d7576108d48682611eb6565b91505b50949350505050565b6001600160a01b03821660009081526003602052604081205481906109059084610fda565b9050600061091284610725565b905061091e8183611e5d565b95945050505050565b60006109348484846112c5565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561096557600080fd5b600019811415610979576001915050610762565b6109868533858403611263565b506001949350505050565b6001600160a01b038216600090815260036020526040812054610762906109b9908490611e5d565b83610fda565b3060009081526003602052604081205461071f908390610315611112565b6010546001600160a01b031633146109f457600080fd5b60005b8251811015610a59578160126000858481518110610a1757610a17611f39565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610a5281611f08565b90506109f7565b505050565b6001600160a01b03811660009081526012602052604081205460ff1680610af857506040516246335d60e41b81526001600160a01b0383166004820152309063046335d09060240160206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190611d3d565b155b15610b1957506001600160a01b031660009081526003602052604090205490565b60405163a1a7797160e01b81526001600160a01b0383166004820152309063a1a779719060240160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190611d73565b6001600160a01b03831660009081526003602052604090205461071f9190611e5d565b6010546001600160a01b03163314610bca57600080fd5b60118054911515600160a01b0260ff60a01b19909216919091179055565b6000610bf2611189565b1115610bfa57565b610c0261169c565b565b60606002805461079790611ecd565b6000610c1d611189565b610c4e576001600160a01b0382166000908152600360205260408082205430835291205461071f9190610315611112565b6008546001600160a01b0383166000908152600d60205260409020541415610c7857506000919050565b6001600160a01b038216600090815260036020526040902054600954600e5461071f929190610885565b60006108273384846112c5565b6010546001600160a01b03163314610cc657600080fd5b6011546001600160a01b031615610cdc57600080fd5b610ce4610bfa565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3357600080fd5b505afa158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190611b7f565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611b7f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610e4757600080fd5b505af1158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611b7f565b90506000610e8c60005490565b30600081815260036020526040808220849055519293509091600080516020611f8983398151915290610ec29085815260200190565b60405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526012909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610faf9190611dda565b5050601180546001600160a01b0319166001600160a01b03851617905550610fd6816116d9565b5050565b6000806064600054610fec9190611e75565b905080841061100857611000600a84611e75565b91505061071f565b61101381600a611e97565b61101d8585611e97565b6110279190611e75565b949350505050565b600061071f82600954600e54610885565b60008060646000546110529190611e75565b905080831061106657610762600584611e75565b610774816005611e97565b611079610be8565b61108281611230565b6110d35760405162461bcd60e51b815260206004820152601860248201527f63616e206e6f7420636c61696d20726577617264206e6f77000000000000000060448201526064015b60405180910390fd5b6110dc8161170a565b50565b6001600160a01b0381166000908152600f60205260408120544281116111085750600092915050565b6107624282611eb6565b30600090815260036020526040808220546011546001600160a01b031683529082205482546111419190611eb6565b61114b9190611eb6565b905090565b6010546001600160a01b0316331461116757600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061119a600762015180611e97565b600c546111a79190611e5d565b90508042106111b857600091505090565b61087f4282611eb6565b6000806111d0606484611e75565b905060006111dd84611040565b6001600160a01b0386166000908152600360205260408120549192509061120f90611209908790611e5d565b86610fda565b90508061121c8385611e5d565b6112269190611e5d565b9695505050505050565b6008546001600160a01b0382166000908152600d6020526040812054909111801561071f57506008546001141592915050565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6011546001600160a01b038481169116148015906112fc57506001600160a01b03831660009081526012602052604090205460ff16155b1561130a5761130a83611817565b6011546001600160a01b0383811691161480159061134157506001600160a01b03821660009081526012602052604090205460ff16155b1561134f5761134f82611817565b6001600160a01b0383166000908152600360205260409020548111156113b75760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064016110ca565b6001600160a01b0382166114015760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b60448201526064016110ca565b6011546001600160a01b03848116911614801561143757506001600160a01b03821660009081526012602052604090205460ff16155b156114c857601154600160a01b900460ff166114885760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b60448201526064016110ca565b61149383838361182f565b6001600160a01b0383166000908152600360205260409020549091506114c3906114be908390611e5d565b611845565b611663565b6011546001600160a01b0316158015906114ef57506011546001600160a01b038381169116145b801561151457506001600160a01b03831660009081526012602052604090205460ff16155b156115b157601154600160a01b900460ff166115655760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b60448201526064016110ca565b61156e8361188f565b6001600160a01b03831660009081526003602052604081205490546115a091859161159b90606490611e75565b6118e9565b6115aa838261191e565b9050611663565b6001600160a01b03831660009081526012602052604090205460ff161580156115f357506001600160a01b03821660009081526012602052604090205460ff16155b15611663576116018361188f565b6001600160a01b038316600090815260036020526040812054905461162e91859161159b90606490611e75565b611638838261192f565b6001600160a01b038316600090815260036020526040902054909150611663906114be908390611e5d565b61166e838383611940565b6001600160a01b03821661dead1415610a5957806000808282546116929190611eb6565b9091555050505050565b306000908152600360205260409020546009819055600a5542600c556116c0611112565b600e55600880546000906116d390611f08565b90915550565b426006556116e96103e882611e75565b6005556103e86116fa600183611e97565b6117049190611e75565b60075550565b6008546001600160a01b0382166000908152600d60209081526040808320939093556003905290812054600954600e54611745929190610885565b6001600160a01b038316600090815260036020526040902054600a549192509082111561177157505050565b3060009081526003602052604081208054849290611790908490611eb6565b9250508190555081600a60008282546117a99190611eb6565b909155506117b990508282611e5d565b6001600160a01b038416600090815260036020526040812091909155600b80548492906117e7908490611e5d565b90915550506040518281526001600160a01b038416903090600080516020611f89833981519152906020016112b8565b61181f610be8565b61182881611230565b6110d35750565b6000611027848361184086866111c2565b6119e5565b61184d610830565b8111156110dc5760405162461bcd60e51b815260206004820152601060248201526f1b585e081dd85b1b195d081b1a5b5a5d60821b60448201526064016110ca565b6001600160a01b0381166000908152600f60205260409020544210156110dc5760405162461bcd60e51b815260206004820152600f60248201526e19985cdd081cd95b1b081b1a5b5a5d608a1b60448201526064016110ca565b6118f38282611b26565b6118fd9042611e5d565b6001600160a01b039093166000908152600f60205260409020929092555050565b6000610762838361184086866108e0565b600061076283836118408686610991565b6001600160a01b0383166000908152600360205260409020548181101561196657600080fd5b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061199d908490611e5d565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611f89833981519152846040516119d791815260200190565b60405180910390a350505050565b6000806119f3600284611e75565b90506000611a018285611eb6565b9050611a0d8486611eb6565b6001600160a01b038716600090815260036020526040812080549297508692909190611a3a908490611eb6565b90915550503060009081526003602052604081208054849290611a5e908490611e5d565b909155505061dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054839290611aa1908490611e5d565b9250508190555080600080828254611ab99190611eb6565b909155505060405182815230906001600160a01b03881690600080516020611f898339815191529060200160405180910390a360405181815261dead906001600160a01b03881690600080516020611f898339815191529060200160405180910390a35092949350505050565b6000818310611b3957506201518061071f565b8161077e8462015180611e97565b8035611b5281611f65565b919050565b8035611b5281611f7a565b600060208284031215611b7457600080fd5b813561076281611f65565b600060208284031215611b9157600080fd5b815161076281611f65565b60008060408385031215611baf57600080fd5b8235611bba81611f65565b91506020830135611bca81611f65565b809150509250929050565b600080600060608486031215611bea57600080fd5b8335611bf581611f65565b92506020840135611c0581611f65565b929592945050506040919091013590565b60008060408385031215611c2957600080fd5b8235611c3481611f65565b946020939093013593505050565b60008060408385031215611c5557600080fd5b823567ffffffffffffffff80821115611c6d57600080fd5b818501915085601f830112611c8157600080fd5b8135602082821115611c9557611c95611f4f565b8160051b604051601f19603f83011681018181108682111715611cba57611cba611f4f565b604052838152828101945085830182870184018b1015611cd957600080fd5b600096505b84871015611d0357611cef81611b47565b865260019690960195948301948301611cde565b509650611d139050878201611b57565b9450505050509250929050565b600060208284031215611d3257600080fd5b813561076281611f7a565b600060208284031215611d4f57600080fd5b815161076281611f7a565b600060208284031215611d6c57600080fd5b5035919050565b600060208284031215611d8557600080fd5b5051919050565b60008060408385031215611d9f57600080fd5b50508035926020909101359150565b600080600060608486031215611dc357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611def57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611e3557858101830151858201604001528201611e19565b81811115611e47576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115611e7057611e70611f23565b500190565b600082611e9257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611eb157611eb1611f23565b500290565b600082821015611ec857611ec8611f23565b500390565b600181811c90821680611ee157607f821691505b60208210811415611f0257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f1c57611f1c611f23565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110dc57600080fd5b80151581146110dc57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202b078296eb8cac9d2c9807c96260d96f0c76c4e5aaa1e236a70cf3401054c86564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80638295a3c71161012e578063d19a4ed7116100ab578063e70b5db41161006f578063e70b5db414610685578063f2fde38b1461069a578063f7dcc6c4146106ba578063f95fa9cf146106cf578063fccc2813146106ef57600080fd5b8063d19a4ed7146105bf578063d1faf5c8146105df578063d279c191146105ff578063d929ae5e1461061f578063dd62ed3e1461063f57600080fd5b8063b203919e116100f2578063b203919e14610549578063b60838fd1461055e578063be861ee614610574578063bec4de3f14610594578063c8d1349c146105aa57600080fd5b80638295a3c7146104c957806395d89b41146104de5780639fffeefb146104f3578063a1a7797114610509578063a9059cbb1461052957600080fd5b806323b872dd116101bc57806349bd5a5e1161018057806349bd5a5e14610402578063555eeca81461043a5780636c90b57f1461046757806370a08231146104895780637439c236146104a957600080fd5b806323b872dd14610370578063313ce56714610390578063330932eb146103ac5780633afb2b45146103cc5780633b863082146103e257600080fd5b80630fa604e4116102035780630fa604e4146102e557806314a343b1146102fa5780631693e8d41461031a57806318160ddd1461033b5780631a7951971461035057600080fd5b8063046335d01461024057806305e605671461027557806306fdde03146102a3578063095ea7b3146102c557600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b366004611b62565b610705565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610295610290366004611d5a565b610725565b60405190815260200161026c565b3480156102af57600080fd5b506102b8610788565b60405161026c9190611e08565b3480156102d157600080fd5b506102606102e0366004611c16565b61081a565b3480156102f157600080fd5b50610295610830565b34801561030657600080fd5b50610295610315366004611dae565b610885565b34801561032657600080fd5b5060115461026090600160a01b900460ff1681565b34801561034757600080fd5b50600054610295565b34801561035c57600080fd5b5061029561036b366004611c16565b6108e0565b34801561037c57600080fd5b5061026061038b366004611bd5565b610927565b34801561039c57600080fd5b506040516009815260200161026c565b3480156103b857600080fd5b506102956103c7366004611c16565b610991565b3480156103d857600080fd5b5061029560095481565b3480156103ee57600080fd5b506102956103fd366004611d5a565b6109bf565b34801561040e57600080fd5b50601154610422906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561044657600080fd5b50610295610455366004611b62565b600f6020526000908152604090205481565b34801561047357600080fd5b50610487610482366004611c42565b6109dd565b005b34801561049557600080fd5b506102956104a4366004611b62565b610a5e565b3480156104b557600080fd5b506104876104c4366004611d20565b610bb3565b3480156104d557600080fd5b50610487610be8565b3480156104ea57600080fd5b506102b8610c04565b3480156104ff57600080fd5b50610295600a5481565b34801561051557600080fd5b50610295610524366004611b62565b610c13565b34801561053557600080fd5b50610260610544366004611c16565b610ca2565b34801561055557600080fd5b50610487610caf565b34801561056a57600080fd5b50610295600b5481565b34801561058057600080fd5b5061029561058f366004611d8c565b610fda565b3480156105a057600080fd5b5061029560085481565b3480156105b657600080fd5b50610295600781565b3480156105cb57600080fd5b506102956105da366004611d5a565b61102f565b3480156105eb57600080fd5b506102956105fa366004611d5a565b611040565b34801561060b57600080fd5b5061048761061a366004611b62565b611071565b34801561062b57600080fd5b5061029561063a366004611b62565b6110df565b34801561064b57600080fd5b5061029561065a366004611b9c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561069157600080fd5b50610295611112565b3480156106a657600080fd5b506104876106b5366004611b62565b611150565b3480156106c657600080fd5b50610295611189565b3480156106db57600080fd5b506102956106ea366004611c16565b6111c2565b3480156106fb57600080fd5b5061042261dead81565b600061070f611189565b158061071f575061071f82611230565b92915050565b6011546001600160a01b0316600090815260036020526040812054819061074e90600c90611e75565b905080831061076957610762600284611e75565b9392505050565b610774816002611e97565b61077e8480611e97565b6107629190611e75565b60606001805461079790611ecd565b80601f01602080910402602001604051908101604052809291908181526020018280546107c390611ecd565b80156108105780601f106107e557610100808354040283529160200191610810565b820191906000526020600020905b8154815290600101906020018083116107f357829003601f168201915b5050505050905090565b6000610827338484611263565b50600192915050565b60008061083f6002603c611e97565b60065461084c9042611eb6565b6108569190611e75565b905060098110610864575060095b806007546108729190611e97565b60055461087f9190611e5d565b91505090565b60008161089457506000610762565b6000826108a18686611e97565b6108ab9190611e75565b905060006108b7610830565b9050806108c48388611e5d565b11156108d7576108d48682611eb6565b91505b50949350505050565b6001600160a01b03821660009081526003602052604081205481906109059084610fda565b9050600061091284610725565b905061091e8183611e5d565b95945050505050565b60006109348484846112c5565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561096557600080fd5b600019811415610979576001915050610762565b6109868533858403611263565b506001949350505050565b6001600160a01b038216600090815260036020526040812054610762906109b9908490611e5d565b83610fda565b3060009081526003602052604081205461071f908390610315611112565b6010546001600160a01b031633146109f457600080fd5b60005b8251811015610a59578160126000858481518110610a1757610a17611f39565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610a5281611f08565b90506109f7565b505050565b6001600160a01b03811660009081526012602052604081205460ff1680610af857506040516246335d60e41b81526001600160a01b0383166004820152309063046335d09060240160206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190611d3d565b155b15610b1957506001600160a01b031660009081526003602052604090205490565b60405163a1a7797160e01b81526001600160a01b0383166004820152309063a1a779719060240160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190611d73565b6001600160a01b03831660009081526003602052604090205461071f9190611e5d565b6010546001600160a01b03163314610bca57600080fd5b60118054911515600160a01b0260ff60a01b19909216919091179055565b6000610bf2611189565b1115610bfa57565b610c0261169c565b565b60606002805461079790611ecd565b6000610c1d611189565b610c4e576001600160a01b0382166000908152600360205260408082205430835291205461071f9190610315611112565b6008546001600160a01b0383166000908152600d60205260409020541415610c7857506000919050565b6001600160a01b038216600090815260036020526040902054600954600e5461071f929190610885565b60006108273384846112c5565b6010546001600160a01b03163314610cc657600080fd5b6011546001600160a01b031615610cdc57600080fd5b610ce4610bfa565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3357600080fd5b505afa158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190611b7f565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611b7f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610e4757600080fd5b505af1158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611b7f565b90506000610e8c60005490565b30600081815260036020526040808220849055519293509091600080516020611f8983398151915290610ec29085815260200190565b60405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526012909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610faf9190611dda565b5050601180546001600160a01b0319166001600160a01b03851617905550610fd6816116d9565b5050565b6000806064600054610fec9190611e75565b905080841061100857611000600a84611e75565b91505061071f565b61101381600a611e97565b61101d8585611e97565b6110279190611e75565b949350505050565b600061071f82600954600e54610885565b60008060646000546110529190611e75565b905080831061106657610762600584611e75565b610774816005611e97565b611079610be8565b61108281611230565b6110d35760405162461bcd60e51b815260206004820152601860248201527f63616e206e6f7420636c61696d20726577617264206e6f77000000000000000060448201526064015b60405180910390fd5b6110dc8161170a565b50565b6001600160a01b0381166000908152600f60205260408120544281116111085750600092915050565b6107624282611eb6565b30600090815260036020526040808220546011546001600160a01b031683529082205482546111419190611eb6565b61114b9190611eb6565b905090565b6010546001600160a01b0316331461116757600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061119a600762015180611e97565b600c546111a79190611e5d565b90508042106111b857600091505090565b61087f4282611eb6565b6000806111d0606484611e75565b905060006111dd84611040565b6001600160a01b0386166000908152600360205260408120549192509061120f90611209908790611e5d565b86610fda565b90508061121c8385611e5d565b6112269190611e5d565b9695505050505050565b6008546001600160a01b0382166000908152600d6020526040812054909111801561071f57506008546001141592915050565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6011546001600160a01b038481169116148015906112fc57506001600160a01b03831660009081526012602052604090205460ff16155b1561130a5761130a83611817565b6011546001600160a01b0383811691161480159061134157506001600160a01b03821660009081526012602052604090205460ff16155b1561134f5761134f82611817565b6001600160a01b0383166000908152600360205260409020548111156113b75760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064016110ca565b6001600160a01b0382166114015760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b60448201526064016110ca565b6011546001600160a01b03848116911614801561143757506001600160a01b03821660009081526012602052604090205460ff16155b156114c857601154600160a01b900460ff166114885760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b60448201526064016110ca565b61149383838361182f565b6001600160a01b0383166000908152600360205260409020549091506114c3906114be908390611e5d565b611845565b611663565b6011546001600160a01b0316158015906114ef57506011546001600160a01b038381169116145b801561151457506001600160a01b03831660009081526012602052604090205460ff16155b156115b157601154600160a01b900460ff166115655760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b60448201526064016110ca565b61156e8361188f565b6001600160a01b03831660009081526003602052604081205490546115a091859161159b90606490611e75565b6118e9565b6115aa838261191e565b9050611663565b6001600160a01b03831660009081526012602052604090205460ff161580156115f357506001600160a01b03821660009081526012602052604090205460ff16155b15611663576116018361188f565b6001600160a01b038316600090815260036020526040812054905461162e91859161159b90606490611e75565b611638838261192f565b6001600160a01b038316600090815260036020526040902054909150611663906114be908390611e5d565b61166e838383611940565b6001600160a01b03821661dead1415610a5957806000808282546116929190611eb6565b9091555050505050565b306000908152600360205260409020546009819055600a5542600c556116c0611112565b600e55600880546000906116d390611f08565b90915550565b426006556116e96103e882611e75565b6005556103e86116fa600183611e97565b6117049190611e75565b60075550565b6008546001600160a01b0382166000908152600d60209081526040808320939093556003905290812054600954600e54611745929190610885565b6001600160a01b038316600090815260036020526040902054600a549192509082111561177157505050565b3060009081526003602052604081208054849290611790908490611eb6565b9250508190555081600a60008282546117a99190611eb6565b909155506117b990508282611e5d565b6001600160a01b038416600090815260036020526040812091909155600b80548492906117e7908490611e5d565b90915550506040518281526001600160a01b038416903090600080516020611f89833981519152906020016112b8565b61181f610be8565b61182881611230565b6110d35750565b6000611027848361184086866111c2565b6119e5565b61184d610830565b8111156110dc5760405162461bcd60e51b815260206004820152601060248201526f1b585e081dd85b1b195d081b1a5b5a5d60821b60448201526064016110ca565b6001600160a01b0381166000908152600f60205260409020544210156110dc5760405162461bcd60e51b815260206004820152600f60248201526e19985cdd081cd95b1b081b1a5b5a5d608a1b60448201526064016110ca565b6118f38282611b26565b6118fd9042611e5d565b6001600160a01b039093166000908152600f60205260409020929092555050565b6000610762838361184086866108e0565b600061076283836118408686610991565b6001600160a01b0383166000908152600360205260409020548181101561196657600080fd5b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061199d908490611e5d565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611f89833981519152846040516119d791815260200190565b60405180910390a350505050565b6000806119f3600284611e75565b90506000611a018285611eb6565b9050611a0d8486611eb6565b6001600160a01b038716600090815260036020526040812080549297508692909190611a3a908490611eb6565b90915550503060009081526003602052604081208054849290611a5e908490611e5d565b909155505061dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054839290611aa1908490611e5d565b9250508190555080600080828254611ab99190611eb6565b909155505060405182815230906001600160a01b03881690600080516020611f898339815191529060200160405180910390a360405181815261dead906001600160a01b03881690600080516020611f898339815191529060200160405180910390a35092949350505050565b6000818310611b3957506201518061071f565b8161077e8462015180611e97565b8035611b5281611f65565b919050565b8035611b5281611f7a565b600060208284031215611b7457600080fd5b813561076281611f65565b600060208284031215611b9157600080fd5b815161076281611f65565b60008060408385031215611baf57600080fd5b8235611bba81611f65565b91506020830135611bca81611f65565b809150509250929050565b600080600060608486031215611bea57600080fd5b8335611bf581611f65565b92506020840135611c0581611f65565b929592945050506040919091013590565b60008060408385031215611c2957600080fd5b8235611c3481611f65565b946020939093013593505050565b60008060408385031215611c5557600080fd5b823567ffffffffffffffff80821115611c6d57600080fd5b818501915085601f830112611c8157600080fd5b8135602082821115611c9557611c95611f4f565b8160051b604051601f19603f83011681018181108682111715611cba57611cba611f4f565b604052838152828101945085830182870184018b1015611cd957600080fd5b600096505b84871015611d0357611cef81611b47565b865260019690960195948301948301611cde565b509650611d139050878201611b57565b9450505050509250929050565b600060208284031215611d3257600080fd5b813561076281611f7a565b600060208284031215611d4f57600080fd5b815161076281611f7a565b600060208284031215611d6c57600080fd5b5035919050565b600060208284031215611d8557600080fd5b5051919050565b60008060408385031215611d9f57600080fd5b50508035926020909101359150565b600080600060608486031215611dc357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611def57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611e3557858101830151858201604001528201611e19565b81811115611e47576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115611e7057611e70611f23565b500190565b600082611e9257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611eb157611eb1611f23565b500290565b600082821015611ec857611ec8611f23565b500390565b600181811c90821680611ee157607f821691505b60208210811415611f0257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f1c57611f1c611f23565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110dc57600080fd5b80151581146110dc57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202b078296eb8cac9d2c9807c96260d96f0c76c4e5aaa1e236a70cf3401054c86564736f6c63430008070033

Deployed Bytecode Sourcemap

28292:753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19600:147;;;;;;;;;;-1:-1:-1;19600:147:0;;;;;:::i;:::-;;:::i;:::-;;;6224:14:1;;6217:22;6199:41;;6187:2;6172:18;19600:147:0;;;;;;;;25618:344;;;;;;;;;;-1:-1:-1;25618:344:0;;;;;:::i;:::-;;:::i;:::-;;;9090:25:1;;;9078:2;9063:18;25618:344:0;8944:177:1;12595:85:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13866:193::-;;;;;;;;;;-1:-1:-1;13866:193:0;;;;;:::i;:::-;;:::i;16096:334::-;;;;;;;;;;;;;:::i;18401:573::-;;;;;;;;;;-1:-1:-1;18401:573:0;;;;;:::i;:::-;;:::i;21660:33::-;;;;;;;;;;-1:-1:-1;21660:33:0;;;;-1:-1:-1;;;21660:33:0;;;;;;12878:102;;;;;;;;;;-1:-1:-1;12933:7:0;12960:12;12878:102;;26267:242;;;;;;;;;;-1:-1:-1;26267:242:0;;;;;:::i;:::-;;:::i;14295:504::-;;;;;;;;;;-1:-1:-1;14295:504:0;;;;;:::i;:::-;;:::i;12785:85::-;;;;;;;;;;-1:-1:-1;12785:85:0;;12269:1;9268:36:1;;9256:2;9241:18;12785:85:0;9126:184:1;26517:189:0;;;;;;;;;;-1:-1:-1;26517:189:0;;;;;:::i;:::-;;:::i;16718:41::-;;;;;;;;;;;;;;;;18096:297;;;;;;;;;;-1:-1:-1;18096:297:0;;;;;:::i;:::-;;:::i;21625:28::-;;;;;;;;;;-1:-1:-1;21625:28:0;;;;-1:-1:-1;;;;;21625:28:0;;;;;;-1:-1:-1;;;;;5094:32:1;;;5076:51;;5064:2;5049:18;21625:28:0;4930:203:1;8204:47:0;;;;;;;;;;-1:-1:-1;8204:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;27800:238;;;;;;;;;;-1:-1:-1;27800:238:0;;;;;:::i;:::-;;:::i;:::-;;28734:308;;;;;;;;;;-1:-1:-1;28734:308:0;;;;;:::i;:::-;;:::i;28046:97::-;;;;;;;;;;-1:-1:-1;28046:97:0;;;;;:::i;:::-;;:::i;17219:125::-;;;;;;;;;;;;;:::i;12688:89::-;;;;;;;;;;;;;:::i;16807:42::-;;;;;;;;;;;;;;;;19033:559;;;;;;;;;;-1:-1:-1;19033:559:0;;;;;:::i;:::-;;:::i;13081:199::-;;;;;;;;;;-1:-1:-1;13081:199:0;;;;;:::i;:::-;;:::i;22191:942::-;;;;;;;;;;;;;:::i;16898:28::-;;;;;;;;;;;;;;;;25279:331;;;;;;;;;;-1:-1:-1;25279:331:0;;;;;:::i;:::-;;:::i;16655:29::-;;;;;;;;;;;;;;;;16578:46;;;;;;;;;;;;16623:1;16578:46;;17769:319;;;;;;;;;;-1:-1:-1;17769:319:0;;;;;:::i;:::-;;:::i;25006:265::-;;;;;;;;;;-1:-1:-1;25006:265:0;;;;;:::i;:::-;;:::i;20121:193::-;;;;;;;;;;-1:-1:-1;20121:193:0;;;;;:::i;:::-;;:::i;8982:275::-;;;;;;;;;;-1:-1:-1;8982:275:0;;;;;:::i;:::-;;:::i;13672:186::-;;;;;;;;;;-1:-1:-1;13672:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;13823:18:0;;;13791:7;13823:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13672:186;28552:174;;;;;;;;;;;;;:::i;9530:100::-;;;;;;;;;;-1:-1:-1;9530:100:0;;;;;:::i;:::-;;:::i;20954:295::-;;;;;;;;;;;;;:::i;25970:289::-;;;;;;;;;;-1:-1:-1;25970:289:0;;;;;:::i;:::-;;:::i;21750:90::-;;;;;;;;;;;;21798:42;21750:90;;19600:147;19664:4;19688:18;:16;:18::i;:::-;:23;;:51;;;19715:24;19731:7;19715:15;:24::i;:::-;19681:58;19600:147;-1:-1:-1;;19600:147:0:o;25618:344::-;25751:13;;-1:-1:-1;;;;;25751:13:0;25699:7;25741:24;;;:9;:24;;;;;;25699:7;;25740:31;;25769:2;;25740:31;:::i;:::-;25724:47;;25838:5;25828:6;:15;25824:38;;25852:10;25861:1;25852:6;:10;:::i;:::-;25845:17;25618:344;-1:-1:-1;;;25618:344:0:o;25824:38::-;25944:9;25948:5;25944:1;:9;:::i;:::-;25924:15;25933:6;;25924:15;:::i;:::-;25923:31;;;;:::i;12595:85::-;12634:13;12667:5;12660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12595:85;:::o;13866:193::-;13970:4;13992:37;14001:10;14013:7;14022:6;13992:8;:37::i;:::-;-1:-1:-1;14047:4:0;13866:193;;;;:::o;16096:334::-;16141:7;;16232:39;15444:1;16262:9;16232:39;:::i;:::-;16205:9;;16187:27;;:15;:27;:::i;:::-;16186:86;;;;:::i;:::-;16161:111;;15605:1;16287:14;:31;16283:67;;-1:-1:-1;15605:1:0;16283:67;16408:14;16385:20;;:37;;;;:::i;:::-;16368:14;;:54;;;;:::i;:::-;16361:61;;;16096:334;:::o;18401:573::-;18557:7;18619:22;18615:36;;-1:-1:-1;18650:1:0;18643:8;;18615:36;18685:14;18747:17;18703:27;18723:7;18703:17;:27;:::i;:::-;18702:62;;;;:::i;:::-;18685:79;;18809:17;18829:14;:12;:14::i;:::-;18809:34;-1:-1:-1;18809:34:0;18858:16;18868:6;18858:7;:16;:::i;:::-;:28;18854:62;;;18897:19;18909:7;18897:9;:19;:::i;:::-;18888:28;;18854:62;-1:-1:-1;18960:6:0;18401:573;-1:-1:-1;;;;18401:573:0:o;26267:242::-;-1:-1:-1;;;;;26413:18:0;;26368:7;26413:18;;;:9;:18;;;;;;26368:7;;26405:35;;26433:6;26405:7;:35::i;:::-;26393:47;;26451:9;26463:15;26471:6;26463:7;:15::i;:::-;26451:27;-1:-1:-1;26496:5:0;26451:27;26496:1;:5;:::i;:::-;26489:12;26267:242;-1:-1:-1;;;;;26267:242:0:o;14295:504::-;14429:4;14446:36;14456:6;14464:9;14475:6;14446:9;:36::i;:::-;-1:-1:-1;;;;;14522:19:0;;14495:24;14522:19;;;:11;:19;;;;;;;;14542:10;14522:31;;;;;;;;14572:26;;;;14564:35;;;;;;-1:-1:-1;;14614:16:0;:38;14610:55;;;14661:4;14654:11;;;;;14610:55;14701;14710:6;14718:10;14749:6;14730:16;:25;14701:8;:55::i;:::-;-1:-1:-1;14787:4:0;;14295:504;-1:-1:-1;;;;14295:504:0:o;26517:189::-;-1:-1:-1;;;;;26662:18:0;;26622:7;26662:18;;;:9;:18;;;;;;26654:44;;26662:27;;26683:6;;26662:27;:::i;:::-;26691:6;26654:7;:44::i;18096:297::-;18325:4;18197:7;18307:24;;;:9;:24;;;;;;18242:143;;18281:7;;18350:20;:18;:20::i;27800:238::-;9435:6;;-1:-1:-1;;;;;9435:6:0;9421:10;:20;9413:29;;;;;;27924:9:::1;27919:112;27943:8;:15;27939:1;:19;27919:112;;;28014:5;27980:18;:31;27999:8;28008:1;27999:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;27980:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;27980:31:0;:39;;-1:-1:-1;;27980:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27960:3:::1;::::0;::::1;:::i;:::-;;;27919:112;;;;27800:238:::0;;:::o;28734:308::-;-1:-1:-1;;;;;28867:27:0;;28838:7;28867:27;;;:18;:27;;;;;;;;;:60;;-1:-1:-1;28899:28:0;;-1:-1:-1;;;28899:28:0;;-1:-1:-1;;;;;5094:32:1;;28899:28:0;;;5076:51:1;28899:4:0;;:19;;5049:18:1;;28899:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28898:29;28867:60;28863:104;;;-1:-1:-1;;;;;;28949:18:0;;;;;:9;:18;;;;;;;28734:308::o;28863:104::-;29006:28;;-1:-1:-1;;;29006:28:0;;-1:-1:-1;;;;;5094:32:1;;29006:28:0;;;5076:51:1;29006:4:0;;:19;;5049:18:1;;29006:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28985:18:0;;;;;;:9;:18;;;;;;:49;;;;:::i;28046:97::-;9435:6;;-1:-1:-1;;;;;9435:6:0;9421:10;:20;9413:29;;;;;;28114:13:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;28114:21:0::1;-1:-1:-1::0;;;;28114:21:0;;::::1;::::0;;;::::1;::::0;;28046:97::o;17219:125::-;17295:1;17274:18;:16;:18::i;:::-;:22;17270:35;;;17219:125::o;17270:35::-;17315:21;:19;:21::i;:::-;17219:125::o;12688:89::-;12729:13;12762:7;12755:14;;;;;:::i;19033:559::-;19097:7;19121:18;:16;:18::i;:::-;19117:203;;-1:-1:-1;;;;;19205:18:0;;;;;;:9;:18;;;;;;;19260:4;19242:24;;;;;19166:154;;19205:18;19285:20;:18;:20::i;19117:203::-;19366:14;;-1:-1:-1;;;;;19335:27:0;;;;;;:18;:27;;;;;;:45;19331:59;;;-1:-1:-1;19389:1:0;;19033:559;-1:-1:-1;19033:559:0:o;19331:59::-;-1:-1:-1;;;;;19460:18:0;;;;;;:9;:18;;;;;;19497:26;;19542:27;;19421:163;;19460:18;19497:26;19421:20;:163::i;13081:199::-;13188:4;13210:40;13220:10;13232:9;13243:6;13210:9;:40::i;22191:942::-;9435:6;;-1:-1:-1;;;;;9435:6:0;9421:10;:20;9413:29;;;;;;22252:13:::1;::::0;-1:-1:-1;;;;;22252:13:0::1;:27:::0;22244:36:::1;;;::::0;::::1;;22291:23;:21;:23::i;:::-;22325:12;21575:42;-1:-1:-1::0;;;;;22358:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22340:56:0::1;;22419:4;21575:42;-1:-1:-1::0;;;;;22439:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22340:133;::::0;-1:-1:-1;;;;;;22340:133:0::1;::::0;;;;;;-1:-1:-1;;;;;5368:15:1;;;22340:133:0::1;::::0;::::1;5350:34:1::0;5420:15;;5400:18;;;5393:43;5285:18;;22340:133:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22325:148;;22484:24;22511:27;12933:7:::0;12960:12;;12878:102;22511:27:::1;22567:4;22549:24;::::0;;;:9:::1;:24;::::0;;;;;:43;;;22608:53;22484:54;;-1:-1:-1;22567:4:0;;-1:-1:-1;;;;;;;;;;;22608:53:0;::::1;::::0;22484:54;9090:25:1;;9078:2;9063:18;;8944:177;22608:53:0::1;;;;;;;;22692:4;22672:26;::::0;;;:11:::1;:26;::::0;;;;;;;21575:42:::1;22672:77:::0;;;;;;;;;-1:-1:-1;;22672:98:0;;-1:-1:-1;;;;;22781:24:0;::::1;::::0;;:18:::1;:24:::0;;;;;;:31;;-1:-1:-1;;22781:31:0::1;22808:4;22781:31;::::0;;22823:219;-1:-1:-1;;;22823:219:0;;;;::::1;5788:34:1::0;;;;5838:18;;;5831:34;;;5881:18;;;5874:34;;;5924:18;;;5917:34;;;;22991:10:0::1;5967:19:1::0;;;5960:44;23016:15:0::1;6020:19:1::0;;;6013:35;22823:32:0::1;::::0;22863:21:::1;::::0;5722:19:1;;22823:219:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23055:13:0::1;:20:::0;;-1:-1:-1;;;;;;23055:20:0::1;-1:-1:-1::0;;;;;23055:20:0;::::1;;::::0;;-1:-1:-1;23086:39:0::1;23108:16:::0;23086:21:::1;:39::i;:::-;22233:900;;22191:942::o:0;25279:331::-;25380:7;25405:18;25441:3;25426:12;;:18;;;;:::i;:::-;25405:39;;25473:10;25459;:24;25455:48;;25492:11;25501:2;25492:6;:11;:::i;:::-;25485:18;;;;;25455:48;25586:15;25591:10;25586:2;:15;:::i;:::-;25562:19;25571:10;25562:6;:19;:::i;:::-;25561:41;;;;:::i;:::-;25554:48;25279:331;-1:-1:-1;;;;25279:331:0:o;17769:319::-;17883:7;17928:152;17967:7;17993:26;;18038:27;;17928:20;:152::i;25006:265::-;25060:7;25080:18;25116:3;25101:12;;:18;;;;:::i;:::-;25080:39;;25144:10;25134:6;:20;25130:43;;25163:10;25172:1;25163:6;:10;:::i;25130:43::-;25248:14;25252:10;25248:1;:14;:::i;20121:193::-;20179:23;:21;:23::i;:::-;20221:24;20237:7;20221:15;:24::i;:::-;20213:61;;;;-1:-1:-1;;;20213:61:0;;8793:2:1;20213:61:0;;;8775:21:1;8832:2;8812:18;;;8805:30;8871:26;8851:18;;;8844:54;8915:18;;20213:61:0;;;;;;;;;20285:21;20298:7;20285:12;:21::i;:::-;20121:193;:::o;8982:275::-;-1:-1:-1;;;;;9126:21:0;;9079:7;9126:21;;;:12;:21;;;;;;9162:15;:30;-1:-1:-1;9158:44:0;;-1:-1:-1;9201:1:0;;8982:275;-1:-1:-1;;8982:275:0:o;9158:44::-;9220:29;9234:15;9220:11;:29;:::i;28552:174::-;28712:4;28612:7;28694:24;;;:9;:24;;;;;;;28677:13;;-1:-1:-1;;;;;28677:13:0;28667:24;;;;;;28652:12;;:39;;28667:24;28652:39;:::i;:::-;:66;;;;:::i;:::-;28632:86;;28552:174;:::o;9530:100::-;9435:6;;-1:-1:-1;;;;;9435:6:0;9421:10;:20;9413:29;;;;;;9605:6:::1;:17:::0;;-1:-1:-1;;;;;;9605:17:0::1;-1:-1:-1::0;;;;;9605:17:0;;;::::1;::::0;;;::::1;::::0;;9530:100::o;20954:295::-;21003:7;;21089:40;16623:1;21123:6;21089:40;:::i;:::-;21050:23;;:79;;;;:::i;:::-;21023:106;;21163:16;21144:15;:35;21140:49;;21188:1;21181:8;;;20954:295;:::o;21140:49::-;21207:34;21226:15;21207:16;:34;:::i;25970:289::-;26070:7;;26107:12;26116:3;26107:6;:12;:::i;:::-;26095:24;;26130:9;26142:15;26150:6;26142:7;:15::i;:::-;-1:-1:-1;;;;;26188:18:0;;26168:9;26188:18;;;:9;:18;;;;;;26130:27;;-1:-1:-1;26168:9:0;26180:44;;26188:27;;26209:6;;26188:27;:::i;:::-;26217:6;26180:7;:44::i;:::-;26168:56;-1:-1:-1;26168:56:0;26242:5;26246:1;26242;:5;:::i;:::-;:9;;;;:::i;:::-;26235:16;25970:289;-1:-1:-1;;;;;;25970:289:0:o;19755:177::-;19887:14;;-1:-1:-1;;;;;19857:27:0;;19820:4;19857:27;;;:18;:27;;;;;;19820:4;;-1:-1:-1;19857:67:0;;;;;19905:14;;19923:1;19905:19;;19837:87;19755:177;-1:-1:-1;;19755:177:0:o;14067:220::-;-1:-1:-1;;;;;14195:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14247:32;;9090:25:1;;;14247:32:0;;9063:18:1;14247:32:0;;;;;;;;14067:220;;;:::o;23141:1857::-;23303:13;;-1:-1:-1;;;;;23295:21:0;;;23303:13;;23295:21;;;;:50;;-1:-1:-1;;;;;;23321:24:0;;;;;;:18;:24;;;;;;;;23320:25;23295:50;23291:90;;;23360:21;23376:4;23360:15;:21::i;:::-;23402:13;;-1:-1:-1;;;;;23396:19:0;;;23402:13;;23396:19;;;;:46;;-1:-1:-1;;;;;;23420:22:0;;;;;;:18;:22;;;;;;;;23419:23;23396:46;23392:71;;;23444:19;23460:2;23444:15;:19::i;:::-;-1:-1:-1;;;;;23484:15:0;;;;;;:9;:15;;;;;;:25;-1:-1:-1;23484:25:0;23476:67;;;;-1:-1:-1;;;23476:67:0;;7055:2:1;23476:67:0;;;7037:21:1;7094:2;7074:18;;;7067:30;7133:31;7113:18;;;7106:59;7182:18;;23476:67:0;6853:353:1;23476:67:0;-1:-1:-1;;;;;23562:16:0;;23554:46;;;;-1:-1:-1;;;23554:46:0;;7758:2:1;23554:46:0;;;7740:21:1;7797:2;7777:18;;;7770:30;-1:-1:-1;;;7816:18:1;;;7809:47;7873:18;;23554:46:0;7556:341:1;23554:46:0;23641:13;;-1:-1:-1;;;;;23633:21:0;;;23641:13;;23633:21;:48;;;;-1:-1:-1;;;;;;23659:22:0;;;;;;:18;:22;;;;;;;;23658:23;23633:48;23629:1229;;;23706:13;;-1:-1:-1;;;23706:13:0;;;;23698:42;;;;-1:-1:-1;;;23698:42:0;;7413:2:1;23698:42:0;;;7395:21:1;7452:2;7432:18;;;7425:30;-1:-1:-1;;;7471:18:1;;;7464:46;7527:18;;23698:42:0;7211:340:1;23698:42:0;23790:28;23801:4;23807:2;23811:6;23790:10;:28::i;:::-;-1:-1:-1;;;;;23881:13:0;;;;;;:9;:13;;;;;;23781:37;;-1:-1:-1;23866:38:0;;23881:22;;23781:37;;23881:22;:::i;:::-;23866:14;:38::i;:::-;23629:1229;;;23966:13;;-1:-1:-1;;;;;23966:13:0;:27;;;;:63;;-1:-1:-1;24016:13:0;;-1:-1:-1;;;;;24010:19:0;;;24016:13;;24010:19;23966:63;:105;;;;-1:-1:-1;;;;;;24047:24:0;;;;;;:18;:24;;;;;;;;24046:25;23966:105;23948:910;;;24106:13;;-1:-1:-1;;;24106:13:0;;;;24098:42;;;;-1:-1:-1;;;24098:42:0;;7413:2:1;24098:42:0;;;7395:21:1;7452:2;7432:18;;;7425:30;-1:-1:-1;;;7471:18:1;;;7464:46;7527:18;;24098:42:0;7211:340:1;24098:42:0;24186:22;24203:4;24186:16;:22::i;:::-;-1:-1:-1;;;;;24247:15:0;;;;;;:9;:15;;;;;;24264:12;;24223:60;;24241:4;;24264:18;;24279:3;;24264:18;:::i;:::-;24223:17;:60::i;:::-;24327:25;24339:4;24345:6;24327:11;:25::i;:::-;24318:34;;23948:910;;;-1:-1:-1;;;;;24442:24:0;;;;;;:18;:24;;;;;;;;24441:25;:52;;;;-1:-1:-1;;;;;;24471:22:0;;;;;;:18;:22;;;;;;;;24470:23;24441:52;24437:410;;;24549:22;24566:4;24549:16;:22::i;:::-;-1:-1:-1;;;;;24614:15:0;;;;;;:9;:15;;;;;;24631:12;;24590:60;;24608:4;;24631:18;;24646:3;;24631:18;:::i;24590:60::-;24708:29;24724:4;24730:6;24708:15;:29::i;:::-;-1:-1:-1;;;;;24808:13:0;;;;;;:9;:13;;;;;;24699:38;;-1:-1:-1;24793:38:0;;24808:22;;24699:38;;24808:22;:::i;24793:38::-;24891:33;24907:4;24913:2;24917:6;24891:15;:33::i;:::-;-1:-1:-1;;;;;24939:27:0;;21798:42;24939:27;24935:55;;;24984:6;24968:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;23141:1857:0;;;:::o;17442:319::-;17540:4;17522:24;;;;:9;:24;;;;;;17493:26;:53;;;17557:27;:56;17650:15;17624:23;:41;17706:20;:18;:20::i;:::-;17676:27;:50;17739:14;17737:16;;17739:14;;17737:16;;;:::i;:::-;;;;-1:-1:-1;17442:319:0:o;15712:234::-;15796:15;15784:9;:27;15839:18;15853:4;15839:11;:18;:::i;:::-;15822:14;:35;15934:4;15892:38;15524:1;15892:11;:38;:::i;:::-;15891:47;;;;:::i;:::-;15868:20;:70;-1:-1:-1;15712:234:0:o;20322:624::-;20410:14;;-1:-1:-1;;;;;20380:27:0;;;;;;:18;:27;;;;;;;;:44;;;;20487:9;:18;;;;;;20520:26;;20561:27;;20452:147;;20487:18;20520:26;20452:20;:147::i;:::-;-1:-1:-1;;;;;20628:18:0;;20610:15;20628:18;;;:9;:18;;;;;;20672:27;;20435:164;;-1:-1:-1;20628:18:0;20663:36;;20659:49;;;20701:7;;20322:624;:::o;20659:49::-;20736:4;20718:24;;;;:9;:24;;;;;:34;;20746:6;;20718:24;:34;;20746:6;;20718:34;:::i;:::-;;;;;;;;20794:6;20763:27;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;20832:16:0;;-1:-1:-1;20842:6:0;20832:7;:16;:::i;:::-;-1:-1:-1;;;;;20811:18:0;;;;;;:9;:18;;;;;:37;;;;20859:13;:23;;20876:6;;20811:18;20859:23;;20876:6;;20859:23;:::i;:::-;;;;-1:-1:-1;;20898:40:0;;9090:25:1;;;-1:-1:-1;;;;;20898:40:0;;;20915:4;;-1:-1:-1;;;;;;;;;;;20898:40:0;9078:2:1;9063:18;20898:40:0;8944:177:1;19940:173:0;20002:23;:21;:23::i;:::-;20041:24;20057:7;20041:15;:24::i;:::-;20036:38;;19940:173;:::o;26714:185::-;26811:7;26843:48;26855:4;26861:6;26869:21;26879:2;26883:6;26869:9;:21::i;:::-;26843:11;:48::i;15954:134::-;16045:14;:12;:14::i;:::-;16031:10;:28;;16023:57;;;;-1:-1:-1;;;16023:57:0;;8104:2:1;16023:57:0;;;8086:21:1;8143:2;8123:18;;;8116:30;-1:-1:-1;;;8162:18:1;;;8155:46;8218:18;;16023:57:0;7902:340:1;8548:144:0;-1:-1:-1;;;;;8643:21:0;;;;;;:12;:21;;;;;;8624:15;:40;;8616:68;;;;-1:-1:-1;;;8616:68:0;;8449:2:1;8616:68:0;;;8431:21:1;8488:2;8468:18;;;8461:30;-1:-1:-1;;;8507:18:1;;;8500:45;8562:18;;8616:68:0;8247:339:1;8293:247:0;8496:36;8512:7;8521:10;8496:15;:36::i;:::-;8465:67;;:15;:67;:::i;:::-;-1:-1:-1;;;;;8428:21:0;;;;;;;:12;:21;;;;;:104;;;;-1:-1:-1;;8293:247:0:o;26907:177::-;26993:7;27025:51;27037:4;27043:6;27051:24;27062:4;27068:6;27051:10;:24::i;27092:185::-;27182:7;27214:55;27226:4;27232:6;27240:28;27255:4;27261:6;27240:14;:28::i;13288:376::-;-1:-1:-1;;;;;13435:15:0;;13411:21;13435:15;;;:9;:15;;;;;;13469:23;;;;13461:32;;;;;;-1:-1:-1;;;;;13529:15:0;;;;;;;:9;:15;;;;;;13547:22;;;13529:40;;13591:13;;;;;;;;:23;;13563:6;;13529:15;13591:23;;13563:6;;13591:23;:::i;:::-;;;;;;;;13645:2;-1:-1:-1;;;;;13630:26:0;13639:4;-1:-1:-1;;;;;13630:26:0;-1:-1:-1;;;;;;;;;;;13649:6:0;13630:26;;;;9090:25:1;;9078:2;9063:18;;8944:177;13630:26:0;;;;;;;;13400:264;13288:376;;;:::o;27285:507::-;27400:7;;27437;27443:1;27437:3;:7;:::i;:::-;27420:24;-1:-1:-1;27455:12:0;27470;27420:24;27470:3;:12;:::i;:::-;27455:27;-1:-1:-1;27493:13:0;27503:3;27493:13;;:::i;:::-;-1:-1:-1;;;;;27517:15:0;;;;;;:9;:15;;;;;:22;;27493:13;;-1:-1:-1;27536:3:0;;27517:15;;;:22;;27536:3;;27517:22;:::i;:::-;;;;-1:-1:-1;;27568:4:0;27550:24;;;;:9;:24;;;;;:34;;27578:6;;27550:24;:34;;27578:6;;27550:34;:::i;:::-;;;;-1:-1:-1;;21798:42:0;27595:23;;;;:9;:23;;;:31;;27622:4;;27595:23;:31;;27622:4;;27595:31;:::i;:::-;;;;;;;;27653:4;27637:12;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;27673:37:0;;9090:25:1;;;27696:4:0;;-1:-1:-1;;;;;27673:37:0;;;-1:-1:-1;;;;;;;;;;;27673:37:0;9078:2:1;9063:18;27673:37:0;;;;;;;27726:34;;9090:25:1;;;21798:42:0;;-1:-1:-1;;;;;27726:34:0;;;-1:-1:-1;;;;;;;;;;;27726:34:0;9078:2:1;9063:18;27726:34:0;;;;;;;-1:-1:-1;27778:6:0;;27285:507;-1:-1:-1;;;;27285:507:0:o;8700:274::-;8811:7;8851:10;8840:7;:21;8836:42;;-1:-1:-1;8870:8:0;8863:15;;8836:42;8956:10;8934:18;8945:7;8934:8;:18;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:315::-;1716:6;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;1953:2;1938:18;;;;1925:32;;-1:-1:-1;;;1648:315:1:o;1968:1202::-;2058:6;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2175:9;2162:23;2204:18;2245:2;2237:6;2234:14;2231:34;;;2261:1;2258;2251:12;2231:34;2299:6;2288:9;2284:22;2274:32;;2344:7;2337:4;2333:2;2329:13;2325:27;2315:55;;2366:1;2363;2356:12;2315:55;2402:2;2389:16;2424:4;2447:2;2443;2440:10;2437:36;;;2453:18;;:::i;:::-;2499:2;2496:1;2492:10;2531:2;2525:9;2594:2;2590:7;2585:2;2581;2577:11;2573:25;2565:6;2561:38;2649:6;2637:10;2634:22;2629:2;2617:10;2614:18;2611:46;2608:72;;;2660:18;;:::i;:::-;2696:2;2689:22;2746:18;;;2780:15;;;;-1:-1:-1;2815:11:1;;;2845;;;2841:20;;2838:33;-1:-1:-1;2835:53:1;;;2884:1;2881;2874:12;2835:53;2906:1;2897:10;;2916:169;2930:2;2927:1;2924:9;2916:169;;;2987:23;3006:3;2987:23;:::i;:::-;2975:36;;2948:1;2941:9;;;;;3031:12;;;;3063;;2916:169;;;-1:-1:-1;3104:6:1;-1:-1:-1;3129:35:1;;-1:-1:-1;3145:18:1;;;3129:35;:::i;:::-;3119:45;;;;;;1968:1202;;;;;:::o;3175:241::-;3231:6;3284:2;3272:9;3263:7;3259:23;3255:32;3252:52;;;3300:1;3297;3290:12;3252:52;3339:9;3326:23;3358:28;3380:5;3358:28;:::i;3421:245::-;3488:6;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;3589:9;3583:16;3608:28;3630:5;3608:28;:::i;3671:180::-;3730:6;3783:2;3771:9;3762:7;3758:23;3754:32;3751:52;;;3799:1;3796;3789:12;3751:52;-1:-1:-1;3822:23:1;;3671:180;-1:-1:-1;3671:180:1:o;3856:184::-;3926:6;3979:2;3967:9;3958:7;3954:23;3950:32;3947:52;;;3995:1;3992;3985:12;3947:52;-1:-1:-1;4018:16:1;;3856:184;-1:-1:-1;3856:184:1:o;4045:248::-;4113:6;4121;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;-1:-1:-1;;4213:23:1;;;4283:2;4268:18;;;4255:32;;-1:-1:-1;4045:248:1:o;4298:316::-;4375:6;4383;4391;4444:2;4432:9;4423:7;4419:23;4415:32;4412:52;;;4460:1;4457;4450:12;4412:52;-1:-1:-1;;4483:23:1;;;4553:2;4538:18;;4525:32;;-1:-1:-1;4604:2:1;4589:18;;;4576:32;;4298:316;-1:-1:-1;4298:316:1:o;4619:306::-;4707:6;4715;4723;4776:2;4764:9;4755:7;4751:23;4747:32;4744:52;;;4792:1;4789;4782:12;4744:52;4821:9;4815:16;4805:26;;4871:2;4860:9;4856:18;4850:25;4840:35;;4915:2;4904:9;4900:18;4894:25;4884:35;;4619:306;;;;;:::o;6251:597::-;6363:4;6392:2;6421;6410:9;6403:21;6453:6;6447:13;6496:6;6491:2;6480:9;6476:18;6469:34;6521:1;6531:140;6545:6;6542:1;6539:13;6531:140;;;6640:14;;;6636:23;;6630:30;6606:17;;;6625:2;6602:26;6595:66;6560:10;;6531:140;;;6689:6;6686:1;6683:13;6680:91;;;6759:1;6754:2;6745:6;6734:9;6730:22;6726:31;6719:42;6680:91;-1:-1:-1;6832:2:1;6811:15;-1:-1:-1;;6807:29:1;6792:45;;;;6839:2;6788:54;;6251:597;-1:-1:-1;;;6251:597:1:o;9315:128::-;9355:3;9386:1;9382:6;9379:1;9376:13;9373:39;;;9392:18;;:::i;:::-;-1:-1:-1;9428:9:1;;9315:128::o;9448:217::-;9488:1;9514;9504:132;;9558:10;9553:3;9549:20;9546:1;9539:31;9593:4;9590:1;9583:15;9621:4;9618:1;9611:15;9504:132;-1:-1:-1;9650:9:1;;9448:217::o;9670:168::-;9710:7;9776:1;9772;9768:6;9764:14;9761:1;9758:21;9753:1;9746:9;9739:17;9735:45;9732:71;;;9783:18;;:::i;:::-;-1:-1:-1;9823:9:1;;9670:168::o;9843:125::-;9883:4;9911:1;9908;9905:8;9902:34;;;9916:18;;:::i;:::-;-1:-1:-1;9953:9:1;;9843:125::o;9973:380::-;10052:1;10048:12;;;;10095;;;10116:61;;10170:4;10162:6;10158:17;10148:27;;10116:61;10223:2;10215:6;10212:14;10192:18;10189:38;10186:161;;;10269:10;10264:3;10260:20;10257:1;10250:31;10304:4;10301:1;10294:15;10332:4;10329:1;10322:15;10186:161;;9973:380;;;:::o;10358:135::-;10397:3;-1:-1:-1;;10418:17:1;;10415:43;;;10438:18;;:::i;:::-;-1:-1:-1;10485:1:1;10474:13;;10358:135::o;10498:127::-;10559:10;10554:3;10550:20;10547:1;10540:31;10590:4;10587:1;10580:15;10614:4;10611:1;10604:15;10630:127;10691:10;10686:3;10682:20;10679:1;10672:31;10722:4;10719:1;10712:15;10746:4;10743:1;10736:15;10762:127;10823:10;10818:3;10814:20;10811:1;10804:31;10854:4;10851:1;10844:15;10878:4;10875:1;10868:15;10894:131;-1:-1:-1;;;;;10969:31:1;;10959:42;;10949:70;;11015:1;11012;11005:12;11030:118;11116:5;11109:13;11102:21;11095:5;11092:32;11082:60;;11138:1;11135;11128:12

Swarm Source

ipfs://2b078296eb8cac9d2c9807c96260d96f0c76c4e5aaa1e236a70cf3401054c865

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.