ETH Price: $3,414.95 (+0.39%)

Contract

0x1820C475379D1D3d4A20A404c26720Abe81D3620
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve203920762024-07-26 17:00:47156 days ago1722013247IN
0x1820C475...be81D3620
0 ETH0.000144753.07783611
Approve197727682024-05-01 4:02:47243 days ago1714536167IN
0x1820C475...be81D3620
0 ETH0.000284596.09146268
Approve192000382024-02-10 20:20:47323 days ago1707596447IN
0x1820C475...be81D3620
0 ETH0.0018222738.71487765
Approve184683802023-10-31 6:39:35426 days ago1698734375IN
0x1820C475...be81D3620
0 ETH0.0005422821.87968645
Approve184010582023-10-21 20:26:23435 days ago1697919983IN
0x1820C475...be81D3620
0 ETH0.000443199.47372823
Transfer181097042023-09-11 1:01:23476 days ago1694394083IN
0x1820C475...be81D3620
0 ETH0.000742349.43484382
Approve180529782023-09-03 2:25:47484 days ago1693707947IN
0x1820C475...be81D3620
0 ETH0.0005261311.19231784
Approve180316042023-08-31 2:34:59487 days ago1693449299IN
0x1820C475...be81D3620
0 ETH0.0006989114.86765281
Approve180307932023-08-30 23:50:23487 days ago1693439423IN
0x1820C475...be81D3620
0 ETH0.0005996212.83416619
Approve180297992023-08-30 20:29:35487 days ago1693427375IN
0x1820C475...be81D3620
0 ETH0.0016475835.00359073
Approve180294742023-08-30 19:23:59487 days ago1693423439IN
0x1820C475...be81D3620
0 ETH0.0011315424.21924179
Approve180268342023-08-30 10:30:11487 days ago1693391411IN
0x1820C475...be81D3620
0 ETH0.0006441721.70327914
Approve180268272023-08-30 10:28:47487 days ago1693391327IN
0x1820C475...be81D3620
0 ETH0.0009005419.25032378
Approve180262512023-08-30 8:33:11487 days ago1693384391IN
0x1820C475...be81D3620
0 ETH0.0008837518.91563332
Approve180262402023-08-30 8:30:59487 days ago1693384259IN
0x1820C475...be81D3620
0 ETH0.0008362117.78842682
Approve180248602023-08-30 3:52:23488 days ago1693367543IN
0x1820C475...be81D3620
0 ETH0.0008199417.44233521
Approve180247312023-08-30 3:26:23488 days ago1693365983IN
0x1820C475...be81D3620
0 ETH0.0008409117.86548735
Approve180245722023-08-30 2:54:23488 days ago1693364063IN
0x1820C475...be81D3620
0 ETH0.0008801718.72356176
Approve180245502023-08-30 2:49:59488 days ago1693363799IN
0x1820C475...be81D3620
0 ETH0.0008857218.8415432
Approve180244982023-08-30 2:39:35488 days ago1693363175IN
0x1820C475...be81D3620
0 ETH0.0009297719.77859957
Approve180241852023-08-30 1:36:35488 days ago1693359395IN
0x1820C475...be81D3620
0 ETH0.0008905918.94521952
Approve180241692023-08-30 1:33:23488 days ago1693359203IN
0x1820C475...be81D3620
0 ETH0.0011673224.95295764
Approve180241442023-08-30 1:28:23488 days ago1693358903IN
0x1820C475...be81D3620
0 ETH0.0007440415.82773841
Approve180240732023-08-30 1:14:11488 days ago1693358051IN
0x1820C475...be81D3620
0 ETH0.0011228123.85471297
Approve180240702023-08-30 1:13:35488 days ago1693358015IN
0x1820C475...be81D3620
0 ETH0.0009187719.54476143
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
203920802024-07-26 17:01:35156 days ago1722013295
0x1820C475...be81D3620
0.00013293 ETH
203920802024-07-26 17:01:35156 days ago1722013295
0x1820C475...be81D3620
0.00013293 ETH
192000392024-02-10 20:20:59323 days ago1707596459
0x1820C475...be81D3620
0.00020839 ETH
192000392024-02-10 20:20:59323 days ago1707596459
0x1820C475...be81D3620
0.00020839 ETH
188193172023-12-19 10:09:59376 days ago1702980599
0x1820C475...be81D3620
0.00021682 ETH
188193172023-12-19 10:09:59376 days ago1702980599
0x1820C475...be81D3620
0.00021682 ETH
180529802023-09-03 2:26:11484 days ago1693707971
0x1820C475...be81D3620
0.00019352 ETH
180529802023-09-03 2:26:11484 days ago1693707971
0x1820C475...be81D3620
0.00019352 ETH
180383502023-09-01 1:12:59486 days ago1693530779
0x1820C475...be81D3620
0.00015625 ETH
180383502023-09-01 1:12:59486 days ago1693530779
0x1820C475...be81D3620
0.00015625 ETH
180316122023-08-31 2:36:35487 days ago1693449395
0x1820C475...be81D3620
0.00018017 ETH
180316122023-08-31 2:36:35487 days ago1693449395
0x1820C475...be81D3620
0.00018017 ETH
180307472023-08-30 23:40:47487 days ago1693438847
0x1820C475...be81D3620
0.00043741 ETH
180307472023-08-30 23:40:47487 days ago1693438847
0x1820C475...be81D3620
0.00043741 ETH
180298012023-08-30 20:29:59487 days ago1693427399
0x1820C475...be81D3620
0.00016382 ETH
180298012023-08-30 20:29:59487 days ago1693427399
0x1820C475...be81D3620
0.00016382 ETH
180294752023-08-30 19:24:11487 days ago1693423451
0x1820C475...be81D3620
0.00017085 ETH
180294752023-08-30 19:24:11487 days ago1693423451
0x1820C475...be81D3620
0.00017085 ETH
180293772023-08-30 19:04:23487 days ago1693422263
0x1820C475...be81D3620
0.00074753 ETH
180293772023-08-30 19:04:23487 days ago1693422263
0x1820C475...be81D3620
0.00074753 ETH
180281022023-08-30 14:46:59487 days ago1693406819
0x1820C475...be81D3620
0.00023936 ETH
180281022023-08-30 14:46:59487 days ago1693406819
0x1820C475...be81D3620
0.00023936 ETH
180269162023-08-30 10:46:35487 days ago1693392395
0x1820C475...be81D3620
0.00027588 ETH
180269162023-08-30 10:46:35487 days ago1693392395
0x1820C475...be81D3620
0.00027588 ETH
180268282023-08-30 10:28:59487 days ago1693391339
0x1820C475...be81D3620
0.00060665 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pop

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-28
*/

//SPDX-License-Identifier: MIT

/*

  Proof of Pond0x - $POP 

  Socials: 
  https://t.me/ProofofPond0x
  https://proofofpond0x.org/
  https://twitter.com/ProofOfPond0x

  Launching Tuesday 29th August

*/


pragma solidity 0.8.21;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "OnlyOwner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); 
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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);
}


