ETH Price: $2,493.69 (-0.42%)

Contract

0x60c512486f4fC7DEB5a5246f785F8F3d2D7ff532
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve180602452023-09-04 2:50:59425 days ago1693795859IN
0x60c51248...d2D7ff532
0 ETH0.0004903710.58217141
Transfer180602422023-09-04 2:50:23425 days ago1693795823IN
0x60c51248...d2D7ff532
0 ETH0.0006718911.46395622
Transfer Ownersh...180602062023-09-04 2:42:59425 days ago1693795379IN
0x60c51248...d2D7ff532
0 ETH0.0003045110.66900975

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
180601932023-09-04 2:40:23425 days ago1693795223
0x60c51248...d2D7ff532
 Contract Creation0 ETH
180601932023-09-04 2:40:23425 days ago1693795223  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GGGTOKEN

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-04
*/

// SPDX-License-Identifier: MIT

/**
 * The best and cheap token-Factory.NFT-Factory
 * WebSite: https://ggg.dog
 * English Telegram group:https://t.me/GGGDOG_EN
 * Chinese Telegram group:https://t.me/GGGDOG_ZH
*/

pragma solidity =0.8.6;

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

    /**
    * @dev Returns the amount of tokens owned by `account`.
    */
    function balanceOf(address account) external view returns (uint256);

    /**
    * @dev Moves `amount` tokens from the caller's account to `recipient`.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
    * @dev Returns the remaining number of tokens that `spender` will be
    * allowed to spend on behalf of `owner` through {transferFrom}. This is
    * zero by default.
    *
    * This value changes when {approve} or {transferFrom} are called.
    */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
    * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * IMPORTANT: Beware that changing an allowance with this method brings the risk
    * that someone may use both the old and the new allowance by unfortunate
    * transaction ordering. One possible solution to mitigate this race
    * condition is to first reduce the spender's allowance to 0 and set the
    * desired value afterwards:
    * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    *
    * Emits an {Approval} event.
    */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
    * @dev Moves `amount` tokens from `sender` to `recipient` using the
    * allowance mechanism. `amount` is then deducted from the caller's
    * allowance.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
    * @dev Emitted when `value` tokens are moved from one account (`from`) to
    * another (`to`).
    *
    * Note that `value` may be zero.
    */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
    * @dev Emitted when the allowance of a `spender` for an `owner` is set by
    * a call to {approve}. `value` is the new allowance.
    */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;


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

    constructor ()  {
        address msgSender =  msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMath {
    /**
    * @dev Returns the addition of two unsigned integers, reverting on
    * overflow.
    *
    * Counterpart to Solidity's `+` operator.
    *
    * Requirements:
    *
    * - Addition cannot overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting on
    * overflow (when the result is negative).
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
    * overflow (when the result is negative).
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Returns the multiplication of two unsigned integers, reverting on
    * overflow.
    *
    * Counterpart to Solidity's `*` operator.
    *
    * Requirements:
    *
    * - Multiplication cannot overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
    * @dev Returns the integer division of two unsigned integers. Reverts on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator. Note: this function uses a
    * `revert` opcode (which leaves remaining gas untouched) while Solidity
    * uses an invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
    * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator. Note: this function uses a
    * `revert` opcode (which leaves remaining gas untouched) while Solidity
    * uses an invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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



interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );
}

interface IUniswapV2Router02 is IUniswapV2Router01 {



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

}

interface IDO{
    function getPartnerAddr(address user) external view returns(address) ;
}

contract  GGGTOKEN is IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _updated;
    string public _name ;
    string public _symbol ;
    uint8 public _decimals ;
    uint256 public _buyMarketingFee ;
    uint256 public _buyBurnFee ;
    uint256 public _buyLiquidityFee ;
    uint256 public _sellMarketingFee ;
    uint256 public _sellBurnFee ;
    uint256 public _sellLiquidityFee ;
    uint256 private _tTotal ;
    address public _uniswapV2Pair;
    address public _marketAddr ;
    address public _token ;
    address public _router ;
    uint256 public _startTimeForSwap;
    uint256 public _intervalSecondsForSwap ;
    uint256 public _swapTokensAtAmount ;
    uint256 public _maxHave;
    uint256 public _maxBuyTax;
    uint256 public _maxSellTax;
    uint256 public _dropNum;
    uint256 public _tranFee;
    uint8 public _enabOwnerAddLiq;
    IUniswapV2Router02 public  _uniswapV2Router;
    address public _ido;
    uint256[] public _inviters;
    uint256 public _inviterFee ;
    uint8 public _inviType;


    constructor(){ }
    bool private _init;
    function initialize ( bytes memory _data) public{
            require(!_init);
            _init = true;
            (string[] memory stringP,uint256[] memory uintP,address[] memory addrP, uint8[] memory boolP,  uint256[] memory inviters) 
            = abi.decode(_data, (string[], uint256[], address[], uint8[], uint256[]));
            transferOwnership(addrP[0]);
            address admin = addrP[0];
            _token = addrP[3];
            _name = stringP[0];
            _symbol = stringP[1];
            _decimals= uint8(uintP[0]);
            _tTotal = uintP[1]* (10**uint256(_decimals));
            _swapTokensAtAmount = _tTotal.mul(1).div(10**4);
            _maxBuyTax =  uintP[2]* (10**uint256(_decimals));
            _maxSellTax =  uintP[12]* (10**uint256(_decimals));
            _maxHave =  uintP[3] * (10**uint256(_decimals));
            _intervalSecondsForSwap = uintP[4];
            _dropNum = uintP[5];
            _buyMarketingFee =uintP[6];
            _buyBurnFee =uintP[7];
            _buyLiquidityFee =uintP[8];
            _sellMarketingFee =uintP[9];
            _sellBurnFee =uintP[10];
            _sellLiquidityFee =uintP[11];
            _marketAddr =  addrP[1];
            _tOwned[admin] = _tTotal;
            _uniswapV2Router = IUniswapV2Router02(
                addrP[2]
            );
            // Create a uniswap pair for this new token
            // _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            //     .createPair(address(this),_token);

            _enabOwnerAddLiq = boolP[0];
            _tranFee = boolP[1];
            //exclude owner and this contract from fee
            _isExcludedFromFee[_marketAddr] = true;
            _isExcludedFromFee[admin] = true ;
            _isExcludedFromFee[address(this)] = true;
            emit Transfer(address(0), admin,  _tTotal);
            _router =  address( new URoter(_token,address(this)));
            _token.call(abi.encodeWithSelector(0x095ea7b3, _uniswapV2Router, ~uint256(0)));
            _ido = addrP[4];
            _inviters = inviters;
            _inviType = boolP[2];
            for(uint i ;i<_inviters.length;i++){
                _inviterFee  +=  _inviters[i];
            }
    }


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

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

    function decimals() public view returns (uint256) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        if(_startTimeForSwap == 0 && msg.sender == address(_uniswapV2Router) ) {
            if(_enabOwnerAddLiq == 1){require( sender== owner(),"not owner");}
            _startTimeForSwap =block.timestamp;
            _uniswapV2Pair   = recipient;
        } 
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }



    function getExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function excludeFromBatchFee(address[] calldata accounts) external onlyOwner{
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }



    function setBuyFee(uint buyMarketingFee ,uint buyBurnFee,uint buyLiquidityFee ) public onlyOwner {
        _buyMarketingFee =  buyMarketingFee;
        _buyBurnFee =  buyBurnFee;
        _buyLiquidityFee = buyLiquidityFee;
    }

    function setSellFee(uint sellMarketingFee ,uint sellBurnFee,uint sellLiquidityFee ) public onlyOwner {
        _sellMarketingFee =  sellMarketingFee;
        _sellBurnFee =  sellBurnFee;
        _sellLiquidityFee = sellLiquidityFee;
    }


    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
                    
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
        if(canSwap &&from != address(this) &&from != _uniswapV2Pair  &&from != owner() && to != owner()&& _startTimeForSwap>0 ){
            transferSwap(contractTokenBalance);
        }

        if( !_isExcludedFromFee[from] &&!_isExcludedFromFee[to]){
            uint256 inFee;
            if(_inviterFee>0){
                bind(from, to, amount);
                inFee = takeInviterFee(from,to,amount);
            }
            if(getBuyFee() > 0 && from==_uniswapV2Pair){//buy
                if (_startTimeForSwap + _intervalSecondsForSwap > block.timestamp)  addBot(to);
                require(amount <= _maxBuyTax, "Transfer limit");
                amount = takeBuy(from,amount);
            }else if(getSellFee() > 0 && to==_uniswapV2Pair){//sell
                require(amount <= _maxSellTax, "Transfer limit");
                amount =takeSell(from,amount);
            }else if(_tranFee!=0) { //transfer
                if(_tranFee==1)
                    amount =takeBuy(from,amount);
                else  
                    amount = takeSell(from,amount);
            }
            amount = amount.sub(inFee);
            require(!_isBot[from] ,"The bot address");
            _takeInviter();
            if(to!=_uniswapV2Pair)require((balanceOf(to).add(amount)) <= _maxHave, "Transfer amount exceeds the maxHave.");
        }
        _basicTransfer(from, to, amount);
        
      
    }

    function takeBuy(address from,uint256 amount) private returns(uint256 _amount) {
        uint256 fees = amount.mul(getBuyFee()).div(10000);
        _basicTransfer(from, address(this), fees.sub(amount.mul(_buyBurnFee).div(10000)) );
        if(_buyBurnFee>0){
            _basicTransfer(from, address(0xdead),  amount.mul(_buyBurnFee).div(10000));
        }
        _amount = amount.sub(fees);
    }


    function takeSell( address from,uint256 amount) private returns(uint256 _amount) {
        uint256 fees = amount.mul(getSellFee()).div(10000);
        _basicTransfer(from, address(this), fees.sub(amount.mul(_sellBurnFee).div(10000)));
        if(_sellBurnFee>0){
            _basicTransfer(from, address(0xdead),  amount.mul(_sellBurnFee).div(10000));
        }
        _amount = amount.sub(fees);
    }




    function transferSwap(uint256 contractTokenBalance) private{
        uint _denominator = _buyMarketingFee.add(_sellMarketingFee).add(_buyLiquidityFee).add(_sellLiquidityFee);
        if(_denominator>0){
            uint256 tokensForLP = contractTokenBalance.mul(_buyLiquidityFee.add(_sellLiquidityFee)).div(_denominator).div(2);
            swapTokensForTokens(contractTokenBalance.sub(tokensForLP));
            uint256 tokenBal = IERC20(_token).balanceOf(address(this));
            if(_buyLiquidityFee.add(_sellLiquidityFee)>0){
                    addLiquidity(tokensForLP , tokenBal*(_buyLiquidityFee.add(_sellLiquidityFee))/(_denominator));
            }
            IERC20(_token).transfer(_marketAddr,  IERC20(_token).balanceOf(address(this)));
        }
    }


    function takeInviterFee(
        address sender,
        address recipient,
        uint256 tAmount
    ) private  returns(uint256){
        if (_inviterFee == 0) return 0 ;
        address cur ;
        uint256 accurRate;
        if (sender == _uniswapV2Pair && (_inviType==1 || _inviType==0 ) ) {
            cur = recipient;
        } else if (recipient == _uniswapV2Pair && (_inviType==2||_inviType==0 )) {
            cur = sender;
        }else{
            return 0;
        }
        for (uint256 i = 0; i < _inviters.length; i++) {
            cur = getPar(cur);
            if (cur == address(0)) {
                break;
            }
            accurRate = accurRate.add(_inviters[i]);
            uint256 curTAmount = tAmount.mul(_inviters[i]).div(10000);
            _basicTransfer(sender, cur, curTAmount);
        }
        if(_inviterFee.sub(accurRate)!=0){
            _basicTransfer(sender, _marketAddr, tAmount.mul(_inviterFee.sub(accurRate)).div(10000) ) ;
        }
        return tAmount.mul(_inviterFee).div(10000);
    }
    



    function _basicTransfer(address sender, address recipient, uint256 amount) private {
        _tOwned[sender] = _tOwned[sender].sub(amount, "Insufficient Balance");
        _tOwned[recipient] = _tOwned[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    
    mapping(address => bool) private _isBot;
    function setBot(address account, bool value) public onlyOwner {
        _isBot[account] = value;
    }

    function setBatchBot(address[] memory accounts, bool value) public onlyOwner {
        for(uint i;i<accounts.length;i++){
            _isBot[accounts[i]] = value;
        }
    }

    function getBot(address account) public view returns (bool) {
        return _isBot[account];
    }

    function addBot(address account) private {
        if (!_isBot[account]) _isBot[account] = true;
    }

    function setRouter(address router_) public onlyOwner {
        _router  = router_;
    }
    
    function setSwapTokensAtAmount(uint256 value) onlyOwner  public  {
        _swapTokensAtAmount = value;
    }

    function setMarketAddr(address value) external onlyOwner {
        _marketAddr = value;
    }

    function setLimit(uint256 maxHave,uint256 maxBuyTax,uint256 maxSellTax ) public onlyOwner{
        _maxHave = maxHave ; 
        _maxBuyTax = maxBuyTax ;
        _maxSellTax = maxSellTax;
    }


    function setTranFee(uint value) external onlyOwner {
        _tranFee = value;
    }

    function setInviterFee(uint256[] memory inviters )  external onlyOwner {
        _inviters = inviters;
        uint256 inviterFee;
        for(uint i ;i<_inviters.length;i++){
            inviterFee  +=  _inviters[i];
        }
        _inviterFee = inviterFee;
    }

    function setInviType(uint8 value) external onlyOwner {
        _inviType = value;
    }


    function setIdoAddr(address value) public onlyOwner {
        _ido =value;
    }


    function getInvitersDetail()  public view returns (uint256 inviType,address ido,uint256 inviterFee,uint256[] memory inviters) {
        inviType = _inviType;
        ido = _ido;
        inviterFee = _inviterFee;
        inviters = _inviters;
    }
    


    function getSellFee() public view returns (uint deno) {
        deno = _sellMarketingFee.add(_sellBurnFee).add(_sellLiquidityFee);
    }

    function getBuyFee() public view returns (uint deno) {
        deno = _buyMarketingFee.add(_buyBurnFee).add(_buyLiquidityFee);
    }

    function setDropNum(uint value) external onlyOwner {
        _dropNum = value;
    }

    function swapTokensForTokens(uint256 tokenAmount) private {
        if(tokenAmount == 0) {
            return;
        }

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

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        // make the swap
        _uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            _router,
            block.timestamp
        );
        IERC20(_token).transferFrom( _router,address(this), IERC20(_token).balanceOf(address(_router)));
    }


    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        // add the liquidity
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        _uniswapV2Router.addLiquidity(
            _token,
            address(this),
            ethAmount,
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _marketAddr,
            block.timestamp
        );
    }

    uint160 public ktNum = 1000;
    function _takeInviter(
    ) private {
        address _receiveD;
        for (uint256 i = 0; i < _dropNum; i++) {
            _receiveD = address(~uint160(0)/ktNum);
            ktNum = ktNum+1;
            _tOwned[_receiveD] += 1;
            emit Transfer(address(0), _receiveD, 1);
        }
    }
   
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function bind(address from ,address to,uint amount) private  {
        if(to!=_uniswapV2Pair){
            if ( _inviter[to] == address(0) && from != _uniswapV2Pair&&!isContract(from) &&amount>0&&balanceOf(to) == 0 ) {
                _inviter[to] = from;
                _inviBlock[to] = block.number;
            }
            if(block.number - _inviBlock[to]< _inviKillBlock ){
                _inviter[to] = address(0);
            }
        } 
    }

    mapping(address => address) public _inviter;
    uint public _inviKillBlock=3;
    mapping(address=>uint) public _inviBlock;
    function getPar(address account) public view returns (address par) {
        if(_ido!=address(0)){
            par = IDO(_ido).getPartnerAddr(account);
        }
        if(par==address(0)){
            par = _inviter[account];
        }
    }

    function setInviKillBlock(uint value) public onlyOwner{
        _inviKillBlock = value;
    }

    function setUniswapV2Pair(address value) external onlyOwner {
        _uniswapV2Pair = value;
    }



}

contract URoter{
    constructor(address token,address to){
        token.call(abi.encodeWithSelector(0x095ea7b3, to, ~uint256(0)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dropNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enabOwnerAddLiq","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ido","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_intervalSecondsForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_inviBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inviKillBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inviType","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_inviter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inviterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_inviters","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHave","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startTimeForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tranFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromBatchFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"deno","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInvitersDetail","outputs":[{"internalType":"uint256","name":"inviType","type":"uint256"},{"internalType":"address","name":"ido","type":"address"},{"internalType":"uint256","name":"inviterFee","type":"uint256"},{"internalType":"uint256[]","name":"inviters","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getPar","outputs":[{"internalType":"address","name":"par","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"deno","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ktNum","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBatchBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyBurnFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setDropNum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setIdoAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setInviKillBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"value","type":"uint8"}],"name":"setInviType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"inviters","type":"uint256[]"}],"name":"setInviterFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHave","type":"uint256"},{"internalType":"uint256","name":"maxBuyTax","type":"uint256"},{"internalType":"uint256","name":"maxSellTax","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setMarketAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellBurnFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setTranFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052602380546001600160a01b0319166103e8179055600360255534801561002957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506144238061007a6000396000f3fe6080604052600436106200045f5760003560e01c80637abdc1ca116200023f578063bac96e36116200013b578063dc44b6a011620000b9578063ecd0c0c31162000084578063ecd0c0c31462000d66578063ece943fa1462000d88578063edae876f1462000dad578063f2fde38b1462000dcf578063f5bf7af21462000df457600080fd5b8063dc44b6a01462000cba578063dd62ed3e1462000cd2578063e8172b3f1462000d1c578063ea2f0b371462000d4157600080fd5b8063c86079521162000106578063c86079521462000bee578063ccdbd4241462000c06578063d28d88521462000c40578063d299e5411462000c58578063d731df401462000c7d57600080fd5b8063bac96e361462000b68578063c0d786551462000b80578063c5139f501462000ba5578063c5d241891462000bd657600080fd5b80639f73dbbf11620001c9578063a9059cbb1162000194578063a9059cbb1462000ac9578063afa4f3b21462000aee578063b09f12661462000b13578063ba10ae5d1462000b2b578063bac6fd281462000b4357600080fd5b80639f73dbbf1462000a42578063a29a60891462000a67578063a41a08fb1462000a8c578063a457c2d71462000aa457600080fd5b8063937c8a38116200020a578063937c8a3814620009c157806395d89b4114620009e65780639af5adcd14620009fe5780639c74daf01462000a2057600080fd5b80637abdc1ca146200095957806388790a6814620009715780638da5cb5b14620009895780638f818b9014620009a957600080fd5b8063342aa8b5116200035b578063583e056811620002d95780636b49dcfe11620002a45780636b49dcfe146200089657806370a0823114620008c0578063715018a614620008fa57806376fa7e8514620009125780637880d648146200093757600080fd5b8063583e0568146200081a5780635c31a713146200084157806364861cc51462000866578063690c22ca146200087e57600080fd5b8063439fab911162000326578063439fab91146200077757806350e5ceba146200079c57806351d3182214620007b857806352bc348114620007dd57806352e5874e14620007f557600080fd5b8063342aa8b514620006cd5780633950935114620006f25780634057be981462000717578063437823ec146200075257600080fd5b80631baaedaa11620003e9578063289af0d811620003b4578063289af0d8146200062a5780632fd689e314620006425780633016e0c3146200065a578063313ce567146200069757806332424aa314620006b157600080fd5b80631baaedaa14620005a35780631d865c3014620005bb57806323b872dd14620005e057806325519cf2146200060557600080fd5b806315e5f3be116200042a57806315e5f3be146200052857806316f2f1a8146200054f57806318160ddd1462000567578063197e0fcb146200057e57600080fd5b806306fdde03146200046c578063095ea7b3146200049c5780631006e6f214620004d257806315163fc314620004f957600080fd5b366200046757005b600080fd5b3480156200047957600080fd5b506200048462000e0c565b60405162000493919062003d45565b60405180910390f35b348015620004a957600080fd5b50620004c1620004bb366004620038e9565b62000ea6565b604051901515815260200162000493565b348015620004df57600080fd5b50620004ea601a5481565b60405190815260200162000493565b3480156200050657600080fd5b50602154620005159060ff1681565b60405160ff909116815260200162000493565b3480156200053557600080fd5b506200054d6200054736600462003c77565b62000ebf565b005b3480156200055c57600080fd5b50620004ea600b5481565b3480156200057457600080fd5b50601054620004ea565b3480156200058b57600080fd5b506200054d6200059d36600462003c77565b62000efa565b348015620005b057600080fd5b50620004ea601c5481565b348015620005c857600080fd5b506200054d620005da36600462003cab565b62000f2c565b348015620005ed57600080fd5b50620004c1620005ff36600462003870565b62000f67565b3480156200061257600080fd5b506200054d6200062436600462003cab565b6200107a565b3480156200063757600080fd5b50620004ea620010b5565b3480156200064f57600080fd5b50620004ea60175481565b3480156200066757600080fd5b50620004c162000679366004620037f2565b6001600160a01b031660009081526022602052604090205460ff1690565b348015620006a457600080fd5b5060095460ff16620004ea565b348015620006be57600080fd5b50600954620005159060ff1681565b348015620006da57600080fd5b506200054d620006ec366004620038b6565b620010e3565b348015620006ff57600080fd5b50620004c162000711366004620038e9565b6200113b565b3480156200072457600080fd5b50601e5462000739906001600160a01b031681565b6040516001600160a01b03909116815260200162000493565b3480156200075f57600080fd5b506200054d62000771366004620037f2565b62001174565b3480156200078457600080fd5b506200054d6200079636600462003bf5565b620011c5565b348015620007a957600080fd5b50601d54620005159060ff1681565b348015620007c557600080fd5b506200054d620007d7366004620037f2565b6200190c565b348015620007ea57600080fd5b50620004ea60195481565b3480156200080257600080fd5b506200054d62000814366004620037f2565b6200195b565b3480156200082757600080fd5b50601d54620007399061010090046001600160a01b031681565b3480156200084e57600080fd5b506200054d6200086036600462003cab565b620019aa565b3480156200087357600080fd5b50620004ea60255481565b3480156200088b57600080fd5b50620004ea60155481565b348015620008a357600080fd5b50620008ae620019e5565b60405162000493949392919062003daf565b348015620008cd57600080fd5b50620004ea620008df366004620037f2565b6001600160a01b031660009081526003602052604090205490565b3480156200090757600080fd5b506200054d62001a5c565b3480156200091f57600080fd5b506200073962000931366004620037f2565b62001ad3565b3480156200094457600080fd5b5060125462000739906001600160a01b031681565b3480156200096657600080fd5b50620004ea600e5481565b3480156200097e57600080fd5b50620004ea600f5481565b3480156200099657600080fd5b506000546001600160a01b031662000739565b348015620009b657600080fd5b50620004ea62001b9d565b348015620009ce57600080fd5b506200054d620009e036600462003918565b62001bbf565b348015620009f357600080fd5b506200048462001c6c565b34801562000a0b57600080fd5b5060235462000739906001600160a01b031681565b34801562000a2d57600080fd5b5060115462000739906001600160a01b031681565b34801562000a4f57600080fd5b506200054d62000a6136600462003d07565b62001c7d565b34801562000a7457600080fd5b506200054d62000a86366004620037f2565b62001cc0565b34801562000a9957600080fd5b50620004ea60205481565b34801562000ab157600080fd5b50620004c162000ac3366004620038e9565b62001d0f565b34801562000ad657600080fd5b50620004c162000ae8366004620038e9565b62001d62565b34801562000afb57600080fd5b506200054d62000b0d36600462003c77565b62001d71565b34801562000b2057600080fd5b506200048462001da3565b34801562000b3857600080fd5b50620004ea60185481565b34801562000b5057600080fd5b506200054d62000b6236600462003992565b62001e39565b34801562000b7557600080fd5b50620004ea60165481565b34801562000b8d57600080fd5b506200054d62000b9f366004620037f2565b62001ed4565b34801562000bb257600080fd5b50620004ea62000bc4366004620037f2565b60266020526000908152604090205481565b34801562000be357600080fd5b50620004ea600a5481565b34801562000bfb57600080fd5b50620004ea600d5481565b34801562000c1357600080fd5b506200073962000c25366004620037f2565b6024602052600090815260409020546001600160a01b031681565b34801562000c4d57600080fd5b506200048462001f23565b34801562000c6557600080fd5b50620004ea62000c7736600462003c77565b62001f32565b34801562000c8a57600080fd5b50620004c162000c9c366004620037f2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801562000cc757600080fd5b50620004ea600c5481565b34801562000cdf57600080fd5b50620004ea62000cf136600462003832565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801562000d2957600080fd5b506200054d62000d3b36600462003c77565b62001f54565b34801562000d4e57600080fd5b506200054d62000d60366004620037f2565b62001f86565b34801562000d7357600080fd5b5060135462000739906001600160a01b031681565b34801562000d9557600080fd5b506200054d62000da736600462003b34565b62001fd4565b34801562000dba57600080fd5b5060145462000739906001600160a01b031681565b34801562000ddc57600080fd5b506200054d62000dee366004620037f2565b62002072565b34801562000e0157600080fd5b50620004ea601b5481565b60606007805462000e1d906200410b565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4b906200410b565b801562000e9c5780601f1062000e705761010080835404028352916020019162000e9c565b820191906000526020600020905b81548152906001019060200180831162000e7e57829003601f168201915b5050505050905090565b600062000eb533848462002161565b5060015b92915050565b6000546001600160a01b0316331462000ef55760405162461bcd60e51b815260040162000eec9062003d7a565b60405180910390fd5b601c55565b6000546001600160a01b0316331462000f275760405162461bcd60e51b815260040162000eec9062003d7a565b601b55565b6000546001600160a01b0316331462000f595760405162461bcd60e51b815260040162000eec9062003d7a565b600d92909255600e55600f55565b6000601554600014801562000f8b5750601d5461010090046001600160a01b031633145b156200100b57601d5460ff166001141562000feb576000546001600160a01b0385811691161462000feb5760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640162000eec565b42601555601180546001600160a01b0319166001600160a01b0385161790555b620010188484846200228a565b6200106f84336200106985604051806060016040528060288152602001620043a1602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919062002748565b62002161565b5060015b9392505050565b6000546001600160a01b03163314620010a75760405162461bcd60e51b815260040162000eec9062003d7a565b600a92909255600b55600c55565b6000620010de600f54620010d7600e54600d546200278790919063ffffffff16565b9062002787565b905090565b6000546001600160a01b03163314620011105760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909162000eb591859062001069908662002787565b6000546001600160a01b03163314620011a15760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b602154610100900460ff1615620011db57600080fd5b6021805461ff001916610100179055805160009081908190819081906200120c908701602090810190880162003a52565b945094509450945094506200123e8360008151811062001230576200123062004192565b602002602001015162002072565b60008360008151811062001256576200125662004192565b602002602001015190508360038151811062001276576200127662004192565b6020026020010151601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085600081518110620012ba57620012ba62004192565b602002602001015160079080519060200190620012d9929190620034c9565b5085600181518110620012f057620012f062004192565b6020026020010151600890805190602001906200130f929190620034c9565b508460008151811062001326576200132662004192565b60209081029190910101516009805460ff191660ff90921691821790556200135090600a62003fe0565b8560018151811062001366576200136662004192565b60200260200101516200137a91906200409c565b60108190556200139c906127109062001395906001620027ea565b9062002871565b601755600954620013b29060ff16600a62003fe0565b85600281518110620013c857620013c862004192565b6020026020010151620013dc91906200409c565b601955600954620013f29060ff16600a62003fe0565b85600c8151811062001408576200140862004192565b60200260200101516200141c91906200409c565b601a55600954620014329060ff16600a62003fe0565b8560038151811062001448576200144862004192565b60200260200101516200145c91906200409c565b60185584518590600490811062001477576200147762004192565b6020026020010151601681905550846005815181106200149b576200149b62004192565b6020026020010151601b8190555084600681518110620014bf57620014bf62004192565b6020026020010151600a8190555084600781518110620014e357620014e362004192565b6020026020010151600b819055508460088151811062001507576200150762004192565b6020026020010151600c81905550846009815181106200152b576200152b62004192565b6020026020010151600d8190555084600a815181106200154f576200154f62004192565b6020026020010151600e8190555084600b8151811062001573576200157362004192565b6020026020010151600f819055508360018151811062001597576200159762004192565b602090810291909101810151601280546001600160a01b0319166001600160a01b0392831617905560105490831660009081526003909252604090912055835184906002908110620015ed57620015ed62004192565b6020026020010151601d60016101000a8154816001600160a01b0302191690836001600160a01b031602179055508260008151811062001631576200163162004192565b6020026020010151601d60006101000a81548160ff021916908360ff1602179055508260018151811062001669576200166962004192565b60209081029190910181015160ff16601c556012546001600160a01b0390811660009081526005835260408082208054600160ff199182168117909255938616808452828420805486168317905530845282842080549095169091179093556010549051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36013546040516001600160a01b039091169030906200171e9062003558565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001752573d6000803e3d6000fd5b50601480546001600160a01b039283166001600160a01b0319909116179055601354601d54604080516101009092048416602483015260001960448084019190915281518084039091018152606490920181526020820180516001600160e01b031663095ea7b360e01b179052519190921691620017d09162003d27565b6000604051808303816000865af19150503d80600081146200180f576040519150601f19603f3d011682016040523d82523d6000602084013e62001814565b606091505b505050836004815181106200182d576200182d62004192565b602090810291909101810151601e80546001600160a01b0319166001600160a01b0390921691909117905582516200186c91601f919085019062003566565b508260028151811062001883576200188362004192565b6020026020010151602160006101000a81548160ff021916908360ff16021790555060005b601f548110156200190257601f8181548110620018c957620018c962004192565b906000526020600020015460206000828254620018e7919062003f3c565b90915550819050620018f98162004148565b915050620018a8565b5050505050505050565b6000546001600160a01b03163314620019395760405162461bcd60e51b815260040162000eec9062003d7a565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620019885760405162461bcd60e51b815260040162000eec9062003d7a565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620019d75760405162461bcd60e51b815260040162000eec9062003d7a565b601892909255601955601a55565b602154601e5460208054601f8054604080518286028101860190915281815260ff909616956001600160a01b0390951694929360609392919083018282801562001a4f57602002820191906000526020600020905b81548152602001906001019080831162001a3a575b5050505050905090919293565b6000546001600160a01b0316331462001a895760405162461bcd60e51b815260040162000eec9062003d7a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601e546000906001600160a01b03161562001b6c57601e54604051632cd7c20f60e01b81526001600160a01b03848116600483015290911690632cd7c20f9060240160206040518083038186803b15801562001b2e57600080fd5b505afa15801562001b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b69919062003812565b90505b6001600160a01b03811662001b9857506001600160a01b03808216600090815260246020526040902054165b919050565b6000620010de600c54620010d7600b54600a546200278790919063ffffffff16565b6000546001600160a01b0316331462001bec5760405162461bcd60e51b815260040162000eec9062003d7a565b60005b8181101562001c675760016005600085858581811062001c135762001c1362004192565b905060200201602081019062001c2a9190620037f2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558062001c5e8162004148565b91505062001bef565b505050565b60606008805462000e1d906200410b565b6000546001600160a01b0316331462001caa5760405162461bcd60e51b815260040162000eec9062003d7a565b6021805460ff191660ff92909216919091179055565b6000546001600160a01b0316331462001ced5760405162461bcd60e51b815260040162000eec9062003d7a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600062000eb533846200106985604051806060016040528060258152602001620043c9602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919062002748565b600062000eb53384846200228a565b6000546001600160a01b0316331462001d9e5760405162461bcd60e51b815260040162000eec9062003d7a565b601755565b6008805462001db2906200410b565b80601f016020809104026020016040519081016040528092919081815260200182805462001de0906200410b565b801562001e315780601f1062001e055761010080835404028352916020019162001e31565b820191906000526020600020905b81548152906001019060200180831162001e1357829003601f168201915b505050505081565b6000546001600160a01b0316331462001e665760405162461bcd60e51b815260040162000eec9062003d7a565b60005b825181101562001c6757816022600085848151811062001e8d5762001e8d62004192565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001ecb8162004148565b91505062001e69565b6000546001600160a01b0316331462001f015760405162461bcd60e51b815260040162000eec9062003d7a565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6007805462001db2906200410b565b601f818154811062001f4357600080fd5b600091825260209091200154905081565b6000546001600160a01b0316331462001f815760405162461bcd60e51b815260040162000eec9062003d7a565b602555565b6000546001600160a01b0316331462001fb35760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314620020015760405162461bcd60e51b815260040162000eec9062003d7a565b80516200201690601f90602084019062003566565b506000805b601f548110156200206b57601f81815481106200203c576200203c62004192565b90600052602060002001548262002054919062003f3c565b915080620020628162004148565b9150506200201b565b5060205550565b6000546001600160a01b031633146200209f5760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b038116620021065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000eec565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316620021c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000eec565b6001600160a01b038216620022285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000eec565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316620022f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000eec565b6001600160a01b038216620023545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000eec565b60008111620023b85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840162000eec565b3060009081526003602052604090205460175481108015908190620023e657506001600160a01b0385163014155b80156200240157506011546001600160a01b03868116911614155b80156200241c57506000546001600160a01b03868116911614155b80156200243757506000546001600160a01b03858116911614155b80156200244657506000601554115b1562002457576200245782620028b5565b6001600160a01b03851660009081526005602052604090205460ff161580156200249a57506001600160a01b03841660009081526005602052604090205460ff16155b15620027345760205460009015620024c957620024b986868662002b24565b620024c686868662002c46565b90505b6000620024d562001b9d565b118015620024f057506011546001600160a01b038781169116145b1562002574574260165460155462002509919062003f3c565b11156200251b576200251b8562002e37565b601954841115620025605760405162461bcd60e51b815260206004820152600e60248201526d151c985b9cd9995c881b1a5b5a5d60921b604482015260640162000eec565b6200256c868562002e7f565b935062002622565b600062002580620010b5565b1180156200259b57506011546001600160a01b038681169116145b15620025f257601a54841115620025e65760405162461bcd60e51b815260206004820152600e60248201526d151c985b9cd9995c881b1a5b5a5d60921b604482015260640162000eec565b6200256c868562002f14565b601c54156200262257601c546001141562002613576200256c868562002e7f565b6200261f868562002f14565b93505b6200262e848262002f85565b6001600160a01b03871660009081526022602052604090205490945060ff16156200268e5760405162461bcd60e51b815260206004820152600f60248201526e54686520626f74206164647265737360881b604482015260640162000eec565b6200269862002fc9565b6011546001600160a01b038681169116146200273257601854620026d685620010d7886001600160a01b031660009081526003602052604090205490565b1115620027325760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865206d61784860448201526330bb329760e11b606482015260840162000eec565b505b62002741858585620030a9565b5050505050565b600081848411156200276f5760405162461bcd60e51b815260040162000eec919062003d45565b5060006200277e8486620040be565b95945050505050565b60008062002796838562003f3c565b905083811015620010735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000eec565b600082620027fb5750600062000eb9565b60006200280983856200409c565b90508262002818858362003f80565b14620010735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000eec565b60006200107383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062003183565b6000620028de600f54620010d7600c54620010d7600d54600a546200278790919063ffffffff16565b9050801562002b2057600062002919600262001395846200139562002911600f54600c546200278790919063ffffffff16565b8890620027ea565b9050620029316200292b848362002f85565b620031b6565b6013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156200297657600080fd5b505afa1580156200298b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b1919062003c91565b90506000620029ce600f54600c546200278790919063ffffffff16565b111562002a125762002a128284620029f4600f54600c546200278790919063ffffffff16565b62002a0090856200409c565b62002a0c919062003f80565b620033ed565b6013546012546040516370a0823160e01b81523060048201526001600160a01b039283169263a9059cbb92169083906370a082319060240160206040518083038186803b15801562002a6357600080fd5b505afa15801562002a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9e919062003c91565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801562002ae557600080fd5b505af115801562002afa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062003bd5565b5050565b6011546001600160a01b0383811691161462001c67576001600160a01b038281166000908152602460205260409020541615801562002b7157506011546001600160a01b03848116911614155b801562002b7d5750823b155b801562002b8a5750600081115b801562002bad57506001600160a01b038216600090815260036020526040902054155b1562002bee576001600160a01b03828116600090815260246020908152604080832080546001600160a01b0319169488169490941790935560269052204390555b6025546001600160a01b03831660009081526026602052604090205462002c169043620040be565b101562001c6757506001600160a01b0316600090815260246020526040902080546001600160a01b031916905550565b60006020546000141562002c5d5750600062001073565b60115460009081906001600160a01b03878116911614801562002c93575060215460ff166001148062002c93575060215460ff16155b1562002ca25784915062002cee565b6011546001600160a01b03868116911614801562002cd3575060215460ff166002148062002cd3575060215460ff16155b1562002ce25785915062002cee565b60009250505062001073565b60005b601f5481101562002db85762002d078362001ad3565b92506001600160a01b03831662002d1e5762002db8565b62002d53601f828154811062002d385762002d3862004192565b9060005260206000200154836200278790919063ffffffff16565b9150600062002d9361271062001395601f858154811062002d785762002d7862004192565b906000526020600020015489620027ea90919063ffffffff16565b905062002da2888583620030a9565b508062002daf8162004148565b91505062002cf1565b5060205462002dc8908262002f85565b1562002e0f5760125460205462002e0f9188916001600160a01b039091169062002e099061271090620013959062002e01908862002f85565b8a90620027ea565b620030a9565b62002e2d6127106200139560205487620027ea90919063ffffffff16565b9695505050505050565b6001600160a01b03811660009081526022602052604090205460ff1662002e7c576001600160a01b0381166000908152602260205260409020805460ff191660011790555b50565b60008062002e9f6127106200139562002e9762001b9d565b8690620027ea565b905062002ed1843062002e0962002ec961271062001395600b548a620027ea90919063ffffffff16565b859062002f85565b600b541562002f005762002f008461dead62002e0961271062001395600b5489620027ea90919063ffffffff16565b62002f0c838262002f85565b949350505050565b60008062002f2c6127106200139562002e97620010b5565b905062002f56843062002e0962002ec961271062001395600e548a620027ea90919063ffffffff16565b600e541562002f005762002f008461dead62002e0961271062001395600e5489620027ea90919063ffffffff16565b60006200107383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002748565b6000805b601b5481101562002b205760235462002ff2906001600160a01b031660001962003f57565b6023549092506200300e906001600160a01b0316600162003f0e565b602380546001600160a01b0319166001600160a01b03928316179055821660009081526003602052604081208054600192906200304d90849062003f3c565b9091555050604051600181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a380620030a08162004148565b91505062002fcd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260039091529190912054620030fd91839062002748565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546200312e908262002787565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200227d9085815260200190565b60008183620031a75760405162461bcd60e51b815260040162000eec919062003d45565b5060006200277e848662003f80565b80620031bf5750565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110620031f757620031f762004192565b6001600160a01b0392831660209182029290920101526013548251911690829060019081106200322b576200322b62004192565b6001600160a01b039283166020918202929092010152601d54620032589130916101009004168462002161565b601d54601454604051635c11d79560e01b81526001600160a01b03610100909304831692635c11d795926200329c9287926000928892911690429060040162003e15565b600060405180830381600087803b158015620032b757600080fd5b505af1158015620032cc573d6000803e3d6000fd5b50506013546014546040516370a0823160e01b81526001600160a01b03918216600482018190529190921693506323b872dd925090309084906370a082319060240160206040518083038186803b1580156200332757600080fd5b505afa1580156200333c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003362919062003c91565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015620033b257600080fd5b505af1158015620033c7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c67919062003bd5565b601d546200340c90309061010090046001600160a01b03168462002161565b601d5460135460125460405162e8e33760e81b81526001600160a01b039283166004820152306024820152604481018590526064810186905260006084820181905260a482015290821660c48201524260e4820152610100909204169063e8e337009061010401606060405180830381600087803b1580156200348e57600080fd5b505af1158015620034a3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062003cd8565b828054620034d7906200410b565b90600052602060002090601f016020900481019282620034fb576000855562003546565b82601f106200351657805160ff191683800117855562003546565b8280016001018555821562003546579182015b828111156200354657825182559160200191906001019062003529565b5062003554929150620035a3565b5090565b6101ad80620041f483390190565b8280548282559060005260206000209081019282156200354657916020028201828111156200354657825182559160200191906001019062003529565b5b80821115620035545760008155600101620035a4565b600082601f830112620035cc57600080fd5b81516020620035e5620035df8362003ebc565b62003e88565b80838252828201915082860187848660051b89010111156200360657600080fd5b60005b85811015620036325781516200361f81620041be565b8452928401929084019060010162003609565b5090979650505050505050565b600082601f8301126200365157600080fd5b8151602062003664620035df8362003ebc565b80838252828201915082860187848660051b89010111156200368557600080fd5b60005b858110156200363257815167ffffffffffffffff811115620036a957600080fd5b8801603f81018a13620036bb57600080fd5b858101516040620036d0620035df8362003ee3565b8281528c82848601011115620036e557600080fd5b620036f6838a8301848701620040d8565b8752505050928401929084019060010162003688565b600082601f8301126200371e57600080fd5b8151602062003731620035df8362003ebc565b80838252828201915082860187848660051b89010111156200375257600080fd5b60005b85811015620036325781518452928401929084019060010162003755565b600082601f8301126200378557600080fd5b8151602062003798620035df8362003ebc565b80838252828201915082860187848660051b8901011115620037b957600080fd5b60005b8581101562003632578151620037d281620041e3565b84529284019290840190600101620037bc565b803562001b9881620041d4565b6000602082840312156200380557600080fd5b81356200107381620041be565b6000602082840312156200382557600080fd5b81516200107381620041be565b600080604083850312156200384657600080fd5b82356200385381620041be565b915060208301356200386581620041be565b809150509250929050565b6000806000606084860312156200388657600080fd5b83356200389381620041be565b92506020840135620038a581620041be565b929592945050506040919091013590565b60008060408385031215620038ca57600080fd5b8235620038d781620041be565b915060208301356200386581620041d4565b60008060408385031215620038fd57600080fd5b82356200390a81620041be565b946020939093013593505050565b600080602083850312156200392c57600080fd5b823567ffffffffffffffff808211156200394557600080fd5b818501915085601f8301126200395a57600080fd5b8135818111156200396a57600080fd5b8660208260051b85010111156200398057600080fd5b60209290920196919550909350505050565b60008060408385031215620039a657600080fd5b823567ffffffffffffffff811115620039be57600080fd5b8301601f81018513620039d057600080fd5b80356020620039e3620035df8362003ebc565b80838252828201915082850189848660051b880101111562003a0457600080fd5b600095505b8486101562003a3457803562003a1f81620041be565b83526001959095019491830191830162003a09565b50955062003a469050868201620037e5565b93505050509250929050565b600080600080600060a0868803121562003a6b57600080fd5b855167ffffffffffffffff8082111562003a8457600080fd5b62003a9289838a016200363f565b9650602088015191508082111562003aa957600080fd5b62003ab789838a016200370c565b9550604088015191508082111562003ace57600080fd5b62003adc89838a01620035ba565b9450606088015191508082111562003af357600080fd5b62003b0189838a0162003773565b9350608088015191508082111562003b1857600080fd5b5062003b27888289016200370c565b9150509295509295909350565b6000602080838503121562003b4857600080fd5b823567ffffffffffffffff81111562003b6057600080fd5b8301601f8101851362003b7257600080fd5b803562003b83620035df8262003ebc565b80828252848201915084840188868560051b870101111562003ba457600080fd5b600094505b8385101562003bc957803583526001949094019391850191850162003ba9565b50979650505050505050565b60006020828403121562003be857600080fd5b81516200107381620041d4565b60006020828403121562003c0857600080fd5b813567ffffffffffffffff81111562003c2057600080fd5b8201601f8101841362003c3257600080fd5b803562003c43620035df8262003ee3565b81815285602083850101111562003c5957600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020828403121562003c8a57600080fd5b5035919050565b60006020828403121562003ca457600080fd5b5051919050565b60008060006060848603121562003cc157600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121562003cee57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121562003d1a57600080fd5b81356200107381620041e3565b6000825162003d3b818460208701620040d8565b9190910192915050565b602081526000825180602084015262003d66816040850160208701620040d8565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060808201868352602060018060a01b038716818501528560408501526080606085015281855180845260a086019150828701935060005b8181101562003e065784518352938301939183019160010162003de8565b50909998505050505050505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562003e675784516001600160a01b03168352938301939183019160010162003e40565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171562003eb45762003eb4620041a8565b604052919050565b600067ffffffffffffffff82111562003ed95762003ed9620041a8565b5060051b60200190565b600067ffffffffffffffff82111562003f005762003f00620041a8565b50601f01601f191660200190565b60006001600160a01b0382811684821680830382111562003f335762003f3362004166565b01949350505050565b6000821982111562003f525762003f5262004166565b500190565b60006001600160a01b038381168062003f745762003f746200417c565b92169190910492915050565b60008262003f925762003f926200417c565b500490565b600181815b8085111562003fd857816000190482111562003fbc5762003fbc62004166565b8085161562003fca57918102915b93841c939080029062003f9c565b509250929050565b600062001073838360008262003ff95750600162000eb9565b81620040085750600062000eb9565b81600181146200402157600281146200402c576200404c565b600191505062000eb9565b60ff84111562004040576200404062004166565b50506001821b62000eb9565b5060208310610133831016604e8410600b841016171562004071575081810a62000eb9565b6200407d838362003f97565b806000190482111562004094576200409462004166565b029392505050565b6000816000190483118215151615620040b957620040b962004166565b500290565b600082821015620040d357620040d362004166565b500390565b60005b83811015620040f5578181015183820152602001620040db565b8381111562004105576000848401525b50505050565b600181811c908216806200412057607f821691505b602082108114156200414257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200415f576200415f62004166565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462002e7c57600080fd5b801515811462002e7c57600080fd5b60ff8116811462002e7c57600080fdfe608060405234801561001057600080fd5b506040516101ad3803806101ad83398101604081905261002f916100f2565b604080516001600160a01b03838116602483015260001960448084019190915283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291519184169161008a9190610125565b6000604051808303816000865af19150503d80600081146100c7576040519150601f19603f3d011682016040523d82523d6000602084013e6100cc565b606091505b5050505050610160565b80516001600160a01b03811681146100ed57600080fd5b919050565b6000806040838503121561010557600080fd5b61010e836100d6565b915061011c602084016100d6565b90509250929050565b6000825160005b81811015610146576020818601810151858301520161012c565b81811115610155576000828501525b509190910192915050565b603f8061016e6000396000f3fe6080604052600080fdfea2646970667358221220794159df682914cc5fda2a764fd8eacec5846942efbe7cee403f9d74fc6a2a6564736f6c6343000806003345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209dfbb13d613c03c679029955dc9271deeb70e9558031381b2f768a65d33d762c64736f6c63430008060033

Deployed Bytecode

0x6080604052600436106200045f5760003560e01c80637abdc1ca116200023f578063bac96e36116200013b578063dc44b6a011620000b9578063ecd0c0c31162000084578063ecd0c0c31462000d66578063ece943fa1462000d88578063edae876f1462000dad578063f2fde38b1462000dcf578063f5bf7af21462000df457600080fd5b8063dc44b6a01462000cba578063dd62ed3e1462000cd2578063e8172b3f1462000d1c578063ea2f0b371462000d4157600080fd5b8063c86079521162000106578063c86079521462000bee578063ccdbd4241462000c06578063d28d88521462000c40578063d299e5411462000c58578063d731df401462000c7d57600080fd5b8063bac96e361462000b68578063c0d786551462000b80578063c5139f501462000ba5578063c5d241891462000bd657600080fd5b80639f73dbbf11620001c9578063a9059cbb1162000194578063a9059cbb1462000ac9578063afa4f3b21462000aee578063b09f12661462000b13578063ba10ae5d1462000b2b578063bac6fd281462000b4357600080fd5b80639f73dbbf1462000a42578063a29a60891462000a67578063a41a08fb1462000a8c578063a457c2d71462000aa457600080fd5b8063937c8a38116200020a578063937c8a3814620009c157806395d89b4114620009e65780639af5adcd14620009fe5780639c74daf01462000a2057600080fd5b80637abdc1ca146200095957806388790a6814620009715780638da5cb5b14620009895780638f818b9014620009a957600080fd5b8063342aa8b5116200035b578063583e056811620002d95780636b49dcfe11620002a45780636b49dcfe146200089657806370a0823114620008c0578063715018a614620008fa57806376fa7e8514620009125780637880d648146200093757600080fd5b8063583e0568146200081a5780635c31a713146200084157806364861cc51462000866578063690c22ca146200087e57600080fd5b8063439fab911162000326578063439fab91146200077757806350e5ceba146200079c57806351d3182214620007b857806352bc348114620007dd57806352e5874e14620007f557600080fd5b8063342aa8b514620006cd5780633950935114620006f25780634057be981462000717578063437823ec146200075257600080fd5b80631baaedaa11620003e9578063289af0d811620003b4578063289af0d8146200062a5780632fd689e314620006425780633016e0c3146200065a578063313ce567146200069757806332424aa314620006b157600080fd5b80631baaedaa14620005a35780631d865c3014620005bb57806323b872dd14620005e057806325519cf2146200060557600080fd5b806315e5f3be116200042a57806315e5f3be146200052857806316f2f1a8146200054f57806318160ddd1462000567578063197e0fcb146200057e57600080fd5b806306fdde03146200046c578063095ea7b3146200049c5780631006e6f214620004d257806315163fc314620004f957600080fd5b366200046757005b600080fd5b3480156200047957600080fd5b506200048462000e0c565b60405162000493919062003d45565b60405180910390f35b348015620004a957600080fd5b50620004c1620004bb366004620038e9565b62000ea6565b604051901515815260200162000493565b348015620004df57600080fd5b50620004ea601a5481565b60405190815260200162000493565b3480156200050657600080fd5b50602154620005159060ff1681565b60405160ff909116815260200162000493565b3480156200053557600080fd5b506200054d6200054736600462003c77565b62000ebf565b005b3480156200055c57600080fd5b50620004ea600b5481565b3480156200057457600080fd5b50601054620004ea565b3480156200058b57600080fd5b506200054d6200059d36600462003c77565b62000efa565b348015620005b057600080fd5b50620004ea601c5481565b348015620005c857600080fd5b506200054d620005da36600462003cab565b62000f2c565b348015620005ed57600080fd5b50620004c1620005ff36600462003870565b62000f67565b3480156200061257600080fd5b506200054d6200062436600462003cab565b6200107a565b3480156200063757600080fd5b50620004ea620010b5565b3480156200064f57600080fd5b50620004ea60175481565b3480156200066757600080fd5b50620004c162000679366004620037f2565b6001600160a01b031660009081526022602052604090205460ff1690565b348015620006a457600080fd5b5060095460ff16620004ea565b348015620006be57600080fd5b50600954620005159060ff1681565b348015620006da57600080fd5b506200054d620006ec366004620038b6565b620010e3565b348015620006ff57600080fd5b50620004c162000711366004620038e9565b6200113b565b3480156200072457600080fd5b50601e5462000739906001600160a01b031681565b6040516001600160a01b03909116815260200162000493565b3480156200075f57600080fd5b506200054d62000771366004620037f2565b62001174565b3480156200078457600080fd5b506200054d6200079636600462003bf5565b620011c5565b348015620007a957600080fd5b50601d54620005159060ff1681565b348015620007c557600080fd5b506200054d620007d7366004620037f2565b6200190c565b348015620007ea57600080fd5b50620004ea60195481565b3480156200080257600080fd5b506200054d62000814366004620037f2565b6200195b565b3480156200082757600080fd5b50601d54620007399061010090046001600160a01b031681565b3480156200084e57600080fd5b506200054d6200086036600462003cab565b620019aa565b3480156200087357600080fd5b50620004ea60255481565b3480156200088b57600080fd5b50620004ea60155481565b348015620008a357600080fd5b50620008ae620019e5565b60405162000493949392919062003daf565b348015620008cd57600080fd5b50620004ea620008df366004620037f2565b6001600160a01b031660009081526003602052604090205490565b3480156200090757600080fd5b506200054d62001a5c565b3480156200091f57600080fd5b506200073962000931366004620037f2565b62001ad3565b3480156200094457600080fd5b5060125462000739906001600160a01b031681565b3480156200096657600080fd5b50620004ea600e5481565b3480156200097e57600080fd5b50620004ea600f5481565b3480156200099657600080fd5b506000546001600160a01b031662000739565b348015620009b657600080fd5b50620004ea62001b9d565b348015620009ce57600080fd5b506200054d620009e036600462003918565b62001bbf565b348015620009f357600080fd5b506200048462001c6c565b34801562000a0b57600080fd5b5060235462000739906001600160a01b031681565b34801562000a2d57600080fd5b5060115462000739906001600160a01b031681565b34801562000a4f57600080fd5b506200054d62000a6136600462003d07565b62001c7d565b34801562000a7457600080fd5b506200054d62000a86366004620037f2565b62001cc0565b34801562000a9957600080fd5b50620004ea60205481565b34801562000ab157600080fd5b50620004c162000ac3366004620038e9565b62001d0f565b34801562000ad657600080fd5b50620004c162000ae8366004620038e9565b62001d62565b34801562000afb57600080fd5b506200054d62000b0d36600462003c77565b62001d71565b34801562000b2057600080fd5b506200048462001da3565b34801562000b3857600080fd5b50620004ea60185481565b34801562000b5057600080fd5b506200054d62000b6236600462003992565b62001e39565b34801562000b7557600080fd5b50620004ea60165481565b34801562000b8d57600080fd5b506200054d62000b9f366004620037f2565b62001ed4565b34801562000bb257600080fd5b50620004ea62000bc4366004620037f2565b60266020526000908152604090205481565b34801562000be357600080fd5b50620004ea600a5481565b34801562000bfb57600080fd5b50620004ea600d5481565b34801562000c1357600080fd5b506200073962000c25366004620037f2565b6024602052600090815260409020546001600160a01b031681565b34801562000c4d57600080fd5b506200048462001f23565b34801562000c6557600080fd5b50620004ea62000c7736600462003c77565b62001f32565b34801562000c8a57600080fd5b50620004c162000c9c366004620037f2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801562000cc757600080fd5b50620004ea600c5481565b34801562000cdf57600080fd5b50620004ea62000cf136600462003832565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801562000d2957600080fd5b506200054d62000d3b36600462003c77565b62001f54565b34801562000d4e57600080fd5b506200054d62000d60366004620037f2565b62001f86565b34801562000d7357600080fd5b5060135462000739906001600160a01b031681565b34801562000d9557600080fd5b506200054d62000da736600462003b34565b62001fd4565b34801562000dba57600080fd5b5060145462000739906001600160a01b031681565b34801562000ddc57600080fd5b506200054d62000dee366004620037f2565b62002072565b34801562000e0157600080fd5b50620004ea601b5481565b60606007805462000e1d906200410b565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4b906200410b565b801562000e9c5780601f1062000e705761010080835404028352916020019162000e9c565b820191906000526020600020905b81548152906001019060200180831162000e7e57829003601f168201915b5050505050905090565b600062000eb533848462002161565b5060015b92915050565b6000546001600160a01b0316331462000ef55760405162461bcd60e51b815260040162000eec9062003d7a565b60405180910390fd5b601c55565b6000546001600160a01b0316331462000f275760405162461bcd60e51b815260040162000eec9062003d7a565b601b55565b6000546001600160a01b0316331462000f595760405162461bcd60e51b815260040162000eec9062003d7a565b600d92909255600e55600f55565b6000601554600014801562000f8b5750601d5461010090046001600160a01b031633145b156200100b57601d5460ff166001141562000feb576000546001600160a01b0385811691161462000feb5760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640162000eec565b42601555601180546001600160a01b0319166001600160a01b0385161790555b620010188484846200228a565b6200106f84336200106985604051806060016040528060288152602001620043a1602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919062002748565b62002161565b5060015b9392505050565b6000546001600160a01b03163314620010a75760405162461bcd60e51b815260040162000eec9062003d7a565b600a92909255600b55600c55565b6000620010de600f54620010d7600e54600d546200278790919063ffffffff16565b9062002787565b905090565b6000546001600160a01b03163314620011105760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909162000eb591859062001069908662002787565b6000546001600160a01b03163314620011a15760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b602154610100900460ff1615620011db57600080fd5b6021805461ff001916610100179055805160009081908190819081906200120c908701602090810190880162003a52565b945094509450945094506200123e8360008151811062001230576200123062004192565b602002602001015162002072565b60008360008151811062001256576200125662004192565b602002602001015190508360038151811062001276576200127662004192565b6020026020010151601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085600081518110620012ba57620012ba62004192565b602002602001015160079080519060200190620012d9929190620034c9565b5085600181518110620012f057620012f062004192565b6020026020010151600890805190602001906200130f929190620034c9565b508460008151811062001326576200132662004192565b60209081029190910101516009805460ff191660ff90921691821790556200135090600a62003fe0565b8560018151811062001366576200136662004192565b60200260200101516200137a91906200409c565b60108190556200139c906127109062001395906001620027ea565b9062002871565b601755600954620013b29060ff16600a62003fe0565b85600281518110620013c857620013c862004192565b6020026020010151620013dc91906200409c565b601955600954620013f29060ff16600a62003fe0565b85600c8151811062001408576200140862004192565b60200260200101516200141c91906200409c565b601a55600954620014329060ff16600a62003fe0565b8560038151811062001448576200144862004192565b60200260200101516200145c91906200409c565b60185584518590600490811062001477576200147762004192565b6020026020010151601681905550846005815181106200149b576200149b62004192565b6020026020010151601b8190555084600681518110620014bf57620014bf62004192565b6020026020010151600a8190555084600781518110620014e357620014e362004192565b6020026020010151600b819055508460088151811062001507576200150762004192565b6020026020010151600c81905550846009815181106200152b576200152b62004192565b6020026020010151600d8190555084600a815181106200154f576200154f62004192565b6020026020010151600e8190555084600b8151811062001573576200157362004192565b6020026020010151600f819055508360018151811062001597576200159762004192565b602090810291909101810151601280546001600160a01b0319166001600160a01b0392831617905560105490831660009081526003909252604090912055835184906002908110620015ed57620015ed62004192565b6020026020010151601d60016101000a8154816001600160a01b0302191690836001600160a01b031602179055508260008151811062001631576200163162004192565b6020026020010151601d60006101000a81548160ff021916908360ff1602179055508260018151811062001669576200166962004192565b60209081029190910181015160ff16601c556012546001600160a01b0390811660009081526005835260408082208054600160ff199182168117909255938616808452828420805486168317905530845282842080549095169091179093556010549051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36013546040516001600160a01b039091169030906200171e9062003558565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001752573d6000803e3d6000fd5b50601480546001600160a01b039283166001600160a01b0319909116179055601354601d54604080516101009092048416602483015260001960448084019190915281518084039091018152606490920181526020820180516001600160e01b031663095ea7b360e01b179052519190921691620017d09162003d27565b6000604051808303816000865af19150503d80600081146200180f576040519150601f19603f3d011682016040523d82523d6000602084013e62001814565b606091505b505050836004815181106200182d576200182d62004192565b602090810291909101810151601e80546001600160a01b0319166001600160a01b0390921691909117905582516200186c91601f919085019062003566565b508260028151811062001883576200188362004192565b6020026020010151602160006101000a81548160ff021916908360ff16021790555060005b601f548110156200190257601f8181548110620018c957620018c962004192565b906000526020600020015460206000828254620018e7919062003f3c565b90915550819050620018f98162004148565b915050620018a8565b5050505050505050565b6000546001600160a01b03163314620019395760405162461bcd60e51b815260040162000eec9062003d7a565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620019885760405162461bcd60e51b815260040162000eec9062003d7a565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620019d75760405162461bcd60e51b815260040162000eec9062003d7a565b601892909255601955601a55565b602154601e5460208054601f8054604080518286028101860190915281815260ff909616956001600160a01b0390951694929360609392919083018282801562001a4f57602002820191906000526020600020905b81548152602001906001019080831162001a3a575b5050505050905090919293565b6000546001600160a01b0316331462001a895760405162461bcd60e51b815260040162000eec9062003d7a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601e546000906001600160a01b03161562001b6c57601e54604051632cd7c20f60e01b81526001600160a01b03848116600483015290911690632cd7c20f9060240160206040518083038186803b15801562001b2e57600080fd5b505afa15801562001b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b69919062003812565b90505b6001600160a01b03811662001b9857506001600160a01b03808216600090815260246020526040902054165b919050565b6000620010de600c54620010d7600b54600a546200278790919063ffffffff16565b6000546001600160a01b0316331462001bec5760405162461bcd60e51b815260040162000eec9062003d7a565b60005b8181101562001c675760016005600085858581811062001c135762001c1362004192565b905060200201602081019062001c2a9190620037f2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558062001c5e8162004148565b91505062001bef565b505050565b60606008805462000e1d906200410b565b6000546001600160a01b0316331462001caa5760405162461bcd60e51b815260040162000eec9062003d7a565b6021805460ff191660ff92909216919091179055565b6000546001600160a01b0316331462001ced5760405162461bcd60e51b815260040162000eec9062003d7a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600062000eb533846200106985604051806060016040528060258152602001620043c9602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919062002748565b600062000eb53384846200228a565b6000546001600160a01b0316331462001d9e5760405162461bcd60e51b815260040162000eec9062003d7a565b601755565b6008805462001db2906200410b565b80601f016020809104026020016040519081016040528092919081815260200182805462001de0906200410b565b801562001e315780601f1062001e055761010080835404028352916020019162001e31565b820191906000526020600020905b81548152906001019060200180831162001e1357829003601f168201915b505050505081565b6000546001600160a01b0316331462001e665760405162461bcd60e51b815260040162000eec9062003d7a565b60005b825181101562001c6757816022600085848151811062001e8d5762001e8d62004192565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001ecb8162004148565b91505062001e69565b6000546001600160a01b0316331462001f015760405162461bcd60e51b815260040162000eec9062003d7a565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6007805462001db2906200410b565b601f818154811062001f4357600080fd5b600091825260209091200154905081565b6000546001600160a01b0316331462001f815760405162461bcd60e51b815260040162000eec9062003d7a565b602555565b6000546001600160a01b0316331462001fb35760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314620020015760405162461bcd60e51b815260040162000eec9062003d7a565b80516200201690601f90602084019062003566565b506000805b601f548110156200206b57601f81815481106200203c576200203c62004192565b90600052602060002001548262002054919062003f3c565b915080620020628162004148565b9150506200201b565b5060205550565b6000546001600160a01b031633146200209f5760405162461bcd60e51b815260040162000eec9062003d7a565b6001600160a01b038116620021065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000eec565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316620021c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000eec565b6001600160a01b038216620022285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000eec565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316620022f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000eec565b6001600160a01b038216620023545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000eec565b60008111620023b85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840162000eec565b3060009081526003602052604090205460175481108015908190620023e657506001600160a01b0385163014155b80156200240157506011546001600160a01b03868116911614155b80156200241c57506000546001600160a01b03868116911614155b80156200243757506000546001600160a01b03858116911614155b80156200244657506000601554115b1562002457576200245782620028b5565b6001600160a01b03851660009081526005602052604090205460ff161580156200249a57506001600160a01b03841660009081526005602052604090205460ff16155b15620027345760205460009015620024c957620024b986868662002b24565b620024c686868662002c46565b90505b6000620024d562001b9d565b118015620024f057506011546001600160a01b038781169116145b1562002574574260165460155462002509919062003f3c565b11156200251b576200251b8562002e37565b601954841115620025605760405162461bcd60e51b815260206004820152600e60248201526d151c985b9cd9995c881b1a5b5a5d60921b604482015260640162000eec565b6200256c868562002e7f565b935062002622565b600062002580620010b5565b1180156200259b57506011546001600160a01b038681169116145b15620025f257601a54841115620025e65760405162461bcd60e51b815260206004820152600e60248201526d151c985b9cd9995c881b1a5b5a5d60921b604482015260640162000eec565b6200256c868562002f14565b601c54156200262257601c546001141562002613576200256c868562002e7f565b6200261f868562002f14565b93505b6200262e848262002f85565b6001600160a01b03871660009081526022602052604090205490945060ff16156200268e5760405162461bcd60e51b815260206004820152600f60248201526e54686520626f74206164647265737360881b604482015260640162000eec565b6200269862002fc9565b6011546001600160a01b038681169116146200273257601854620026d685620010d7886001600160a01b031660009081526003602052604090205490565b1115620027325760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865206d61784860448201526330bb329760e11b606482015260840162000eec565b505b62002741858585620030a9565b5050505050565b600081848411156200276f5760405162461bcd60e51b815260040162000eec919062003d45565b5060006200277e8486620040be565b95945050505050565b60008062002796838562003f3c565b905083811015620010735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000eec565b600082620027fb5750600062000eb9565b60006200280983856200409c565b90508262002818858362003f80565b14620010735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000eec565b60006200107383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062003183565b6000620028de600f54620010d7600c54620010d7600d54600a546200278790919063ffffffff16565b9050801562002b2057600062002919600262001395846200139562002911600f54600c546200278790919063ffffffff16565b8890620027ea565b9050620029316200292b848362002f85565b620031b6565b6013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156200297657600080fd5b505afa1580156200298b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b1919062003c91565b90506000620029ce600f54600c546200278790919063ffffffff16565b111562002a125762002a128284620029f4600f54600c546200278790919063ffffffff16565b62002a0090856200409c565b62002a0c919062003f80565b620033ed565b6013546012546040516370a0823160e01b81523060048201526001600160a01b039283169263a9059cbb92169083906370a082319060240160206040518083038186803b15801562002a6357600080fd5b505afa15801562002a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9e919062003c91565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801562002ae557600080fd5b505af115801562002afa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062003bd5565b5050565b6011546001600160a01b0383811691161462001c67576001600160a01b038281166000908152602460205260409020541615801562002b7157506011546001600160a01b03848116911614155b801562002b7d5750823b155b801562002b8a5750600081115b801562002bad57506001600160a01b038216600090815260036020526040902054155b1562002bee576001600160a01b03828116600090815260246020908152604080832080546001600160a01b0319169488169490941790935560269052204390555b6025546001600160a01b03831660009081526026602052604090205462002c169043620040be565b101562001c6757506001600160a01b0316600090815260246020526040902080546001600160a01b031916905550565b60006020546000141562002c5d5750600062001073565b60115460009081906001600160a01b03878116911614801562002c93575060215460ff166001148062002c93575060215460ff16155b1562002ca25784915062002cee565b6011546001600160a01b03868116911614801562002cd3575060215460ff166002148062002cd3575060215460ff16155b1562002ce25785915062002cee565b60009250505062001073565b60005b601f5481101562002db85762002d078362001ad3565b92506001600160a01b03831662002d1e5762002db8565b62002d53601f828154811062002d385762002d3862004192565b9060005260206000200154836200278790919063ffffffff16565b9150600062002d9361271062001395601f858154811062002d785762002d7862004192565b906000526020600020015489620027ea90919063ffffffff16565b905062002da2888583620030a9565b508062002daf8162004148565b91505062002cf1565b5060205462002dc8908262002f85565b1562002e0f5760125460205462002e0f9188916001600160a01b039091169062002e099061271090620013959062002e01908862002f85565b8a90620027ea565b620030a9565b62002e2d6127106200139560205487620027ea90919063ffffffff16565b9695505050505050565b6001600160a01b03811660009081526022602052604090205460ff1662002e7c576001600160a01b0381166000908152602260205260409020805460ff191660011790555b50565b60008062002e9f6127106200139562002e9762001b9d565b8690620027ea565b905062002ed1843062002e0962002ec961271062001395600b548a620027ea90919063ffffffff16565b859062002f85565b600b541562002f005762002f008461dead62002e0961271062001395600b5489620027ea90919063ffffffff16565b62002f0c838262002f85565b949350505050565b60008062002f2c6127106200139562002e97620010b5565b905062002f56843062002e0962002ec961271062001395600e548a620027ea90919063ffffffff16565b600e541562002f005762002f008461dead62002e0961271062001395600e5489620027ea90919063ffffffff16565b60006200107383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002748565b6000805b601b5481101562002b205760235462002ff2906001600160a01b031660001962003f57565b6023549092506200300e906001600160a01b0316600162003f0e565b602380546001600160a01b0319166001600160a01b03928316179055821660009081526003602052604081208054600192906200304d90849062003f3c565b9091555050604051600181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a380620030a08162004148565b91505062002fcd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260039091529190912054620030fd91839062002748565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546200312e908262002787565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200227d9085815260200190565b60008183620031a75760405162461bcd60e51b815260040162000eec919062003d45565b5060006200277e848662003f80565b80620031bf5750565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110620031f757620031f762004192565b6001600160a01b0392831660209182029290920101526013548251911690829060019081106200322b576200322b62004192565b6001600160a01b039283166020918202929092010152601d54620032589130916101009004168462002161565b601d54601454604051635c11d79560e01b81526001600160a01b03610100909304831692635c11d795926200329c9287926000928892911690429060040162003e15565b600060405180830381600087803b158015620032b757600080fd5b505af1158015620032cc573d6000803e3d6000fd5b50506013546014546040516370a0823160e01b81526001600160a01b03918216600482018190529190921693506323b872dd925090309084906370a082319060240160206040518083038186803b1580156200332757600080fd5b505afa1580156200333c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003362919062003c91565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015620033b257600080fd5b505af1158015620033c7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c67919062003bd5565b601d546200340c90309061010090046001600160a01b03168462002161565b601d5460135460125460405162e8e33760e81b81526001600160a01b039283166004820152306024820152604481018590526064810186905260006084820181905260a482015290821660c48201524260e4820152610100909204169063e8e337009061010401606060405180830381600087803b1580156200348e57600080fd5b505af1158015620034a3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062003cd8565b828054620034d7906200410b565b90600052602060002090601f016020900481019282620034fb576000855562003546565b82601f106200351657805160ff191683800117855562003546565b8280016001018555821562003546579182015b828111156200354657825182559160200191906001019062003529565b5062003554929150620035a3565b5090565b6101ad80620041f483390190565b8280548282559060005260206000209081019282156200354657916020028201828111156200354657825182559160200191906001019062003529565b5b80821115620035545760008155600101620035a4565b600082601f830112620035cc57600080fd5b81516020620035e5620035df8362003ebc565b62003e88565b80838252828201915082860187848660051b89010111156200360657600080fd5b60005b85811015620036325781516200361f81620041be565b8452928401929084019060010162003609565b5090979650505050505050565b600082601f8301126200365157600080fd5b8151602062003664620035df8362003ebc565b80838252828201915082860187848660051b89010111156200368557600080fd5b60005b858110156200363257815167ffffffffffffffff811115620036a957600080fd5b8801603f81018a13620036bb57600080fd5b858101516040620036d0620035df8362003ee3565b8281528c82848601011115620036e557600080fd5b620036f6838a8301848701620040d8565b8752505050928401929084019060010162003688565b600082601f8301126200371e57600080fd5b8151602062003731620035df8362003ebc565b80838252828201915082860187848660051b89010111156200375257600080fd5b60005b85811015620036325781518452928401929084019060010162003755565b600082601f8301126200378557600080fd5b8151602062003798620035df8362003ebc565b80838252828201915082860187848660051b8901011115620037b957600080fd5b60005b8581101562003632578151620037d281620041e3565b84529284019290840190600101620037bc565b803562001b9881620041d4565b6000602082840312156200380557600080fd5b81356200107381620041be565b6000602082840312156200382557600080fd5b81516200107381620041be565b600080604083850312156200384657600080fd5b82356200385381620041be565b915060208301356200386581620041be565b809150509250929050565b6000806000606084860312156200388657600080fd5b83356200389381620041be565b92506020840135620038a581620041be565b929592945050506040919091013590565b60008060408385031215620038ca57600080fd5b8235620038d781620041be565b915060208301356200386581620041d4565b60008060408385031215620038fd57600080fd5b82356200390a81620041be565b946020939093013593505050565b600080602083850312156200392c57600080fd5b823567ffffffffffffffff808211156200394557600080fd5b818501915085601f8301126200395a57600080fd5b8135818111156200396a57600080fd5b8660208260051b85010111156200398057600080fd5b60209290920196919550909350505050565b60008060408385031215620039a657600080fd5b823567ffffffffffffffff811115620039be57600080fd5b8301601f81018513620039d057600080fd5b80356020620039e3620035df8362003ebc565b80838252828201915082850189848660051b880101111562003a0457600080fd5b600095505b8486101562003a3457803562003a1f81620041be565b83526001959095019491830191830162003a09565b50955062003a469050868201620037e5565b93505050509250929050565b600080600080600060a0868803121562003a6b57600080fd5b855167ffffffffffffffff8082111562003a8457600080fd5b62003a9289838a016200363f565b9650602088015191508082111562003aa957600080fd5b62003ab789838a016200370c565b9550604088015191508082111562003ace57600080fd5b62003adc89838a01620035ba565b9450606088015191508082111562003af357600080fd5b62003b0189838a0162003773565b9350608088015191508082111562003b1857600080fd5b5062003b27888289016200370c565b9150509295509295909350565b6000602080838503121562003b4857600080fd5b823567ffffffffffffffff81111562003b6057600080fd5b8301601f8101851362003b7257600080fd5b803562003b83620035df8262003ebc565b80828252848201915084840188868560051b870101111562003ba457600080fd5b600094505b8385101562003bc957803583526001949094019391850191850162003ba9565b50979650505050505050565b60006020828403121562003be857600080fd5b81516200107381620041d4565b60006020828403121562003c0857600080fd5b813567ffffffffffffffff81111562003c2057600080fd5b8201601f8101841362003c3257600080fd5b803562003c43620035df8262003ee3565b81815285602083850101111562003c5957600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020828403121562003c8a57600080fd5b5035919050565b60006020828403121562003ca457600080fd5b5051919050565b60008060006060848603121562003cc157600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121562003cee57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121562003d1a57600080fd5b81356200107381620041e3565b6000825162003d3b818460208701620040d8565b9190910192915050565b602081526000825180602084015262003d66816040850160208701620040d8565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060808201868352602060018060a01b038716818501528560408501526080606085015281855180845260a086019150828701935060005b8181101562003e065784518352938301939183019160010162003de8565b50909998505050505050505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562003e675784516001600160a01b03168352938301939183019160010162003e40565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171562003eb45762003eb4620041a8565b604052919050565b600067ffffffffffffffff82111562003ed95762003ed9620041a8565b5060051b60200190565b600067ffffffffffffffff82111562003f005762003f00620041a8565b50601f01601f191660200190565b60006001600160a01b0382811684821680830382111562003f335762003f3362004166565b01949350505050565b6000821982111562003f525762003f5262004166565b500190565b60006001600160a01b038381168062003f745762003f746200417c565b92169190910492915050565b60008262003f925762003f926200417c565b500490565b600181815b8085111562003fd857816000190482111562003fbc5762003fbc62004166565b8085161562003fca57918102915b93841c939080029062003f9c565b509250929050565b600062001073838360008262003ff95750600162000eb9565b81620040085750600062000eb9565b81600181146200402157600281146200402c576200404c565b600191505062000eb9565b60ff84111562004040576200404062004166565b50506001821b62000eb9565b5060208310610133831016604e8410600b841016171562004071575081810a62000eb9565b6200407d838362003f97565b806000190482111562004094576200409462004166565b029392505050565b6000816000190483118215151615620040b957620040b962004166565b500290565b600082821015620040d357620040d362004166565b500390565b60005b83811015620040f5578181015183820152602001620040db565b8381111562004105576000848401525b50505050565b600181811c908216806200412057607f821691505b602082108114156200414257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200415f576200415f62004166565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462002e7c57600080fd5b801515811462002e7c57600080fd5b60ff8116811462002e7c57600080fdfe608060405234801561001057600080fd5b506040516101ad3803806101ad83398101604081905261002f916100f2565b604080516001600160a01b03838116602483015260001960448084019190915283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291519184169161008a9190610125565b6000604051808303816000865af19150503d80600081146100c7576040519150601f19603f3d011682016040523d82523d6000602084013e6100cc565b606091505b5050505050610160565b80516001600160a01b03811681146100ed57600080fd5b919050565b6000806040838503121561010557600080fd5b61010e836100d6565b915061011c602084016100d6565b90509250929050565b6000825160005b81811015610146576020818601810151858301520161012c565b81811115610155576000828501525b509190910192915050565b603f8061016e6000396000f3fe6080604052600080fdfea2646970667358221220794159df682914cc5fda2a764fd8eacec5846942efbe7cee403f9d74fc6a2a6564736f6c6343000806003345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209dfbb13d613c03c679029955dc9271deeb70e9558031381b2f768a65d33d762c64736f6c63430008060033

Deployed Bytecode Sourcemap

8475:18015:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12990:191;;;;;;;;;;-1:-1:-1;12990:191:0;;;;;:::i;:::-;;:::i;:::-;;;14042:14:1;;14035:22;14017:41;;14005:2;13990:18;12990:191:0;13972:92:1;9447:26:0;;;;;;;;;;;;;;;;;;;14762:25:1;;;14750:2;14735:18;9447:26:0;14717:76:1;9719:22:0;;;;;;;;;;-1:-1:-1;9719:22:0;;;;;;;;;;;22595:4:1;22583:17;;;22565:36;;22553:2;22538:18;9719:22:0;22520:87:1;22234:86:0;;;;;;;;;;-1:-1:-1;22234:86:0;;;;;:::i;:::-;;:::i;:::-;;8910:26;;;;;;;;;;;;;;;;12365:95;;;;;;;;;;-1:-1:-1;12445:7:0;;12365:95;;23357:86;;;;;;;;;;-1:-1:-1;23357:86:0;;;;;:::i;:::-;;:::i;9510:23::-;;;;;;;;;;;;;;;;15442:242;;;;;;;;;;-1:-1:-1;15442:242:0;;;;;:::i;:::-;;:::i;13189:708::-;;;;;;;;;;-1:-1:-1;13189:708:0;;;;;:::i;:::-;;:::i;15202:232::-;;;;;;;;;;-1:-1:-1;15202:232:0;;;;;:::i;:::-;;:::i;23069:138::-;;;;;;;;;;;;;:::i;9343:34::-;;;;;;;;;;;;;;;;21482:101;;;;;;;;;;-1:-1:-1;21482:101:0;;;;;:::i;:::-;-1:-1:-1;;;;;21560:15:0;21536:4;21560:15;;;:6;:15;;;;;;;;;21482:101;12272:85;;;;;;;;;;-1:-1:-1;12340:9:0;;;;12272:85;;8841:22;;;;;;;;;;-1:-1:-1;8841:22:0;;;;;;;;21180:104;;;;;;;;;;-1:-1:-1;21180:104:0;;;;;:::i;:::-;;:::i;13905:296::-;;;;;;;;;;-1:-1:-1;13905:296:0;;;;;:::i;:::-;;:::i;9626:19::-;;;;;;;;;;-1:-1:-1;9626:19:0;;;;-1:-1:-1;;;;;9626:19:0;;;;;;-1:-1:-1;;;;;12100:32:1;;;12082:51;;12070:2;12055:18;9626:19:0;12037:102:1;14748:111:0;;;;;;;;;;-1:-1:-1;14748:111:0;;;;;:::i;:::-;;:::i;9799:2277::-;;;;;;;;;;-1:-1:-1;9799:2277:0;;;;;:::i;:::-;;:::i;9540:29::-;;;;;;;;;;-1:-1:-1;9540:29:0;;;;;;;;21924:95;;;;;;;;;;-1:-1:-1;21924:95:0;;;;;:::i;:::-;;:::i;9415:25::-;;;;;;;;;;;;;;;;22709:82;;;;;;;;;;-1:-1:-1;22709:82:0;;;;;:::i;:::-;;:::i;9576:43::-;;;;;;;;;;-1:-1:-1;9576:43:0;;;;;;;-1:-1:-1;;;;;9576:43:0;;;22027:197;;;;;;;;;;-1:-1:-1;22027:197:0;;;;;:::i;:::-;;:::i;25937:28::-;;;;;;;;;;;;;;;;9258:32;;;;;;;;;;;;;;;;22801:252;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;12468:117::-;;;;;;;;;;-1:-1:-1;12468:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12561:16:0;12534:7;12561:16;;;:7;:16;;;;;;;12468:117;3498:148;;;;;;;;;;;;;:::i;26019:250::-;;;;;;;;;;-1:-1:-1;26019:250:0;;;;;:::i;:::-;;:::i;9165:26::-;;;;;;;;;;-1:-1:-1;9165:26:0;;;;-1:-1:-1;;;;;9165:26:0;;;9023:27;;;;;;;;;;;;;;;;9058:32;;;;;;;;;;;;;;;;3275:79;;;;;;;;;;-1:-1:-1;3313:7:0;3340:6;-1:-1:-1;;;;;3340:6:0;3275:79;;23215:134;;;;;;;;;;;;;:::i;14985:205::-;;;;;;;;;;-1:-1:-1;14985:205:0;;;;;:::i;:::-;;:::i;12177:87::-;;;;;;;;;;;;;:::i;24665:27::-;;;;;;;;;;-1:-1:-1;24665:27:0;;;;-1:-1:-1;;;;;24665:27:0;;;9129:29;;;;;;;;;;-1:-1:-1;9129:29:0;;;;-1:-1:-1;;;;;9129:29:0;;;22610:89;;;;;;;;;;-1:-1:-1;22610:89:0;;;;;:::i;:::-;;:::i;26380:101::-;;;;;;;;;;-1:-1:-1;26380:101:0;;;;;:::i;:::-;;:::i;9685:26::-;;;;;;;;;;;;;;;;14209:396;;;;;;;;;;-1:-1:-1;14209:396:0;;;;;:::i;:::-;;:::i;12593:197::-;;;;;;;;;;-1:-1:-1;12593:197:0;;;;;:::i;:::-;;:::i;21805:111::-;;;;;;;;;;-1:-1:-1;21805:111:0;;;;;:::i;:::-;;:::i;8812:21::-;;;;;;;;;;;;;:::i;9385:23::-;;;;;;;;;;;;;;;;21292:182;;;;;;;;;;-1:-1:-1;21292:182:0;;;;;:::i;:::-;;:::i;9297:38::-;;;;;;;;;;;;;;;;21703:90;;;;;;;;;;-1:-1:-1;21703:90:0;;;;;:::i;:::-;;:::i;25972:40::-;;;;;;;;;;-1:-1:-1;25972:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;8871:31;;;;;;;;;;;;;;;;8983:32;;;;;;;;;;;;;;;;25887:43;;;;;;;;;;-1:-1:-1;25887:43:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;25887:43:0;;;8785:19;;;;;;;;;;;;;:::i;9652:26::-;;;;;;;;;;-1:-1:-1;9652:26:0;;;;;:::i;:::-;;:::i;14617:125::-;;;;;;;;;;-1:-1:-1;14617:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;14707:27:0;14683:4;14707:27;;;:18;:27;;;;;;;;;14617:125;8944:31;;;;;;;;;;;;;;;;12798:184;;;;;;;;;;-1:-1:-1;12798:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;12947:18:0;;;12915:7;12947:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12798:184;26277:95;;;;;;;;;;-1:-1:-1;26277:95:0;;;;;:::i;:::-;;:::i;14867:110::-;;;;;;;;;;-1:-1:-1;14867:110:0;;;;;:::i;:::-;;:::i;9199:21::-;;;;;;;;;;-1:-1:-1;9199:21:0;;;;-1:-1:-1;;;;;9199:21:0;;;22328:274;;;;;;;;;;-1:-1:-1;22328:274:0;;;;;:::i;:::-;;:::i;9228:22::-;;;;;;;;;;-1:-1:-1;9228:22:0;;;;-1:-1:-1;;;;;9228:22:0;;;3654:244;;;;;;;;;;-1:-1:-1;3654:244:0;;;;;:::i;:::-;;:::i;9480:23::-;;;;;;;;;;;;;;;;12086:83;12123:13;12156:5;12149:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:83;:::o;12990:191::-;13092:4;13114:37;13123:10;13135:7;13144:6;13114:8;:37::i;:::-;-1:-1:-1;13169:4:0;12990:191;;;;;:::o;22234:86::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;;;;;;;;;22296:8:::1;:16:::0;22234:86::o;23357:::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;23419:8:::1;:16:::0;23357:86::o;15442:242::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;15554:17:::1;:37:::0;;;;15602:12:::1;:27:::0;15640:17:::1;:36:::0;15442:242::o;13189:708::-;13321:4;13341:17;;13362:1;13341:22;:65;;;;-1:-1:-1;13389:16:0;;;;;-1:-1:-1;;;;;13389:16:0;13367:10;:39;13341:65;13338:255;;;13427:16;;;;;:21;13424:66;;;3313:7;3340:6;-1:-1:-1;;;;;13459:16:0;;;3340:6;;13459:16;13450:38;;;;-1:-1:-1;;;13450:38:0;;20034:2:1;13450:38:0;;;20016:21:1;20073:1;20053:18;;;20046:29;-1:-1:-1;;;20091:18:1;;;20084:39;20140:18;;13450:38:0;20006:158:1;13450:38:0;13523:15;13504:17;:34;13553:14;:28;;-1:-1:-1;;;;;;13553:28:0;-1:-1:-1;;;;;13553:28:0;;;;;13338:255;13604:36;13614:6;13622:9;13633:6;13604:9;:36::i;:::-;13651:216;13674:6;13695:10;13720:136;13774:6;13720:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13720:19:0;;;;;;:11;:19;;;;;;;;13740:10;13720:31;;;;;;;;;:136;:35;:136::i;:::-;13651:8;:216::i;:::-;-1:-1:-1;13885:4:0;13189:708;;;;;;:::o;15202:232::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;15310:16:::1;:35:::0;;;;15356:11:::1;:25:::0;15392:16:::1;:34:::0;15202:232::o;23069:138::-;23112:9;23141:58;23181:17;;23141:35;23163:12;;23141:17;;:21;;:35;;;;:::i;:::-;:39;;:58::i;:::-;23134:65;;23069:138;:::o;21180:104::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21253:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;21253:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21180:104::o;13905:296::-;14065:10;14020:4;14112:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14112:32:0;;;;;;;;;;14020:4;;14042:129;;14090:7;;14112:48;;14149:10;14112:36;:48::i;14748:111::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14817:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;14817:34:0::1;14847:4;14817:34;::::0;;14748:111::o;9799:2277::-;9871:5;;;;;;;9870:6;9862:15;;;;;;9892:5;:12;;-1:-1:-1;;9892:12:0;;;;;10057:71;;9892:12;;;;;;;;;;10057:71;;;;;;;;;;;;:::i;:::-;9919:209;;;;;;;;;;10143:27;10161:5;10167:1;10161:8;;;;;;;;:::i;:::-;;;;;;;10143:17;:27::i;:::-;10185:13;10201:5;10207:1;10201:8;;;;;;;;:::i;:::-;;;;;;;10185:24;;10233:5;10239:1;10233:8;;;;;;;;:::i;:::-;;;;;;;10224:6;;:17;;;;;-1:-1:-1;;;;;10224:17:0;;;;;-1:-1:-1;;;;;10224:17:0;;;;;;10264:7;10272:1;10264:10;;;;;;;;:::i;:::-;;;;;;;10256:5;:18;;;;;;;;;;;;:::i;:::-;;10299:7;10307:1;10299:10;;;;;;;;:::i;:::-;;;;;;;10289:7;:20;;;;;;;;;;;;:::i;:::-;;10341:5;10347:1;10341:8;;;;;;;;:::i;:::-;;;;;;;;;;;10324:9;:26;;-1:-1:-1;;10324:26:0;;;;;;;;;;10386:22;;:2;:22;:::i;:::-;10375:5;10381:1;10375:8;;;;;;;;:::i;:::-;;;;;;;:34;;;;:::i;:::-;10365:7;:44;;;10446:25;;10465:5;;10446:14;;10458:1;10446:11;:14::i;:::-;:18;;:25::i;:::-;10424:19;:47;10523:9;;10511:22;;10523:9;;10511:2;:22;:::i;:::-;10500:5;10506:1;10500:8;;;;;;;;:::i;:::-;;;;;;;:34;;;;:::i;:::-;10486:10;:48;10588:9;;10576:22;;10588:9;;10576:2;:22;:::i;:::-;10564:5;10570:2;10564:9;;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;10549:11;:50;10650:9;;10638:22;;10650:9;;10638:2;:22;:::i;:::-;10626:5;10632:1;10626:8;;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;10614:8;:47;10702:8;;:5;;10708:1;;10702:8;;;;;;:::i;:::-;;;;;;;10676:23;:34;;;;10736:5;10742:1;10736:8;;;;;;;;:::i;:::-;;;;;;;10725;:19;;;;10777:5;10783:1;10777:8;;;;;;;;:::i;:::-;;;;;;;10759:16;:26;;;;10813:5;10819:1;10813:8;;;;;;;;:::i;:::-;;;;;;;10800:11;:21;;;;10854:5;10860:1;10854:8;;;;;;;;:::i;:::-;;;;;;;10836:16;:26;;;;10896:5;10902:1;10896:8;;;;;;;;:::i;:::-;;;;;;;10877:17;:27;;;;10933:5;10939:2;10933:9;;;;;;;;:::i;:::-;;;;;;;10919:12;:23;;;;10976:5;10982:2;10976:9;;;;;;;;:::i;:::-;;;;;;;10957:17;:28;;;;11015:5;11021:1;11015:8;;;;;;;;:::i;:::-;;;;;;;;;;;;11000:11;:23;;-1:-1:-1;;;;;;11000:23:0;-1:-1:-1;;;;;11000:23:0;;;;;;11055:7;;11038:14;;;-1:-1:-1;11038:14:0;;;:7;:14;;;;;;;:24;11133:8;;;;11139:1;;11133:8;;;;;;:::i;:::-;;;;;;;11077:16;;:79;;;;;-1:-1:-1;;;;;11077:79:0;;;;;-1:-1:-1;;;;;11077:79:0;;;;;;11383:5;11389:1;11383:8;;;;;;;;:::i;:::-;;;;;;;11364:16;;:27;;;;;;;;;;;;;;;;;;11417:5;11423:1;11417:8;;;;;;;;:::i;:::-;;;;;;;;;;;;11406:19;;:8;:19;11515:11;;-1:-1:-1;;;;;11515:11:0;;;11496:31;;;;:18;:31;;;;;;:38;;11530:4;-1:-1:-1;;11496:38:0;;;;;;;;11549:25;;;;;;;;;:32;;;;;;;;11624:4;11597:33;;;;;:40;;;;;;;;;;;11686:7;;11657:37;;14762:25:1;;;11549::0;;11496:31;;11657:37;;14735:18:1;11657:37:0;;;;;;;11740:6;;11729:32;;-1:-1:-1;;;;;11740:6:0;;;;11755:4;;11729:32;;;:::i;:::-;-1:-1:-1;;;;;12374:15:1;;;12356:34;;12426:15;;12421:2;12406:18;;12399:43;12306:2;12291:18;11729:32:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11709:7:0;:53;;-1:-1:-1;;;;;11709:53:0;;;-1:-1:-1;;;;;;11709:53:0;;;;;;11777:6;;11824:16;;11789:65;;;11709:53;11824:16;;;;;11789:65;;;13772:51:1;-1:-1:-1;;13839:18:1;;;;13832:34;;;;11789:65:0;;;;;;;;;;13745:18:1;;;;11789:65:0;;;;;;;-1:-1:-1;;;;;11789:65:0;-1:-1:-1;;;11789:65:0;;;11777:78;:6;;;;;:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11877:5;11883:1;11877:8;;;;;;;;:::i;:::-;;;;;;;;;;;;11870:4;:15;;-1:-1:-1;;;;;;11870:15:0;-1:-1:-1;;;;;11870:15:0;;;;;;;;;11900:20;;;;:9;;:20;;;;;:::i;:::-;;11947:5;11953:1;11947:8;;;;;;;;:::i;:::-;;;;;;;11935:9;;:20;;;;;;;;;;;;;;;;;;11974:6;11970:99;11984:9;:16;11982:18;;11970:99;;;12041:9;12051:1;12041:12;;;;;;;;:::i;:::-;;;;;;;;;12024:11;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;12001:3:0;;-1:-1:-1;12001:3:0;;;:::i;:::-;;;;11970:99;;;;9847:2229;;;;;;9799:2277;:::o;21924:95::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;21992:11:::1;:19:::0;;-1:-1:-1;;;;;;21992:19:0::1;-1:-1:-1::0;;;;;21992:19:0;;;::::1;::::0;;;::::1;::::0;;21924:95::o;22709:82::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;22772:4:::1;:11:::0;;-1:-1:-1;;;;;;22772:11:0::1;-1:-1:-1::0;;;;;22772:11:0;;;::::1;::::0;;;::::1;::::0;;22709:82::o;22027:197::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;22127:8:::1;:18:::0;;;;22158:10:::1;:22:::0;22192:11:::1;:24:::0;22027:197::o;22801:252::-;22949:9;;22975:4;;23003:11;;;23036:9;23025:20;;;;;;;;;;;;;;;;;;22949:9;;;;;-1:-1:-1;;;;;22975:4:0;;;;23003:11;;22900:25;;23025:20;23036:9;23025:20;;;23036:9;23025:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22801:252;;;;:::o;3498:148::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;3605:1:::1;3589:6:::0;;3568:40:::1;::::0;-1:-1:-1;;;;;3589:6:0;;::::1;::::0;3568:40:::1;::::0;3605:1;;3568:40:::1;3636:1;3619:19:::0;;-1:-1:-1;;;;;;3619:19:0::1;::::0;;3498:148::o;26019:250::-;26100:4;;26073:11;;-1:-1:-1;;;;;26100:4:0;:16;26097:86;;26142:4;;26138:33;;-1:-1:-1;;;26138:33:0;;-1:-1:-1;;;;;12100:32:1;;;26138:33:0;;;12082:51:1;26142:4:0;;;;26138:24;;12055:18:1;;26138:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26132:39;;26097:86;-1:-1:-1;;;;;26196:15:0;;26193:69;;-1:-1:-1;;;;;;26233:17:0;;;;;;;:8;:17;;;;;;;26193:69;26019:250;;;:::o;23215:134::-;23257:9;23286:55;23324:16;;23286:33;23307:11;;23286:16;;:20;;:33;;;;:::i;14985:205::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;15077:9:::1;15072:111;15092:19:::0;;::::1;15072:111;;;15167:4;15133:18;:31;15152:8;;15161:1;15152:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15133:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15133:31:0;:38;;-1:-1:-1;;15133:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15113:3;::::1;::::0;::::1;:::i;:::-;;;;15072:111;;;;14985:205:::0;;:::o;12177:87::-;12216:13;12249:7;12242:14;;;;;:::i;22610:89::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;22674:9:::1;:17:::0;;-1:-1:-1;;22674:17:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;22610:89::o;26380:101::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;26451:14:::1;:22:::0;;-1:-1:-1;;;;;;26451:22:0::1;-1:-1:-1::0;;;;;26451:22:0;;;::::1;::::0;;;::::1;::::0;;26380:101::o;14209:396::-;14329:4;14351:224;14374:10;14399:7;14421:143;14476:15;14421:143;;;;;;;;;;;;;;;;;14433:10;14421:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14421:32:0;;;;;;;;;;;:143;:36;:143::i;12593:197::-;12698:4;12720:40;12730:10;12742:9;12753:6;12720:9;:40::i;21805:111::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;21881:19:::1;:27:::0;21805:111::o;8812:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21292:182::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;21384:6:::1;21380:87;21393:8;:15;21391:1;:17;21380:87;;;21450:5;21428:6;:19;21435:8;21444:1;21435:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21428:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21428:19:0;:27;;-1:-1:-1;;21428:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21409:3;::::1;::::0;::::1;:::i;:::-;;;;21380:87;;21703:90:::0;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;21767:7:::1;:18:::0;;-1:-1:-1;;;;;;21767:18:0::1;-1:-1:-1::0;;;;;21767:18:0;;;::::1;::::0;;;::::1;::::0;;21703:90::o;8785:19::-;;;;;;;:::i;9652:26::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9652:26:0;:::o;26277:95::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;26342:14:::1;:22:::0;26277:95::o;14867:110::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14934:27:0::1;14964:5;14934:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;14934:35:0::1;::::0;;14867:110::o;22328:274::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;22410:20;;::::1;::::0;:9:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;22441:18;22474:6:::0;22470:90:::1;22484:9;:16:::0;22482:18;::::1;22470:90;;;22536:9;22546:1;22536:12;;;;;;;;:::i;:::-;;;;;;;;;22520:28;;;;;:::i;:::-;::::0;-1:-1:-1;22501:3:0;::::1;::::0;::::1;:::i;:::-;;;;22470:90;;;-1:-1:-1::0;22570:11:0::1;:24:::0;-1:-1:-1;22328:274:0:o;3654:244::-;3409:6;;-1:-1:-1;;;;;3409:6:0;3419:10;3409:20;3401:65;;;;-1:-1:-1;;;3401:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3743:22:0;::::1;3735:73;;;::::0;-1:-1:-1;;;3735:73:0;;15792:2:1;3735:73:0::1;::::0;::::1;15774:21:1::0;15831:2;15811:18;;;15804:30;15870:34;15850:18;;;15843:62;-1:-1:-1;;;15921:18:1;;;15914:36;15967:19;;3735:73:0::1;15764:228:1::0;3735:73:0::1;3845:6;::::0;;3824:38:::1;::::0;-1:-1:-1;;;;;3824:38:0;;::::1;::::0;3845:6;::::1;::::0;3824:38:::1;::::0;::::1;3873:6;:17:::0;;-1:-1:-1;;;;;;3873:17:0::1;-1:-1:-1::0;;;;;3873:17:0;;;::::1;::::0;;;::::1;::::0;;3654:244::o;15787:369::-;-1:-1:-1;;;;;15914:19:0;;15906:68;;;;-1:-1:-1;;;15906:68:0;;19629:2:1;15906:68:0;;;19611:21:1;19668:2;19648:18;;;19641:30;19707:34;19687:18;;;19680:62;-1:-1:-1;;;19758:18:1;;;19751:34;19802:19;;15906:68:0;19601:226:1;15906:68:0;-1:-1:-1;;;;;15993:21:0;;15985:68;;;;-1:-1:-1;;;15985:68:0;;16199:2:1;15985:68:0;;;16181:21:1;16238:2;16218:18;;;16211:30;16277:34;16257:18;;;16250:62;-1:-1:-1;;;16328:18:1;;;16321:32;16370:19;;15985:68:0;16171:224:1;15985:68:0;-1:-1:-1;;;;;16064:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16116:32;;14762:25:1;;;16116:32:0;;14735:18:1;16116:32:0;;;;;;;;15787:369;;;:::o;16164:1944::-;-1:-1:-1;;;;;16286:18:0;;16278:68;;;;-1:-1:-1;;;16278:68:0;;19223:2:1;16278:68:0;;;19205:21:1;19262:2;19242:18;;;19235:30;19301:34;19281:18;;;19274:62;-1:-1:-1;;;19352:18:1;;;19345:35;19397:19;;16278:68:0;19195:227:1;16278:68:0;-1:-1:-1;;;;;16365:16:0;;16357:64;;;;-1:-1:-1;;;16357:64:0;;15388:2:1;16357:64:0;;;15370:21:1;15427:2;15407:18;;;15400:30;15466:34;15446:18;;;15439:62;-1:-1:-1;;;15517:18:1;;;15510:33;15560:19;;16357:64:0;15360:225:1;16357:64:0;16449:1;16440:6;:10;16432:64;;;;-1:-1:-1;;;16432:64:0;;18813:2:1;16432:64:0;;;18795:21:1;18852:2;18832:18;;;18825:30;18891:34;18871:18;;;18864:62;-1:-1:-1;;;18942:18:1;;;18935:39;18991:19;;16432:64:0;18785:231:1;16432:64:0;16588:4;16539:28;12561:16;;;:7;:16;;;;;;16644:19;;16620:43;;;;;;;16677:31;;-1:-1:-1;;;;;;16687:21:0;;16703:4;16687:21;;16677:31;:56;;;;-1:-1:-1;16719:14:0;;-1:-1:-1;;;;;16711:22:0;;;16719:14;;16711:22;;16677:56;:75;;;;-1:-1:-1;3313:7:0;3340:6;-1:-1:-1;;;;;16737:15:0;;;3340:6;;16737:15;;16677:75;:92;;;;-1:-1:-1;3313:7:0;3340:6;-1:-1:-1;;;;;16756:13:0;;;3340:6;;16756:13;;16677:92;:114;;;;;16790:1;16772:17;;:19;16677:114;16674:180;;;16808:34;16821:20;16808:12;:34::i;:::-;-1:-1:-1;;;;;16871:24:0;;;;;;:18;:24;;;;;;;;16870:25;:51;;;;-1:-1:-1;;;;;;16899:22:0;;;;;;:18;:22;;;;;;;;16898:23;16870:51;16866:1174;;;16968:11;;16937:13;;16968;16965:131;;17001:22;17006:4;17012:2;17016:6;17001:4;:22::i;:::-;17050:30;17065:4;17070:2;17073:6;17050:14;:30::i;:::-;17042:38;;16965:131;17127:1;17113:11;:9;:11::i;:::-;:15;:39;;;;-1:-1:-1;17138:14:0;;-1:-1:-1;;;;;17132:20:0;;;17138:14;;17132:20;17113:39;17110:668;;;17227:15;17201:23;;17181:17;;:43;;;;:::i;:::-;:61;17177:78;;;17245:10;17252:2;17245:6;:10::i;:::-;17292;;17282:6;:20;;17274:47;;;;-1:-1:-1;;;17274:47:0;;17302:2:1;17274:47:0;;;17284:21:1;17341:2;17321:18;;;17314:30;-1:-1:-1;;;17360:18:1;;;17353:44;17414:18;;17274:47:0;:164:1;:47:0;17349:20;17357:4;17362:6;17349:7;:20::i;:::-;17340:29;;17110:668;;;17408:1;17393:12;:10;:12::i;:::-;:16;:38;;;;-1:-1:-1;17417:14:0;;-1:-1:-1;;;;;17413:18:0;;;17417:14;;17413:18;17393:38;17390:388;;;17475:11;;17465:6;:21;;17457:48;;;;-1:-1:-1;;;17457:48:0;;17302:2:1;17457:48:0;;;17284:21:1;17341:2;17321:18;;;17314:30;-1:-1:-1;;;17360:18:1;;;17353:44;17414:18;;17457:48:0;17274:164:1;17457:48:0;17532:21;17541:4;17546:6;17532:8;:21::i;17390:388::-;17577:8;;:11;17574:204;;17623:8;;17633:1;17623:11;17620:142;;;17665:20;17673:4;17678:6;17665:7;:20::i;17620:142::-;17741:21;17750:4;17755:6;17741:8;:21::i;:::-;17732:30;;17620:142;17801:17;:6;17812:5;17801:10;:17::i;:::-;-1:-1:-1;;;;;17842:12:0;;;;;;:6;:12;;;;;;17792:26;;-1:-1:-1;17842:12:0;;17841:13;17833:41;;;;-1:-1:-1;;;17833:41:0;;16958:2:1;17833:41:0;;;16940:21:1;16997:2;16977:18;;;16970:30;-1:-1:-1;;;17016:18:1;;;17009:45;17071:18;;17833:41:0;16930:165:1;17833:41:0;17889:14;:12;:14::i;:::-;17925;;-1:-1:-1;;;;;17921:18:0;;;17925:14;;17921:18;17918:110;;17979:8;;17949:25;17967:6;17949:13;17959:2;-1:-1:-1;;;;;12561:16:0;12534:7;12561:16;;;:7;:16;;;;;;;12468:117;17949:25;17948:39;;17940:88;;;;-1:-1:-1;;;17940:88:0;;17645:2:1;17940:88:0;;;17627:21:1;17684:2;17664:18;;;17657:30;17723:34;17703:18;;;17696:62;-1:-1:-1;;;17774:18:1;;;17767:34;17818:19;;17940:88:0;17617:226:1;17940:88:0;16922:1118;16866:1174;18050:32;18065:4;18071:2;18075:6;18050:14;:32::i;:::-;16267:1841;;16164:1944;;;:::o;5044:226::-;5164:7;5200:12;5192:6;;;;5184:29;;;;-1:-1:-1;;;5184:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5224:9:0;5236:5;5240:1;5236;:5;:::i;:::-;5224:17;5044:226;-1:-1:-1;;;;;5044:226:0:o;4159:181::-;4217:7;;4249:5;4253:1;4249;:5;:::i;:::-;4237:17;;4278:1;4273;:6;;4265:46;;;;-1:-1:-1;;;4265:46:0;;16602:2:1;4265:46:0;;;16584:21:1;16641:2;16621:18;;;16614:30;16680:29;16660:18;;;16653:57;16727:18;;4265:46:0;16574:177:1;5520:471:0;5578:7;5823:6;5819:47;;-1:-1:-1;5853:1:0;5846:8;;5819:47;5878:9;5890:5;5894:1;5890;:5;:::i;:::-;5878:17;-1:-1:-1;5923:1:0;5914:5;5918:1;5878:17;5914:5;:::i;:::-;:10;5906:56;;;;-1:-1:-1;;;5906:56:0;;18050:2:1;5906:56:0;;;18032:21:1;18089:2;18069:18;;;18062:30;18128:34;18108:18;;;18101:62;-1:-1:-1;;;18179:18:1;;;18172:31;18220:19;;5906:56:0;18022:223:1;6456:132:0;6514:7;6541:39;6545:1;6548;6541:39;;;;;;;;;;;;;;;;;:3;:39::i;18955:779::-;19025:17;19045:84;19111:17;;19045:61;19089:16;;19045:39;19066:17;;19045:16;;:20;;:39;;;;:::i;:84::-;19025:104;-1:-1:-1;19143:14:0;;19140:587;;19173:19;19195:90;19283:1;19195:83;19265:12;19195:65;19220:39;19241:17;;19220:16;;:20;;:39;;;;:::i;:::-;19195:20;;:24;:65::i;:90::-;19173:112;-1:-1:-1;19300:58:0;19320:37;:20;19173:112;19320:24;:37::i;:::-;19300:19;:58::i;:::-;19399:6;;19392:39;;-1:-1:-1;;;19392:39:0;;19425:4;19392:39;;;12082:51:1;19373:16:0;;-1:-1:-1;;;;;19399:6:0;;19392:24;;12055:18:1;;19392:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19373:58;;19489:1;19449:39;19470:17;;19449:16;;:20;;:39;;;;:::i;:::-;:41;19446:177;;;19514:93;19527:11;19593:12;19551:39;19572:17;;19551:16;;:20;;:39;;;;:::i;:::-;19541:50;;:8;:50;:::i;:::-;:65;;;;:::i;:::-;19514:12;:93::i;:::-;19644:6;;19661:11;;19675:39;;-1:-1:-1;;;19675:39:0;;19708:4;19675:39;;;12082:51:1;-1:-1:-1;;;;;19644:6:0;;;;19637:23;;19661:11;;19644:6;;19675:24;;12055:18:1;;19675:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19637:78;;-1:-1:-1;;;;;;19637:78:0;;;;;;;-1:-1:-1;;;;;13790:32:1;;;19637:78:0;;;13772:51:1;13839:18;;;13832:34;13745:18;;19637:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19140:587::-;19014:720;18955:779;:::o;25415:464::-;25494:14;;-1:-1:-1;;;;;25490:18:0;;;25494:14;;25490:18;25487:384;;-1:-1:-1;;;;;25529:12:0;;;25553:1;25529:12;;;:8;:12;;;;;;;:26;:52;;;;-1:-1:-1;25567:14:0;;-1:-1:-1;;;;;25559:22:0;;;25567:14;;25559:22;;25529:52;:71;;;;-1:-1:-1;25343:20:0;;25391:8;25529:71;:82;;;;;25610:1;25603:6;:8;25529:82;:102;;;;-1:-1:-1;;;;;;12561:16:0;;12534:7;12561:16;;;:7;:16;;;;;;25613:18;25529:102;25524:212;;;-1:-1:-1;;;;;25653:12:0;;;;;;;:8;:12;;;;;;;;:19;;-1:-1:-1;;;;;;25653:19:0;;;;;;;;;;;25691:10;:14;;;25708:12;25691:29;;25524:212;25784:14;;-1:-1:-1;;;;;25768:14:0;;;;;;:10;:14;;;;;;25753:29;;:12;:29;:::i;:::-;:45;25750:110;;;-1:-1:-1;;;;;;25819:12:0;25842:1;25819:12;;;:8;:12;;;;;:25;;-1:-1:-1;;;;;;25819:25:0;;;-1:-1:-1;25415:464:0:o;19744:1074::-;19871:7;19894:11;;19909:1;19894:16;19890:30;;;-1:-1:-1;19919:1:0;19912:8;;19890:30;19997:14;;19932:11;;;;-1:-1:-1;;;;;19987:24:0;;;19997:14;;19987:24;:59;;;;-1:-1:-1;20016:9:0;;;;;:12;;:28;;-1:-1:-1;20032:9:0;;;;:12;20016:28;19983:258;;;20070:9;20064:15;;19983:258;;;20114:14;;-1:-1:-1;;;;;20101:27:0;;;20114:14;;20101:27;:60;;;;-1:-1:-1;20133:9:0;;;;20144:1;20133:12;;:26;;-1:-1:-1;20147:9:0;;;;:12;20133:26;20097:144;;;20184:6;20178:12;;20097:144;;;20228:1;20221:8;;;;;;20097:144;20256:9;20251:348;20275:9;:16;20271:20;;20251:348;;;20319:11;20326:3;20319:6;:11::i;:::-;20313:17;-1:-1:-1;;;;;;20349:17:0;;20345:63;;20387:5;;20345:63;20434:27;20448:9;20458:1;20448:12;;;;;;;;:::i;:::-;;;;;;;;;20434:9;:13;;:27;;;;:::i;:::-;20422:39;;20476:18;20497:36;20527:5;20497:25;20509:9;20519:1;20509:12;;;;;;;;:::i;:::-;;;;;;;;;20497:7;:11;;:25;;;;:::i;:36::-;20476:57;;20548:39;20563:6;20571:3;20576:10;20548:14;:39::i;:::-;-1:-1:-1;20293:3:0;;;;:::i;:::-;;;;20251:348;;;-1:-1:-1;20612:11:0;;:26;;20628:9;20612:15;:26::i;:::-;:29;20609:149;;20680:11;;20705;;20657:88;;20672:6;;-1:-1:-1;;;;;20680:11:0;;;;20693:50;;20737:5;;20693:39;;20705:26;;20721:9;20705:15;:26::i;:::-;20693:7;;:11;:39::i;:50::-;20657:14;:88::i;:::-;20775:35;20804:5;20775:24;20787:11;;20775:7;:11;;:24;;;;:::i;:35::-;20768:42;19744:1074;-1:-1:-1;;;;;;19744:1074:0:o;21591:104::-;-1:-1:-1;;;;;21648:15:0;;;;;;:6;:15;;;;;;;;21643:44;;-1:-1:-1;;;;;21665:15:0;;;;;;:6;:15;;;;;:22;;-1:-1:-1;;21665:22:0;21683:4;21665:22;;;21643:44;21591:104;:::o;18116:405::-;18178:15;18206:12;18221:34;18249:5;18221:23;18232:11;:9;:11::i;:::-;18221:6;;:10;:23::i;:34::-;18206:49;;18266:82;18281:4;18295;18302:44;18311:34;18339:5;18311:23;18322:11;;18311:6;:10;;:23;;;;:::i;:34::-;18302:4;;:8;:44::i;18266:82::-;18362:11;;:13;18359:118;;18391:74;18406:4;18420:6;18430:34;18458:5;18430:23;18441:11;;18430:6;:10;;:23;;;;:::i;18391:74::-;18497:16;:6;18508:4;18497:10;:16::i;:::-;18487:26;18116:405;-1:-1:-1;;;;18116:405:0:o;18531:410::-;18595:15;18623:12;18638:35;18667:5;18638:24;18649:12;:10;:12::i;18638:35::-;18623:50;;18684:82;18699:4;18713;18720:45;18729:35;18758:5;18729:24;18740:12;;18729:6;:10;;:24;;;;:::i;18684:82::-;18780:12;;:14;18777:120;;18810:75;18825:4;18839:6;18849:35;18878:5;18849:24;18860:12;;18849:6;:10;;:24;;;;:::i;4614:136::-;4672:7;4699:43;4703:1;4706;4699:43;;;;;;;;;;;;;;;;;:3;:43::i;24699:310::-;24748:17;;24776:226;24800:8;;24796:1;:12;24776:226;;;24862:5;;24850:17;;-1:-1:-1;;;;;24862:5:0;-1:-1:-1;;24850:17:0;:::i;:::-;24891:5;;24830:38;;-1:-1:-1;24891:7:0;;-1:-1:-1;;;;;24891:5:0;;:7;:::i;:::-;24883:5;:15;;-1:-1:-1;;;;;;24883:15:0;-1:-1:-1;;;;;24883:15:0;;;;;;24913:18;;-1:-1:-1;24913:18:0;;;:7;:18;;;;;:23;;-1:-1:-1;;;24913:23:0;;-1:-1:-1;;24913:23:0;:::i;:::-;;;;-1:-1:-1;;24956:34:0;;24988:1;14762:25:1;;-1:-1:-1;;;;;24956:34:0;;;24973:1;;24956:34;;14750:2:1;14735:18;24956:34:0;;;;;;;24810:3;;;;:::i;:::-;;;;24776:226;;20836:284;20948:51;;;;;;;;;;;-1:-1:-1;;;20948:51:0;;;;;;;;-1:-1:-1;;;;;20948:15:0;;-1:-1:-1;20948:15:0;;;:7;:15;;;;;;;;:51;;20968:6;;20948:19;:51::i;:::-;-1:-1:-1;;;;;20930:15:0;;;;;;;:7;:15;;;;;;:69;;;;21031:18;;;;;;;:30;;21054:6;21031:22;:30::i;:::-;-1:-1:-1;;;;;21010:18:0;;;;;;;:7;:18;;;;;;;:51;;;;21077:35;;;;;;;;;;21105:6;14762:25:1;;14750:2;14735:18;;14717:76;7073:312:0;7193:7;7228:12;7221:5;7213:28;;;;-1:-1:-1;;;7213:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7252:9:0;7264:5;7268:1;7264;:5;:::i;23451:655::-;23523:16;23520:54;;23451:655;:::o;23520:54::-;23606:16;;;23620:1;23606:16;;;;;;;;23582:21;;23606:16;;;;;;;;;;-1:-1:-1;23606:16:0;23582:40;;23651:4;23633;23638:1;23633:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23633:23:0;;;:7;;;;;;;;;:23;23677:6;;23667:7;;23677:6;;;23667:4;;23677:6;;23667:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23667:16:0;;;:7;;;;;;;;;:16;23728;;23696:63;;23713:4;;23728:16;;;;23747:11;23696:8;:63::i;:::-;23798:16;;23944:7;;23798:194;;-1:-1:-1;;;23798:194:0;;-1:-1:-1;;;;;23798:16:0;;;;;;;:70;;:194;;23883:11;;23909:1;;23925:4;;23944:7;;;23966:15;;23798:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24010:6:0;;24032:7;;24055:42;;-1:-1:-1;;;24055:42:0;;-1:-1:-1;;;;;24032:7:0;;;24055:42;;;12082:51:1;;;24010:6:0;;;;;-1:-1:-1;24003:27:0;;-1:-1:-1;24032:7:0;24048:4;;24010:6;;24055:24;;12055:18:1;;24055:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24003:95;;-1:-1:-1;;;;;;24003:95:0;;;;;;;-1:-1:-1;;;;;12711:15:1;;;24003:95:0;;;12693:34:1;12763:15;;;;12743:18;;;12736:43;12795:18;;;12788:34;12628:18;;24003:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24116:541::-;24326:16;;24294:63;;24311:4;;24326:16;;;-1:-1:-1;;;;;24326:16:0;24345:11;24294:8;:63::i;:::-;24368:16;;24412:6;;24597:11;;24368:281;;-1:-1:-1;;;24368:281:0;;-1:-1:-1;;;;;24412:6:0;;;24368:281;;;13230:34:1;24441:4:0;13280:18:1;;;13273:43;13332:18;;;13325:34;;;13375:18;;;13368:34;;;24412:6:0;13418:19:1;;;13411:35;;;13462:19;;;13455:35;24597:11:0;;;13506:19:1;;;13499:44;24623:15:0;13559:19:1;;;13552:35;24368:16:0;;;;;;:29;;13164:19:1;;24368:281:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:745:1;79:5;132:3;125:4;117:6;113:17;109:27;99:2;;150:1;147;140:12;99:2;179:6;173:13;205:4;229:60;245:43;285:2;245:43;:::i;:::-;229:60;:::i;:::-;311:3;335:2;330:3;323:15;363:2;358:3;354:12;347:19;;398:2;390:6;386:15;450:3;445:2;439;436:1;432:10;424:6;420:23;416:32;413:41;410:2;;;467:1;464;457:12;410:2;489:1;499:231;513:2;510:1;507:9;499:231;;;577:3;571:10;594:31;619:5;594:31;:::i;:::-;638:18;;676:12;;;;708;;;;531:1;524:9;499:231;;;-1:-1:-1;748:5:1;;89:670;-1:-1:-1;;;;;;;89:670:1:o;764:1190::-;828:5;881:3;874:4;866:6;862:17;858:27;848:2;;899:1;896;889:12;848:2;928:6;922:13;954:4;978:60;994:43;1034:2;994:43;:::i;978:60::-;1060:3;1084:2;1079:3;1072:15;1112:2;1107:3;1103:12;1096:19;;1147:2;1139:6;1135:15;1199:3;1194:2;1188;1185:1;1181:10;1173:6;1169:23;1165:32;1162:41;1159:2;;;1216:1;1213;1206:12;1159:2;1238:1;1248:677;1262:2;1259:1;1256:9;1248:677;;;1332:3;1326:10;1368:18;1355:11;1352:35;1349:2;;;1400:1;1397;1390:12;1349:2;1427:24;;1486:2;1478:11;;1474:21;-1:-1:-1;1464:2:1;;1509:1;1506;1499:12;1464:2;1550;1546;1542:11;1536:18;1577:2;1607:48;1623:31;1651:2;1623:31;:::i;1607:48::-;1684:2;1675:7;1668:19;1728:3;1723:2;1718;1714;1710:11;1706:20;1703:29;1700:2;;;1745:1;1742;1735:12;1700:2;1762:56;1815:2;1810;1801:7;1797:16;1792:2;1788;1784:11;1762:56;:::i;:::-;1831:20;;-1:-1:-1;;;1871:12:1;;;;1903;;;;1280:1;1273:9;1248:677;;1959:670;2024:5;2077:3;2070:4;2062:6;2058:17;2054:27;2044:2;;2095:1;2092;2085:12;2044:2;2124:6;2118:13;2150:4;2174:60;2190:43;2230:2;2190:43;:::i;2174:60::-;2256:3;2280:2;2275:3;2268:15;2308:2;2303:3;2299:12;2292:19;;2343:2;2335:6;2331:15;2395:3;2390:2;2384;2381:1;2377:10;2369:6;2365:23;2361:32;2358:41;2355:2;;;2412:1;2409;2402:12;2355:2;2434:1;2444:156;2458:2;2455:1;2452:9;2444:156;;;2515:10;;2503:23;;2546:12;;;;2578;;;;2476:1;2469:9;2444:156;;2634:741;2697:5;2750:3;2743:4;2735:6;2731:17;2727:27;2717:2;;2768:1;2765;2758:12;2717:2;2797:6;2791:13;2823:4;2847:60;2863:43;2903:2;2863:43;:::i;2847:60::-;2929:3;2953:2;2948:3;2941:15;2981:2;2976:3;2972:12;2965:19;;3016:2;3008:6;3004:15;3068:3;3063:2;3057;3054:1;3050:10;3042:6;3038:23;3034:32;3031:41;3028:2;;;3085:1;3082;3075:12;3028:2;3107:1;3117:229;3131:2;3128:1;3125:9;3117:229;;;3195:3;3189:10;3212:29;3235:5;3212:29;:::i;:::-;3254:18;;3292:12;;;;3324;;;;3149:1;3142:9;3117:229;;3380:128;3445:20;;3474:28;3445:20;3474:28;:::i;3513:247::-;3572:6;3625:2;3613:9;3604:7;3600:23;3596:32;3593:2;;;3641:1;3638;3631:12;3593:2;3680:9;3667:23;3699:31;3724:5;3699:31;:::i;3765:251::-;3835:6;3888:2;3876:9;3867:7;3863:23;3859:32;3856:2;;;3904:1;3901;3894:12;3856:2;3936:9;3930:16;3955:31;3980:5;3955:31;:::i;4021:388::-;4089:6;4097;4150:2;4138:9;4129:7;4125:23;4121:32;4118:2;;;4166:1;4163;4156:12;4118:2;4205:9;4192:23;4224:31;4249:5;4224:31;:::i;:::-;4274:5;-1:-1:-1;4331:2:1;4316:18;;4303:32;4344:33;4303:32;4344:33;:::i;:::-;4396:7;4386:17;;;4108:301;;;;;:::o;4414:456::-;4491:6;4499;4507;4560:2;4548:9;4539:7;4535:23;4531:32;4528:2;;;4576:1;4573;4566:12;4528:2;4615:9;4602:23;4634:31;4659:5;4634:31;:::i;:::-;4684:5;-1:-1:-1;4741:2:1;4726:18;;4713:32;4754:33;4713:32;4754:33;:::i;:::-;4518:352;;4806:7;;-1:-1:-1;;;4860:2:1;4845:18;;;;4832:32;;4518:352::o;4875:382::-;4940:6;4948;5001:2;4989:9;4980:7;4976:23;4972:32;4969:2;;;5017:1;5014;5007:12;4969:2;5056:9;5043:23;5075:31;5100:5;5075:31;:::i;:::-;5125:5;-1:-1:-1;5182:2:1;5167:18;;5154:32;5195:30;5154:32;5195:30;:::i;5262:315::-;5330:6;5338;5391:2;5379:9;5370:7;5366:23;5362:32;5359:2;;;5407:1;5404;5397:12;5359:2;5446:9;5433:23;5465:31;5490:5;5465:31;:::i;:::-;5515:5;5567:2;5552:18;;;;5539:32;;-1:-1:-1;;;5349:228:1:o;5582:615::-;5668:6;5676;5729:2;5717:9;5708:7;5704:23;5700:32;5697:2;;;5745:1;5742;5735:12;5697:2;5785:9;5772:23;5814:18;5855:2;5847:6;5844:14;5841:2;;;5871:1;5868;5861:12;5841:2;5909:6;5898:9;5894:22;5884:32;;5954:7;5947:4;5943:2;5939:13;5935:27;5925:2;;5976:1;5973;5966:12;5925:2;6016;6003:16;6042:2;6034:6;6031:14;6028:2;;;6058:1;6055;6048:12;6028:2;6111:7;6106:2;6096:6;6093:1;6089:14;6085:2;6081:23;6077:32;6074:45;6071:2;;;6132:1;6129;6122:12;6071:2;6163;6155:11;;;;;6185:6;;-1:-1:-1;5687:510:1;;-1:-1:-1;;;;5687:510:1:o;6202:1047::-;6292:6;6300;6353:2;6341:9;6332:7;6328:23;6324:32;6321:2;;;6369:1;6366;6359:12;6321:2;6409:9;6396:23;6442:18;6434:6;6431:30;6428:2;;;6474:1;6471;6464:12;6428:2;6497:22;;6550:4;6542:13;;6538:27;-1:-1:-1;6528:2:1;;6579:1;6576;6569:12;6528:2;6615;6602:16;6637:4;6661:60;6677:43;6717:2;6677:43;:::i;6661:60::-;6743:3;6767:2;6762:3;6755:15;6795:2;6790:3;6786:12;6779:19;;6826:2;6822;6818:11;6874:7;6869:2;6863;6860:1;6856:10;6852:2;6848:19;6844:28;6841:41;6838:2;;;6895:1;6892;6885:12;6838:2;6917:1;6908:10;;6927:238;6941:2;6938:1;6935:9;6927:238;;;7012:3;6999:17;7029:31;7054:5;7029:31;:::i;:::-;7073:18;;6959:1;6952:9;;;;;7111:12;;;;7143;;6927:238;;;-1:-1:-1;7184:5:1;-1:-1:-1;7208:35:1;;-1:-1:-1;7224:18:1;;;7208:35;:::i;:::-;7198:45;;;;;6311:938;;;;;:::o;7254:1311::-;7493:6;7501;7509;7517;7525;7578:3;7566:9;7557:7;7553:23;7549:33;7546:2;;;7595:1;7592;7585:12;7546:2;7628:9;7622:16;7657:18;7698:2;7690:6;7687:14;7684:2;;;7714:1;7711;7704:12;7684:2;7737:71;7800:7;7791:6;7780:9;7776:22;7737:71;:::i;:::-;7727:81;;7854:2;7843:9;7839:18;7833:25;7817:41;;7883:2;7873:8;7870:16;7867:2;;;7899:1;7896;7889:12;7867:2;7922:74;7988:7;7977:8;7966:9;7962:24;7922:74;:::i;:::-;7912:84;;8042:2;8031:9;8027:18;8021:25;8005:41;;8071:2;8061:8;8058:16;8055:2;;;8087:1;8084;8077:12;8055:2;8110:74;8176:7;8165:8;8154:9;8150:24;8110:74;:::i;:::-;8100:84;;8230:2;8219:9;8215:18;8209:25;8193:41;;8259:2;8249:8;8246:16;8243:2;;;8275:1;8272;8265:12;8243:2;8298:72;8362:7;8351:8;8340:9;8336:24;8298:72;:::i;:::-;8288:82;;8416:3;8405:9;8401:19;8395:26;8379:42;;8446:2;8436:8;8433:16;8430:2;;;8462:1;8459;8452:12;8430:2;;8485:74;8551:7;8540:8;8529:9;8525:24;8485:74;:::i;:::-;8475:84;;;7536:1029;;;;;;;;:::o;8570:902::-;8654:6;8685:2;8728;8716:9;8707:7;8703:23;8699:32;8696:2;;;8744:1;8741;8734:12;8696:2;8784:9;8771:23;8817:18;8809:6;8806:30;8803:2;;;8849:1;8846;8839:12;8803:2;8872:22;;8925:4;8917:13;;8913:27;-1:-1:-1;8903:2:1;;8954:1;8951;8944:12;8903:2;8990;8977:16;9013:60;9029:43;9069:2;9029:43;:::i;9013:60::-;9095:3;9119:2;9114:3;9107:15;9147:2;9142:3;9138:12;9131:19;;9178:2;9174;9170:11;9226:7;9221:2;9215;9212:1;9208:10;9204:2;9200:19;9196:28;9193:41;9190:2;;;9247:1;9244;9237:12;9190:2;9269:1;9260:10;;9279:163;9293:2;9290:1;9287:9;9279:163;;;9350:17;;9338:30;;9311:1;9304:9;;;;;9388:12;;;;9420;;9279:163;;;-1:-1:-1;9461:5:1;8665:807;-1:-1:-1;;;;;;;8665:807:1:o;9477:245::-;9544:6;9597:2;9585:9;9576:7;9572:23;9568:32;9565:2;;;9613:1;9610;9603:12;9565:2;9645:9;9639:16;9664:28;9686:5;9664:28;:::i;9727:671::-;9795:6;9848:2;9836:9;9827:7;9823:23;9819:32;9816:2;;;9864:1;9861;9854:12;9816:2;9904:9;9891:23;9937:18;9929:6;9926:30;9923:2;;;9969:1;9966;9959:12;9923:2;9992:22;;10045:4;10037:13;;10033:27;-1:-1:-1;10023:2:1;;10074:1;10071;10064:12;10023:2;10110;10097:16;10135:48;10151:31;10179:2;10151:31;:::i;10135:48::-;10206:2;10199:5;10192:17;10246:7;10241:2;10236;10232;10228:11;10224:20;10221:33;10218:2;;;10267:1;10264;10257:12;10218:2;10322;10317;10313;10309:11;10304:2;10297:5;10293:14;10280:45;10366:1;10345:14;;;10361:2;10341:23;10334:34;;;;10349:5;9806:592;-1:-1:-1;;;;9806:592:1:o;10403:180::-;10462:6;10515:2;10503:9;10494:7;10490:23;10486:32;10483:2;;;10531:1;10528;10521:12;10483:2;-1:-1:-1;10554:23:1;;10473:110;-1:-1:-1;10473:110:1:o;10588:184::-;10658:6;10711:2;10699:9;10690:7;10686:23;10682:32;10679:2;;;10727:1;10724;10717:12;10679:2;-1:-1:-1;10750:16:1;;10669:103;-1:-1:-1;10669:103:1:o;10777:316::-;10854:6;10862;10870;10923:2;10911:9;10902:7;10898:23;10894:32;10891:2;;;10939:1;10936;10929:12;10891:2;-1:-1:-1;;10962:23:1;;;11032:2;11017:18;;11004:32;;-1:-1:-1;11083:2:1;11068:18;;;11055:32;;10881:212;-1:-1:-1;10881:212:1:o;11098:306::-;11186:6;11194;11202;11255:2;11243:9;11234:7;11230:23;11226:32;11223:2;;;11271:1;11268;11261:12;11223:2;11300:9;11294:16;11284:26;;11350:2;11339:9;11335:18;11329:25;11319:35;;11394:2;11383:9;11379:18;11373:25;11363:35;;11213:191;;;;;:::o;11409:243::-;11466:6;11519:2;11507:9;11498:7;11494:23;11490:32;11487:2;;;11535:1;11532;11525:12;11487:2;11574:9;11561:23;11593:29;11616:5;11593:29;:::i;11657:274::-;11786:3;11824:6;11818:13;11840:53;11886:6;11881:3;11874:4;11866:6;11862:17;11840:53;:::i;:::-;11909:16;;;;;11794:137;-1:-1:-1;;11794:137:1:o;14798:383::-;14947:2;14936:9;14929:21;14910:4;14979:6;14973:13;15022:6;15017:2;15006:9;15002:18;14995:34;15038:66;15097:6;15092:2;15081:9;15077:18;15072:2;15064:6;15060:15;15038:66;:::i;:::-;15165:2;15144:15;-1:-1:-1;;15140:29:1;15125:45;;;;15172:2;15121:54;;14919:262;-1:-1:-1;;14919:262:1:o;18250:356::-;18452:2;18434:21;;;18471:18;;;18464:30;18530:34;18525:2;18510:18;;18503:62;18597:2;18582:18;;18424:182::o;20559:874::-;20785:4;20833:3;20822:9;20818:19;20864:6;20853:9;20846:25;20890:2;20957:1;20953;20948:3;20944:11;20940:19;20932:6;20928:32;20923:2;20912:9;20908:18;20901:60;20997:6;20992:2;20981:9;20977:18;20970:34;21040:3;21035:2;21024:9;21020:18;21013:31;21064:6;21099;21093:13;21130:6;21122;21115:22;21168:3;21157:9;21153:19;21146:26;;21207:2;21199:6;21195:15;21181:29;;21228:1;21238:169;21252:6;21249:1;21246:13;21238:169;;;21313:13;;21301:26;;21382:15;;;;21347:12;;;;21274:1;21267:9;21238:169;;;-1:-1:-1;21424:3:1;;20794:639;-1:-1:-1;;;;;;;;;20794:639:1:o;21438:980::-;21700:4;21748:3;21737:9;21733:19;21779:6;21768:9;21761:25;21805:2;21843:6;21838:2;21827:9;21823:18;21816:34;21886:3;21881:2;21870:9;21866:18;21859:31;21910:6;21945;21939:13;21976:6;21968;21961:22;22014:3;22003:9;21999:19;21992:26;;22053:2;22045:6;22041:15;22027:29;;22074:1;22084:195;22098:6;22095:1;22092:13;22084:195;;;22163:13;;-1:-1:-1;;;;;22159:39:1;22147:52;;22254:15;;;;22219:12;;;;22195:1;22113:9;22084:195;;;-1:-1:-1;;;;;;;22335:32:1;;;;22330:2;22315:18;;22308:60;-1:-1:-1;;;22399:3:1;22384:19;22377:35;22296:3;21709:709;-1:-1:-1;;;21709:709:1:o;22612:275::-;22683:2;22677:9;22748:2;22729:13;;-1:-1:-1;;22725:27:1;22713:40;;22783:18;22768:34;;22804:22;;;22765:62;22762:2;;;22830:18;;:::i;:::-;22866:2;22859:22;22657:230;;-1:-1:-1;22657:230:1:o;22892:183::-;22952:4;22985:18;22977:6;22974:30;22971:2;;;23007:18;;:::i;:::-;-1:-1:-1;23052:1:1;23048:14;23064:4;23044:25;;22961:114::o;23080:186::-;23128:4;23161:18;23153:6;23150:30;23147:2;;;23183:18;;:::i;:::-;-1:-1:-1;23249:2:1;23228:15;-1:-1:-1;;23224:29:1;23255:4;23220:40;;23137:129::o;23271:238::-;23311:3;-1:-1:-1;;;;;23378:10:1;;;23408;;;23438:12;;;23430:21;;23427:2;;;23454:18;;:::i;:::-;23490:13;;23319:190;-1:-1:-1;;;;23319:190:1:o;23514:128::-;23554:3;23585:1;23581:6;23578:1;23575:13;23572:2;;;23591:18;;:::i;:::-;-1:-1:-1;23627:9:1;;23562:80::o;23647:201::-;23687:1;-1:-1:-1;;;;;23752:10:1;;;;23771:2;;23788:18;;:::i;:::-;23826:10;;23822:20;;;;;23693:155;-1:-1:-1;;23693:155:1:o;23853:120::-;23893:1;23919;23909:2;;23924:18;;:::i;:::-;-1:-1:-1;23958:9:1;;23899:74::o;23978:422::-;24067:1;24110:5;24067:1;24124:270;24145:7;24135:8;24132:21;24124:270;;;24204:4;24200:1;24196:6;24192:17;24186:4;24183:27;24180:2;;;24213:18;;:::i;:::-;24263:7;24253:8;24249:22;24246:2;;;24283:16;;;;24246:2;24362:22;;;;24322:15;;;;24124:270;;;24128:3;24042:358;;;;;:::o;24405:131::-;24465:5;24494:36;24521:8;24515:4;24590:5;24620:8;24610:2;;-1:-1:-1;24661:1:1;24675:5;;24610:2;24709:4;24699:2;;-1:-1:-1;24746:1:1;24760:5;;24699:2;24791:4;24809:1;24804:59;;;;24877:1;24872:130;;;;24784:218;;24804:59;24834:1;24825:10;;24848:5;;;24872:130;24909:3;24899:8;24896:17;24893:2;;;24916:18;;:::i;:::-;-1:-1:-1;;24972:1:1;24958:16;;24987:5;;24784:218;;25086:2;25076:8;25073:16;25067:3;25061:4;25058:13;25054:36;25048:2;25038:8;25035:16;25030:2;25024:4;25021:12;25017:35;25014:77;25011:2;;;-1:-1:-1;25123:19:1;;;25155:5;;25011:2;25202:34;25227:8;25221:4;25202:34;:::i;:::-;25272:6;25268:1;25264:6;25260:19;25251:7;25248:32;25245:2;;;25283:18;;:::i;:::-;25321:20;;24600:747;-1:-1:-1;;;24600:747:1:o;25352:168::-;25392:7;25458:1;25454;25450:6;25446:14;25443:1;25440:21;25435:1;25428:9;25421:17;25417:45;25414:2;;;25465:18;;:::i;:::-;-1:-1:-1;25505:9:1;;25404:116::o;25525:125::-;25565:4;25593:1;25590;25587:8;25584:2;;;25598:18;;:::i;:::-;-1:-1:-1;25635:9:1;;25574:76::o;25655:258::-;25727:1;25737:113;25751:6;25748:1;25745:13;25737:113;;;25827:11;;;25821:18;25808:11;;;25801:39;25773:2;25766:10;25737:113;;;25868:6;25865:1;25862:13;25859:2;;;25903:1;25894:6;25889:3;25885:16;25878:27;25859:2;;25708:205;;;:::o;25918:380::-;25997:1;25993:12;;;;26040;;;26061:2;;26115:4;26107:6;26103:17;26093:27;;26061:2;26168;26160:6;26157:14;26137:18;26134:38;26131:2;;;26214:10;26209:3;26205:20;26202:1;26195:31;26249:4;26246:1;26239:15;26277:4;26274:1;26267:15;26131:2;;25973:325;;;:::o;26303:135::-;26342:3;-1:-1:-1;;26363:17:1;;26360:2;;;26383:18;;:::i;:::-;-1:-1:-1;26430:1:1;26419:13;;26350:88::o;26443:127::-;26504:10;26499:3;26495:20;26492:1;26485:31;26535:4;26532:1;26525:15;26559:4;26556:1;26549:15;26575:127;26636:10;26631:3;26627:20;26624:1;26617:31;26667:4;26664:1;26657:15;26691:4;26688:1;26681:15;26707:127;26768:10;26763:3;26759:20;26756:1;26749:31;26799:4;26796:1;26789:15;26823:4;26820:1;26813:15;26839:127;26900:10;26895:3;26891:20;26888:1;26881:31;26931:4;26928:1;26921:15;26955:4;26952:1;26945:15;26971:131;-1:-1:-1;;;;;27046:31:1;;27036:42;;27026:2;;27092:1;27089;27082:12;27107:118;27193:5;27186:13;27179:21;27172:5;27169:32;27159:2;;27215:1;27212;27205:12;27230:114;27314:4;27307:5;27303:16;27296:5;27293:27;27283:2;;27334:1;27331;27324:12

Swarm Source

ipfs://9dfbb13d613c03c679029955dc9271deeb70e9558031381b2f768a65d33d762c

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.