ETH Price: $2,297.94 (+0.43%)

Contract

0x785f2fB6072Fb74a488496D3561B3Cd57Db09661
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Approve171616332023-04-30 21:48:11496 days ago1682891291IN
0x785f2fB6...57Db09661
0 ETH0.0012848548.95617692
Approve170647312023-04-17 6:28:47510 days ago1681712927IN
0x785f2fB6...57Db09661
0 ETH0.0006637227.37573771
Approve167907472023-03-09 12:47:35548 days ago1678366055IN
0x785f2fB6...57Db09661
0 ETH0.0005446722.46545159
Approve159563012022-11-12 20:23:11665 days ago1668284591IN
0x785f2fB6...57Db09661
0 ETH0.000295912.20490261
Approve159067712022-11-05 22:23:11672 days ago1667686991IN
0x785f2fB6...57Db09661
0 ETH0.0002607410.75441419
Approve156566472022-10-01 23:43:11707 days ago1664667791IN
0x785f2fB6...57Db09661
0 ETH0.000232645
Approve156393752022-09-29 13:43:35709 days ago1664459015IN
0x785f2fB6...57Db09661
0 ETH0.0006979315
Approve156278982022-09-27 23:16:11711 days ago1664320571IN
0x785f2fB6...57Db09661
0 ETH0.0004981410.70609667
Approve156049642022-09-24 18:18:35714 days ago1664043515IN
0x785f2fB6...57Db09661
0 ETH0.00034837.48568931
Approve155974972022-09-23 17:20:35715 days ago1663953635IN
0x785f2fB6...57Db09661
0 ETH0.000395058.49061713
Approve155946942022-09-23 7:56:11715 days ago1663919771IN
0x785f2fB6...57Db09661
0 ETH0.000351137.54654665
Approve155923262022-09-23 0:00:23716 days ago1663891223IN
0x785f2fB6...57Db09661
0 ETH0.000255125.48319012
Approve155914962022-09-22 21:13:47716 days ago1663881227IN
0x785f2fB6...57Db09661
0 ETH0.000425249.1393186
Approve155911112022-09-22 19:56:35716 days ago1663876595IN
0x785f2fB6...57Db09661
0 ETH0.0004943510.62456326
Approve155893422022-09-22 14:01:11716 days ago1663855271IN
0x785f2fB6...57Db09661
0 ETH0.0007045115.24758964
Approve155892672022-09-22 13:46:11716 days ago1663854371IN
0x785f2fB6...57Db09661
0 ETH0.0006012712.92255206
Transfer155887402022-09-22 11:59:59716 days ago1663847999IN
0x785f2fB6...57Db09661
0 ETH0.000431935.40939786
Approve155878162022-09-22 8:54:11716 days ago1663836851IN
0x785f2fB6...57Db09661
0 ETH0.0004652910
Approve155877302022-09-22 8:36:47716 days ago1663835807IN
0x785f2fB6...57Db09661
0 ETH0.00020774.46389099
Approve155865622022-09-22 4:41:35717 days ago1663821695IN
0x785f2fB6...57Db09661
0 ETH0.00030056.45848358
Approve155840912022-09-21 20:21:47717 days ago1663791707IN
0x785f2fB6...57Db09661
0 ETH0.0008307917.85533722
Approve155837872022-09-21 19:20:35717 days ago1663788035IN
0x785f2fB6...57Db09661
0 ETH0.0013069728.08947619
Approve155835882022-09-21 18:40:23717 days ago1663785623IN
0x785f2fB6...57Db09661
0 ETH0.0015537733.39375452
Approve155832522022-09-21 17:32:35717 days ago1663781555IN
0x785f2fB6...57Db09661
0 ETH0.0005032510.81594726
Approve155828812022-09-21 16:17:35717 days ago1663777055IN
0x785f2fB6...57Db09661
0 ETH0.0019072540.99077667
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
156566532022-10-01 23:44:23707 days ago1664667863
0x785f2fB6...57Db09661
0.00206507 ETH
156566532022-10-01 23:44:23707 days ago1664667863
0x785f2fB6...57Db09661
0.00206507 ETH
156229192022-09-27 6:30:47712 days ago1664260247
0x785f2fB6...57Db09661
0.0031898 ETH
156229192022-09-27 6:30:47712 days ago1664260247
0x785f2fB6...57Db09661
0.0031898 ETH
156216632022-09-27 2:18:47712 days ago1664245127
0x785f2fB6...57Db09661
0.0031241 ETH
156216632022-09-27 2:18:47712 days ago1664245127
0x785f2fB6...57Db09661
0.0031241 ETH
155991242022-09-23 22:46:35715 days ago1663973195
0x785f2fB6...57Db09661
0.0037541 ETH
155991242022-09-23 22:46:35715 days ago1663973195
0x785f2fB6...57Db09661
0.0037541 ETH
155911552022-09-22 20:05:23716 days ago1663877123
0x785f2fB6...57Db09661
0.00385902 ETH
155911552022-09-22 20:05:23716 days ago1663877123
0x785f2fB6...57Db09661
0.00385902 ETH
155892742022-09-22 13:47:35716 days ago1663854455
0x785f2fB6...57Db09661
0.00360888 ETH
155892742022-09-22 13:47:35716 days ago1663854455
0x785f2fB6...57Db09661
0.00360888 ETH
155877342022-09-22 8:37:35716 days ago1663835855
0x785f2fB6...57Db09661
0.00479249 ETH
155877342022-09-22 8:37:35716 days ago1663835855
0x785f2fB6...57Db09661
0.00479249 ETH
155873632022-09-22 7:22:59717 days ago1663831379
0x785f2fB6...57Db09661
0.01753915 ETH
155873632022-09-22 7:22:59717 days ago1663831379
0x785f2fB6...57Db09661
0.01753915 ETH
155865762022-09-22 4:44:23717 days ago1663821863
0x785f2fB6...57Db09661
0.0034146 ETH
155865762022-09-22 4:44:23717 days ago1663821863
0x785f2fB6...57Db09661
0.0034146 ETH
155849302022-09-21 23:10:47717 days ago1663801847
0x785f2fB6...57Db09661
0.00495553 ETH
155849302022-09-21 23:10:47717 days ago1663801847
0x785f2fB6...57Db09661
0.00495553 ETH
155846802022-09-21 22:20:35717 days ago1663798835
0x785f2fB6...57Db09661
0.00341526 ETH
155846802022-09-21 22:20:35717 days ago1663798835
0x785f2fB6...57Db09661
0.00341526 ETH
155842662022-09-21 20:57:23717 days ago1663793843
0x785f2fB6...57Db09661
0.00347572 ETH
155842662022-09-21 20:57:23717 days ago1663793843
0x785f2fB6...57Db09661
0.00347572 ETH
155841022022-09-21 20:24:11717 days ago1663791851
0x785f2fB6...57Db09661
0.00492105 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JOJO2

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-20
*/

/**

Proof of JOJO | JOJO2.0 

Website: https://www.proofofjojo.com/

Telegram: https://t.me/proofofjojo

*/

// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.16;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(msg.sender == owner, "Owner-restricted function");
         _;
    }    
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract JOJO2  is ERC20, Ownable {

    string constant _name = "Proof of JOJO";
    string constant _symbol = "$JOJO2.0";
    uint8 constant _decimals = 9;

    uint256 constant _totalSupply = 10_000 * (10 ** _decimals);

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

    bool public tradingOpened = false;

    mapping (address => bool) markedSniper;
    bool antiBotActive = false;
    uint256 finalDeadBlock;    
    
    mapping (address => uint256) lastTxBlock;
    uint256 constant txCooldownBlocks = 3;
    
    uint256 public maxTxAmount = 2 * _totalSupply / 100; // 2%
    uint256 public maxWalletAmount = 2 * _totalSupply / 100; // 2%

    mapping (address => bool) isFeeExempt;

    uint256 public finalFeeTimestamp;
    uint256 constant public finalFeePercent = 5; // 
    uint256 constant public startingFeePercent = 12; //
    uint256 constant public feeDenominator = 100;

    address payable immutable public projectFeeReceiver = payable(msg.sender);

    address constant routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;    
      
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = address(0x0);

    IDEXRouter public immutable router;
    address immutable public pair;

    uint256 immutable public swapThreshold = _totalSupply / 1_000; // 0.1%
    bool inSwap;

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

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

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

    receive() external payable { }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "Insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap || sender == projectFeeReceiver || recipient == projectFeeReceiver){
            return _basicTransfer(sender, recipient, amount);
        }
        else if(amount == 0){
            return _basicTransfer(sender, recipient, 0);
        }

        // Pre-trader check
        require(tradingOpened, "Trading disabled");

        // Sniper check
        require(!markedSniper[sender], "Snipers can't trade");     

        // Max tx/wallet check
        if (recipient != DEAD && recipient != ZERO) {            
            require(amount <= maxTxAmount, "Excessive transfer amount");
            require(recipient == pair || _balances[recipient] + amount <= maxWalletAmount, 
                "Excessive receiver token holdings");
        }           
        
        // Trade cooldown check
        require(block.number - lastTxBlock[tx.origin] >= txCooldownBlocks, "Transactions too frequent"); 
        lastTxBlock[tx.origin] = block.number;

        if((shouldMarkSniper(sender, recipient))){
              markedSniper[recipient] = true;
        }                        
        else if(shouldSwapBack(sender)){
            swapBack();             
        }
        
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldMarkSniper(address sender, address recipient) internal view returns (bool) {
        return antiBotActive && sender == pair && block.number <= finalDeadBlock && 
         recipient != address(this) && recipient != routerAdress && recipient != pair;
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !(isFeeExempt[sender] || isFeeExempt[recipient]);
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        if(block.timestamp < finalFeeTimestamp){
            feeAmount = amount * startingFeePercent / feeDenominator;
        }else{
            feeAmount = amount * finalFeePercent / feeDenominator;
        }                       
        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);        
        return amount - feeAmount;
    }

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

    function swapBack() internal swapping {
        uint256 tokenBalance = _balances[address(this)];
        uint256 tokensToSwap = tokenBalance >= maxTxAmount ? maxTxAmount : tokenBalance;

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

        uint256 balanceBefore = address(this).balance;

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

        unchecked{
            uint256 amountETH = address(this).balance - balanceBefore;            
            (bool success,)  = projectFeeReceiver.call{value: amountETH, gas: 30000}(""); success;
        }
    }

    function openTrading(uint256 numdeadBlocks, uint256 finalFeeDelayMinutes, bool _antiBotActive) external onlyOwner {
        require(!tradingOpened, "Trading already enabled");
        tradingOpened = true;
        antiBotActive = _antiBotActive;
        finalFeeTimestamp = block.timestamp + finalFeeDelayMinutes * 60;
        finalDeadBlock = block.number + numdeadBlocks;
    }
    
    function setMaxAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= _totalSupply / 100, "MaxWalletAmount needs to be higher than 1% of total supply");
        maxWalletAmount = _maxWalletAmount;
    }
    
    function setMaxTx(uint256 _maxTxAmount) external onlyOwner {
        require(_maxTxAmount >= _totalSupply / 100, "MaxTxAmount needs to be higher than 1% of total supply");
        maxTxAmount = _maxTxAmount;
    }

    function removeLimits() external onlyOwner {
        maxWalletAmount = type(uint256).max;
        maxTxAmount = type(uint256).max;
    }

    function excludeFromFee(address account, bool excluded) external onlyOwner {
        isFeeExempt[account] = excluded;
    }  

    function excludeMultipleFromFee(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isFeeExempt[accounts[i]] = excluded;
        }
    }

    function markSniper(address account) external onlyOwner {
        require(account != routerAdress && account != address(this) && account != pair, "Invalid sniper");
        markedSniper[account] = true;
    }
    
    function unmarkSniper(address account) external onlyOwner {       
        markedSniper[account] = false;
    }

    function clearStuckTokenBalance() external {
        require(msg.sender == projectFeeReceiver, "Deployer-restricted function");
        swapBack();                    
    }

    function clearStuckETHBalance() external {
        projectFeeReceiver.transfer(address(this).balance);
    }

    
}

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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalFeeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"markSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"numdeadBlocks","type":"uint256"},{"internalType":"uint256","name":"finalFeeDelayMinutes","type":"uint256"},{"internalType":"bool","name":"_antiBotActive","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpened","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":"account","type":"address"}],"name":"unmarkSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101006040526003805460ff1990811690915560058054909116905560646200002b6009600a6200041d565b620000399061271062000435565b6200004690600262000435565b62000052919062000457565b6008556064620000656009600a6200041d565b620000739061271062000435565b6200008090600262000435565b6200008c919062000457565b6009908155336080526103e890620000a690600a6200041d565b620000b49061271062000435565b620000c0919062000457565b60e052348015620000d057600080fd5b50600080546001600160a01b03191633179055737a250d5630b4cf539739df2c5dacb4c659f2488d60a08190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f91906200047a565b6001600160a01b031663c9c6539660a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d491906200047a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024791906200047a565b6001600160a01b0390811660c05230600090815260026020908152604080832060a05185168452909152812060001990555416620002886009600a6200041d565b620002969061271062000435565b6001600160a01b038216600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002e26009600a6200041d565b620002f09061271062000435565b60405190815260200160405180910390a350620004a5565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200035f57816000190482111562000343576200034362000308565b808516156200035157918102915b93841c939080029062000323565b509250929050565b600082620003785750600162000417565b81620003875750600062000417565b8160018114620003a05760028114620003ab57620003cb565b600191505062000417565b60ff841115620003bf57620003bf62000308565b50506001821b62000417565b5060208310610133831016604e8410600b8410161715620003f0575081810a62000417565b620003fc83836200031e565b806000190482111562000413576200041362000308565b0290505b92915050565b60006200042e60ff84168362000367565b9392505050565b600081600019048311821515161562000452576200045262000308565b500290565b6000826200047557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200048d57600080fd5b81516001600160a01b03811681146200042e57600080fd5b60805160a05160c05160e051611d0a6200053a60003960008181610210015261170e01526000818161050a0152818161078f01528181610ff4015281816115f80152818161168101526116c101526000818161065a0152818161133501526113ef0152600081816104d601528181610c4201528181610db101528181610e3901528181610e7501526114740152611d0a6000f3fe6080604052600436106101f25760003560e01c8063893d20e81161010d578063bc337182116100a0578063df8408fe1161006f578063df8408fe146105f3578063eeaad41914610613578063f7a1642e14610628578063f887ea4014610648578063fd35780c1461067c57600080fd5b8063bc33718214610562578063ca1b1cff14610582578063db5c801014610598578063dd62ed3e146105ad57600080fd5b806399b589cb116100dc57806399b589cb146104c4578063a8aa1b31146104f8578063a9059cbb1461052c578063aa4bde281461054c57600080fd5b8063893d20e81461042b5780638c0b5e221461045d5780638f8deb041461047357806395d89b411461049357600080fd5b80634a092b861161018557806370a082311161015457806370a08231146103b1578063715018a6146103e7578063751039fc146103fc5780637daa930a1461041157600080fd5b80634a092b861461033c5780634fe47f701461035c578063537198b31461037c578063571ac8b01461039157600080fd5b806318160ddd116101c157806318160ddd146102c95780631e1cf1c0146102de57806323b872dd14610300578063313ce5671461032057600080fd5b80630445b667146101fe57806306fdde0314610245578063095ea7b314610284578063180b0d7e146102b457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561025157600080fd5b5060408051808201909152600d81526c50726f6f66206f66204a4f4a4f60981b60208201525b60405161023c9190611837565b34801561029057600080fd5b506102a461029f36600461189a565b610691565b604051901515815260200161023c565b3480156102c057600080fd5b50610232606481565b3480156102d557600080fd5b506102326106fe565b3480156102ea57600080fd5b506102fe6102f93660046118c6565b61071d565b005b34801561030c57600080fd5b506102a461031b3660046118e3565b610825565b34801561032c57600080fd5b506040516009815260200161023c565b34801561034857600080fd5b506102fe6103573660046118c6565b6108ff565b34801561036857600080fd5b506102fe610377366004611924565b61094a565b34801561038857600080fd5b50610232600c81565b34801561039d57600080fd5b506102a46103ac3660046118c6565b610a12565b3480156103bd57600080fd5b506102326103cc3660046118c6565b6001600160a01b031660009081526001602052604090205490565b3480156103f357600080fd5b506102fe610a20565b34801561040857600080fd5b506102fe610a8f565b34801561041d57600080fd5b506003546102a49060ff1681565b34801561043757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023c565b34801561046957600080fd5b5061023260085481565b34801561047f57600080fd5b506102fe61048e366004611952565b610ac6565b34801561049f57600080fd5b506040805180820190915260088152670244a4f4a4f322e360c41b6020820152610277565b3480156104d057600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561050457600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561053857600080fd5b506102a461054736600461189a565b610b67565b34801561055857600080fd5b5061023260095481565b34801561056e57600080fd5b506102fe61057d366004611924565b610b74565b34801561058e57600080fd5b50610232600b5481565b3480156105a457600080fd5b506102fe610c35565b3480156105b957600080fd5b506102326105c83660046119d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ff57600080fd5b506102fe61060e366004611a0f565b610c8d565b34801561061f57600080fd5b50610232600581565b34801561063457600080fd5b506102fe610643366004611a44565b610ce2565b34801561065457600080fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b34801561068857600080fd5b506102fe610da6565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106ec9086815260200190565b60405180910390a35060015b92915050565b600061070c6009600a611b6a565b61071890612710611b79565b905090565b6000546001600160a01b031633146107505760405162461bcd60e51b815260040161074790611b98565b60405180910390fd5b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061078657506001600160a01b0381163014155b80156107c457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b6108015760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b734b832b960911b6044820152606401610747565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108ea576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108be5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610747565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108f5848484610e28565b90505b9392505050565b6000546001600160a01b031633146109295760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161074790611b98565b60646109826009600a611b6a565b61098e90612710611b79565b6109989190611bcf565b811015610a0d5760405162461bcd60e51b815260206004820152603a60248201527f4d617857616c6c6574416d6f756e74206e6565647320746f206265206869676860448201527f6572207468616e203125206f6620746f74616c20737570706c790000000000006064820152608401610747565b600955565b60006106f882600019610691565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b815260040161074790611b98565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610ab95760405162461bcd60e51b815260040161074790611b98565b6000196009819055600855565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161074790611b98565b60005b82811015610b615781600a6000868685818110610b1257610b12611bf1565b9050602002016020810190610b2791906118c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b5981611c07565b915050610af3565b50505050565b60006108f8338484610e28565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161074790611b98565b6064610bac6009600a611b6a565b610bb890612710611b79565b610bc29190611bcf565b811015610c305760405162461bcd60e51b815260206004820152603660248201527f4d61785478416d6f756e74206e6565647320746f20626520686967686572207460448201527568616e203125206f6620746f74616c20737570706c7960501b6064820152608401610747565b600855565b6040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016904780156108fc02916000818181858888f19350505050158015610c8a573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610cb75760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161074790611b98565b60035460ff1615610d5f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610747565b60038054600160ff199182161790915560058054909116821515179055610d8782603c611b79565b610d919042611c20565b600b55610d9e8343611c20565b600655505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e1e5760405162461bcd60e51b815260206004820152601c60248201527f4465706c6f7965722d726573747269637465642066756e6374696f6e000000006044820152606401610747565b610e266112a1565b565b600c5460009060ff1680610e6d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b80610ea957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15610ec057610eb98484846114ee565b90506108f8565b81600003610ed457610eb9848460006114ee565b60035460ff16610f195760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610747565b6001600160a01b03841660009081526004602052604090205460ff1615610f785760405162461bcd60e51b8152602060048201526013602482015272536e69706572732063616e277420747261646560681b6044820152606401610747565b6001600160a01b03831661dead14801590610f9b57506001600160a01b03831615155b156110ad57600854821115610ff25760405162461bcd60e51b815260206004820152601960248201527f457863657373697665207472616e7366657220616d6f756e74000000000000006044820152606401610747565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061105757506009546001600160a01b038416600090815260016020526040902054611054908490611c20565b11155b6110ad5760405162461bcd60e51b815260206004820152602160248201527f45786365737369766520726563656976657220746f6b656e20686f6c64696e676044820152607360f81b6064820152608401610747565b326000908152600760205260409020546003906110ca9043611c33565b10156111185760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e7320746f6f206672657175656e74000000000000006044820152606401610747565b32600090815260076020526040902043905561113484846115e6565b15611161576001600160a01b0383166000908152600460205260409020805460ff19166001179055611177565b61116a846116bd565b15611177576111776112a1565b6001600160a01b038416600090815260016020526040902054828110156111d75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b0385166000908152600160205260408120805485900390556112008686611735565b61120a5783611214565b611214868561177c565b6001600160a01b038616600090815260016020526040812080549293508392909190611241908490611c20565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128d91815260200190565b60405180910390a350600195945050505050565b600c805460ff1916600190811790915530600090815260209190915260408120546008549091908210156112d557816112d9565b6008545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061131357611313611bf1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b59190611c46565b816001815181106113c8576113c8611bf1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061142d908690600090879030904290600401611c63565b600060405180830381600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b5050604051478490039250600091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169061753090849084818181858888f193505050503d80600081146114d4576040519150601f19603f3d011682016040523d82523d6000602084013e6114d9565b606091505b5050600c805460ff1916905550505050505050565b6001600160a01b0383166000908152600160205260408120548281101561154e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611587908490611c20565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115d391815260200190565b60405180910390a3506001949350505050565b60055460009060ff16801561162c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b801561163a57506006544311155b801561164f57506001600160a01b0382163014155b801561167857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156108f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415905092915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156106f85750306000908152600160205260409020547f0000000000000000000000000000000000000000000000000000000000000000111592915050565b6001600160a01b0382166000908152600a602052604081205460ff168061177457506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080600b544210156117a7576064611796600c85611b79565b6117a09190611bcf565b90506117c1565b60646117b4600585611b79565b6117be9190611bcf565b90505b30600090815260016020526040812080548392906117e0908490611c20565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361182f8184611c33565b949350505050565b600060208083528351808285015260005b8181101561186457858101830151858201604001528201611848565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c8a57600080fd5b600080604083850312156118ad57600080fd5b82356118b881611885565b946020939093013593505050565b6000602082840312156118d857600080fd5b81356108f881611885565b6000806000606084860312156118f857600080fd5b833561190381611885565b9250602084013561191381611885565b929592945050506040919091013590565b60006020828403121561193657600080fd5b5035919050565b8035801515811461194d57600080fd5b919050565b60008060006040848603121561196757600080fd5b833567ffffffffffffffff8082111561197f57600080fd5b818601915086601f83011261199357600080fd5b8135818111156119a257600080fd5b8760208260051b85010111156119b757600080fd5b6020928301955093506119cd918601905061193d565b90509250925092565b600080604083850312156119e957600080fd5b82356119f481611885565b91506020830135611a0481611885565b809150509250929050565b60008060408385031215611a2257600080fd5b8235611a2d81611885565b9150611a3b6020840161193d565b90509250929050565b600080600060608486031215611a5957600080fd5b83359250602084013591506119cd6040850161193d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ac1578160001904821115611aa757611aa7611a70565b80851615611ab457918102915b93841c9390800290611a8b565b509250929050565b600082611ad8575060016106f8565b81611ae5575060006106f8565b8160018114611afb5760028114611b0557611b21565b60019150506106f8565b60ff841115611b1657611b16611a70565b50506001821b6106f8565b5060208310610133831016604e8410600b8410161715611b44575081810a6106f8565b611b4e8383611a86565b8060001904821115611b6257611b62611a70565b029392505050565b60006108f860ff841683611ac9565b6000816000190483118215151615611b9357611b93611a70565b500290565b60208082526019908201527f4f776e65722d726573747269637465642066756e6374696f6e00000000000000604082015260600190565b600082611bec57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611c1957611c19611a70565b5060010190565b808201808211156106f8576106f8611a70565b818103818111156106f8576106f8611a70565b600060208284031215611c5857600080fd5b81516108f881611885565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cb35784516001600160a01b031683529383019391830191600101611c8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209f41c0c93bc89e9a07fa9292d33c21974c12e1fd461a538b708ecee23907a19064736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063893d20e81161010d578063bc337182116100a0578063df8408fe1161006f578063df8408fe146105f3578063eeaad41914610613578063f7a1642e14610628578063f887ea4014610648578063fd35780c1461067c57600080fd5b8063bc33718214610562578063ca1b1cff14610582578063db5c801014610598578063dd62ed3e146105ad57600080fd5b806399b589cb116100dc57806399b589cb146104c4578063a8aa1b31146104f8578063a9059cbb1461052c578063aa4bde281461054c57600080fd5b8063893d20e81461042b5780638c0b5e221461045d5780638f8deb041461047357806395d89b411461049357600080fd5b80634a092b861161018557806370a082311161015457806370a08231146103b1578063715018a6146103e7578063751039fc146103fc5780637daa930a1461041157600080fd5b80634a092b861461033c5780634fe47f701461035c578063537198b31461037c578063571ac8b01461039157600080fd5b806318160ddd116101c157806318160ddd146102c95780631e1cf1c0146102de57806323b872dd14610300578063313ce5671461032057600080fd5b80630445b667146101fe57806306fdde0314610245578063095ea7b314610284578063180b0d7e146102b457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b506102327f00000000000000000000000000000000000000000000000000000002540be40081565b6040519081526020015b60405180910390f35b34801561025157600080fd5b5060408051808201909152600d81526c50726f6f66206f66204a4f4a4f60981b60208201525b60405161023c9190611837565b34801561029057600080fd5b506102a461029f36600461189a565b610691565b604051901515815260200161023c565b3480156102c057600080fd5b50610232606481565b3480156102d557600080fd5b506102326106fe565b3480156102ea57600080fd5b506102fe6102f93660046118c6565b61071d565b005b34801561030c57600080fd5b506102a461031b3660046118e3565b610825565b34801561032c57600080fd5b506040516009815260200161023c565b34801561034857600080fd5b506102fe6103573660046118c6565b6108ff565b34801561036857600080fd5b506102fe610377366004611924565b61094a565b34801561038857600080fd5b50610232600c81565b34801561039d57600080fd5b506102a46103ac3660046118c6565b610a12565b3480156103bd57600080fd5b506102326103cc3660046118c6565b6001600160a01b031660009081526001602052604090205490565b3480156103f357600080fd5b506102fe610a20565b34801561040857600080fd5b506102fe610a8f565b34801561041d57600080fd5b506003546102a49060ff1681565b34801561043757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023c565b34801561046957600080fd5b5061023260085481565b34801561047f57600080fd5b506102fe61048e366004611952565b610ac6565b34801561049f57600080fd5b506040805180820190915260088152670244a4f4a4f322e360c41b6020820152610277565b3480156104d057600080fd5b506104457f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e85138822981565b34801561050457600080fd5b506104457f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e9281565b34801561053857600080fd5b506102a461054736600461189a565b610b67565b34801561055857600080fd5b5061023260095481565b34801561056e57600080fd5b506102fe61057d366004611924565b610b74565b34801561058e57600080fd5b50610232600b5481565b3480156105a457600080fd5b506102fe610c35565b3480156105b957600080fd5b506102326105c83660046119d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ff57600080fd5b506102fe61060e366004611a0f565b610c8d565b34801561061f57600080fd5b50610232600581565b34801561063457600080fd5b506102fe610643366004611a44565b610ce2565b34801561065457600080fd5b506104457f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561068857600080fd5b506102fe610da6565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106ec9086815260200190565b60405180910390a35060015b92915050565b600061070c6009600a611b6a565b61071890612710611b79565b905090565b6000546001600160a01b031633146107505760405162461bcd60e51b815260040161074790611b98565b60405180910390fd5b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061078657506001600160a01b0381163014155b80156107c457507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316816001600160a01b031614155b6108015760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b734b832b960911b6044820152606401610747565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108ea576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108be5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610747565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108f5848484610e28565b90505b9392505050565b6000546001600160a01b031633146109295760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161074790611b98565b60646109826009600a611b6a565b61098e90612710611b79565b6109989190611bcf565b811015610a0d5760405162461bcd60e51b815260206004820152603a60248201527f4d617857616c6c6574416d6f756e74206e6565647320746f206265206869676860448201527f6572207468616e203125206f6620746f74616c20737570706c790000000000006064820152608401610747565b600955565b60006106f882600019610691565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b815260040161074790611b98565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610ab95760405162461bcd60e51b815260040161074790611b98565b6000196009819055600855565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161074790611b98565b60005b82811015610b615781600a6000868685818110610b1257610b12611bf1565b9050602002016020810190610b2791906118c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b5981611c07565b915050610af3565b50505050565b60006108f8338484610e28565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161074790611b98565b6064610bac6009600a611b6a565b610bb890612710611b79565b610bc29190611bcf565b811015610c305760405162461bcd60e51b815260206004820152603660248201527f4d61785478416d6f756e74206e6565647320746f20626520686967686572207460448201527568616e203125206f6620746f74616c20737570706c7960501b6064820152608401610747565b600855565b6040516001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e85138822916904780156108fc02916000818181858888f19350505050158015610c8a573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610cb75760405162461bcd60e51b815260040161074790611b98565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161074790611b98565b60035460ff1615610d5f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610747565b60038054600160ff199182161790915560058054909116821515179055610d8782603c611b79565b610d919042611c20565b600b55610d9e8343611c20565b600655505050565b336001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882291614610e1e5760405162461bcd60e51b815260206004820152601c60248201527f4465706c6f7965722d726573747269637465642066756e6374696f6e000000006044820152606401610747565b610e266112a1565b565b600c5460009060ff1680610e6d57507f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882296001600160a01b0316846001600160a01b0316145b80610ea957507f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e8513882296001600160a01b0316836001600160a01b0316145b15610ec057610eb98484846114ee565b90506108f8565b81600003610ed457610eb9848460006114ee565b60035460ff16610f195760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610747565b6001600160a01b03841660009081526004602052604090205460ff1615610f785760405162461bcd60e51b8152602060048201526013602482015272536e69706572732063616e277420747261646560681b6044820152606401610747565b6001600160a01b03831661dead14801590610f9b57506001600160a01b03831615155b156110ad57600854821115610ff25760405162461bcd60e51b815260206004820152601960248201527f457863657373697665207472616e7366657220616d6f756e74000000000000006044820152606401610747565b7f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316836001600160a01b0316148061105757506009546001600160a01b038416600090815260016020526040902054611054908490611c20565b11155b6110ad5760405162461bcd60e51b815260206004820152602160248201527f45786365737369766520726563656976657220746f6b656e20686f6c64696e676044820152607360f81b6064820152608401610747565b326000908152600760205260409020546003906110ca9043611c33565b10156111185760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e7320746f6f206672657175656e74000000000000006044820152606401610747565b32600090815260076020526040902043905561113484846115e6565b15611161576001600160a01b0383166000908152600460205260409020805460ff19166001179055611177565b61116a846116bd565b15611177576111776112a1565b6001600160a01b038416600090815260016020526040902054828110156111d75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b0385166000908152600160205260408120805485900390556112008686611735565b61120a5783611214565b611214868561177c565b6001600160a01b038616600090815260016020526040812080549293508392909190611241908490611c20565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128d91815260200190565b60405180910390a350600195945050505050565b600c805460ff1916600190811790915530600090815260209190915260408120546008549091908210156112d557816112d9565b6008545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061131357611313611bf1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b59190611c46565b816001815181106113c8576113c8611bf1565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061142d908690600090879030904290600401611c63565b600060405180830381600087803b15801561144757600080fd5b505af115801561145b573d6000803e3d6000fd5b5050604051478490039250600091506001600160a01b037f000000000000000000000000c977e796dd3b8ec040f4cfe0f72ae2e851388229169061753090849084818181858888f193505050503d80600081146114d4576040519150601f19603f3d011682016040523d82523d6000602084013e6114d9565b606091505b5050600c805460ff1916905550505050505050565b6001600160a01b0383166000908152600160205260408120548281101561154e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610747565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611587908490611c20565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115d391815260200190565b60405180910390a3506001949350505050565b60055460009060ff16801561162c57507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316836001600160a01b0316145b801561163a57506006544311155b801561164f57506001600160a01b0382163014155b801561167857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156108f857507f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316826001600160a01b03161415905092915050565b60007f0000000000000000000000001bc6cf35e1d1d1653938cae1e374fd3a071f2e926001600160a01b0316826001600160a01b0316141580156106f85750306000908152600160205260409020547f00000000000000000000000000000000000000000000000000000002540be400111592915050565b6001600160a01b0382166000908152600a602052604081205460ff168061177457506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b600080600b544210156117a7576064611796600c85611b79565b6117a09190611bcf565b90506117c1565b60646117b4600585611b79565b6117be9190611bcf565b90505b30600090815260016020526040812080548392906117e0908490611c20565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361182f8184611c33565b949350505050565b600060208083528351808285015260005b8181101561186457858101830151858201604001528201611848565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c8a57600080fd5b600080604083850312156118ad57600080fd5b82356118b881611885565b946020939093013593505050565b6000602082840312156118d857600080fd5b81356108f881611885565b6000806000606084860312156118f857600080fd5b833561190381611885565b9250602084013561191381611885565b929592945050506040919091013590565b60006020828403121561193657600080fd5b5035919050565b8035801515811461194d57600080fd5b919050565b60008060006040848603121561196757600080fd5b833567ffffffffffffffff8082111561197f57600080fd5b818601915086601f83011261199357600080fd5b8135818111156119a257600080fd5b8760208260051b85010111156119b757600080fd5b6020928301955093506119cd918601905061193d565b90509250925092565b600080604083850312156119e957600080fd5b82356119f481611885565b91506020830135611a0481611885565b809150509250929050565b60008060408385031215611a2257600080fd5b8235611a2d81611885565b9150611a3b6020840161193d565b90509250929050565b600080600060608486031215611a5957600080fd5b83359250602084013591506119cd6040850161193d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ac1578160001904821115611aa757611aa7611a70565b80851615611ab457918102915b93841c9390800290611a8b565b509250929050565b600082611ad8575060016106f8565b81611ae5575060006106f8565b8160018114611afb5760028114611b0557611b21565b60019150506106f8565b60ff841115611b1657611b16611a70565b50506001821b6106f8565b5060208310610133831016604e8410600b8410161715611b44575081810a6106f8565b611b4e8383611a86565b8060001904821115611b6257611b62611a70565b029392505050565b60006108f860ff841683611ac9565b6000816000190483118215151615611b9357611b93611a70565b500290565b60208082526019908201527f4f776e65722d726573747269637465642066756e6374696f6e00000000000000604082015260600190565b600082611bec57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611c1957611c19611a70565b5060010190565b808201808211156106f8576106f8611a70565b818103818111156106f8576106f8611a70565b600060208284031215611c5857600080fd5b81516108f881611885565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cb35784516001600160a01b031683529383019391830191600101611c8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209f41c0c93bc89e9a07fa9292d33c21974c12e1fd461a538b708ecee23907a19064736f6c63430008100033