contract Pop is IERC20, Auth {
    string private  constant _symbol = "POP";
    string private constant _name    = "Proof of Pond0x";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000_000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0x8881ef151657c49677f3Ec5e0e5230018e4f298f);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 15;
    uint8 private _buyTaxrate  = 1;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 100 / 100000;
    uint256 private _swapLimits = _swapMin * 70 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; 
        _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;

        uint8 airdropPercent = 100;

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

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_swapRouterAddress] = true;
        _nofee[_marketingWallet] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_swapRouterAddress] = true;
        _nolimit[_marketingWallet] = true;
    }

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

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

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not yet open");
        return _transferFrom(msg.sender, toWallet, amount);
    }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not yet open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (bool lpAddSuccessful,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAddSuccessful, "Failed adding lp");
        _isLP[_primaryLP] = lpAddSuccessful;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading open");
        _openTrading();
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        _tradingOpen = true;
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
    }

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                //protect from multiwallet MEV sandwich attack
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                // protect from MEV drain attack
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]);
    }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyF, uint8 sellF) external onlyOwner {
        require(buyF + sellF <= 10, "Roundtrip too high");
        _buyTaxrate = buyF;
        _sellTaxrate = sellF;
    }  

    function marketingWallet() external view returns (address) { return _marketingWallet; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { return _maxTxVal; }

    function swapMin() external view returns (uint256) { return _swapMin; }
    function swapMax() external view returns (uint256) { return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = _primarySwapRouter.WETH() ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendAllEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 _tokensForSwap = _balances[ address(this)] * swapTokenPercent / 100;
        if (_tokensForSwap > 10 **_decimals) { _swapTaxTokensForEth(_tokensForSwap); }
        if (sendAllEth) { 
            uint256 thisBalance = address(this).balance;
            require(thisBalance >0, "No ETH"); 
            _distributeTaxEth( thisBalance ); 
        }
    }

}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, 
                address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, 
                uint amountTokenMin, uint amountETHMin, address to, uint deadline) 
        external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendAllEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyF","type":"uint8"},{"internalType":"uint8","name":"sellF","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","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":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052738881ef151657c49677f3ec5e0e5230018e4f298f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028055600f60035f6101000a81548160ff021916908360ff1602179055506001600360016101000a81548160ff021916908360ff1602179055506009600a620000a39190620009e7565b64174876e800620000b5919062000a37565b6005556009600a620000c89190620009e7565b64174876e800620000da919062000a37565b600655620186a0600a6009600a620000f39190620009e7565b64174876e80062000105919062000a37565b62000111919062000a37565b6200011d919062000aae565b600755620186a060646009600a620001369190620009e7565b64174876e80062000148919062000a37565b62000154919062000a37565b62000160919062000aae565b6008556064604660075462000176919062000a37565b62000182919062000a37565b600955737a250d5630b4cf539739df2c5dacb4c659f2488d60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360016101000a81548160ff021916908315150217905550348015620001ff575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6064905060648160ff166009600a6200029c9190620009e7565b64174876e800620002ae919062000a37565b620002ba919062000a37565b620002c6919062000aae565b600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620003a3919062000af6565b60405180910390a3600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546009600a620003f99190620009e7565b64174876e8006200040b919062000a37565b62000417919062000b11565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620004f4919062000af6565b60405180910390a36001600d5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505062000b4b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008df57808604811115620008b757620008b662000855565b5b6001851615620008c75780820291505b8081029050620008d78562000882565b945062000897565b94509492505050565b5f82620008f95760019050620009cb565b8162000908575f9050620009cb565b81600181146200092157600281146200092c5762000962565b6001915050620009cb565b60ff84111562000941576200094062000855565b5b8360020a9150848211156200095b576200095a62000855565b5b50620009cb565b5060208310610133831016604e8410600b84101617156200099c5782820a90508381111562000996576200099562000855565b5b620009cb565b620009ab84848460016200088e565b92509050818404811115620009c557620009c462000855565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009f382620009d2565b915062000a0083620009db565b925062000a2f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008e8565b905092915050565b5f62000a4382620009d2565b915062000a5083620009d2565b925082820262000a6081620009d2565b9150828204841483151762000a7a5762000a7962000855565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000aba82620009d2565b915062000ac783620009d2565b92508262000ada5762000ad962000a81565b5b828204905092915050565b62000af081620009d2565b82525050565b5f60208201905062000b0b5f83018462000ae5565b92915050565b5f62000b1d82620009d2565b915062000b2a83620009d2565b925082820390508181111562000b455762000b4462000855565b5b92915050565b6144848062000b595f395ff3fe6080604052600436106101ba575f3560e01c806375f0a874116100eb578063aacebbe311610089578063dd62ed3e11610063578063dd62ed3e146105dc578063e8078d9414610618578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063aacebbe314610560578063b3de9b5d14610588578063c3f70b52146105b2576101c1565b806395d89b41116100c557806395d89b41146104a8578063a5e992bb146104d2578063a8a936dd146104fc578063a9059cbb14610524576101c1565b806375f0a8741461043e5780638a8c523c146104685780638da5cb5b1461047e576101c1565b806330449efd116101585780634706240211610132578063470624021461039a5780634fcd2446146103c457806370a08231146103ec578063715018a614610428576101c1565b806330449efd1461030b578063313ce56714610348578063368f480014610372576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632b14ca56146102b95780632fb528ba146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e69190613169565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061321a565b6106b1565b6040516102229190613272565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c919061329a565b60405180910390f35b348015610260575f80fd5b5061027b600480360381019061027691906132dd565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e919061332d565b610995565b6040516102b09190613272565b60405180910390f35b3480156102c4575f80fd5b506102cd610a80565b6040516102da9190613398565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906133db565b610a95565b005b348015610316575f80fd5b50610331600480360381019061032c9190613419565b610c74565b60405161033f929190613444565b60405180910390f35b348015610353575f80fd5b5061035c610d13565b6040516103699190613398565b60405180910390f35b34801561037d575f80fd5b50610398600480360381019061039391906134a2565b610d1b565b005b3480156103a5575f80fd5b506103ae610ed8565b6040516103bb9190613398565b60405180910390f35b3480156103cf575f80fd5b506103ea60048036038101906103e591906134e0565b610eee565b005b3480156103f7575f80fd5b50610412600480360381019061040d9190613419565b611006565b60405161041f919061329a565b60405180910390f35b348015610433575f80fd5b5061043c61104c565b005b348015610449575f80fd5b50610452611151565b60405161045f919061352d565b60405180910390f35b348015610473575f80fd5b5061047c611179565b005b348015610489575f80fd5b5061049261125f565b60405161049f919061352d565b60405180910390f35b3480156104b3575f80fd5b506104bc611286565b6040516104c99190613169565b60405180910390f35b3480156104dd575f80fd5b506104e66112c3565b6040516104f3919061329a565b60405180910390f35b348015610507575f80fd5b50610522600480360381019061051d919061357f565b6112cc565b005b34801561052f575f80fd5b5061054a6004803603810190610545919061321a565b611432565b6040516105579190613272565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190613419565b61148e565b005b348015610593575f80fd5b5061059c611692565b6040516105a9919061329a565b60405180910390f35b3480156105bd575f80fd5b506105c661169b565b6040516105d3919061329a565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906135e3565b6116a4565b60405161060f919061329a565b60405180910390f35b610620611726565b005b34801561062d575f80fd5b506106486004803603810190610643919061365c565b611de5565b005b348015610655575f80fd5b5061065e611eeb565b60405161066b919061329a565b60405180910390f35b60606040518060400160405280600f81526020017f50726f6f66206f6620506f6e6430780000000000000000000000000000000000815250905090565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c919061329a565b60405180910390a36001905092915050565b5f6009600a6107ad91906137e3565b64174876e8006107bd919061382d565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610846906138b8565b60405180910390fd5b80806108585750815b156108e85760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613920565b60405180910390fd5b5b81600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611ef4565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613988565b60405180910390fd5b81600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a6591906139a6565b92505081905550610a77848484611fc6565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906138b8565b60405180910390fd5b6001601360016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a23565b60405180910390fd5b5f60648360ff16600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd3919061382d565b610bdd9190613a6e565b90506009600a610bed91906137e3565b811115610bfe57610bfd81612687565b5b8115610c55575f4790505f8111610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613ae8565b60405180910390fd5b610c538161289a565b505b505f601360016101000a81548160ff0219169083151502179055505050565b5f80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f906138b8565b60405180910390fd5b5f60016103e88461ffff166009600a610dc191906137e3565b64174876e800610dd1919061382d565b610ddb919061382d565b610de59190613a6e565b610def9190613b06565b9050600554811015610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90613b83565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610e5691906137e3565b64174876e800610e66919061382d565b610e70919061382d565b610e7a9190613a6e565b610e849190613b06565b9050600654811015610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290613beb565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f72906138b8565b60405180910390fd5b600a8183610f899190613c09565b60ff161115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490613c87565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d0906138b8565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051611147919061352d565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd906138b8565b60405180910390fd5b60135f9054906101000a900460ff1615611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90613cef565b60405180910390fd5b61125d612902565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f504f500000000000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906138b8565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61137591906137e3565b64174876e800611385919061382d565b61138f919061382d565b6113999190613a6e565b6007819055508063ffffffff168263ffffffff166009600a6113bb91906137e3565b64174876e8006113cb919061382d565b6113d5919061382d565b6113df9190613a6e565b600881905550600754600854101561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613d57565b60405180910390fd5b50505050565b5f61143c33611ef4565b61147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290613988565b60405180910390fd5b611486338484611fc6565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611512906138b8565b60405180910390fd5b60125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613dbf565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906138b8565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490613e27565b60405180910390fd5b60135f9054906101000a900460ff16156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613cef565b60405180910390fd5b5f3411806118b957505f47115b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90613e8f565b60405180910390fd5b5f600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90613ef7565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a059190613f29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aaf9190613f29565b6040518363ffffffff1660e01b8152600401611acc929190613f54565b6020604051808303815f875af1158015611ae8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0c9190613f29565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611b92600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054476129b3565b600954600a5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c0191906139a6565b925050819055505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611cd19190613fbf565b5f604051808303815f865af19150503d805f8114611d0a576040519150601f19603f3d011682016040523d82523d5f602084013e611d0f565b606091505b5050905080611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a9061401f565b60405180910390fd5b8060125f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e69906138b8565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611ee09190614098565b60405180910390a150565b5f600654905090565b5f805f905060135f9054906101000a900460ff1615611f165760019050611fbd565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fb25750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611fbc57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906140fb565b60405180910390fd5b60135f9054906101000a900460ff1661212457600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120e45750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a90613988565b60405180910390fd5b5b601360019054906101000a900460ff16158015612187575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561219557612194612a8a565b5b600454431061242b57600254431080156121f5575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612269573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90614163565b60405180910390fd5b5b6102586002546122799190613b06565b431080156122cd575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561230557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561242a576001600c5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166123729190613c09565b92506101000a81548160ff021916908360ff1602179055506002600c5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614163565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561249357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124ea57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576124fa848484612bac565b612539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612530906141cb565b60405180910390fd5b5b5f612546858585612d34565b90505f818461255591906139a6565b905083600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125a391906139a6565b925050819055508160095f8282546125bb9190613b06565b9250508190555080600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461260e9190613b06565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612672919061329a565b60405180910390a36001925050509392505050565b61269081612efd565b5f600267ffffffffffffffff8111156126ac576126ab6141e9565b5b6040519080825280602002602001820160405280156126da5781602001602082028036833780820191505090505b50905030815f815181106126f1576126f0614216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612795573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b99190613f29565b816001815181106127cd576127cc614216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612869959493929190614333565b5f604051808303815f87803b158015612880575f80fd5b505af1158015612892573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128fe573d5f803e3d5ffd5b5050565b60646009600a61291291906137e3565b64174876e800612922919061382d565b600261292e919061382d565b6129389190613a6e565b60058190555060646009600a61294e91906137e3565b64174876e80061295e919061382d565b600261296a919061382d565b6129749190613a6e565b600681905550600160135f6101000a81548160ff021916908315150217905550436004819055506004546002546129ab9190613b06565b600281905550565b6129bc82612efd565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a429695949392919061438b565b60606040518083038185885af1158015612a5e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a8391906143fe565b5050505050565b6001601360016101000a81548160ff0219169083151502179055505f60095490506007548110158015612ac8575060135f9054906101000a900460ff165b15612b8f576008548110612adc5760085490505b5f8190506009600a612aee91906137e3565b6001612afa919061382d565b811115612b765781600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b4d9190613b06565b92505081905550612b5d81612687565b8160095f828254612b6e91906139a6565b925050819055505b5f4790505f811115612b8c57612b8b8161289a565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff168015612c145750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c675750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d2957600554831115612c7e575f9050612d28565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d1e575060065483600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d1c9190613b06565b115b15612d27575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff161580612d975750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612de85750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612df5575f9050612ef2565b60125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e75576064600360019054906101000a900460ff1660ff1684612e64919061382d565b612e6e9190613a6e565b9050612ef1565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ef057606460035f9054906101000a900460ff1660ff1684612ee3919061382d565b612eed9190613a6e565b90505b5b5b809150509392505050565b80600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156130dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516130d3919061329a565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131165780820151818401526020810190506130fb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61313b826130df565b61314581856130e9565b93506131558185602086016130f9565b61315e81613121565b840191505092915050565b5f6020820190508181035f8301526131818184613131565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131b68261318d565b9050919050565b6131c6816131ac565b81146131d0575f80fd5b50565b5f813590506131e1816131bd565b92915050565b5f819050919050565b6131f9816131e7565b8114613203575f80fd5b50565b5f81359050613214816131f0565b92915050565b5f80604083850312156132305761322f613189565b5b5f61323d858286016131d3565b925050602061324e85828601613206565b9150509250929050565b5f8115159050919050565b61326c81613258565b82525050565b5f6020820190506132855f830184613263565b92915050565b613294816131e7565b82525050565b5f6020820190506132ad5f83018461328b565b92915050565b6132bc81613258565b81146132c6575f80fd5b50565b5f813590506132d7816132b3565b92915050565b5f805f606084860312156132f4576132f3613189565b5b5f613301868287016131d3565b9350506020613312868287016132c9565b9250506040613323868287016132c9565b9150509250925092565b5f805f6060848603121561334457613343613189565b5b5f613351868287016131d3565b9350506020613362868287016131d3565b925050604061337386828701613206565b9150509250925092565b5f60ff82169050919050565b6133928161337d565b82525050565b5f6020820190506133ab5f830184613389565b92915050565b6133ba8161337d565b81146133c4575f80fd5b50565b5f813590506133d5816133b1565b92915050565b5f80604083850312156133f1576133f0613189565b5b5f6133fe858286016133c7565b925050602061340f858286016132c9565b9150509250929050565b5f6020828403121561342e5761342d613189565b5b5f61343b848285016131d3565b91505092915050565b5f6040820190506134575f830185613263565b6134646020830184613263565b9392505050565b5f61ffff82169050919050565b6134818161346b565b811461348b575f80fd5b50565b5f8135905061349c81613478565b92915050565b5f80604083850312156134b8576134b7613189565b5b5f6134c58582860161348e565b92505060206134d68582860161348e565b9150509250929050565b5f80604083850312156134f6576134f5613189565b5b5f613503858286016133c7565b9250506020613514858286016133c7565b9150509250929050565b613527816131ac565b82525050565b5f6020820190506135405f83018461351e565b92915050565b5f63ffffffff82169050919050565b61355e81613546565b8114613568575f80fd5b50565b5f8135905061357981613555565b92915050565b5f805f806080858703121561359757613596613189565b5b5f6135a48782880161356b565b94505060206135b58782880161356b565b93505060406135c68782880161356b565b92505060606135d78782880161356b565b91505092959194509250565b5f80604083850312156135f9576135f8613189565b5b5f613606858286016131d3565b9250506020613617858286016131d3565b9150509250929050565b5f61362b8261318d565b9050919050565b61363b81613621565b8114613645575f80fd5b50565b5f8135905061365681613632565b92915050565b5f6020828403121561367157613670613189565b5b5f61367e84828501613648565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613709578086048111156136e5576136e4613687565b5b60018516156136f45780820291505b8081029050613702856136b4565b94506136c9565b94509492505050565b5f8261372157600190506137dc565b8161372e575f90506137dc565b8160018114613744576002811461374e5761377d565b60019150506137dc565b60ff8411156137605761375f613687565b5b8360020a91508482111561377757613776613687565b5b506137dc565b5060208310610133831016604e8410600b84101617156137b25782820a9050838111156137ad576137ac613687565b5b6137dc565b6137bf84848460016136c0565b925090508184048111156137d6576137d5613687565b5b81810290505b9392505050565b5f6137ed826131e7565b91506137f88361337d565b92506138257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613712565b905092915050565b5f613837826131e7565b9150613842836131e7565b9250828202613850816131e7565b9150828204841483151761386757613866613687565b5b5092915050565b7f4f6e6c794f776e65722063616e2063616c6c20746869730000000000000000005f82015250565b5f6138a26017836130e9565b91506138ad8261386e565b602082019050919050565b5f6020820190508181035f8301526138cf81613896565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61390a6010836130e9565b9150613915826138d6565b602082019050919050565b5f6020820190508181035f830152613937816138fe565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f6139726014836130e9565b915061397d8261393e565b602082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b5f6139b0826131e7565b91506139bb836131e7565b92508282039050818111156139d3576139d2613687565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f613a0d601a836130e9565b9150613a18826139d9565b602082019050919050565b5f6020820190508181035f830152613a3a81613a01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a78826131e7565b9150613a83836131e7565b925082613a9357613a92613a41565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613ad26006836130e9565b9150613add82613a9e565b602082019050919050565b5f6020820190508181035f830152613aff81613ac6565b9050919050565b5f613b10826131e7565b9150613b1b836131e7565b9250828201905080821115613b3357613b32613687565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613b6d600a836130e9565b9150613b7882613b39565b602082019050919050565b5f6020820190508181035f830152613b9a81613b61565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613bd5600e836130e9565b9150613be082613ba1565b602082019050919050565b5f6020820190508181035f830152613c0281613bc9565b9050919050565b5f613c138261337d565b9150613c1e8361337d565b9250828201905060ff811115613c3757613c36613687565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613c716012836130e9565b9150613c7c82613c3d565b602082019050919050565b5f6020820190508181035f830152613c9e81613c65565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613cd9600c836130e9565b9150613ce482613ca5565b602082019050919050565b5f6020820190508181035f830152613d0681613ccd565b9050919050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613d41600d836130e9565b9150613d4c82613d0d565b602082019050919050565b5f6020820190508181035f830152613d6e81613d35565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613da96017836130e9565b9150613db482613d75565b602082019050919050565b5f6020820190508181035f830152613dd681613d9d565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613e11600a836130e9565b9150613e1c82613ddd565b602082019050919050565b5f6020820190508181035f830152613e3e81613e05565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f613e796010836130e9565b9150613e8482613e45565b602082019050919050565b5f6020820190508181035f830152613ea681613e6d565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f613ee1600f836130e9565b9150613eec82613ead565b602082019050919050565b5f6020820190508181035f830152613f0e81613ed5565b9050919050565b5f81519050613f23816131bd565b92915050565b5f60208284031215613f3e57613f3d613189565b5b5f613f4b84828501613f15565b91505092915050565b5f604082019050613f675f83018561351e565b613f74602083018461351e565b9392505050565b5f81519050919050565b5f81905092915050565b5f613f9982613f7b565b613fa38185613f85565b9350613fb38185602086016130f9565b80840191505092915050565b5f613fca8284613f8f565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6140096010836130e9565b915061401482613fd5565b602082019050919050565b5f6020820190508181035f83015261403681613ffd565b9050919050565b5f819050919050565b5f61406061405b6140568461318d565b61403d565b61318d565b9050919050565b5f61407182614046565b9050919050565b5f61408282614067565b9050919050565b61409281614078565b82525050565b5f6020820190506140ab5f830184614089565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6140e5601a836130e9565b91506140f0826140b1565b602082019050919050565b5f6020820190508181035f830152614112816140d9565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61414d6009836130e9565b915061415882614119565b602082019050919050565b5f6020820190508181035f83015261417a81614141565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6141b5600e836130e9565b91506141c082614181565b602082019050919050565b5f6020820190508181035f8301526141e2816141a9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61426661426161425c84614243565b61403d565b6131e7565b9050919050565b6142768161424c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142ae816131ac565b82525050565b5f6142bf83836142a5565b60208301905092915050565b5f602082019050919050565b5f6142e18261427c565b6142eb8185614286565b93506142f683614296565b805f5b8381101561432657815161430d88826142b4565b9750614318836142cb565b9250506001810190506142f9565b5085935050505092915050565b5f60a0820190506143465f83018861328b565b614353602083018761426d565b818103604083015261436581866142d7565b9050614374606083018561351e565b614381608083018461328b565b9695505050505050565b5f60c08201905061439e5f83018961351e565b6143ab602083018861328b565b6143b8604083018761426d565b6143c5606083018661426d565b6143d2608083018561351e565b6143df60a083018461328b565b979650505050505050565b5f815190506143f8816131f0565b92915050565b5f805f6060848603121561441557614414613189565b5b5f614422868287016143ea565b9350506020614433868287016143ea565b9250506040614444868287016143ea565b915050925092509256fea264697066735822122046411509b17c62ee754dfacbe26d51ef398ec6de4afdf41e00758019dd798b1c64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806375f0a874116100eb578063aacebbe311610089578063dd62ed3e11610063578063dd62ed3e146105dc578063e8078d9414610618578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063aacebbe314610560578063b3de9b5d14610588578063c3f70b52146105b2576101c1565b806395d89b41116100c557806395d89b41146104a8578063a5e992bb146104d2578063a8a936dd146104fc578063a9059cbb14610524576101c1565b806375f0a8741461043e5780638a8c523c146104685780638da5cb5b1461047e576101c1565b806330449efd116101585780634706240211610132578063470624021461039a5780634fcd2446146103c457806370a08231146103ec578063715018a614610428576101c1565b806330449efd1461030b578063313ce56714610348578063368f480014610372576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632b14ca56146102b95780632fb528ba146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e69190613169565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061321a565b6106b1565b6040516102229190613272565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c919061329a565b60405180910390f35b348015610260575f80fd5b5061027b600480360381019061027691906132dd565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e919061332d565b610995565b6040516102b09190613272565b60405180910390f35b3480156102c4575f80fd5b506102cd610a80565b6040516102da9190613398565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906133db565b610a95565b005b348015610316575f80fd5b50610331600480360381019061032c9190613419565b610c74565b60405161033f929190613444565b60405180910390f35b348015610353575f80fd5b5061035c610d13565b6040516103699190613398565b60405180910390f35b34801561037d575f80fd5b50610398600480360381019061039391906134a2565b610d1b565b005b3480156103a5575f80fd5b506103ae610ed8565b6040516103bb9190613398565b60405180910390f35b3480156103cf575f80fd5b506103ea60048036038101906103e591906134e0565b610eee565b005b3480156103f7575f80fd5b50610412600480360381019061040d9190613419565b611006565b60405161041f919061329a565b60405180910390f35b348015610433575f80fd5b5061043c61104c565b005b348015610449575f80fd5b50610452611151565b60405161045f919061352d565b60405180910390f35b348015610473575f80fd5b5061047c611179565b005b348015610489575f80fd5b5061049261125f565b60405161049f919061352d565b60405180910390f35b3480156104b3575f80fd5b506104bc611286565b6040516104c99190613169565b60405180910390f35b3480156104dd575f80fd5b506104e66112c3565b6040516104f3919061329a565b60405180910390f35b348015610507575f80fd5b50610522600480360381019061051d919061357f565b6112cc565b005b34801561052f575f80fd5b5061054a6004803603810190610545919061321a565b611432565b6040516105579190613272565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190613419565b61148e565b005b348015610593575f80fd5b5061059c611692565b6040516105a9919061329a565b60405180910390f35b3480156105bd575f80fd5b506105c661169b565b6040516105d3919061329a565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906135e3565b6116a4565b60405161060f919061329a565b60405180910390f35b610620611726565b005b34801561062d575f80fd5b506106486004803603810190610643919061365c565b611de5565b005b348015610655575f80fd5b5061065e611eeb565b60405161066b919061329a565b60405180910390f35b60606040518060400160405280600f81526020017f50726f6f66206f6620506f6e6430780000000000000000000000000000000000815250905090565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c919061329a565b60405180910390a36001905092915050565b5f6009600a6107ad91906137e3565b64174876e8006107bd919061382d565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610846906138b8565b60405180910390fd5b80806108585750815b156108e85760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613920565b60405180910390fd5b5b81600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611ef4565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613988565b60405180910390fd5b81600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a6591906139a6565b92505081905550610a77848484611fc6565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906138b8565b60405180910390fd5b6001601360016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a23565b60405180910390fd5b5f60648360ff16600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd3919061382d565b610bdd9190613a6e565b90506009600a610bed91906137e3565b811115610bfe57610bfd81612687565b5b8115610c55575f4790505f8111610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613ae8565b60405180910390fd5b610c538161289a565b505b505f601360016101000a81548160ff0219169083151502179055505050565b5f80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f906138b8565b60405180910390fd5b5f60016103e88461ffff166009600a610dc191906137e3565b64174876e800610dd1919061382d565b610ddb919061382d565b610de59190613a6e565b610def9190613b06565b9050600554811015610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90613b83565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610e5691906137e3565b64174876e800610e66919061382d565b610e70919061382d565b610e7a9190613a6e565b610e849190613b06565b9050600654811015610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290613beb565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f72906138b8565b60405180910390fd5b600a8183610f899190613c09565b60ff161115610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490613c87565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d0906138b8565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051611147919061352d565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd906138b8565b60405180910390fd5b60135f9054906101000a900460ff1615611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90613cef565b60405180910390fd5b61125d612902565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f504f500000000000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906138b8565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61137591906137e3565b64174876e800611385919061382d565b61138f919061382d565b6113999190613a6e565b6007819055508063ffffffff168263ffffffff166009600a6113bb91906137e3565b64174876e8006113cb919061382d565b6113d5919061382d565b6113df9190613a6e565b600881905550600754600854101561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613d57565b60405180910390fd5b50505050565b5f61143c33611ef4565b61147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290613988565b60405180910390fd5b611486338484611fc6565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611512906138b8565b60405180910390fd5b60125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613dbf565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906138b8565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490613e27565b60405180910390fd5b60135f9054906101000a900460ff16156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613cef565b60405180910390fd5b5f3411806118b957505f47115b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90613e8f565b60405180910390fd5b5f600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90613ef7565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a059190613f29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aaf9190613f29565b6040518363ffffffff1660e01b8152600401611acc929190613f54565b6020604051808303815f875af1158015611ae8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0c9190613f29565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611b92600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054476129b3565b600954600a5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c0191906139a6565b925050819055505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611cd19190613fbf565b5f604051808303815f865af19150503d805f8114611d0a576040519150601f19603f3d011682016040523d82523d5f602084013e611d0f565b606091505b5050905080611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a9061401f565b60405180910390fd5b8060125f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e69906138b8565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611ee09190614098565b60405180910390a150565b5f600654905090565b5f805f905060135f9054906101000a900460ff1615611f165760019050611fbd565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fb25750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611fbc57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906140fb565b60405180910390fd5b60135f9054906101000a900460ff1661212457600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120e45750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a90613988565b60405180910390fd5b5b601360019054906101000a900460ff16158015612187575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561219557612194612a8a565b5b600454431061242b57600254431080156121f5575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612269573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90614163565b60405180910390fd5b5b6102586002546122799190613b06565b431080156122cd575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561230557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561242a576001600c5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166123729190613c09565b92506101000a81548160ff021916908360ff1602179055506002600c5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614163565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561249357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124ea57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576124fa848484612bac565b612539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612530906141cb565b60405180910390fd5b5b5f612546858585612d34565b90505f818461255591906139a6565b905083600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125a391906139a6565b925050819055508160095f8282546125bb9190613b06565b9250508190555080600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461260e9190613b06565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612672919061329a565b60405180910390a36001925050509392505050565b61269081612efd565b5f600267ffffffffffffffff8111156126ac576126ab6141e9565b5b6040519080825280602002602001820160405280156126da5781602001602082028036833780820191505090505b50905030815f815181106126f1576126f0614216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612795573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b99190613f29565b816001815181106127cd576127cc614216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612869959493929190614333565b5f604051808303815f87803b158015612880575f80fd5b505af1158015612892573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128fe573d5f803e3d5ffd5b5050565b60646009600a61291291906137e3565b64174876e800612922919061382d565b600261292e919061382d565b6129389190613a6e565b60058190555060646009600a61294e91906137e3565b64174876e80061295e919061382d565b600261296a919061382d565b6129749190613a6e565b600681905550600160135f6101000a81548160ff021916908315150217905550436004819055506004546002546129ab9190613b06565b600281905550565b6129bc82612efd565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a429695949392919061438b565b60606040518083038185885af1158015612a5e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a8391906143fe565b5050505050565b6001601360016101000a81548160ff0219169083151502179055505f60095490506007548110158015612ac8575060135f9054906101000a900460ff165b15612b8f576008548110612adc5760085490505b5f8190506009600a612aee91906137e3565b6001612afa919061382d565b811115612b765781600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b4d9190613b06565b92505081905550612b5d81612687565b8160095f828254612b6e91906139a6565b925050819055505b5f4790505f811115612b8c57612b8b8161289a565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff168015612c145750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c675750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d2957600554831115612c7e575f9050612d28565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d1e575060065483600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d1c9190613b06565b115b15612d27575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff161580612d975750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612de85750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612df5575f9050612ef2565b60125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e75576064600360019054906101000a900460ff1660ff1684612e64919061382d565b612e6e9190613a6e565b9050612ef1565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ef057606460035f9054906101000a900460ff1660ff1684612ee3919061382d565b612eed9190613a6e565b90505b5b5b809150509392505050565b80600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156130dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516130d3919061329a565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131165780820151818401526020810190506130fb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61313b826130df565b61314581856130e9565b93506131558185602086016130f9565b61315e81613121565b840191505092915050565b5f6020820190508181035f8301526131818184613131565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131b68261318d565b9050919050565b6131c6816131ac565b81146131d0575f80fd5b50565b5f813590506131e1816131bd565b92915050565b5f819050919050565b6131f9816131e7565b8114613203575f80fd5b50565b5f81359050613214816131f0565b92915050565b5f80604083850312156132305761322f613189565b5b5f61323d858286016131d3565b925050602061324e85828601613206565b9150509250929050565b5f8115159050919050565b61326c81613258565b82525050565b5f6020820190506132855f830184613263565b92915050565b613294816131e7565b82525050565b5f6020820190506132ad5f83018461328b565b92915050565b6132bc81613258565b81146132c6575f80fd5b50565b5f813590506132d7816132b3565b92915050565b5f805f606084860312156132f4576132f3613189565b5b5f613301868287016131d3565b9350506020613312868287016132c9565b9250506040613323868287016132c9565b9150509250925092565b5f805f6060848603121561334457613343613189565b5b5f613351868287016131d3565b9350506020613362868287016131d3565b925050604061337386828701613206565b9150509250925092565b5f60ff82169050919050565b6133928161337d565b82525050565b5f6020820190506133ab5f830184613389565b92915050565b6133ba8161337d565b81146133c4575f80fd5b50565b5f813590506133d5816133b1565b92915050565b5f80604083850312156133f1576133f0613189565b5b5f6133fe858286016133c7565b925050602061340f858286016132c9565b9150509250929050565b5f6020828403121561342e5761342d613189565b5b5f61343b848285016131d3565b91505092915050565b5f6040820190506134575f830185613263565b6134646020830184613263565b9392505050565b5f61ffff82169050919050565b6134818161346b565b811461348b575f80fd5b50565b5f8135905061349c81613478565b92915050565b5f80604083850312156134b8576134b7613189565b5b5f6134c58582860161348e565b92505060206134d68582860161348e565b9150509250929050565b5f80604083850312156134f6576134f5613189565b5b5f613503858286016133c7565b9250506020613514858286016133c7565b9150509250929050565b613527816131ac565b82525050565b5f6020820190506135405f83018461351e565b92915050565b5f63ffffffff82169050919050565b61355e81613546565b8114613568575f80fd5b50565b5f8135905061357981613555565b92915050565b5f805f806080858703121561359757613596613189565b5b5f6135a48782880161356b565b94505060206135b58782880161356b565b93505060406135c68782880161356b565b92505060606135d78782880161356b565b91505092959194509250565b5f80604083850312156135f9576135f8613189565b5b5f613606858286016131d3565b9250506020613617858286016131d3565b9150509250929050565b5f61362b8261318d565b9050919050565b61363b81613621565b8114613645575f80fd5b50565b5f8135905061365681613632565b92915050565b5f6020828403121561367157613670613189565b5b5f61367e84828501613648565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613709578086048111156136e5576136e4613687565b5b60018516156136f45780820291505b8081029050613702856136b4565b94506136c9565b94509492505050565b5f8261372157600190506137dc565b8161372e575f90506137dc565b8160018114613744576002811461374e5761377d565b60019150506137dc565b60ff8411156137605761375f613687565b5b8360020a91508482111561377757613776613687565b5b506137dc565b5060208310610133831016604e8410600b84101617156137b25782820a9050838111156137ad576137ac613687565b5b6137dc565b6137bf84848460016136c0565b925090508184048111156137d6576137d5613687565b5b81810290505b9392505050565b5f6137ed826131e7565b91506137f88361337d565b92506138257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613712565b905092915050565b5f613837826131e7565b9150613842836131e7565b9250828202613850816131e7565b9150828204841483151761386757613866613687565b5b5092915050565b7f4f6e6c794f776e65722063616e2063616c6c20746869730000000000000000005f82015250565b5f6138a26017836130e9565b91506138ad8261386e565b602082019050919050565b5f6020820190508181035f8301526138cf81613896565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61390a6010836130e9565b9150613915826138d6565b602082019050919050565b5f6020820190508181035f830152613937816138fe565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f6139726014836130e9565b915061397d8261393e565b602082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b5f6139b0826131e7565b91506139bb836131e7565b92508282039050818111156139d3576139d2613687565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f613a0d601a836130e9565b9150613a18826139d9565b602082019050919050565b5f6020820190508181035f830152613a3a81613a01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a78826131e7565b9150613a83836131e7565b925082613a9357613a92613a41565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613ad26006836130e9565b9150613add82613a9e565b602082019050919050565b5f6020820190508181035f830152613aff81613ac6565b9050919050565b5f613b10826131e7565b9150613b1b836131e7565b9250828201905080821115613b3357613b32613687565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613b6d600a836130e9565b9150613b7882613b39565b602082019050919050565b5f6020820190508181035f830152613b9a81613b61565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613bd5600e836130e9565b9150613be082613ba1565b602082019050919050565b5f6020820190508181035f830152613c0281613bc9565b9050919050565b5f613c138261337d565b9150613c1e8361337d565b9250828201905060ff811115613c3757613c36613687565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613c716012836130e9565b9150613c7c82613c3d565b602082019050919050565b5f6020820190508181035f830152613c9e81613c65565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613cd9600c836130e9565b9150613ce482613ca5565b602082019050919050565b5f6020820190508181035f830152613d0681613ccd565b9050919050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613d41600d836130e9565b9150613d4c82613d0d565b602082019050919050565b5f6020820190508181035f830152613d6e81613d35565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613da96017836130e9565b9150613db482613d75565b602082019050919050565b5f6020820190508181035f830152613dd681613d9d565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613e11600a836130e9565b9150613e1c82613ddd565b602082019050919050565b5f6020820190508181035f830152613e3e81613e05565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f613e796010836130e9565b9150613e8482613e45565b602082019050919050565b5f6020820190508181035f830152613ea681613e6d565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f613ee1600f836130e9565b9150613eec82613ead565b602082019050919050565b5f6020820190508181035f830152613f0e81613ed5565b9050919050565b5f81519050613f23816131bd565b92915050565b5f60208284031215613f3e57613f3d613189565b5b5f613f4b84828501613f15565b91505092915050565b5f604082019050613f675f83018561351e565b613f74602083018461351e565b9392505050565b5f81519050919050565b5f81905092915050565b5f613f9982613f7b565b613fa38185613f85565b9350613fb38185602086016130f9565b80840191505092915050565b5f613fca8284613f8f565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6140096010836130e9565b915061401482613fd5565b602082019050919050565b5f6020820190508181035f83015261403681613ffd565b9050919050565b5f819050919050565b5f61406061405b6140568461318d565b61403d565b61318d565b9050919050565b5f61407182614046565b9050919050565b5f61408282614067565b9050919050565b61409281614078565b82525050565b5f6020820190506140ab5f830184614089565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6140e5601a836130e9565b91506140f0826140b1565b602082019050919050565b5f6020820190508181035f830152614112816140d9565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61414d6009836130e9565b915061415882614119565b602082019050919050565b5f6020820190508181035f83015261417a81614141565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6141b5600e836130e9565b91506141c082614181565b602082019050919050565b5f6020820190508181035f8301526141e2816141a9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61426661426161425c84614243565b61403d565b6131e7565b9050919050565b6142768161424c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142ae816131ac565b82525050565b5f6142bf83836142a5565b60208301905092915050565b5f602082019050919050565b5f6142e18261427c565b6142eb8185614286565b93506142f683614296565b805f5b8381101561432657815161430d88826142b4565b9750614318836142cb565b9250506001810190506142f9565b5085935050505092915050565b5f60a0820190506143465f83018861328b565b614353602083018761426d565b818103604083015261436581866142d7565b9050614374606083018561351e565b614381608083018461328b565b9695505050505050565b5f60c08201905061439e5f83018961351e565b6143ab602083018861328b565b6143b8604083018761426d565b6143c5606083018661426d565b6143d2608083018561351e565b6143df60a083018461328b565b979650505050505050565b5f815190506143f8816131f0565b92915050565b5f805f6060848603121561441557614414613189565b5b5f614422868287016143ea565b9350506020614433868287016143ea565b9250506040614444868287016143ea565b915050925092509256fea264697066735822122046411509b17c62ee754dfacbe26d51ef398ec6de4afdf41e00758019dd798b1c64736f6c63430008150033

Deployed Bytecode Sourcemap

1785:12316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4431:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4801:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4161:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10281:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5260:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10605:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13545:551;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10130:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4255:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11590:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10529:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10685:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4517:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;783:136;;;;;;;;;;;;;:::i;:::-;;10884:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6927:126;;;;;;;;;;;;;:::i;:::-;;549:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4341:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11511:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12034:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5025:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10979:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11434:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11347:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4644:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5900:756;;;:::i;:::-;;620:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11263:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:80;4479:13;4503:5;;;;;;;;;;;;;;;;;4496:12;;4431:80;:::o;4801:216::-;4876:4;4928:6;4893:11;:23;4905:10;4893:23;;;;;;;;;;;;;;;:32;4917:7;4893:32;;;;;;;;;;;;;;;:41;;;;4971:7;4950:37;;4959:10;4950:37;;;4980:6;4950:37;;;;;;:::i;:::-;;;;;;;;5005:4;4998:11;;4801:216;;;;:::o;4161:88::-;4216:7;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;4227:19;;4161:88;:::o;10281:240::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:8:::1;:18;;;;10391:6;10379:18;10375:69;;;10410:5;:10;10416:3;10410:10;;;;;;;;;;;;;;;;;;;;;;;;;10409:11;10401:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10375:69;10470:6;10454;:13;10462:3;10454:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;10505:8;10487;:15;10497:3;10487:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10281:240:::0;;;:::o;5260:307::-;5363:4;5388:29;5406:10;5388:17;:29::i;:::-;5380:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5492:6;5453:11;:23;5465:10;5453:23;;;;;;;;;;;;;;;:35;5477:10;5453:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;5516:43;5530:10;5542:8;5552:6;5516:13;:43::i;:::-;5509:50;;5260:307;;;;;:::o;10605:72::-;10646:5;10662:12;;;;;;;;;;;10655:19;;10605:72;:::o;13545:551::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3314:4:::1;3304:7;;:14;;;;;;;;;;;;;;;;;;13686:3:::2;13666:16;:23;;;;13658:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13731:22;13803:3;13784:16;13756:44;;:9;:25;13775:4;13756:25;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;:50;;;;:::i;:::-;13731:75;;1962:1;13838:2;:14;;;;:::i;:::-;13821;:31;13817:78;;;13856:36;13877:14;13856:20;:36::i;:::-;13817:78;13909:10;13905:184;;;13937:19;13959:21;13937:43;;14016:1;14003:11;:14;13995:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14044:32;14063:11;14044:17;:32::i;:::-;13921:168;13905:184;13647:449;3353:5:::1;3343:7;;:15;;;;;;;;;;;;;;;;;;13545:551:::0;;:::o;10130:143::-;10189:9;10200:11;10232:6;:14;10239:6;10232:14;;;;;;;;;;;;;;;;;;;;;;;;;10248:8;:16;10257:6;10248:16;;;;;;;;;;;;;;;;;;;;;;;;;10224:41;;;;10130:143;;;:::o;4255:80::-;4307:5;1962:1;4316:16;;4255:80;:::o;11590:436::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11689:16:::1;11749:1;11742:4;11723:16;11708:31;;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;11708:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11689:61;;11781:9;;11769:8;:21;;11761:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11828:8;11816:9;:20;;;;11847;11911:1;11904:4;11885:16;11870:31;;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;11870:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11847:65;;11947:13;;11931:12;:29;;11923:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12006:12;11990:13;:28;;;;11678:348;;11590:436:::0;;:::o;10529:70::-;10569:5;10585:11;;;;;;;;;;;10578:18;;10529:70;:::o;10685:189::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10781:2:::1;10772:5;10765:4;:12;;;;:::i;:::-;:18;;;;10757:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10831:4;10817:11;;:18;;;;;;;;;;;;;;;;;;10861:5;10846:12;;:20;;;;;;;;;;;;;;;;;;10685:189:::0;;:::o;4517:121::-;4583:7;4611:9;:18;4621:7;4611:18;;;;;;;;;;;;;;;;4604:25;;4517:121;;;:::o;783:136::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;860:1:::1;843:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;878:32;907:1;878:32;;;;;;:::i;:::-;;;;;;;;783:136::o:0;10884:87::-;10934:7;10952:16;;;;;;;;;;;10945:23;;10884:87;:::o;6927:126::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6991:12:::1;;;;;;;;;;;6990:13;6982:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7031:14;:12;:14::i;:::-;6927:126::o:0;549:65::-;587:7;605:6;;;;;;;;;;;598:13;;549:65;:::o;4341:84::-;4391:13;4415:7;;;;;;;;;;;;;;;;;4408:14;;4341:84;:::o;11511:71::-;11553:7;11571:8;;11564:15;;11511:71;:::o;12034:267::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12180:6:::1;12156:30;;12171:6;12156:21;;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;12156:21;;;;:::i;:::-;:30;;;;:::i;:::-;12145:8;:41;;;;12232:6;12208:30;;12223:6;12208:21;;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;12208:21;;;;:::i;:::-;:30;;;;:::i;:::-;12197:8;:41;;;;12267:8;;12257;;:18;;12249:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12034:267:::0;;;;:::o;5025:227::-;5104:4;5129:29;5147:10;5129:17;:29::i;:::-;5121:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5201:43;5215:10;5227:8;5237:6;5201:13;:43::i;:::-;5194:50;;5025:227;;;;:::o;10979:276::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11071:5:::1;:19;11077:12;11071:19;;;;;;;;;;;;;;;;;;;;;;;;;11070:20;11062:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11156:12;11129:16;;:40;;;;;;;;;;;;;;;;;;11203:4;11180:6;:20;11187:12;11180:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11243:4;11218:8;:22;11227:12;11218:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;10979:276:::0;:::o;11434:71::-;11476:7;11494:8;;11487:15;;11434:71;:::o;11347:79::-;11396:7;11414:9;;11407:16;;11347:79;:::o;4644:149::-;4728:7;4756:11;:19;4768:6;4756:19;;;;;;;;;;;;;;;:28;4776:7;4756:28;;;;;;;;;;;;;;;;4749:35;;4644:149;;;;:::o;5900:756::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3314:4:::1;3304:7;;:14;;;;;;;;;;;;;;;;;;6004:1:::2;5982:24;;:10;;;;;;;;;;;:24;;;5974:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6041:12;;;;;;;;;;;6040:13;6032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6101:1;6089:9;:13;:40;;;;6128:1;6106:21;:23;6089:40;6081:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;6194:1;6169:9;:24;6187:4;6169:24;;;;;;;;;;;;;;;;:26;6161:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6257:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6239:58;;;6306:4;6313:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6239:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6226:10;;:113;;;;;;;;;;;;;;;;;;6350:62;6364:9;:24;6382:4;6364:24;;;;;;;;;;;;;;;;6390:21;6350:13;:62::i;:::-;6448:11;;6423:9;:21;6433:10;;;;;;;;;;;6423:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;6471:20;6496:10;;;;;;;;;;;:15;;6512:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6496:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6470:77;;;6566:15;6558:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6633:15;6613:5;:17;6619:10;;;;;;;;;;;6613:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5963:693;3353:5:::1;3343:7;;:15;;;;;;;;;;;;;;;;;;5900:756::o:0;620:157::-;415:6;;;;;;;;;;401:20;;:10;:20;;;393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;713:8:::1;704:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;738:30;759:8;738:30;;;;;;:::i;:::-;;;;;;;;620:157:::0;:::o;11263:78::-;11307:7;11325:13;;11318:20;;11263:78;:::o;9327:289::-;9396:4;9412:16;9431:5;9412:24;;9452:12;;;;;;;;;;;9447:130;;;9483:4;9469:18;;9447:130;;;9510:6;:18;9517:10;9510:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;9532:8;:20;9541:10;9532:20;;;;;;;;;;;;;;;;;;;;;;;;;9510:42;9506:71;;;9570:4;9556:18;;9506:71;9447:130;9597:11;9590:18;;;9327:289;;;:::o;7326:1426::-;7417:4;7460:1;7442:20;;:6;:20;;;7434:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7509:12;;;;;;;;;;;7504:91;;7533:6;:14;7540:6;7533:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;7551:8;:16;7560:6;7551:16;;;;;;;;;;;;;;;;;;;;;;;;;7533:34;7525:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7504:91;7611:7;;;;;;;;;;;7610:8;:27;;;;;7622:5;:15;7628:8;7622:15;;;;;;;;;;;;;;;;;;;;;;;;;7610:27;7605:60;;;7642:20;:18;:20::i;:::-;7605:60;7698:10;;7682:12;:26;7677:558;;7745:12;;7730;:27;:44;;;;;7761:5;:13;7767:6;7761:13;;;;;;;;;;;;;;;;;;;;;;;;;7730:44;7726:194;;;7880:9;7868:21;;:8;:21;;;7860:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7726:194;7968:3;7953:12;;:18;;;;:::i;:::-;7938:12;:33;:52;;;;;7975:5;:15;7981:8;7975:15;;;;;;;;;;;;;;;;;;;;;;;;;7938:52;:79;;;;;8012:4;7994:23;;:6;:23;;;;7938:79;7934:290;;;8127:1;8089:10;:24;8100:12;8089:24;;;;;;;;;;;:34;8114:8;8089:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8193:1;8155:10;:24;8166:12;8155:24;;;;;;;;;;;:34;8180:8;8155:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;8147:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7934:290;7677:558;8270:4;8252:23;;:6;:23;;;;:52;;;;;8299:4;8279:25;;:8;:25;;;;8252:52;:72;;;;;8318:6;;;;;;;;;;8308:16;;:6;:16;;;;8252:72;8247:174;;;8351:38;8364:6;8372:8;8382:6;8351:12;:38::i;:::-;8343:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8247:174;8433:18;8454:39;8468:6;8476:8;8486:6;8454:13;:39::i;:::-;8433:60;;8504:23;8539:10;8530:6;:19;;;;:::i;:::-;8504:45;;8581:6;8560:9;:17;8570:6;8560:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8613:10;8598:11;;:25;;;;;;;:::i;:::-;;;;;;;;8657:15;8634:9;:19;8644:8;8634:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;8705:8;8688:34;;8697:6;8688:34;;;8715:6;8688:34;;;;;;:::i;:::-;;;;;;;;8740:4;8733:11;;;;7326:1426;;;;;:::o;13057:369::-;13127:27;13142:11;13127:14;:27::i;:::-;13165:21;13203:1;13189:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:40;;13235:4;13216;13221:1;13216:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13262:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13252:4;13257:1;13252:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;13299:18;;;;;;;;;;;:69;;;13369:11;13381:1;13383:4;13396;13402:15;13299:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13116:310;13057:369;:::o;13434:103::-;13496:16;;;;;;;;;;;:25;;:33;13522:6;13496:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13434:103;:::o;7061:257::-;7140:3;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;7121:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7105:9;:38;;;;7190:3;1962:1;2029:2;:13;;;;:::i;:::-;2010:15;:33;;;;:::i;:::-;7171:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7155:13;:38;;;;7219:4;7204:12;;:19;;;;;;;;;;;;;;;;;;7247:12;7234:10;:25;;;;7300:10;;7285:12;;:25;;;;:::i;:::-;7270:12;:40;;;;7061:257::o;6664:255::-;6752:28;6767:12;6752:14;:28::i;:::-;6791:18;;;;;;;;;;;:34;;;6833:13;6858:4;6865:12;6879:1;6882;6885:7;;;;;;;;;;;6894:15;6791:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6664:255;;:::o;12311:738::-;3314:4;3304:7;;:14;;;;;;;;;;;;;;;;;;12372:26:::1;12401:11;;12372:40;;12450:8;;12428:18;:30;;:46;;;;;12462:12;;;;;;;;;;;12428:46;12423:619;;;12519:8;;12497:18;:30;12492:72;;12553:8;;12532:29;;12492:72;12592:22;12617:18;12592:43;;1962:1;12676:2;:13;;;;:::i;:::-;12672:1;:17;;;;:::i;:::-;12655:14;:34;12651:229;;;12739:18;12711:9;:24;12729:4;12711:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;12776:36;12797:14;12776:20;:36::i;:::-;12846:18;12831:11;;:33;;;;;;;:::i;:::-;;;;;;;;12651:229;12894:27;12924:21;12894:51;;12985:1;12963:19;:23;12960:71;;;12990:38;13008:19;12990:17;:38::i;:::-;12960:71;12477:565;;12423:619;12361:688;3353:5:::0;3343:7;;:15;;;;;;;;;;;;;;;;;;12311:738::o;8760:559::-;8867:4;8884:21;8908:4;8884:28;;8928:12;;;;;;;;;;;:37;;;;;8945:8;:20;8954:10;8945:20;;;;;;;;;;;;;;;;;;;;;;;;;8944:21;8928:37;:60;;;;;8970:8;:18;8979:8;8970:18;;;;;;;;;;;;;;;;;;;;;;;;;8969:19;8928:60;8923:355;;;9028:9;;9011:14;:26;9006:261;;;9079:5;9060:24;;9006:261;;;9144:5;:15;9150:8;9144:15;;;;;;;;;;;;;;;;;;;;;;;;;9143:16;:74;;;;;9203:13;;9186:14;9164:9;:19;9174:8;9164:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;9143:74;9120:147;;;9259:5;9240:24;;9120:147;9006:261;8923:355;9295:16;9288:23;;;8760:559;;;;;:::o;9624:498::-;9725:7;9745:17;9789:12;;;;;;;;;;;9788:13;:35;;;;9805:6;:18;9812:10;9805:18;;;;;;;;;;;;;;;;;;;;;;;;;9788:35;:56;;;;9827:6;:17;9834:9;9827:17;;;;;;;;;;;;;;;;;;;;;;;;;9788:56;9783:303;;;9875:1;9863:13;;9783:303;;;9900:5;:17;9906:10;9900:17;;;;;;;;;;;;;;;;;;;;;;;;;9895:191;;;9971:3;9957:11;;;;;;;;;;;9948:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;9936:38;;9895:191;;;9999:5;:16;10005:9;9999:16;;;;;;;;;;;;;;;;;;;;;;;;;9994:92;;;10070:3;10055:12;;;;;;;;;;;10046:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10034:39;;9994:92;9895:191;9783:303;10105:9;10098:16;;;9624:498;;;;;:::o;5575:317::-;5695:12;5646:11;:26;5666:4;5646:26;;;;;;;;;;;;;;;:46;2978:42;5646:46;;;;;;;;;;;;;;;;:61;5641:244;;;5774:17;5725:11;:26;5745:4;5725:26;;;;;;;;;;;;;;;:46;2978:42;5725:46;;;;;;;;;;;;;;;:66;;;;2978:42;5811:62;;5828:4;5811:62;;;5855:17;5811:62;;;;;;:::i;:::-;;;;;;;;5641:244;5575:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:86::-;5332:7;5372:4;5365:5;5361:16;5350:27;;5297:86;;;:::o;5389:112::-;5472:22;5488:5;5472:22;:::i;:::-;5467:3;5460:35;5389:112;;:::o;5507:214::-;5596:4;5634:2;5623:9;5619:18;5611:26;;5647:67;5711:1;5700:9;5696:17;5687:6;5647:67;:::i;:::-;5507:214;;;;:::o;5727:118::-;5798:22;5814:5;5798:22;:::i;:::-;5791:5;5788:33;5778:61;;5835:1;5832;5825:12;5778:61;5727:118;:::o;5851:135::-;5895:5;5933:6;5920:20;5911:29;;5949:31;5974:5;5949:31;:::i;:::-;5851:135;;;;:::o;5992:464::-;6055:6;6063;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:51;6306:7;6297:6;6286:9;6282:22;6263:51;:::i;:::-;6253:61;;6209:115;6363:2;6389:50;6431:7;6422:6;6411:9;6407:22;6389:50;:::i;:::-;6379:60;;6334:115;5992:464;;;;;:::o;6462:329::-;6521:6;6570:2;6558:9;6549:7;6545:23;6541:32;6538:119;;;6576:79;;:::i;:::-;6538:119;6696:1;6721:53;6766:7;6757:6;6746:9;6742:22;6721:53;:::i;:::-;6711:63;;6667:117;6462:329;;;;:::o;6797:308::-;6906:4;6944:2;6933:9;6929:18;6921:26;;6957:65;7019:1;7008:9;7004:17;6995:6;6957:65;:::i;:::-;7032:66;7094:2;7083:9;7079:18;7070:6;7032:66;:::i;:::-;6797:308;;;;;:::o;7111:89::-;7147:7;7187:6;7180:5;7176:18;7165:29;;7111:89;;;:::o;7206:120::-;7278:23;7295:5;7278:23;:::i;:::-;7271:5;7268:34;7258:62;;7316:1;7313;7306:12;7258:62;7206:120;:::o;7332:137::-;7377:5;7415:6;7402:20;7393:29;;7431:32;7457:5;7431:32;:::i;:::-;7332:137;;;;:::o;7475:470::-;7541:6;7549;7598:2;7586:9;7577:7;7573:23;7569:32;7566:119;;;7604:79;;:::i;:::-;7566:119;7724:1;7749:52;7793:7;7784:6;7773:9;7769:22;7749:52;:::i;:::-;7739:62;;7695:116;7850:2;7876:52;7920:7;7911:6;7900:9;7896:22;7876:52;:::i;:::-;7866:62;;7821:117;7475:470;;;;;:::o;7951:466::-;8015:6;8023;8072:2;8060:9;8051:7;8047:23;8043:32;8040:119;;;8078:79;;:::i;:::-;8040:119;8198:1;8223:51;8266:7;8257:6;8246:9;8242:22;8223:51;:::i;:::-;8213:61;;8169:115;8323:2;8349:51;8392:7;8383:6;8372:9;8368:22;8349:51;:::i;:::-;8339:61;;8294:116;7951:466;;;;;:::o;8423:118::-;8510:24;8528:5;8510:24;:::i;:::-;8505:3;8498:37;8423:118;;:::o;8547:222::-;8640:4;8678:2;8667:9;8663:18;8655:26;;8691:71;8759:1;8748:9;8744:17;8735:6;8691:71;:::i;:::-;8547:222;;;;:::o;8775:93::-;8811:7;8851:10;8844:5;8840:22;8829:33;;8775:93;;;:::o;8874:120::-;8946:23;8963:5;8946:23;:::i;:::-;8939:5;8936:34;8926:62;;8984:1;8981;8974:12;8926:62;8874:120;:::o;9000:137::-;9045:5;9083:6;9070:20;9061:29;;9099:32;9125:5;9099:32;:::i;:::-;9000:137;;;;:::o;9143:757::-;9225:6;9233;9241;9249;9298:3;9286:9;9277:7;9273:23;9269:33;9266:120;;;9305:79;;:::i;:::-;9266:120;9425:1;9450:52;9494:7;9485:6;9474:9;9470:22;9450:52;:::i;:::-;9440:62;;9396:116;9551:2;9577:52;9621:7;9612:6;9601:9;9597:22;9577:52;:::i;:::-;9567:62;;9522:117;9678:2;9704:52;9748:7;9739:6;9728:9;9724:22;9704:52;:::i;:::-;9694:62;;9649:117;9805:2;9831:52;9875:7;9866:6;9855:9;9851:22;9831:52;:::i;:::-;9821:62;;9776:117;9143:757;;;;;;;:::o;9906:474::-;9974:6;9982;10031:2;10019:9;10010:7;10006:23;10002:32;9999:119;;;10037:79;;:::i;:::-;9999:119;10157:1;10182:53;10227:7;10218:6;10207:9;10203:22;10182:53;:::i;:::-;10172:63;;10128:117;10284:2;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10255:118;9906:474;;;;;:::o;10386:104::-;10431:7;10460:24;10478:5;10460:24;:::i;:::-;10449:35;;10386:104;;;:::o;10496:138::-;10577:32;10603:5;10577:32;:::i;:::-;10570:5;10567:43;10557:71;;10624:1;10621;10614:12;10557:71;10496:138;:::o;10640:155::-;10694:5;10732:6;10719:20;10710:29;;10748:41;10783:5;10748:41;:::i;:::-;10640:155;;;;:::o;10801:345::-;10868:6;10917:2;10905:9;10896:7;10892:23;10888:32;10885:119;;;10923:79;;:::i;:::-;10885:119;11043:1;11068:61;11121:7;11112:6;11101:9;11097:22;11068:61;:::i;:::-;11058:71;;11014:125;10801:345;;;;:::o;11152:180::-;11200:77;11197:1;11190:88;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11338:102;11380:8;11427:5;11424:1;11420:13;11399:34;;11338:102;;;:::o;11446:848::-;11507:5;11514:4;11538:6;11529:15;;11562:5;11553:14;;11576:712;11597:1;11587:8;11584:15;11576:712;;;11692:4;11687:3;11683:14;11677:4;11674:24;11671:50;;;11701:18;;:::i;:::-;11671:50;11751:1;11741:8;11737:16;11734:451;;;12166:4;12159:5;12155:16;12146:25;;11734:451;12216:4;12210;12206:15;12198:23;;12246:32;12269:8;12246:32;:::i;:::-;12234:44;;11576:712;;;11446:848;;;;;;;:::o;12300:1073::-;12354:5;12545:8;12535:40;;12566:1;12557:10;;12568:5;;12535:40;12594:4;12584:36;;12611:1;12602:10;;12613:5;;12584:36;12680:4;12728:1;12723:27;;;;12764:1;12759:191;;;;12673:277;;12723:27;12741:1;12732:10;;12743:5;;;12759:191;12804:3;12794:8;12791:17;12788:43;;;12811:18;;:::i;:::-;12788:43;12860:8;12857:1;12853:16;12844:25;;12895:3;12888:5;12885:14;12882:40;;;12902:18;;:::i;:::-;12882:40;12935:5;;;12673:277;;13059:2;13049:8;13046:16;13040:3;13034:4;13031:13;13027:36;13009:2;12999:8;12996:16;12991:2;12985:4;12982:12;12978:35;12962:111;12959:246;;;13115:8;13109:4;13105:19;13096:28;;13150:3;13143:5;13140:14;13137:40;;;13157:18;;:::i;:::-;13137:40;13190:5;;12959:246;13230:42;13268:3;13258:8;13252:4;13249:1;13230:42;:::i;:::-;13215:57;;;;13304:4;13299:3;13295:14;13288:5;13285:25;13282:51;;;13313:18;;:::i;:::-;13282:51;13362:4;13355:5;13351:16;13342:25;;12300:1073;;;;;;:::o;13379:281::-;13437:5;13461:23;13479:4;13461:23;:::i;:::-;13453:31;;13505:25;13521:8;13505:25;:::i;:::-;13493:37;;13549:104;13586:66;13576:8;13570:4;13549:104;:::i;:::-;13540:113;;13379:281;;;;:::o;13666:410::-;13706:7;13729:20;13747:1;13729:20;:::i;:::-;13724:25;;13763:20;13781:1;13763:20;:::i;:::-;13758:25;;13818:1;13815;13811:9;13840:30;13858:11;13840:30;:::i;:::-;13829:41;;14019:1;14010:7;14006:15;14003:1;14000:22;13980:1;13973:9;13953:83;13930:139;;14049:18;;:::i;:::-;13930:139;13714:362;13666:410;;;;:::o;14082:173::-;14222:25;14218:1;14210:6;14206:14;14199:49;14082:173;:::o;14261:366::-;14403:3;14424:67;14488:2;14483:3;14424:67;:::i;:::-;14417:74;;14500:93;14589:3;14500:93;:::i;:::-;14618:2;14613:3;14609:12;14602:19;;14261:366;;;:::o;14633:419::-;14799:4;14837:2;14826:9;14822:18;14814:26;;14886:9;14880:4;14876:20;14872:1;14861:9;14857:17;14850:47;14914:131;15040:4;14914:131;:::i;:::-;14906:139;;14633:419;;;:::o;15058:166::-;15198:18;15194:1;15186:6;15182:14;15175:42;15058:166;:::o;15230:366::-;15372:3;15393:67;15457:2;15452:3;15393:67;:::i;:::-;15386:74;;15469:93;15558:3;15469:93;:::i;:::-;15587:2;15582:3;15578:12;15571:19;;15230:366;;;:::o;15602:419::-;15768:4;15806:2;15795:9;15791:18;15783:26;;15855:9;15849:4;15845:20;15841:1;15830:9;15826:17;15819:47;15883:131;16009:4;15883:131;:::i;:::-;15875:139;;15602:419;;;:::o;16027:170::-;16167:22;16163:1;16155:6;16151:14;16144:46;16027:170;:::o;16203:366::-;16345:3;16366:67;16430:2;16425:3;16366:67;:::i;:::-;16359:74;;16442:93;16531:3;16442:93;:::i;:::-;16560:2;16555:3;16551:12;16544:19;;16203:366;;;:::o;16575:419::-;16741:4;16779:2;16768:9;16764:18;16756:26;;16828:9;16822:4;16818:20;16814:1;16803:9;16799:17;16792:47;16856:131;16982:4;16856:131;:::i;:::-;16848:139;;16575:419;;;:::o;17000:194::-;17040:4;17060:20;17078:1;17060:20;:::i;:::-;17055:25;;17094:20;17112:1;17094:20;:::i;:::-;17089:25;;17138:1;17135;17131:9;17123:17;;17162:1;17156:4;17153:11;17150:37;;;17167:18;;:::i;:::-;17150:37;17000:194;;;;:::o;17200:176::-;17340:28;17336:1;17328:6;17324:14;17317:52;17200:176;:::o;17382:366::-;17524:3;17545:67;17609:2;17604:3;17545:67;:::i;:::-;17538:74;;17621:93;17710:3;17621:93;:::i;:::-;17739:2;17734:3;17730:12;17723:19;;17382:366;;;:::o;17754:419::-;17920:4;17958:2;17947:9;17943:18;17935:26;;18007:9;18001:4;17997:20;17993:1;17982:9;17978:17;17971:47;18035:131;18161:4;18035:131;:::i;:::-;18027:139;;17754:419;;;:::o;18179:180::-;18227:77;18224:1;18217:88;18324:4;18321:1;18314:15;18348:4;18345:1;18338:15;18365:185;18405:1;18422:20;18440:1;18422:20;:::i;:::-;18417:25;;18456:20;18474:1;18456:20;:::i;:::-;18451:25;;18495:1;18485:35;;18500:18;;:::i;:::-;18485:35;18542:1;18539;18535:9;18530:14;;18365:185;;;;:::o;18556:156::-;18696:8;18692:1;18684:6;18680:14;18673:32;18556:156;:::o;18718:365::-;18860:3;18881:66;18945:1;18940:3;18881:66;:::i;:::-;18874:73;;18956:93;19045:3;18956:93;:::i;:::-;19074:2;19069:3;19065:12;19058:19;;18718:365;;;:::o;19089:419::-;19255:4;19293:2;19282:9;19278:18;19270:26;;19342:9;19336:4;19332:20;19328:1;19317:9;19313:17;19306:47;19370:131;19496:4;19370:131;:::i;:::-;19362:139;;19089:419;;;:::o;19514:191::-;19554:3;19573:20;19591:1;19573:20;:::i;:::-;19568:25;;19607:20;19625:1;19607:20;:::i;:::-;19602:25;;19650:1;19647;19643:9;19636:16;;19671:3;19668:1;19665:10;19662:36;;;19678:18;;:::i;:::-;19662:36;19514:191;;;;:::o;19711:160::-;19851:12;19847:1;19839:6;19835:14;19828:36;19711:160;:::o;19877:366::-;20019:3;20040:67;20104:2;20099:3;20040:67;:::i;:::-;20033:74;;20116:93;20205:3;20116:93;:::i;:::-;20234:2;20229:3;20225:12;20218:19;;19877:366;;;:::o;20249:419::-;20415:4;20453:2;20442:9;20438:18;20430:26;;20502:9;20496:4;20492:20;20488:1;20477:9;20473:17;20466:47;20530:131;20656:4;20530:131;:::i;:::-;20522:139;;20249:419;;;:::o;20674:164::-;20814:16;20810:1;20802:6;20798:14;20791:40;20674:164;:::o;20844:366::-;20986:3;21007:67;21071:2;21066:3;21007:67;:::i;:::-;21000:74;;21083:93;21172:3;21083:93;:::i;:::-;21201:2;21196:3;21192:12;21185:19;;20844:366;;;:::o;21216:419::-;21382:4;21420:2;21409:9;21405:18;21397:26;;21469:9;21463:4;21459:20;21455:1;21444:9;21440:17;21433:47;21497:131;21623:4;21497:131;:::i;:::-;21489:139;;21216:419;;;:::o;21641:188::-;21679:3;21698:18;21714:1;21698:18;:::i;:::-;21693:23;;21730:18;21746:1;21730:18;:::i;:::-;21725:23;;21771:1;21768;21764:9;21757:16;;21794:4;21789:3;21786:13;21783:39;;;21802:18;;:::i;:::-;21783:39;21641:188;;;;:::o;21835:168::-;21975:20;21971:1;21963:6;21959:14;21952:44;21835:168;:::o;22009:366::-;22151:3;22172:67;22236:2;22231:3;22172:67;:::i;:::-;22165:74;;22248:93;22337:3;22248:93;:::i;:::-;22366:2;22361:3;22357:12;22350:19;;22009:366;;;:::o;22381:419::-;22547:4;22585:2;22574:9;22570:18;22562:26;;22634:9;22628:4;22624:20;22620:1;22609:9;22605:17;22598:47;22662:131;22788:4;22662:131;:::i;:::-;22654:139;;22381:419;;;:::o;22806:162::-;22946:14;22942:1;22934:6;22930:14;22923:38;22806:162;:::o;22974:366::-;23116:3;23137:67;23201:2;23196:3;23137:67;:::i;:::-;23130:74;;23213:93;23302:3;23213:93;:::i;:::-;23331:2;23326:3;23322:12;23315:19;;22974:366;;;:::o;23346:419::-;23512:4;23550:2;23539:9;23535:18;23527:26;;23599:9;23593:4;23589:20;23585:1;23574:9;23570:17;23563:47;23627:131;23753:4;23627:131;:::i;:::-;23619:139;;23346:419;;;:::o;23771:163::-;23911:15;23907:1;23899:6;23895:14;23888:39;23771:163;:::o;23940:366::-;24082:3;24103:67;24167:2;24162:3;24103:67;:::i;:::-;24096:74;;24179:93;24268:3;24179:93;:::i;:::-;24297:2;24292:3;24288:12;24281:19;;23940:366;;;:::o;24312:419::-;24478:4;24516:2;24505:9;24501:18;24493:26;;24565:9;24559:4;24555:20;24551:1;24540:9;24536:17;24529:47;24593:131;24719:4;24593:131;:::i;:::-;24585:139;;24312:419;;;:::o;24737:173::-;24877:25;24873:1;24865:6;24861:14;24854:49;24737:173;:::o;24916:366::-;25058:3;25079:67;25143:2;25138:3;25079:67;:::i;:::-;25072:74;;25155:93;25244:3;25155:93;:::i;:::-;25273:2;25268:3;25264:12;25257:19;;24916:366;;;:::o;25288:419::-;25454:4;25492:2;25481:9;25477:18;25469:26;;25541:9;25535:4;25531:20;25527:1;25516:9;25512:17;25505:47;25569:131;25695:4;25569:131;:::i;:::-;25561:139;;25288:419;;;:::o;25713:160::-;25853:12;25849:1;25841:6;25837:14;25830:36;25713:160;:::o;25879:366::-;26021:3;26042:67;26106:2;26101:3;26042:67;:::i;:::-;26035:74;;26118:93;26207:3;26118:93;:::i;:::-;26236:2;26231:3;26227:12;26220:19;;25879:366;;;:::o;26251:419::-;26417:4;26455:2;26444:9;26440:18;26432:26;;26504:9;26498:4;26494:20;26490:1;26479:9;26475:17;26468:47;26532:131;26658:4;26532:131;:::i;:::-;26524:139;;26251:419;;;:::o;26676:166::-;26816:18;26812:1;26804:6;26800:14;26793:42;26676:166;:::o;26848:366::-;26990:3;27011:67;27075:2;27070:3;27011:67;:::i;:::-;27004:74;;27087:93;27176:3;27087:93;:::i;:::-;27205:2;27200:3;27196:12;27189:19;;26848:366;;;:::o;27220:419::-;27386:4;27424:2;27413:9;27409:18;27401:26;;27473:9;27467:4;27463:20;27459:1;27448:9;27444:17;27437:47;27501:131;27627:4;27501:131;:::i;:::-;27493:139;;27220:419;;;:::o;27645:165::-;27785:17;27781:1;27773:6;27769:14;27762:41;27645:165;:::o;27816:366::-;27958:3;27979:67;28043:2;28038:3;27979:67;:::i;:::-;27972:74;;28055:93;28144:3;28055:93;:::i;:::-;28173:2;28168:3;28164:12;28157:19;;27816:366;;;:::o;28188:419::-;28354:4;28392:2;28381:9;28377:18;28369:26;;28441:9;28435:4;28431:20;28427:1;28416:9;28412:17;28405:47;28469:131;28595:4;28469:131;:::i;:::-;28461:139;;28188:419;;;:::o;28613:143::-;28670:5;28701:6;28695:13;28686:22;;28717:33;28744:5;28717:33;:::i;:::-;28613:143;;;;:::o;28762:351::-;28832:6;28881:2;28869:9;28860:7;28856:23;28852:32;28849:119;;;28887:79;;:::i;:::-;28849:119;29007:1;29032:64;29088:7;29079:6;29068:9;29064:22;29032:64;:::i;:::-;29022:74;;28978:128;28762:351;;;;:::o;29119:332::-;29240:4;29278:2;29267:9;29263:18;29255:26;;29291:71;29359:1;29348:9;29344:17;29335:6;29291:71;:::i;:::-;29372:72;29440:2;29429:9;29425:18;29416:6;29372:72;:::i;:::-;29119:332;;;;;:::o;29457:98::-;29508:6;29542:5;29536:12;29526:22;;29457:98;;;:::o;29561:147::-;29662:11;29699:3;29684:18;;29561:147;;;;:::o;29714:386::-;29818:3;29846:38;29878:5;29846:38;:::i;:::-;29900:88;29981:6;29976:3;29900:88;:::i;:::-;29893:95;;29997:65;30055:6;30050:3;30043:4;30036:5;30032:16;29997:65;:::i;:::-;30087:6;30082:3;30078:16;30071:23;;29822:278;29714:386;;;;:::o;30106:271::-;30236:3;30258:93;30347:3;30338:6;30258:93;:::i;:::-;30251:100;;30368:3;30361:10;;30106:271;;;;:::o;30383:166::-;30523:18;30519:1;30511:6;30507:14;30500:42;30383:166;:::o;30555:366::-;30697:3;30718:67;30782:2;30777:3;30718:67;:::i;:::-;30711:74;;30794:93;30883:3;30794:93;:::i;:::-;30912:2;30907:3;30903:12;30896:19;;30555:366;;;:::o;30927:419::-;31093:4;31131:2;31120:9;31116:18;31108:26;;31180:9;31174:4;31170:20;31166:1;31155:9;31151:17;31144:47;31208:131;31334:4;31208:131;:::i;:::-;31200:139;;30927:419;;;:::o;31352:60::-;31380:3;31401:5;31394:12;;31352:60;;;:::o;31418:142::-;31468:9;31501:53;31519:34;31528:24;31546:5;31528:24;:::i;:::-;31519:34;:::i;:::-;31501:53;:::i;:::-;31488:66;;31418:142;;;:::o;31566:126::-;31616:9;31649:37;31680:5;31649:37;:::i;:::-;31636:50;;31566:126;;;:::o;31698:134::-;31756:9;31789:37;31820:5;31789:37;:::i;:::-;31776:50;;31698:134;;;:::o;31838:147::-;31933:45;31972:5;31933:45;:::i;:::-;31928:3;31921:58;31838:147;;:::o;31991:238::-;32092:4;32130:2;32119:9;32115:18;32107:26;;32143:79;32219:1;32208:9;32204:17;32195:6;32143:79;:::i;:::-;31991:238;;;;:::o;32235:176::-;32375:28;32371:1;32363:6;32359:14;32352:52;32235:176;:::o;32417:366::-;32559:3;32580:67;32644:2;32639:3;32580:67;:::i;:::-;32573:74;;32656:93;32745:3;32656:93;:::i;:::-;32774:2;32769:3;32765:12;32758:19;;32417:366;;;:::o;32789:419::-;32955:4;32993:2;32982:9;32978:18;32970:26;;33042:9;33036:4;33032:20;33028:1;33017:9;33013:17;33006:47;33070:131;33196:4;33070:131;:::i;:::-;33062:139;;32789:419;;;:::o;33214:159::-;33354:11;33350:1;33342:6;33338:14;33331:35;33214:159;:::o;33379:365::-;33521:3;33542:66;33606:1;33601:3;33542:66;:::i;:::-;33535:73;;33617:93;33706:3;33617:93;:::i;:::-;33735:2;33730:3;33726:12;33719:19;;33379:365;;;:::o;33750:419::-;33916:4;33954:2;33943:9;33939:18;33931:26;;34003:9;33997:4;33993:20;33989:1;33978:9;33974:17;33967:47;34031:131;34157:4;34031:131;:::i;:::-;34023:139;;33750:419;;;:::o;34175:164::-;34315:16;34311:1;34303:6;34299:14;34292:40;34175:164;:::o;34345:366::-;34487:3;34508:67;34572:2;34567:3;34508:67;:::i;:::-;34501:74;;34584:93;34673:3;34584:93;:::i;:::-;34702:2;34697:3;34693:12;34686:19;;34345:366;;;:::o;34717:419::-;34883:4;34921:2;34910:9;34906:18;34898:26;;34970:9;34964:4;34960:20;34956:1;34945:9;34941:17;34934:47;34998:131;35124:4;34998:131;:::i;:::-;34990:139;;34717:419;;;:::o;35142:180::-;35190:77;35187:1;35180:88;35287:4;35284:1;35277:15;35311:4;35308:1;35301:15;35328:180;35376:77;35373:1;35366:88;35473:4;35470:1;35463:15;35497:4;35494:1;35487:15;35514:85;35559:7;35588:5;35577:16;;35514:85;;;:::o;35605:158::-;35663:9;35696:61;35714:42;35723:32;35749:5;35723:32;:::i;:::-;35714:42;:::i;:::-;35696:61;:::i;:::-;35683:74;;35605:158;;;:::o;35769:147::-;35864:45;35903:5;35864:45;:::i;:::-;35859:3;35852:58;35769:147;;:::o;35922:114::-;35989:6;36023:5;36017:12;36007:22;;35922:114;;;:::o;36042:184::-;36141:11;36175:6;36170:3;36163:19;36215:4;36210:3;36206:14;36191:29;;36042:184;;;;:::o;36232:132::-;36299:4;36322:3;36314:11;;36352:4;36347:3;36343:14;36335:22;;36232:132;;;:::o;36370:108::-;36447:24;36465:5;36447:24;:::i;:::-;36442:3;36435:37;36370:108;;:::o;36484:179::-;36553:10;36574:46;36616:3;36608:6;36574:46;:::i;:::-;36652:4;36647:3;36643:14;36629:28;;36484:179;;;;:::o;36669:113::-;36739:4;36771;36766:3;36762:14;36754:22;;36669:113;;;:::o;36818:732::-;36937:3;36966:54;37014:5;36966:54;:::i;:::-;37036:86;37115:6;37110:3;37036:86;:::i;:::-;37029:93;;37146:56;37196:5;37146:56;:::i;:::-;37225:7;37256:1;37241:284;37266:6;37263:1;37260:13;37241:284;;;37342:6;37336:13;37369:63;37428:3;37413:13;37369:63;:::i;:::-;37362:70;;37455:60;37508:6;37455:60;:::i;:::-;37445:70;;37301:224;37288:1;37285;37281:9;37276:14;;37241:284;;;37245:14;37541:3;37534:10;;36942:608;;;36818:732;;;;:::o;37556:831::-;37819:4;37857:3;37846:9;37842:19;37834:27;;37871:71;37939:1;37928:9;37924:17;37915:6;37871:71;:::i;:::-;37952:80;38028:2;38017:9;38013:18;38004:6;37952:80;:::i;:::-;38079:9;38073:4;38069:20;38064:2;38053:9;38049:18;38042:48;38107:108;38210:4;38201:6;38107:108;:::i;:::-;38099:116;;38225:72;38293:2;38282:9;38278:18;38269:6;38225:72;:::i;:::-;38307:73;38375:3;38364:9;38360:19;38351:6;38307:73;:::i;:::-;37556:831;;;;;;;;:::o;38393:807::-;38642:4;38680:3;38669:9;38665:19;38657:27;;38694:71;38762:1;38751:9;38747:17;38738:6;38694:71;:::i;:::-;38775:72;38843:2;38832:9;38828:18;38819:6;38775:72;:::i;:::-;38857:80;38933:2;38922:9;38918:18;38909:6;38857:80;:::i;:::-;38947;39023:2;39012:9;39008:18;38999:6;38947:80;:::i;:::-;39037:73;39105:3;39094:9;39090:19;39081:6;39037:73;:::i;:::-;39120;39188:3;39177:9;39173:19;39164:6;39120:73;:::i;:::-;38393:807;;;;;;;;;:::o;39206:143::-;39263:5;39294:6;39288:13;39279:22;;39310:33;39337:5;39310:33;:::i;:::-;39206:143;;;;:::o;39355:663::-;39443:6;39451;39459;39508:2;39496:9;39487:7;39483:23;39479:32;39476:119;;;39514:79;;:::i;:::-;39476:119;39634:1;39659:64;39715:7;39706:6;39695:9;39691:22;39659:64;:::i;:::-;39649:74;;39605:128;39772:2;39798:64;39854:7;39845:6;39834:9;39830:22;39798:64;:::i;:::-;39788:74;;39743:129;39911:2;39937:64;39993:7;39984:6;39973:9;39969:22;39937:64;:::i;:::-;39927:74;;39882:129;39355:663;;;;;:::o

Swarm Source

ipfs://46411509b17c62ee754dfacbe26d51ef398ec6de4afdf41e00758019dd798b1c

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.