Deployed Bytecode Sourcemap

2010:9729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3372:61;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;3372:61:0;;;;;;;;4215:71;;;;;;;;;;-1:-1:-1;4278:5:0;;;;;;;;;;;;-1:-1:-1;;;4278:5:0;;;;4215:71;;;;;;;:::i;4601:207::-;;;;;;;;;;-1:-1:-1;4601:207:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;4601:207:0;1205:187:1;2947:44:0;;;;;;;;;;;;2988:3;2947:44;;3972:79;;;;;;;;;;;;;:::i;11090:211::-;;;;;;;;;;-1:-1:-1;11090:211:0;;;;;:::i;:::-;;:::i;:::-;;5101:489;;;;;;;;;;-1:-1:-1;5101:489:0;;;;;:::i;:::-;;:::i;4057:71::-;;;;;;;;;;-1:-1:-1;4057:71:0;;2169:1;2252:36:1;;2240:2;2225:18;4057:71:0;2110:184:1;11313:113:0;;;;;;;;;;-1:-1:-1;11313:113:0;;;;;:::i;:::-;;:::i;10104:240::-;;;;;;;;;;-1:-1:-1;10104:240:0;;;;;:::i;:::-;;:::i;2890:47::-;;;;;;;;;;;;2935:2;2890:47;;4816:122;;;;;;;;;;-1:-1:-1;4816:122:0;;;;;:::i;:::-;;:::i;4367:96::-;;;;;;;;;;-1:-1:-1;4367:96:0;;;;;:::i;:::-;-1:-1:-1;;;;;4442:18:0;4424:7;4442:18;;;:9;:18;;;;;;;4367:96;1349:131;;;;;;;;;;;;;:::i;10580:139::-;;;;;;;;;;;;;:::i;2361:33::-;;;;;;;;;;-1:-1:-1;2361:33:0;;;;;;;;4292:69;;;;;;;;;;-1:-1:-1;4335:7:0;4353:5;-1:-1:-1;;;;;4353:5:0;4292:69;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;4292:69:0;2484:203:1;2617:51:0;;;;;;;;;;;;;;;;10862:220;;;;;;;;;;-1:-1:-1;10862:220:0;;;;;:::i;:::-;;:::i;4134:75::-;;;;;;;;;;-1:-1:-1;4199:7:0;;;;;;;;;;;;-1:-1:-1;;;4199:7:0;;;;4134:75;;3000:73;;;;;;;;;;;;;;;3334:29;;;;;;;;;;;;;;;4946:147;;;;;;;;;;-1:-1:-1;4946:147:0;;;;;:::i;:::-;;:::i;2681:55::-;;;;;;;;;;;;;;;;10356:216;;;;;;;;;;-1:-1:-1;10356:216:0;;;;;:::i;:::-;;:::i;2797:32::-;;;;;;;;;;;;;;;;11618:110;;;;;;;;;;;;;:::i;4469:124::-;;;;;;;;;;-1:-1:-1;4469:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;4562:19:0;;;4544:7;4562:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4469:124;10727:125;;;;;;;;;;-1:-1:-1;10727:125:0;;;;;:::i;:::-;;:::i;2836:43::-;;;;;;;;;;;;2878:1;2836:43;;9707:385;;;;;;;;;;-1:-1:-1;9707:385:0;;;;;:::i;:::-;;:::i;3293:34::-;;;;;;;;;;;;;;;11434:176;;;;;;;;;;;;;:::i;4601:207::-;4696:10;4667:4;4684:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4684:32:0;;;;;;;;;;:41;;;4741:37;4667:4;;4684:32;;4741:37;;;;4719:6;160:25:1;;148:2;133:18;;14:177;4741:37:0;;;;;;;;-1:-1:-1;4796:4:0;4601:207;;;;;:::o;3972:79::-;4018:7;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;;:6;:26;:::i;:::-;4029:19;;3972:79;:::o;11090:211::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11165:23:0;::::1;3114:42;11165:23;::::0;::::1;::::0;:51:::1;;-1:-1:-1::0;;;;;;11192:24:0;::::1;11211:4;11192:24;;11165:51;:70;;;;;11231:4;-1:-1:-1::0;;;;;11220:15:0::1;:7;-1:-1:-1::0;;;;;11220:15:0::1;;;11165:70;11157:97;;;::::0;-1:-1:-1;;;11157:97:0;;7279:2:1;11157:97:0::1;::::0;::::1;7261:21:1::0;7318:2;7298:18;;;7291:30;-1:-1:-1;;;7337:18:1;;;7330:44;7391:18;;11157:97:0::1;7077:338:1::0;11157:97:0::1;-1:-1:-1::0;;;;;11265:21:0::1;;::::0;;;:12:::1;:21;::::0;;;;:28;;-1:-1:-1;;11265:28:0::1;11289:4;11265:28;::::0;;11090:211::o;5101:489::-;-1:-1:-1;;;;;5212:19:0;;5192:4;5212:19;;;:11;:19;;;;;;;;5232:10;5212:31;;;;;;;;-1:-1:-1;;5212:52:0;5209:316;;-1:-1:-1;;;;;5307:19:0;;5280:24;5307:19;;;:11;:19;;;;;;;;5327:10;5307:31;;;;;;;;5361:26;;;;5353:61;;;;-1:-1:-1;;;5353:61:0;;7622:2:1;5353:61:0;;;7604:21:1;7661:2;7641:18;;;7634:30;-1:-1:-1;;;7680:18:1;;;7673:52;7742:18;;5353:61:0;7420:346:1;5353:61:0;-1:-1:-1;;;;;;5457:19:0;;;;;;:11;:19;;;;;;;;5477:10;5457:31;;;;;;;:41;;;;;;;5209:316;5542:40;5556:6;5564:9;5575:6;5542:13;:40::i;:::-;5535:47;;5101:489;;;;;;:::o;11313:113::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11389:21:0::1;11413:5;11389:21:::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;11389:29:0::1;::::0;;11313:113::o;10104:240::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10225:3:::1;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;::::0;:6:::1;:26;:::i;:::-;10210:18;;;;:::i;:::-;10190:16;:38;;10182:109;;;::::0;-1:-1:-1;;;10182:109:0;;8195:2:1;10182:109:0::1;::::0;::::1;8177:21:1::0;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;8344:28;8324:18;;;8317:56;8390:19;;10182:109:0::1;7993:422:1::0;10182:109:0::1;10302:15;:34:::0;10104:240::o;4816:122::-;4871:4;4895:35;4903:7;-1:-1:-1;;4895:7:0;:35::i;1349:131::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;1422:1:::1;1406:18:::0;;-1:-1:-1;;;;;;1406:18:0::1;::::0;;1440:32:::1;::::0;2630:51:1;;;1440:32:0::1;::::0;2618:2:1;2603:18;1440:32:0::1;;;;;;;1349:131::o:0;10580:139::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;10634:15:0::1;:35:::0;;;10680:11:::1;:31:::0;10580:139::o;10862:220::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10972:9:::1;10968:107;10987:19:::0;;::::1;10968:107;;;11055:8;11028:11;:24;11040:8;;11049:1;11040:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11028:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11028:24:0;:35;;-1:-1:-1;;11028:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11008:3;::::1;::::0;::::1;:::i;:::-;;;;10968:107;;;;10862:220:::0;;;:::o;4946:147::-;5017:4;5041:44;5055:10;5067:9;5078:6;5041:13;:44::i;10356:216::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;10465:3:::1;2221:15;2169:1;2221:2;:15;:::i;:::-;2211:26;::::0;:6:::1;:26;:::i;:::-;10450:18;;;;:::i;:::-;10434:12;:34;;10426:101;;;::::0;-1:-1:-1;;;10426:101:0;;8894:2:1;10426:101:0::1;::::0;::::1;8876:21:1::0;8933:2;8913:18;;;8906:30;8972:34;8952:18;;;8945:62;-1:-1:-1;;;9023:18:1;;;9016:52;9085:19;;10426:101:0::1;8692:418:1::0;10426:101:0::1;10538:11;:26:::0;10356:216::o;11618:110::-;11670:50;;-1:-1:-1;;;;;11670:18:0;:27;;11698:21;11670:50;;;;;;;;;11698:21;11670:27;:50;;;;;;;;;;;;;;;;;;;;;11618:110::o;10727:125::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10813:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:31;;-1:-1:-1;;10813:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10727:125::o;9707:385::-;1283:5;;-1:-1:-1;;;;;1283:5:0;1269:10;:19;1261:57;;;;-1:-1:-1;;;1261:57:0;;;;;;;:::i;:::-;9841:13:::1;::::0;::::1;;9840:14;9832:50;;;::::0;-1:-1:-1;;;9832:50:0;;9317:2:1;9832:50:0::1;::::0;::::1;9299:21:1::0;9356:2;9336:18;;;9329:30;9395:25;9375:18;;;9368:53;9438:18;;9832:50:0::1;9115:347:1::0;9832:50:0::1;9893:13;:20:::0;;9909:4:::1;-1:-1:-1::0;;9893:20:0;;::::1;;::::0;;;9924:13:::1;:30:::0;;;;::::1;::::0;::::1;;;::::0;;10003:25:::1;:20:::0;10026:2:::1;10003:25;:::i;:::-;9985:43;::::0;:15:::1;:43;:::i;:::-;9965:17;:63:::0;10056:28:::1;10071:13:::0;10056:12:::1;:28;:::i;:::-;10039:14;:45:::0;-1:-1:-1;;;9707:385:0:o;11434:176::-;11496:10;-1:-1:-1;;;;;11510:18:0;11496:32;;11488:73;;;;-1:-1:-1;;;11488:73:0;;9799:2:1;11488:73:0;;;9781:21:1;9838:2;9818:18;;;9811:30;9877;9857:18;;;9850:58;9925:18;;11488:73:0;9597:352:1;11488:73:0;11572:10;:8;:10::i;:::-;11434:176::o;5598:1757::-;5710:6;;5690:4;;5710:6;;;:38;;;5730:18;-1:-1:-1;;;;;5720:28:0;:6;-1:-1:-1;;;;;5720:28:0;;5710:38;:73;;;;5765:18;-1:-1:-1;;;;;5752:31:0;:9;-1:-1:-1;;;;;5752:31:0;;5710:73;5707:252;;;5806:41;5821:6;5829:9;5840:6;5806:14;:41::i;:::-;5799:48;;;;5707:252;5877:6;5887:1;5877:11;5874:85;;5911:36;5926:6;5934:9;5945:1;5911:14;:36::i;5874:85::-;6008:13;;;;6000:42;;;;-1:-1:-1;;;6000:42:0;;10156:2:1;6000:42:0;;;10138:21:1;10195:2;10175:18;;;10168:30;-1:-1:-1;;;10214:18:1;;;10207:46;10270:18;;6000:42:0;9954:340:1;6000:42:0;-1:-1:-1;;;;;6089:20:0;;;;;;:12;:20;;;;;;;;6088:21;6080:53;;;;-1:-1:-1;;;6080:53:0;;10501:2:1;6080:53:0;;;10483:21:1;10540:2;10520:18;;;10513:30;-1:-1:-1;;;10559:18:1;;;10552:49;10618:18;;6080:53:0;10299:343:1;6080:53:0;-1:-1:-1;;;;;6187:17:0;;3199:42;6187:17;;;;:38;;-1:-1:-1;;;;;;6208:17:0;;;;6187:38;6183:290;;;6272:11;;6262:6;:21;;6254:59;;;;-1:-1:-1;;;6254:59:0;;10849:2:1;6254:59:0;;;10831:21:1;10888:2;10868:18;;;10861:30;10927:27;10907:18;;;10900:55;10972:18;;6254:59:0;10647:349:1;6254:59:0;6349:4;-1:-1:-1;;;;;6336:17:0;:9;-1:-1:-1;;;;;6336:17:0;;:69;;;-1:-1:-1;6390:15:0;;-1:-1:-1;;;;;6357:20:0;;;;;;:9;:20;;;;;;:29;;6380:6;;6357:29;:::i;:::-;:48;;6336:69;6328:133;;;;-1:-1:-1;;;6328:133:0;;11203:2:1;6328:133:0;;;11185:21:1;11242:2;11222:18;;;11215:30;11281:34;11261:18;;;11254:62;-1:-1:-1;;;11332:18:1;;;11325:31;11373:19;;6328:133:0;11001:397:1;6328:133:0;6572:9;6560:22;;;;:11;:22;;;;;;2603:1;;6545:37;;:12;:37;:::i;:::-;:57;;6537:95;;;;-1:-1:-1;;;6537:95:0;;11738:2:1;6537:95:0;;;11720:21:1;11777:2;11757:18;;;11750:30;11816:27;11796:18;;;11789:55;11861:18;;6537:95:0;11536:349:1;6537:95:0;6656:9;6644:22;;;;:11;:22;;;;;6669:12;6644:37;;6698:35;6715:6;6723:9;6698:16;:35::i;:::-;6694:215;;;-1:-1:-1;;;;;6752:23:0;;;;;;:12;:23;;;;;:30;;-1:-1:-1;;6752:30:0;6778:4;6752:30;;;6694:215;;;6836:22;6851:6;6836:14;:22::i;:::-;6833:76;;;6874:10;:8;:10::i;:::-;-1:-1:-1;;;;;6953:17:0;;6929:21;6953:17;;;:9;:17;;;;;;6989:23;;;;6981:56;;;;-1:-1:-1;;;6981:56:0;;12092:2:1;6981:56:0;;;12074:21:1;12131:2;12111:18;;;12104:30;-1:-1:-1;;;12150:18:1;;;12143:50;12210:18;;6981:56:0;11890:344:1;6981:56:0;-1:-1:-1;;;;;7072:17:0;;;;;;:9;:17;;;;;:27;;;;;;;7148:32;7082:6;7170:9;7148:13;:32::i;:::-;:67;;7209:6;7148:67;;;7183:23;7191:6;7199;7183:7;:23::i;:::-;-1:-1:-1;;;;;7226:20:0;;;;;;:9;:20;;;;;:38;;7123:92;;-1:-1:-1;7123:92:0;;7226:20;;;:38;;7123:92;;7226:38;:::i;:::-;;;;;;;;7299:9;-1:-1:-1;;;;;7282:43:0;7291:6;-1:-1:-1;;;;;7282:43:0;;7310:14;7282:43;;;;160:25:1;;148:2;133:18;;14:177;7282:43:0;;;;;;;;-1:-1:-1;7343:4:0;;5598:1757;-1:-1:-1;;;;;5598:1757:0:o;8908:791::-;3490:6;:13;;-1:-1:-1;;3490:13:0;3499:4;3490:13;;;;;;8998:4:::1;3490:6:::0;8980:24;;;::::1;::::0;;;;;;;;9054:11:::1;::::0;8980:24;;3490:6;9038:27;::::1;;:56;;9082:12;9038:56;;;9068:11;;9038:56;9131:16;::::0;;9145:1:::1;9131:16:::0;;;;;::::1;::::0;;9015:79;;-1:-1:-1;9107:21:0::1;::::0;9131:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9131:16:0::1;9107:40;;9176:4;9158;9163:1;9158:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9158:23:0::1;;;-1:-1:-1::0;;;;;9158:23:0::1;;;::::0;::::1;9202:6;-1:-1:-1::0;;;;;9202:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9192:4;9197:1;9192:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9192:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;9286:188:::1;::::0;-1:-1:-1;;;9286:188:0;;9252:21:::1;::::0;9286:6:::1;:57;::::0;::::1;::::0;:188:::1;::::0;9358:12;;9228:21:::1;::::0;9401:4;;9428::::1;::::0;9448:15:::1;::::0;9286:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9614:57:0::1;::::0;9531:21:::1;:37:::0;;::::1;::::0;-1:-1:-1;9511:17:0::1;::::0;-1:-1:-1;;;;;;9614:18:0::1;:23;::::0;9661:5:::1;::::0;9531:37;;9511:17;9614:57;9511:17;9614:57;9531:37;9614:23;9661:5;9614:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;3508:6:0;:14;;-1:-1:-1;;3508:14:0;;;-1:-1:-1;;;;;;;8908:791:0:o;7367:413::-;-1:-1:-1;;;;;7501:17:0;;7460:4;7501:17;;;:9;:17;;;;;;7537:23;;;;7529:56;;;;-1:-1:-1;;;7529:56:0;;12092:2:1;7529:56:0;;;12074:21:1;12131:2;12111:18;;;12104:30;-1:-1:-1;;;12150:18:1;;;12143:50;12210:18;;7529:56:0;11890:344:1;7529:56:0;-1:-1:-1;;;;;7620:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7669:20;;;;;;;;:30;;7641:6;;7620:17;7669:30;;7641:6;;7669:30;:::i;:::-;;;;;;;;7732:9;-1:-1:-1;;;;;7715:35:0;7724:6;-1:-1:-1;;;;;7715:35:0;;7743:6;7715:35;;;;160:25:1;;148:2;133:18;;14:177;7715:35:0;;;;;;;;-1:-1:-1;7768:4:0;;7367:413;-1:-1:-1;;;;7367:413:0:o;7788:272::-;7896:13;;7872:4;;7896:13;;:31;;;;;7923:4;-1:-1:-1;;;;;7913:14:0;:6;-1:-1:-1;;;;;7913:14:0;;7896:31;:65;;;;;7947:14;;7931:12;:30;;7896:65;:106;;;;-1:-1:-1;;;;;;7976:26:0;;7997:4;7976:26;;7896:106;:135;;;;-1:-1:-1;;;;;;8006:25:0;;3114:42;8006:25;;7896:135;:156;;;;;8048:4;-1:-1:-1;;;;;8035:17:0;:9;-1:-1:-1;;;;;8035:17:0;;;7889:163;;7788:272;;;;:::o;8746:154::-;8809:4;8843;-1:-1:-1;;;;;8833:14:0;:6;-1:-1:-1;;;;;8833:14:0;;;:59;;;;-1:-1:-1;8869:4:0;8851:24;;;;:9;:24;;;;;;8879:13;-1:-1:-1;8851:41:0;8826:66;8746:154;-1:-1:-1;;8746:154:0:o;8068:161::-;-1:-1:-1;;;;;8175:19:0;;8149:4;8175:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;8198:22:0;;;;;;:11;:22;;;;;;;;8175:45;8173:48;;8068:161;-1:-1:-1;;;8068:161:0:o;8237:501::-;8304:7;8324:17;8373;;8355:15;:35;8352:206;;;2988:3;8418:27;2935:2;8418:6;:27;:::i;:::-;:44;;;;:::i;:::-;8406:56;;8352:206;;;2988:3;8505:24;2878:1;8505:6;:24;:::i;:::-;:41;;;;:::i;:::-;8493:53;;8352:206;8609:4;8591:24;;;;:9;:24;;;;;:37;;8619:9;;8591:24;:37;;8619:9;;8591:37;:::i;:::-;;;;-1:-1:-1;;8644:42:0;;160:25:1;;;8669:4:0;;-1:-1:-1;;;;;8644:42:0;;;;;148:2:1;133:18;8644:42:0;;;;;;;8712:18;8721:9;8712:6;:18;:::i;:::-;8705:25;8237:501;-1:-1:-1;;;;8237:501:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2786:60;2692:160;;;:::o;2857:689::-;2949:6;2957;2965;3018:2;3006:9;2997:7;2993:23;2989:32;2986:52;;;3034:1;3031;3024:12;2986:52;3074:9;3061:23;3103:18;3144:2;3136:6;3133:14;3130:34;;;3160:1;3157;3150:12;3130:34;3198:6;3187:9;3183:22;3173:32;;3243:7;3236:4;3232:2;3228:13;3224:27;3214:55;;3265:1;3262;3255:12;3214:55;3305:2;3292:16;3331:2;3323:6;3320:14;3317:34;;;3347:1;3344;3337:12;3317:34;3402:7;3395:4;3385:6;3382:1;3378:14;3374:2;3370:23;3366:34;3363:47;3360:67;;;3423:1;3420;3413:12;3360:67;3454:4;3446:13;;;;-1:-1:-1;3478:6:1;-1:-1:-1;3503:37:1;;3519:20;;;-1:-1:-1;3503:37:1;:::i;:::-;3493:47;;2857:689;;;;;:::o;3775:388::-;3843:6;3851;3904:2;3892:9;3883:7;3879:23;3875:32;3872:52;;;3920:1;3917;3910:12;3872:52;3959:9;3946:23;3978:31;4003:5;3978:31;:::i;:::-;4028:5;-1:-1:-1;4085:2:1;4070:18;;4057:32;4098:33;4057:32;4098:33;:::i;:::-;4150:7;4140:17;;;3775:388;;;;;:::o;4168:315::-;4233:6;4241;4294:2;4282:9;4273:7;4269:23;4265:32;4262:52;;;4310:1;4307;4300:12;4262:52;4349:9;4336:23;4368:31;4393:5;4368:31;:::i;:::-;4418:5;-1:-1:-1;4442:35:1;4473:2;4458:18;;4442:35;:::i;:::-;4432:45;;4168:315;;;;;:::o;4488:316::-;4562:6;4570;4578;4631:2;4619:9;4610:7;4606:23;4602:32;4599:52;;;4647:1;4644;4637:12;4599:52;4683:9;4670:23;4660:33;;4740:2;4729:9;4725:18;4712:32;4702:42;;4763:35;4794:2;4783:9;4779:18;4763:35;:::i;5035:127::-;5096:10;5091:3;5087:20;5084:1;5077:31;5127:4;5124:1;5117:15;5151:4;5148:1;5141:15;5167:422;5256:1;5299:5;5256:1;5313:270;5334:7;5324:8;5321:21;5313:270;;;5393:4;5389:1;5385:6;5381:17;5375:4;5372:27;5369:53;;;5402:18;;:::i;:::-;5452:7;5442:8;5438:22;5435:55;;;5472:16;;;;5435:55;5551:22;;;;5511:15;;;;5313:270;;;5317:3;5167:422;;;;;:::o;5594:806::-;5643:5;5673:8;5663:80;;-1:-1:-1;5714:1:1;5728:5;;5663:80;5762:4;5752:76;;-1:-1:-1;5799:1:1;5813:5;;5752:76;5844:4;5862:1;5857:59;;;;5930:1;5925:130;;;;5837:218;;5857:59;5887:1;5878:10;;5901:5;;;5925:130;5962:3;5952:8;5949:17;5946:43;;;5969:18;;:::i;:::-;-1:-1:-1;;6025:1:1;6011:16;;6040:5;;5837:218;;6139:2;6129:8;6126:16;6120:3;6114:4;6111:13;6107:36;6101:2;6091:8;6088:16;6083:2;6077:4;6074:12;6070:35;6067:77;6064:159;;;-1:-1:-1;6176:19:1;;;6208:5;;6064:159;6255:34;6280:8;6274:4;6255:34;:::i;:::-;6325:6;6321:1;6317:6;6313:19;6304:7;6301:32;6298:58;;;6336:18;;:::i;:::-;6374:20;;5594:806;-1:-1:-1;;;5594:806:1:o;6405:140::-;6463:5;6492:47;6533:4;6523:8;6519:19;6513:4;6492:47;:::i;6550:168::-;6590:7;6656:1;6652;6648:6;6644:14;6641:1;6638:21;6633:1;6626:9;6619:17;6615:45;6612:71;;;6663:18;;:::i;:::-;-1:-1:-1;6703:9:1;;6550:168::o;6723:349::-;6925:2;6907:21;;;6964:2;6944:18;;;6937:30;7003:27;6998:2;6983:18;;6976:55;7063:2;7048:18;;6723:349::o;7771:217::-;7811:1;7837;7827:132;;7881:10;7876:3;7872:20;7869:1;7862:31;7916:4;7913:1;7906:15;7944:4;7941:1;7934:15;7827:132;-1:-1:-1;7973:9:1;;7771:217::o;8420:127::-;8481:10;8476:3;8472:20;8469:1;8462:31;8512:4;8509:1;8502:15;8536:4;8533:1;8526:15;8552:135;8591:3;8612:17;;;8609:43;;8632:18;;:::i;:::-;-1:-1:-1;8679:1:1;8668:13;;8552:135::o;9467:125::-;9532:9;;;9553:10;;;9550:36;;;9566:18;;:::i;11403:128::-;11470:9;;;11491:11;;;11488:37;;;11505:18;;:::i;12371:251::-;12441:6;12494:2;12482:9;12473:7;12469:23;12465:32;12462:52;;;12510:1;12507;12500:12;12462:52;12542:9;12536:16;12561:31;12586:5;12561:31;:::i;12627:980::-;12889:4;12937:3;12926:9;12922:19;12968:6;12957:9;12950:25;12994:2;13032:6;13027:2;13016:9;13012:18;13005:34;13075:3;13070:2;13059:9;13055:18;13048:31;13099:6;13134;13128:13;13165:6;13157;13150:22;13203:3;13192:9;13188:19;13181:26;;13242:2;13234:6;13230:15;13216:29;;13263:1;13273:195;13287:6;13284:1;13281:13;13273:195;;;13352:13;;-1:-1:-1;;;;;13348:39:1;13336:52;;13443:15;;;;13408:12;;;;13384:1;13302:9;13273:195;;;-1:-1:-1;;;;;;;13524:32:1;;;;13519:2;13504:18;;13497:60;-1:-1:-1;;;13588:3:1;13573:19;13566:35;13485:3;12627:980;-1:-1:-1;;;12627:980:1:o

Swarm Source

ipfs://9f41c0c93bc89e9a07fa9292d33c21974c12e1fd461a538b708ecee23907a190

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.