ETH Price: $2,243.92 (+2.51%)

Contract

0x82C2dEC3b294671a8Bd37e84188fBD312B0da456
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Ratios177519852023-07-22 23:36:47592 days ago1690069007IN
0x82C2dEC3...12B0da456
0 ETH0.0003832615.15367616
Set Max Tx Perce...177518282023-07-22 23:04:59592 days ago1690067099IN
0x82C2dEC3...12B0da456
0 ETH0.0006773613.55409562
Approve177518002023-07-22 22:59:11592 days ago1690066751IN
0x82C2dEC3...12B0da456
0 ETH0.0006062313.01904974
Transfer177517952023-07-22 22:58:11592 days ago1690066691IN
0x82C2dEC3...12B0da456
0 ETH0.0011069913.6285668
Set Taxes Transf...177517832023-07-22 22:55:47592 days ago1690066547IN
0x82C2dEC3...12B0da456
0 ETH0.0004209513.72225597
Approve173460582023-05-26 21:52:35649 days ago1685137955IN
0x82C2dEC3...12B0da456
0 ETH0.0008724935.844831
Approve171336832023-04-26 23:32:47679 days ago1682551967IN
0x82C2dEC3...12B0da456
0 ETH0.0014639531.4389335
Approve146091912022-04-18 12:30:261052 days ago1650285026IN
0x82C2dEC3...12B0da456
0 ETH0.0014614431.34472157
Transfer145819862022-04-14 6:33:491056 days ago1649918029IN
0x82C2dEC3...12B0da456
0 ETH0.0061282138.01809082
Approve140302102022-01-18 15:06:491142 days ago1642518409IN
0x82C2dEC3...12B0da456
0 ETH0.00337166126.16143866
Approve140302092022-01-18 15:06:411142 days ago1642518401IN
0x82C2dEC3...12B0da456
0 ETH0.00544287116.73732656
Transfer139858842022-01-11 18:24:151149 days ago1641925455IN
0x82C2dEC3...12B0da456
0 ETH0.02318595143.84063622
Approve139854072022-01-11 16:47:161149 days ago1641919636IN
0x82C2dEC3...12B0da456
0 ETH0.00904039195
Approve137772922021-12-10 12:03:541181 days ago1639137834IN
0x82C2dEC3...12B0da456
0 ETH0.0028522461.17412924
Approve137710332021-12-09 12:23:521182 days ago1639052632IN
0x82C2dEC3...12B0da456
0 ETH0.0030737165.92413386
Approve137709802021-12-09 12:12:251182 days ago1639051945IN
0x82C2dEC3...12B0da456
0 ETH0.0030098864.55522034
Approve137708522021-12-09 11:44:311182 days ago1639050271IN
0x82C2dEC3...12B0da456
0 ETH0.0013543650.67779123
Approve137708522021-12-09 11:44:311182 days ago1639050271IN
0x82C2dEC3...12B0da456
0 ETH0.0023551450.5124277
Approve137690702021-12-09 4:54:111182 days ago1639025651IN
0x82C2dEC3...12B0da456
0 ETH0.0032602369.92460753
Approve137687272021-12-09 3:31:231182 days ago1639020683IN
0x82C2dEC3...12B0da456
0 ETH0.0041412688.82077956
Transfer137685632021-12-09 2:53:381182 days ago1639018418IN
0x82C2dEC3...12B0da456
0 ETH0.005347762.26225387
Set Double Day T...137684402021-12-09 2:25:331182 days ago1639016733IN
0x82C2dEC3...12B0da456
0 ETH0.0019901583.19005329
Approve137671622021-12-08 21:30:281183 days ago1638999028IN
0x82C2dEC3...12B0da456
0 ETH0.00487863104.63567271
Approve137666572021-12-08 19:35:351183 days ago1638992135IN
0x82C2dEC3...12B0da456
0 ETH0.0042095490.28516463
Approve137666532021-12-08 19:34:131183 days ago1638992053IN
0x82C2dEC3...12B0da456
0 ETH0.0041480788.96674879
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
137743992021-12-10 1:15:531182 days ago1639098953
0x82C2dEC3...12B0da456
0.00444959 ETH
137743992021-12-10 1:15:531182 days ago1639098953
0x82C2dEC3...12B0da456
0.00148319 ETH
137743992021-12-10 1:15:531182 days ago1639098953
0x82C2dEC3...12B0da456
0.00148319 ETH
137743992021-12-10 1:15:531182 days ago1639098953
0x82C2dEC3...12B0da456
0.00123599 ETH
137743992021-12-10 1:15:531182 days ago1639098953
0x82C2dEC3...12B0da456
0.00865199 ETH
137743082021-12-10 0:55:291182 days ago1639097729
0x82C2dEC3...12B0da456
0.00601966 ETH
137743082021-12-10 0:55:291182 days ago1639097729
0x82C2dEC3...12B0da456
0.00200655 ETH
137743082021-12-10 0:55:291182 days ago1639097729
0x82C2dEC3...12B0da456
0.00200655 ETH
137743082021-12-10 0:55:291182 days ago1639097729
0x82C2dEC3...12B0da456
0.00167212 ETH
137743082021-12-10 0:55:291182 days ago1639097729
0x82C2dEC3...12B0da456
0.0117049 ETH
137742212021-12-10 0:35:471182 days ago1639096547
0x82C2dEC3...12B0da456
0.01113805 ETH
137742212021-12-10 0:35:471182 days ago1639096547
0x82C2dEC3...12B0da456
0.00371268 ETH
137742212021-12-10 0:35:471182 days ago1639096547
0x82C2dEC3...12B0da456
0.00371268 ETH
137742212021-12-10 0:35:471182 days ago1639096547
0x82C2dEC3...12B0da456
0.0030939 ETH
137742212021-12-10 0:35:471182 days ago1639096547
0x82C2dEC3...12B0da456
0.02165732 ETH
137740402021-12-09 23:51:561182 days ago1639093916
0x82C2dEC3...12B0da456
0.02175883 ETH
137740402021-12-09 23:51:561182 days ago1639093916
0x82C2dEC3...12B0da456
0.00725294 ETH
137740402021-12-09 23:51:561182 days ago1639093916
0x82C2dEC3...12B0da456
0.00725294 ETH
137740402021-12-09 23:51:561182 days ago1639093916
0x82C2dEC3...12B0da456
0.00604412 ETH
137740402021-12-09 23:51:561182 days ago1639093916
0x82C2dEC3...12B0da456
0.04230884 ETH
137739392021-12-09 23:28:271182 days ago1639092507
0x82C2dEC3...12B0da456
0.0749662 ETH
137739392021-12-09 23:28:271182 days ago1639092507
0x82C2dEC3...12B0da456
0.02498873 ETH
137739392021-12-09 23:28:271182 days ago1639092507
0x82C2dEC3...12B0da456
0.02498873 ETH
137739392021-12-09 23:28:271182 days ago1639092507
0x82C2dEC3...12B0da456
0.02082394 ETH
137739392021-12-09 23:28:271182 days ago1639092507
0x82C2dEC3...12B0da456
0.14576763 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Shibezos

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-07
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @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);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function skim(address to) external;
    function sync() external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function getSniperAmt() external view returns (uint256);
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract Shibezos is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 100_000_000_000_000_000;

    string constant private _name = "Shibezos";
    string constant private _symbol = "$BEZOS";
    uint8 private _decimals = 9;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));


    struct CurrentFees {
        uint16 reflect;
        uint16 totalSwap;
        uint16 burn;
    }

    struct Fees {
        uint16 reflect;
        uint16 liquidity;
        uint16 marketing;
        uint16 burn;
        uint16 dev1;
        uint16 dev2;
        uint16 totalSwap;
    }

    struct StaticValuesStruct {
        uint16 maxReflect;
        uint16 maxLiquidity;
        uint16 maxMarketing;
        uint16 maxBurn;
        uint16 maxDev1;
        uint16 maxDev2;
        uint16 masterTaxDivisor;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 dev1;
        uint16 dev2;
        uint16 total;
    }

    CurrentFees private currentTaxes = CurrentFees({
        reflect: 0,
        totalSwap: 0,
        burn: 0
        });

    Fees public _buyTaxes = Fees({
        reflect: 200,
        liquidity: 200,
        marketing: 300,
        burn: 100,
        dev1: 100,
        dev2: 100,
        totalSwap: 800
        });

    Fees public _sellTaxes = Fees({
        reflect: 200,
        liquidity: 200,
        marketing: 300,
        burn: 100,
        dev1: 100,
        dev2: 100,
        totalSwap: 800
        });

    Fees public _transferTaxes = Fees({
        reflect: 0,
        liquidity: 0,
        marketing: 200,
        burn: 0,
        dev1: 100,
        dev2: 100,
        totalSwap: 400
        });

    Ratios public _ratios = Ratios({
        liquidity: 2,
        marketing: 3,
        dev1: 1,
        dev2: 1,
        total: 7
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxReflect: 800,
        maxLiquidity: 800,
        maxMarketing: 800,
        maxBurn: 800,
        maxDev1: 800,
        maxDev2: 800,
        masterTaxDivisor: 10000
        });

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    address public currentRouter;
    // PCS ROUTER
    address private pcsV2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    // UNI ROUTER
    address private uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    // KOFFEE ROUTER
    address private _routerAddress = 0xc0fFee0000C824D24E0F280f1e4D21152625742b;
    // TESTNET BUSD ADDY
    address TESTNET_BUSD = 0xeD24FC36d5Ee211Ea25A80239Fb8C4Cfd80f12Ee;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public _marketingWallet = payable(0x6D0b366129B54fdf2428DfA1edcAdf0922CE54Eb);
    address payable public _dev1Wallet = payable(0x80ea25751B4F407D7349A3F2384b37504eDC6740);
    address payable public _dev2Wallet = payable(0xFff1814d05218Eb88931458d71ec8e5871DcCcEF);
    
    bool inSwap;
    bool public contractSwapEnabled = false;

    uint256 private maxTBPercent = 3;
    uint256 private maxTBDivisor = 100;
    uint256 private maxTSPercent = 9;
    uint256 private maxTSDivisor = 1000;
    uint256 private maxWPercent = 3;
    uint256 private maxWDivisor = 100;

    uint256 private _maxTxAmountBuy = (_tTotal * maxTBPercent) / maxTBDivisor;
    uint256 public maxTxAmountUIBuy = (startingSupply * maxTBPercent) / maxTBDivisor;
    uint256 private _maxTxAmountSell = (_tTotal * maxTSPercent) / maxTSDivisor;
    uint256 public maxTxAmountUISell = (startingSupply * maxTSPercent) / maxTSDivisor;
    uint256 private _maxWalletSize = (_tTotal * maxWPercent) / maxWDivisor;
    uint256 public maxWalletSizeUI = (startingSupply * maxWPercent) / maxWDivisor;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 5) / 1000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    mapping (address => uint256) private lastBuyTime;
    bool public doubleDayTradingTaxEnabled = true;
    uint256 public doubleDayTradingTaxTime = 24 hours;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _rOwned[_msgSender()] = _rTotal;

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56 || block.chainid == 97) {
            currentRouter = pcsV2Router;
        } else if (block.chainid == 1) {
            currentRouter = uniswapV2Router;
        }

        dexRouter = IUniswapV2Router02(currentRouter);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

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

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function changeRouterContingency(address router) external onlyOwner {
        require(!_hasLiqBeenAdded);
        currentRouter = router;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludedFromReward(address account, bool enabled) public onlyOwner {
        if (enabled == true) {
            require(!_isExcluded[account], "Account is already excluded.");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        } else if (enabled == false) {
            require(_isExcluded[account], "Account is already included.");
            if(_excluded.length == 1){
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
            } else {
                for (uint256 i = 0; i < _excluded.length; i++) {
                    if (_excluded[i] == account) {
                        _excluded[i] = _excluded[_excluded.length - 1];
                        _tOwned[account] = 0;
                        _isExcluded[account] = false;
                        _excluded.pop();
                        break;
                    }
                }
            }
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded, "Liquidity is already in.");
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function removeBlacklisted(address account) external onlyOwner {
        antiSnipe.removeBlacklisted(account);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function getSniperAmt() public view returns (uint256) {
        return antiSnipe.getSniperAmt();
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _algo) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo);
    }

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 75, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }
    
    function setTaxesBuy(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 burn, uint16 dev1, uint16 dev2) external onlyOwner {
        uint16 check = reflect + liquidity + marketing + burn + dev1 + dev2;
        require(reflect <= staticVals.maxReflect
                && liquidity <= staticVals.maxLiquidity
                && marketing <= staticVals.maxMarketing
                && burn <= staticVals.maxBurn
                && dev1 <= staticVals.maxDev1
                && dev2 <= staticVals.maxDev2);
        require(check <= 3450);
        _buyTaxes.liquidity = liquidity;
        _buyTaxes.reflect = reflect;
        _buyTaxes.marketing = marketing;
        _buyTaxes.burn = burn;
        _buyTaxes.dev1 = dev1;
        _buyTaxes.dev2 = dev2;
        _buyTaxes.totalSwap = check - (reflect + burn);
    }

    function setTaxesSell(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 burn, uint16 dev1, uint16 dev2) external onlyOwner {
        uint16 check = reflect + liquidity + marketing + burn + dev1 + dev2;
        require(reflect <= staticVals.maxReflect
                && liquidity <= staticVals.maxLiquidity
                && marketing <= staticVals.maxMarketing
                && burn <= staticVals.maxBurn
                && dev1 <= staticVals.maxDev1
                && dev2 <= staticVals.maxDev2);
        require(check <= 3450);
        _sellTaxes.liquidity = liquidity;
        _sellTaxes.reflect = reflect;
        _sellTaxes.marketing = marketing;
        _sellTaxes.burn = burn;
        _sellTaxes.dev1 = dev1;
        _sellTaxes.dev2 = dev2;
        _sellTaxes.totalSwap = check - (reflect + burn);
    }

    function setTaxesTransfer(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 burn, uint16 dev1, uint16 dev2) external onlyOwner {
        uint16 check = reflect + liquidity + marketing + burn + dev1 + dev2;
        require(reflect <= staticVals.maxReflect
                && liquidity <= staticVals.maxLiquidity
                && marketing <= staticVals.maxMarketing
                && burn <= staticVals.maxBurn
                && dev1 <= staticVals.maxDev1
                && dev2 <= staticVals.maxDev2);
        require(check <= 3450);
        _transferTaxes.liquidity = liquidity;
        _transferTaxes.reflect = reflect;
        _transferTaxes.marketing = marketing;
        _transferTaxes.burn = burn;
        _transferTaxes.dev1 = dev1;
        _transferTaxes.dev2 = dev2;
        _transferTaxes.totalSwap = check - (reflect + burn);
    }

    function setRatios(uint16 liquidity, uint16 marketing, uint16 dev1, uint16 dev2) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.dev1 = dev1;
        _ratios.dev2 = dev2;
        _ratios.total = liquidity + marketing + dev1 + dev2;
    }

    function setDoubleDayTradeTaxEnabled(bool enabled) external onlyOwner {
        doubleDayTradingTaxEnabled = enabled;
    }

    function setDoubleDayTradeTaxTime(uint256 time) external onlyOwner {
        require(time <= 24 hours);
        doubleDayTradingTaxTime = time;
    }

    function setMaxTxPercents(uint256 percentBuy, uint256 divisorBuy, uint256 percentSell, uint256 divisorSell) public onlyOwner {
        uint256 check = (_tTotal * percentBuy) / divisorBuy;
        require(check >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmountBuy = check;
        maxTxAmountUIBuy = (startingSupply * percentBuy) / divisorBuy;
        check = (_tTotal * percentSell) / divisorSell;
        require(check >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmountSell = check;
        maxTxAmountUISell = (startingSupply * percentSell) / divisorSell;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = check;
        maxWalletSizeUI = (startingSupply * percent) / divisor;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketing, address payable dev1, address payable dev2) external onlyOwner {
        _marketingWallet = payable(marketing);
        _dev1Wallet = payable(dev1);
        _dev2Wallet = payable(dev2);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount / currentRate;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        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");

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

        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(lpPairs[from]){
                require(amount <= _maxTxAmountBuy, "Transfer amount exceeds the maxTxAmount.");
            } else if (lpPairs[to]) {
                require(amount <= _maxTxAmountSell, "Transfer amount exceeds the maxTxAmount.");
            }
            if(to != currentRouter && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance, path);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    struct Balances {
        uint256 total;
        uint256 marketing;
        uint256 liquidity;
        uint256 dev1;
        uint256 dev2;
    }

    Balances public __balances = Balances(0,0,0,0,0);

    function contractSwap(uint256 contractTokenBalance, address[] memory path) private lockTheSwap {
        if (_ratios.total == 0)
            return;

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * _ratios.liquidity) / _ratios.total) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        __balances.total = address(this).balance;

        uint256 liquidityBalance = ((address(this).balance * _ratios.liquidity) / _ratios.total) / 2;
        __balances.liquidity = liquidityBalance;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
                DEAD,
                block.timestamp
            );
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (address(this).balance > 0) {
            uint256 amountETH = address(this).balance;
            _dev1Wallet.transfer((amountETH * _ratios.dev1) / (_ratios.total - _ratios.liquidity));
            _dev2Wallet.transfer((amountETH * _ratios.dev2) / (_ratios.total - _ratios.liquidity));
            __balances.dev1 = ((amountETH * _ratios.dev1) / (_ratios.total - _ratios.liquidity));
            __balances.dev2 = ((amountETH * _ratios.dev2) / (_ratios.total - _ratios.liquidity));
            __balances.marketing = address(this).balance;
            _marketingWallet.transfer(address(this).balance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        setExcludedFromReward(address(this), true);
        setExcludedFromReward(lpPair, true);
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(owner()).transfer(address(this).balance);
    }

    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tSwap;
        uint256 tBurn;

        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;
    }

    function _finalizeTransfer(address from, address to, uint256 tAmount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        ExtraValues memory values = _getValues(from, to, tAmount, takeFee);

        _rOwned[from] = _rOwned[from] - values.rAmount;
        _rOwned[to] = _rOwned[to] + values.rTransferAmount;

        if (_isExcluded[from]) {
            _tOwned[from] = _tOwned[from] - tAmount;
        }
        if (_isExcluded[to]) {
            _tOwned[to] = _tOwned[to] + values.tTransferAmount;  
        }

        if (values.tSwap > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + (values.tSwap * _getRate());
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)] + values.tSwap;
            emit Transfer(from, address(this), values.tSwap); // Transparency is the key to success.
        }

        if (values.tBurn > 0) {
            _rOwned[DEAD] = _rOwned[DEAD] + (values.tBurn * _getRate());
            if(_isExcluded[DEAD])
                _tOwned[DEAD] = _tOwned[DEAD] + values.tBurn;
            emit Transfer(from, DEAD, values.tBurn); // Transparency is the key to success.
        }

        if (values.rFee > 0 || values.tFee > 0) {
            _rTotal -= values.rFee;
        }

        emit Transfer(from, to, values.tTransferAmount);
        return true;
    }

    function _getValues(address from, address to, uint256 tAmount, bool takeFee) private returns (ExtraValues memory) {
        ExtraValues memory values;
        uint256 currentRate = _getRate();

        values.rAmount = tAmount * currentRate;

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, tAmount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        if(takeFee) {
            if (lpPairs[to]) {
                currentTaxes.reflect = _sellTaxes.reflect;
                currentTaxes.totalSwap = _sellTaxes.totalSwap;
                currentTaxes.burn = _sellTaxes.burn;
            } else if (lpPairs[from]) {
                currentTaxes.reflect = _buyTaxes.reflect;
                currentTaxes.totalSwap = _buyTaxes.totalSwap;
                currentTaxes.burn = _buyTaxes.burn;
            } else {
                currentTaxes.reflect = _transferTaxes.reflect;
                currentTaxes.totalSwap = _transferTaxes.totalSwap;
                currentTaxes.burn = _transferTaxes.burn;
            }

            if(doubleDayTradingTaxEnabled && lpPairs[to]) {
                if(lastBuyTime[from] + doubleDayTradingTaxTime >= block.timestamp) {
                    currentTaxes.reflect *= 2;
                    currentTaxes.totalSwap *= 2;
                    currentTaxes.burn *= 2;
                }
            } else if (doubleDayTradingTaxEnabled && lpPairs[from]) {
                lastBuyTime[to] = block.timestamp;
            }

            values.tFee = (tAmount * currentTaxes.reflect) / staticVals.masterTaxDivisor;
            values.tSwap = (tAmount * currentTaxes.totalSwap) / staticVals.masterTaxDivisor;
            values.tBurn = (tAmount * currentTaxes.burn) / staticVals.masterTaxDivisor;
            values.tTransferAmount = tAmount - (values.tFee + values.tSwap + values.tBurn);

            values.rFee = values.tFee * currentRate;
        } else {
            values.tFee = 0;
            values.tSwap = 0;
            values.tBurn = 0;
            values.tTransferAmount = tAmount;

            values.rFee = 0;
        }
        values.rTransferAmount = values.rAmount - (values.rFee + (values.tSwap * currentRate) + (values.tBurn * currentRate));
        return values;
    }

    function _getRate() internal view returns(uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return _rTotal / _tTotal;
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return _rTotal / _tTotal;
        return rSupply / tSupply;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__balances","outputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev1","type":"uint256"},{"internalType":"uint256","name":"dev2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dev1Wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dev2Wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doubleDayTradingTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doubleDayTradingTaxTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUIBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUISell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDoubleDayTradeTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setDoubleDayTradeTaxTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentBuy","type":"uint256"},{"internalType":"uint256","name":"divisorBuy","type":"uint256"},{"internalType":"uint256","name":"percentSell","type":"uint256"},{"internalType":"uint256","name":"divisorSell","type":"uint256"}],"name":"setMaxTxPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"dev1","type":"uint16"},{"internalType":"uint16","name":"dev2","type":"uint16"}],"name":"setTaxesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"dev1","type":"address"},{"internalType":"address payable","name":"dev2","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxReflect","type":"uint16"},{"internalType":"uint16","name":"maxLiquidity","type":"uint16"},{"internalType":"uint16","name":"maxMarketing","type":"uint16"},{"internalType":"uint16","name":"maxBurn","type":"uint16"},{"internalType":"uint16","name":"maxDev1","type":"uint16"},{"internalType":"uint16","name":"maxDev2","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600455600a8054600160ff1991821617825567016345785d8a0000600c55600d805460099216821790556200003b9162000a49565b600c546200004a919062000a61565b600e8190556200005d9060001962000a99565b6200006b9060001962000ab0565b600f556040805160608082018352600080835260208084018290529284018190526010805465ffffffffffff19169055835160e0808201865260c880835282860181905261012c8388018190526064848701819052608080860182905260a080870183905261032060c0978801819052601180546d0320006400640064012c00c800c86001600160701b031991821681179092558d51808a018f52888152808e01899052808f0197909752868c0186905286850186905286840186905295890182905260128054871690911790558b518088018d52898152808c018a9052808d0196909652858a019890985284820183905284810183905261019094870194909452601380546d019000640064000000c80000000090851617905589518085018b52600281526003818b018190526001828d01819052828b015260079183019190915260148054680700010001000300026001600160501b0319919091161790558a519586018b52878652858a0188905299850187905296840186905295830185905290820193909352612710910152601580546d27100320032003200320032003209216919091179055601980546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e17909155601a80548216737a250d5630b4cf539739df2c5dacb4c659f2488d179055601b8054821673c0ffee0000c824d24e0f280f1e4d21152625742b179055601c8054821673ed24fc36d5ee211ea25a80239fb8c4cfd80f12ee179055601d80548216736d0b366129b54fdf2428dfa1edcadf0922ce54eb179055601e80549091167380ea25751b4f407d7349a3f2384b37504edc6740179055601f8054600161ff0160a01b03191673fff1814d05218eb88931458d71ec8e5871dcccef17905590829055602181905560096022556103e860235560248290556025819055600e5490916200032b9162000a61565b62000337919062000aca565b602655602154602054600c546200034f919062000a61565b6200035b919062000aca565b602755602354602254600e5462000373919062000a61565b6200037f919062000aca565b602855602354602254600c5462000397919062000a61565b620003a3919062000aca565b602955602554602454600e54620003bb919062000a61565b620003c7919062000aca565b602a55602554602454600c54620003df919062000a61565b620003eb919062000aca565b602b55612710600e54600562000402919062000a61565b6200040e919062000aca565b602c556103e8600e54600562000425919062000a61565b62000431919062000aca565b602d55602e805461ffff191690556030805460ff19166001908117909155620151806031556040805160a0810182526000808252602080830182905282840182905260608301829052608090920181905260328190556033819055603481905560358190556036819055600f5433808352949092529182205580546001600160a01b03191690911790554660381480620004cb5750466061145b15620004f957601954601880546001600160a01b0319166001600160a01b0390921691909117905562000526565b46600114156200052657601a54601880546001600160a01b0319166001600160a01b039092169190911790555b601854601680546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a9919062000ae1565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200060b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000631919062000ae1565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200067e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006a4919062000ae1565b601780546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260409020805460ff19166001179055601854620006f09133911660001962000833565b6018546200070c9030906001600160a01b031660001962000833565b600160066000620007256000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280549093168117909255600b90620007ad6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620007dd3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040516200082591815260200190565b60405180910390a362000b0c565b6001600160a01b038316620008855760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620008d35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200087c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200098b5781600019048211156200096f576200096f62000934565b808516156200097d57918102915b93841c93908002906200094f565b509250929050565b600082620009a45750600162000a43565b81620009b35750600062000a43565b8160018114620009cc5760028114620009d757620009f7565b600191505062000a43565b60ff841115620009eb57620009eb62000934565b50506001821b62000a43565b5060208310610133831016604e8410600b841016171562000a1c575081810a62000a43565b62000a2883836200094a565b806000190482111562000a3f5762000a3f62000934565b0290505b92915050565b600062000a5a60ff84168362000993565b9392505050565b600081600019048311821515161562000a7e5762000a7e62000934565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000aab5762000aab62000a83565b500690565b60008282101562000ac55762000ac562000934565b500390565b60008262000adc5762000adc62000a83565b500490565b60006020828403121562000af457600080fd5b81516001600160a01b038116811462000a5a57600080fd5b6155fc8062000b1c6000396000f3fe6080604052600436106103fd5760003560e01c806378ee9b611161020d578063c0488b5611610128578063db49c245116100bb578063ee7c18391161008a578063fb78680d1161006f578063fb78680d14610e3c578063fdb78c0e14610e5c578063fe575a8714610e8f57600080fd5b8063ee7c183914610e06578063f6540ec714610e2657600080fd5b8063db49c24514610d6b578063dd62ed3e14610d8b578063eafb5a3c14610dd1578063ee5d9c2d14610df157600080fd5b8063c6a276c2116100f7578063c6a276c214610c8f578063cab5ebea14610caf578063cf84770614610ccf578063d94f93c814610d5157600080fd5b8063c0488b5614610b3e578063c2fa418f14610b5e578063c4cb9a5514610bcf578063c6831cd814610c1e57600080fd5b80638a63bd9b116101a057806395d89b411161016f57806395d89b4114610a98578063962dfc7514610ade578063a457c2d714610afe578063a9059cbb14610b1e57600080fd5b80638a63bd9b14610a4e5780638a8c523c14610a635780638da5cb5b14610a305780638f55b3b314610a7857600080fd5b806386559e1f116101dc57806386559e1f146109b757806387bcb7d5146109d757806388f82020146109f7578063893d20e814610a3057600080fd5b806378ee9b61146108fa5780637af13073146109105780637b45d4311461092657806380c581d11461099757600080fd5b806330dac5cb116103185780634fb2e45d116102ab578063590ffdce1161027a57806370a082311161025f57806370a08231146108a5578063715018a6146108c557806375cb1bd1146108da57600080fd5b8063590ffdce146108655780635c24b0741461088557600080fd5b80634fb2e45d146107d85780634fbee193146107f857806350a8e0161461083157806355dbc3691461085057600080fd5b806339509351116102e7578063395093511461075e578063452ed4f11461077e57806345d5e14f1461079e5780634ada218b146107be57600080fd5b806330dac5cb146106e6578063313ce567146106fc57806333251a0b1461071e578063384f36b61461073e57600080fd5b806318160ddd11610390578063260039571161035f578063260039571461067157806329dd8798146106915780632b112e49146106b15780632d838119146106c657600080fd5b806318160ddd1461055d5780631b6afa2d1461057c57806322eb7e2f1461063157806323b872dd1461065157600080fd5b806309231602116103cc57806309231602146104cd578063095ea7b3146104ed578063122fea3b1461051d57806313e461921461053d57600080fd5b806303fd2a451461040957806306fdde031461043c5780630712d1651461048b5780630758d924146104ad57600080fd5b3661040457005b600080fd5b34801561041557600080fd5b5061041f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561044857600080fd5b5060408051808201909152600881527f53686962657a6f7300000000000000000000000000000000000000000000000060208201525b6040516104339190614f99565b34801561049757600080fd5b506104ab6104a6366004615023565b610eaf565b005b3480156104b957600080fd5b5060165461041f906001600160a01b031681565b3480156104d957600080fd5b506104ab6104e8366004615077565b610fe9565b3480156104f957600080fd5b5061050d6105083660046150a5565b611108565b6040519015158152602001610433565b34801561052957600080fd5b5060185461041f906001600160a01b031681565b34801561054957600080fd5b506104ab6105583660046150df565b61111e565b34801561056957600080fd5b50600e545b604051908152602001610433565b34801561058857600080fd5b506015546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e001610433565b34801561063d57600080fd5b50601f5461041f906001600160a01b031681565b34801561065d57600080fd5b5061050d61066c366004615118565b6114d9565b34801561067d57600080fd5b506104ab61068c366004615159565b611551565b34801561069d57600080fd5b506104ab6106ac36600461517b565b611668565b3480156106bd57600080fd5b5061056e611751565b3480156106d257600080fd5b5061056e6106e1366004615077565b611784565b3480156106f257600080fd5b5061056e60315481565b34801561070857600080fd5b50600d5460405160ff9091168152602001610433565b34801561072a57600080fd5b506104ab6107393660046151d7565b61181b565b34801561074a57600080fd5b506104ab6107593660046151d7565b6118bb565b34801561076a57600080fd5b5061050d6107793660046150a5565b61194d565b34801561078a57600080fd5b5060175461041f906001600160a01b031681565b3480156107aa57600080fd5b506104ab6107b9366004615077565b611989565b3480156107ca57600080fd5b50602e5461050d9060ff1681565b3480156107e457600080fd5b506104ab6107f33660046151d7565b6119ec565b34801561080457600080fd5b5061050d6108133660046151d7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083d57600080fd5b50602e5461050d90610100900460ff1681565b34801561085c57600080fd5b5061056e611bf0565b34801561087157600080fd5b506104ab6108803660046150df565b611c69565b34801561089157600080fd5b506104ab6108a03660046151d7565b611ce2565b3480156108b157600080fd5b5061056e6108c03660046151d7565b611e21565b3480156108d157600080fd5b506104ab611e86565b3480156108e657600080fd5b506104ab6108f53660046151f4565b611f36565b34801561090657600080fd5b5061056e60295481565b34801561091c57600080fd5b5061056e60275481565b34801561093257600080fd5b506011546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b3480156109a357600080fd5b506104ab6109b23660046150df565b611fd0565b3480156109c357600080fd5b506104ab6109d236600461523f565b6121bd565b3480156109e357600080fd5b50601e5461041f906001600160a01b031681565b348015610a0357600080fd5b5061050d610a123660046151d7565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a3c57600080fd5b506000546001600160a01b031661041f565b348015610a5a57600080fd5b5061050d61221e565b348015610a6f57600080fd5b506104ab61228d565b348015610a8457600080fd5b506104ab610a9336600461525c565b61249f565b348015610aa457600080fd5b5060408051808201909152600681527f2442455a4f530000000000000000000000000000000000000000000000000000602082015261047e565b348015610aea57600080fd5b50601d5461041f906001600160a01b031681565b348015610b0a57600080fd5b5061050d610b193660046150a5565b612715565b348015610b2a57600080fd5b5061050d610b393660046150a5565b61274c565b348015610b4a57600080fd5b506104ab610b593660046152d0565b612763565b348015610b6a57600080fd5b506013546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b348015610bdb57600080fd5b50603254603354603454603554603654610bf6949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610433565b348015610c2a57600080fd5b506012546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b348015610c9b57600080fd5b506104ab610caa3660046151d7565b61293f565b348015610cbb57600080fd5b506104ab610cca36600461523f565b6129df565b348015610cdb57600080fd5b50601454610d1c9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610433565b348015610d5d57600080fd5b5060305461050d9060ff1681565b348015610d7757600080fd5b506104ab610d8636600461525c565b612ab2565b348015610d9757600080fd5b5061056e610da6366004615302565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ddd57600080fd5b506104ab610dec3660046151d7565b612d28565b348015610dfd57600080fd5b506104ab6130d7565b348015610e1257600080fd5b506104ab610e2136600461525c565b6131ba565b348015610e3257600080fd5b5061056e602b5481565b348015610e4857600080fd5b506104ab610e573660046152d0565b613430565b348015610e6857600080fd5b50601f5461050d907501000000000000000000000000000000000000000000900460ff1681565b348015610e9b57600080fd5b5061050d610eaa3660046151d7565b6134bd565b6000546001600160a01b03163314610f025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6014805461ffff86811663ffffffff19909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610f8f858761535f565b610f99919061535f565b610fa3919061535f565b6014805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b031633146110375760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b604b8110156110885760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610ef9565b602e546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505050565b600061111533848461354b565b50600192915050565b6000546001600160a01b0316331461116c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b600181151514156112ae576001600160a01b03821660009081526007602052604090205460ff16156111e05760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610ef9565b6001600160a01b0382166000908152600160205260409020541561123a576001600160a01b03821660009081526001602052604090205461122090611784565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b806114d5576001600160a01b03821660009081526007602052604090205460ff1661131b5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610ef9565b60085460011415611397576001600160a01b038216600090815260026020908152604080832083905560079091529020805460ff19169055600880548061136457611364615385565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b6008548110156114d357826001600160a01b0316600882815481106113c1576113c16153b4565b6000918252602090912001546001600160a01b031614156114c157600880546113ec906001906153e3565b815481106113fc576113fc6153b4565b600091825260209091200154600880546001600160a01b039092169183908110611428576114286153b4565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff19169055600880548061148d5761148d615385565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190556114d3565b806114cb816153fa565b91505061139a565b505b5050565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461153e576001600160a01b0384166000908152600560209081526040808320338452909152812080548492906115389084906153e3565b90915550505b611549848484613658565b949350505050565b6000546001600160a01b0316331461159f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008183600e546115b09190615415565b6115ba9190615434565b90506103e8600e546115cc9190615434565b8110156116415760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610ef9565b602a819055600c548290611656908590615415565b6116609190615434565b602b55505050565b6000546001600160a01b031633146116b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561173357600080fd5b505af1158015611747573d6000803e3d6000fd5b5050505050505050565b600061175d6000611e21565b61176861dead611e21565b611772919061546f565b600e5461177f91906153e3565b905090565b6000600f548211156117fe5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610ef9565b6000611808613c22565b90506118148184615434565b9392505050565b6000546001600160a01b031633146118695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024016110d3565b6000546001600160a01b031633146119095760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff161561191e57600080fd5b6018805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161111591859061198490869061546f565b61354b565b6000546001600160a01b031633146119d75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b620151808111156119e757600080fd5b603155565b6000546001600160a01b03163314611a3a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6001600160a01b038116611ab65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ef9565b6001600160a01b03811661dead1415611b375760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ef9565b60008054611b50916001600160a01b0390911690611c69565b611b5b816001611c69565b60008054611b71906001600160a01b0316611e21565b1115611b9857600054611b96906001600160a01b031682611b9182611e21565b613658565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000602e60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190615487565b6000546001600160a01b03163314611cb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff1615611d885760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610ef9565b6001600160a01b038116301415611de15760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ef9565b602e80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615611e5e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054611e8090611784565b92915050565b6000546001600160a01b03163314611ed45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008054611eed916001600160a01b0390911690611c69565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611f845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b601d80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601e805493851693821693909317909255601f8054919093169116179055565b6000546001600160a01b0316331461201e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b806120c6576001600160a01b03828116600081815260036020526040808220805460ff19169055602e5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050505050565b6004541561212d576203f480600454426120e091906153e3565b1161212d5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ef9565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155602e5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b1580156120aa57600080fd5b6000546001600160a01b0316331461220b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6030805460ff1916911515919091179055565b600080546001600160a01b0316331461226d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6016546122879030906001600160a01b031660001961354b565b50600190565b6000546001600160a01b031633146122db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e5460ff161561232e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ef9565b602e54610100900460ff166123855760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ef9565b61239030600161111e565b6017546123a7906001600160a01b0316600161111e565b602e546201000090046001600160a01b03166123ed57602e80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b602e54601754600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561247e57600080fd5b505af192505050801561248f575060015b50602e805460ff19166001179055565b6000546001600160a01b031633146124ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6000818385876124fd8a8c61535f565b612507919061535f565b612511919061535f565b61251b919061535f565b612525919061535f565b60155490915061ffff90811690881611801590612552575060155461ffff62010000909104811690871611155b8015612570575060155461ffff640100000000909104811690861611155b8015612590575060155461ffff6601000000000000909104811690851611155b80156125b2575060155461ffff68010000000000000000909104811690841611155b80156125d6575060155461ffff6a0100000000000000000000909104811690831611155b6125df57600080fd5b610d7a8161ffff1611156125f257600080fd5b85601260000160026101000a81548161ffff021916908361ffff16021790555086601260000160006101000a81548161ffff021916908361ffff16021790555084601260000160046101000a81548161ffff021916908361ffff16021790555083601260000160066101000a81548161ffff021916908361ffff16021790555082601260000160086101000a81548161ffff021916908361ffff160217905550816012600001600a6101000a81548161ffff021916908361ffff16021790555083876126be919061535f565b6126c890826154a0565b6012805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916111159185906119849086906153e3565b6000612759338484613658565b5060019392505050565b6000546001600160a01b031633146127b15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008385600e546127c29190615415565b6127cc9190615434565b90506103e8600e546127de9190615434565b8110156128535760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ef9565b6026819055600c548490612868908790615415565b6128729190615434565b602755600e548290612885908590615415565b61288f9190615434565b90506103e8600e546128a19190615434565b8110156129165760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ef9565b6028819055600c54829061292b908590615415565b6129359190615434565b6029555050505050565b6000546001600160a01b0316331461298d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016110d3565b6000546001600160a01b03163314612a2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b601f80548215157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612aa790831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612b005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b600081838587612b108a8c61535f565b612b1a919061535f565b612b24919061535f565b612b2e919061535f565b612b38919061535f565b60155490915061ffff90811690881611801590612b65575060155461ffff62010000909104811690871611155b8015612b83575060155461ffff640100000000909104811690861611155b8015612ba3575060155461ffff6601000000000000909104811690851611155b8015612bc5575060155461ffff68010000000000000000909104811690841611155b8015612be9575060155461ffff6a0100000000000000000000909104811690831611155b612bf257600080fd5b610d7a8161ffff161115612c0557600080fd5b85601160000160026101000a81548161ffff021916908361ffff16021790555086601160000160006101000a81548161ffff021916908361ffff16021790555084601160000160046101000a81548161ffff021916908361ffff16021790555083601160000160066101000a81548161ffff021916908361ffff16021790555082601160000160086101000a81548161ffff021916908361ffff160217905550816011600001600a6101000a81548161ffff021916908361ffff1602179055508387612cd1919061535f565b612cdb90826154a0565b6011805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b6000546001600160a01b03163314612d765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf91906154c3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5091906154c3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed791906154c3565b90506001600160a01b03811661307557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4991906154c3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fba91906154c3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561301f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304391906154c3565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905561309e565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6016805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556114d390309060001961354b565b6000546001600160a01b031633146131255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff161561317d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ef9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156131b7573d6000803e3d6000fd5b50565b6000546001600160a01b031633146132085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6000818385876132188a8c61535f565b613222919061535f565b61322c919061535f565b613236919061535f565b613240919061535f565b60155490915061ffff9081169088161180159061326d575060155461ffff62010000909104811690871611155b801561328b575060155461ffff640100000000909104811690861611155b80156132ab575060155461ffff6601000000000000909104811690851611155b80156132cd575060155461ffff68010000000000000000909104811690841611155b80156132f1575060155461ffff6a0100000000000000000000909104811690831611155b6132fa57600080fd5b610d7a8161ffff16111561330d57600080fd5b85601360000160026101000a81548161ffff021916908361ffff16021790555086601360000160006101000a81548161ffff021916908361ffff16021790555084601360000160046101000a81548161ffff021916908361ffff16021790555083601360000160066101000a81548161ffff021916908361ffff16021790555082601360000160086101000a81548161ffff021916908361ffff160217905550816013600001600a6101000a81548161ffff021916908361ffff16021790555083876133d9919061535f565b6133e390826154a0565b6013805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b6000546001600160a01b0316331461347e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b8284600e5461348d9190615415565b6134979190615434565b602c55600e5481906134aa908490615415565b6134b49190615434565b602d5550505050565b602e546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613527573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8091906154e0565b6001600160a01b0383166135a15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ef9565b6001600160a01b0382166135f75760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ef9565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef9565b6001600160a01b0383166137525760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef9565b600082116137c85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ef9565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106137fd576137fd6153b4565b6001600160a01b03928316602091820292909201810191909152601654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561386f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389391906154c3565b816001815181106138a6576138a66153b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506138d08585613db3565b15613b2557602e5460ff166139275760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ef9565b6001600160a01b03851660009081526003602052604090205460ff16156139c5576026548311156139c05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ef9565b613a5e565b6001600160a01b03841660009081526003602052604090205460ff1615613a5e57602854831115613a5e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ef9565b6018546001600160a01b03858116911614801590613a9557506001600160a01b03841660009081526003602052604090205460ff16155b15613b2557602a5483613aa786611e21565b613ab1919061546f565b1115613b255760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ef9565b6001600160a01b03851660009081526006602052604090205460019060ff1680613b6757506001600160a01b03851660009081526006602052604090205460ff165b15613b70575060005b6001600160a01b03851660009081526003602052604090205460ff1615613c0c57601f5474010000000000000000000000000000000000000000900460ff16158015613bd75750601f547501000000000000000000000000000000000000000000900460ff165b15613c0c576000613be730611e21565b9050602c548110613c0a57602d548110613c005750602d545b613c0a8184613e70565b505b613c1886868684614342565b9695505050505050565b600f54600e5460009190825b600854811015613d7a57826001600060088481548110613c5057613c506153b4565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613cbb5750816002600060088481548110613c9457613c946153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613cd857600e54600f54613cd09190615434565b935050505090565b6001600060088381548110613cef57613cef6153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d1e90846153e3565b92506002600060088381548110613d3757613d376153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d6690836153e3565b915080613d72816153fa565b915050613c2e565b50600e54600f54613d8b9190615434565b821015613da957600e54600f54613da29190615434565b9250505090565b613da28183615434565b600080546001600160a01b03848116911614801590613de057506000546001600160a01b03838116911614155b8015613e0557506001600160a01b0382166000908152600b602052604090205460ff16155b8015613e2a57506001600160a01b0383166000908152600b602052604090205460ff16155b8015613e4157506001600160a01b03821661dead14155b8015613e5557506001600160a01b03821615155b801561181457506001600160a01b0383163014159392505050565b601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560145461ffff6801000000000000000090910416613ecc57614316565b3060009081526005602090815260408083206016546001600160a01b0316845290915290205460001914613f25573060009081526005602090815260408083206016546001600160a01b03168452909152902060001990555b60145460009060029061ffff680100000000000000008204811691613f4b911686615415565b613f559190615434565b613f5f9190615434565b90506000613f6d82856153e3565b6016546040517f791ac9470000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063791ac94790613fc09084906000908890309042906004016154fd565b600060405180830381600087803b158015613fda57600080fd5b505af1158015613fee573d6000803e3d6000fd5b505047603255505060145460009060029061ffff68010000000000000000820481169161401c911647615415565b6140269190615434565b6140309190615434565b60348190559050821561412e576016546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101859052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156140c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140e9919061556e565b505060408051858152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b471561431257601e5460145447916001600160a01b0316906108fc906141679061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916141849164010000000090041685615415565b61418e9190615434565b6040518115909202916000818181858888f193505050501580156141b6573d6000803e3d6000fd5b50601f546014546001600160a01b03909116906108fc906141ea9061ffff80821691680100000000000000009004166154a0565b60145461ffff9182169161420991660100000000000090041685615415565b6142139190615434565b6040518115909202916000818181858888f1935050505015801561423b573d6000803e3d6000fd5b5060145461425c9061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916142799164010000000090041683615415565b6142839190615434565b6035556014546142a69061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916142c591660100000000000090041683615415565b6142cf9190615434565b60365547603355601d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561430f573d6000803e3d6000fd5b50505b5050505b5050601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b602e54600090610100900460ff166143ee5761435e8585614813565b602e54610100900460ff1615801561437b575061437b8585613db3565b156143ee5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ef9565b60006143fc868686866149bf565b60a08101516001600160a01b038816600090815260016020526040902054919250614426916153e3565b6001600160a01b038088166000908152600160205260408082209390935560808401519188168152919091205461445d919061546f565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff16156144cf576001600160a01b0386166000908152600260205260409020546144b59085906153e3565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526007602052604090205460ff161561452f5780516001600160a01b038616600090815260026020526040902054614515919061546f565b6001600160a01b0386166000908152600260205260409020555b60408101511561461157614541613c22565b81604001516145509190615415565b3060009081526001602052604090205461456a919061546f565b3060009081526001602090815260408083209390935560079052205460ff16156145bf57604080820151306000908152600260205291909120546145ae919061546f565b306000908152600260205260409020555b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161460891815260200190565b60405180910390a35b60608101511561477e57614623613c22565b81606001516146329190615415565b61dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54614669919061546f565b61dead6000527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5560076020527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d5460ff161561472a57606081015161dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546146fc919061546f565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc555b61dead6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161477591815260200190565b60405180910390a35b60008160c001511180614795575060008160200151115b156147b6578060c00151600f60008282546147b091906153e3565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516147ff91815260200190565b60405180910390a350600195945050505050565b602e54610100900460ff16156148915760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ef9565b61489b8282613db3565b1580156148b557506017546001600160a01b038281169116145b156114d5576001600160a01b038083166000908152600b60205260409020805460ff19166001179055602e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017908190556201000090041661494757602e80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6149ff6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b614a3f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000614a49613c22565b9050614a558186615415565b60a0830152614a648787613db3565b15614b3557602e546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015614b1e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252614b1b918101906154e0565b60015b614b2757600080fd5b905080614b3357600080fd5b505b8315614f22576001600160a01b03861660009081526003602052604090205460ff1615614bce576012546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1666010000000000009093041664010000000002919091179055614ccf565b6001600160a01b03871660009081526003602052604090205460ff1615614c61576011546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1666010000000000009093041664010000000002919091179055614ccf565b6013546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16660100000000000090930416640100000000029190911790555b60305460ff168015614cf957506001600160a01b03861660009081526003602052604090205460ff165b15614dde576031546001600160a01b0388166000908152602f60205260409020544291614d259161546f565b10614dd9576010805460029190600090614d4490849061ffff1661559c565b92506101000a81548161ffff021916908361ffff1602179055506002601060000160028282829054906101000a900461ffff16614d81919061559c565b92506101000a81548161ffff021916908361ffff1602179055506002601060000160048282829054906101000a900461ffff16614dbe919061559c565b92506101000a81548161ffff021916908361ffff1602179055505b614e29565b60305460ff168015614e0857506001600160a01b03871660009081526003602052604090205460ff165b15614e29576001600160a01b0386166000908152602f602052604090204290555b60155460105461ffff6c01000000000000000000000000909204821691614e51911687615415565b614e5b9190615434565b602083015260155460105461ffff6c01000000000000000000000000909204821691614e8e916201000090041687615415565b614e989190615434565b604083015260155460105461ffff6c01000000000000000000000000909204821691614ecd9164010000000090041687615415565b614ed79190615434565b6060830181905260408301516020840151614ef2919061546f565b614efc919061546f565b614f0690866153e3565b82526020820151614f18908290615415565b60c0830152614f42565b600060208301819052604083018190526060830181905285835260c08301525b808260600151614f529190615415565b818360400151614f629190615415565b8360c00151614f71919061546f565b614f7b919061546f565b8260a00151614f8a91906153e3565b60808301525095945050505050565b600060208083528351808285015260005b81811015614fc657858101830151858201604001528201614faa565b81811115614fd8576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803561ffff8116811461501e57600080fd5b919050565b6000806000806080858703121561503957600080fd5b6150428561500c565b93506150506020860161500c565b925061505e6040860161500c565b915061506c6060860161500c565b905092959194509250565b60006020828403121561508957600080fd5b5035919050565b6001600160a01b03811681146131b757600080fd5b600080604083850312156150b857600080fd5b82356150c381615090565b946020939093013593505050565b80151581146131b757600080fd5b600080604083850312156150f257600080fd5b82356150fd81615090565b9150602083013561510d816150d1565b809150509250929050565b60008060006060848603121561512d57600080fd5b833561513881615090565b9250602084013561514881615090565b929592945050506040919091013590565b6000806040838503121561516c57600080fd5b50508035926020909101359150565b6000806000806080858703121561519157600080fd5b843561519c816150d1565b935060208501356151ac816150d1565b925060408501356151bc816150d1565b915060608501356151cc816150d1565b939692955090935050565b6000602082840312156151e957600080fd5b813561181481615090565b60008060006060848603121561520957600080fd5b833561521481615090565b9250602084013561522481615090565b9150604084013561523481615090565b809150509250925092565b60006020828403121561525157600080fd5b8135611814816150d1565b60008060008060008060c0878903121561527557600080fd5b61527e8761500c565b955061528c6020880161500c565b945061529a6040880161500c565b93506152a86060880161500c565b92506152b66080880161500c565b91506152c460a0880161500c565b90509295509295509295565b600080600080608085870312156152e657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561531557600080fd5b823561532081615090565b9150602083013561510d81615090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681851680830382111561537c5761537c615330565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156153f5576153f5615330565b500390565b600060001982141561540e5761540e615330565b5060010190565b600081600019048311821515161561542f5761542f615330565b500290565b60008261546a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561548257615482615330565b500190565b60006020828403121561549957600080fd5b5051919050565b600061ffff838116908316818110156154bb576154bb615330565b039392505050565b6000602082840312156154d557600080fd5b815161181481615090565b6000602082840312156154f257600080fd5b8151611814816150d1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561554d5784516001600160a01b031683529383019391830191600101615528565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561558357600080fd5b8351925060208401519150604084015190509250925092565b600061ffff808316818516818304811182151516156155bd576155bd615330565b0294935050505056fea26469706673582212205505bc8db0cc588da26e8feb8c24b704ff34b9a185260bf57f8e2bc269d22eab64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103fd5760003560e01c806378ee9b611161020d578063c0488b5611610128578063db49c245116100bb578063ee7c18391161008a578063fb78680d1161006f578063fb78680d14610e3c578063fdb78c0e14610e5c578063fe575a8714610e8f57600080fd5b8063ee7c183914610e06578063f6540ec714610e2657600080fd5b8063db49c24514610d6b578063dd62ed3e14610d8b578063eafb5a3c14610dd1578063ee5d9c2d14610df157600080fd5b8063c6a276c2116100f7578063c6a276c214610c8f578063cab5ebea14610caf578063cf84770614610ccf578063d94f93c814610d5157600080fd5b8063c0488b5614610b3e578063c2fa418f14610b5e578063c4cb9a5514610bcf578063c6831cd814610c1e57600080fd5b80638a63bd9b116101a057806395d89b411161016f57806395d89b4114610a98578063962dfc7514610ade578063a457c2d714610afe578063a9059cbb14610b1e57600080fd5b80638a63bd9b14610a4e5780638a8c523c14610a635780638da5cb5b14610a305780638f55b3b314610a7857600080fd5b806386559e1f116101dc57806386559e1f146109b757806387bcb7d5146109d757806388f82020146109f7578063893d20e814610a3057600080fd5b806378ee9b61146108fa5780637af13073146109105780637b45d4311461092657806380c581d11461099757600080fd5b806330dac5cb116103185780634fb2e45d116102ab578063590ffdce1161027a57806370a082311161025f57806370a08231146108a5578063715018a6146108c557806375cb1bd1146108da57600080fd5b8063590ffdce146108655780635c24b0741461088557600080fd5b80634fb2e45d146107d85780634fbee193146107f857806350a8e0161461083157806355dbc3691461085057600080fd5b806339509351116102e7578063395093511461075e578063452ed4f11461077e57806345d5e14f1461079e5780634ada218b146107be57600080fd5b806330dac5cb146106e6578063313ce567146106fc57806333251a0b1461071e578063384f36b61461073e57600080fd5b806318160ddd11610390578063260039571161035f578063260039571461067157806329dd8798146106915780632b112e49146106b15780632d838119146106c657600080fd5b806318160ddd1461055d5780631b6afa2d1461057c57806322eb7e2f1461063157806323b872dd1461065157600080fd5b806309231602116103cc57806309231602146104cd578063095ea7b3146104ed578063122fea3b1461051d57806313e461921461053d57600080fd5b806303fd2a451461040957806306fdde031461043c5780630712d1651461048b5780630758d924146104ad57600080fd5b3661040457005b600080fd5b34801561041557600080fd5b5061041f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561044857600080fd5b5060408051808201909152600881527f53686962657a6f7300000000000000000000000000000000000000000000000060208201525b6040516104339190614f99565b34801561049757600080fd5b506104ab6104a6366004615023565b610eaf565b005b3480156104b957600080fd5b5060165461041f906001600160a01b031681565b3480156104d957600080fd5b506104ab6104e8366004615077565b610fe9565b3480156104f957600080fd5b5061050d6105083660046150a5565b611108565b6040519015158152602001610433565b34801561052957600080fd5b5060185461041f906001600160a01b031681565b34801561054957600080fd5b506104ab6105583660046150df565b61111e565b34801561056957600080fd5b50600e545b604051908152602001610433565b34801561058857600080fd5b506015546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e001610433565b34801561063d57600080fd5b50601f5461041f906001600160a01b031681565b34801561065d57600080fd5b5061050d61066c366004615118565b6114d9565b34801561067d57600080fd5b506104ab61068c366004615159565b611551565b34801561069d57600080fd5b506104ab6106ac36600461517b565b611668565b3480156106bd57600080fd5b5061056e611751565b3480156106d257600080fd5b5061056e6106e1366004615077565b611784565b3480156106f257600080fd5b5061056e60315481565b34801561070857600080fd5b50600d5460405160ff9091168152602001610433565b34801561072a57600080fd5b506104ab6107393660046151d7565b61181b565b34801561074a57600080fd5b506104ab6107593660046151d7565b6118bb565b34801561076a57600080fd5b5061050d6107793660046150a5565b61194d565b34801561078a57600080fd5b5060175461041f906001600160a01b031681565b3480156107aa57600080fd5b506104ab6107b9366004615077565b611989565b3480156107ca57600080fd5b50602e5461050d9060ff1681565b3480156107e457600080fd5b506104ab6107f33660046151d7565b6119ec565b34801561080457600080fd5b5061050d6108133660046151d7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083d57600080fd5b50602e5461050d90610100900460ff1681565b34801561085c57600080fd5b5061056e611bf0565b34801561087157600080fd5b506104ab6108803660046150df565b611c69565b34801561089157600080fd5b506104ab6108a03660046151d7565b611ce2565b3480156108b157600080fd5b5061056e6108c03660046151d7565b611e21565b3480156108d157600080fd5b506104ab611e86565b3480156108e657600080fd5b506104ab6108f53660046151f4565b611f36565b34801561090657600080fd5b5061056e60295481565b34801561091c57600080fd5b5061056e60275481565b34801561093257600080fd5b506011546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b3480156109a357600080fd5b506104ab6109b23660046150df565b611fd0565b3480156109c357600080fd5b506104ab6109d236600461523f565b6121bd565b3480156109e357600080fd5b50601e5461041f906001600160a01b031681565b348015610a0357600080fd5b5061050d610a123660046151d7565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a3c57600080fd5b506000546001600160a01b031661041f565b348015610a5a57600080fd5b5061050d61221e565b348015610a6f57600080fd5b506104ab61228d565b348015610a8457600080fd5b506104ab610a9336600461525c565b61249f565b348015610aa457600080fd5b5060408051808201909152600681527f2442455a4f530000000000000000000000000000000000000000000000000000602082015261047e565b348015610aea57600080fd5b50601d5461041f906001600160a01b031681565b348015610b0a57600080fd5b5061050d610b193660046150a5565b612715565b348015610b2a57600080fd5b5061050d610b393660046150a5565b61274c565b348015610b4a57600080fd5b506104ab610b593660046152d0565b612763565b348015610b6a57600080fd5b506013546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b348015610bdb57600080fd5b50603254603354603454603554603654610bf6949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610433565b348015610c2a57600080fd5b506012546105ed9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b348015610c9b57600080fd5b506104ab610caa3660046151d7565b61293f565b348015610cbb57600080fd5b506104ab610cca36600461523f565b6129df565b348015610cdb57600080fd5b50601454610d1c9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610433565b348015610d5d57600080fd5b5060305461050d9060ff1681565b348015610d7757600080fd5b506104ab610d8636600461525c565b612ab2565b348015610d9757600080fd5b5061056e610da6366004615302565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ddd57600080fd5b506104ab610dec3660046151d7565b612d28565b348015610dfd57600080fd5b506104ab6130d7565b348015610e1257600080fd5b506104ab610e2136600461525c565b6131ba565b348015610e3257600080fd5b5061056e602b5481565b348015610e4857600080fd5b506104ab610e573660046152d0565b613430565b348015610e6857600080fd5b50601f5461050d907501000000000000000000000000000000000000000000900460ff1681565b348015610e9b57600080fd5b5061050d610eaa3660046151d7565b6134bd565b6000546001600160a01b03163314610f025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6014805461ffff86811663ffffffff19909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610f8f858761535f565b610f99919061535f565b610fa3919061535f565b6014805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b031633146110375760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b604b8110156110885760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610ef9565b602e546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505050565b600061111533848461354b565b50600192915050565b6000546001600160a01b0316331461116c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b600181151514156112ae576001600160a01b03821660009081526007602052604090205460ff16156111e05760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610ef9565b6001600160a01b0382166000908152600160205260409020541561123a576001600160a01b03821660009081526001602052604090205461122090611784565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b806114d5576001600160a01b03821660009081526007602052604090205460ff1661131b5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610ef9565b60085460011415611397576001600160a01b038216600090815260026020908152604080832083905560079091529020805460ff19169055600880548061136457611364615385565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b6008548110156114d357826001600160a01b0316600882815481106113c1576113c16153b4565b6000918252602090912001546001600160a01b031614156114c157600880546113ec906001906153e3565b815481106113fc576113fc6153b4565b600091825260209091200154600880546001600160a01b039092169183908110611428576114286153b4565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff19169055600880548061148d5761148d615385565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190556114d3565b806114cb816153fa565b91505061139a565b505b5050565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461153e576001600160a01b0384166000908152600560209081526040808320338452909152812080548492906115389084906153e3565b90915550505b611549848484613658565b949350505050565b6000546001600160a01b0316331461159f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008183600e546115b09190615415565b6115ba9190615434565b90506103e8600e546115cc9190615434565b8110156116415760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610ef9565b602a819055600c548290611656908590615415565b6116609190615434565b602b55505050565b6000546001600160a01b031633146116b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561173357600080fd5b505af1158015611747573d6000803e3d6000fd5b5050505050505050565b600061175d6000611e21565b61176861dead611e21565b611772919061546f565b600e5461177f91906153e3565b905090565b6000600f548211156117fe5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610ef9565b6000611808613c22565b90506118148184615434565b9392505050565b6000546001600160a01b031633146118695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024016110d3565b6000546001600160a01b031633146119095760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff161561191e57600080fd5b6018805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161111591859061198490869061546f565b61354b565b6000546001600160a01b031633146119d75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b620151808111156119e757600080fd5b603155565b6000546001600160a01b03163314611a3a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6001600160a01b038116611ab65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ef9565b6001600160a01b03811661dead1415611b375760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ef9565b60008054611b50916001600160a01b0390911690611c69565b611b5b816001611c69565b60008054611b71906001600160a01b0316611e21565b1115611b9857600054611b96906001600160a01b031682611b9182611e21565b613658565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000602e60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190615487565b6000546001600160a01b03163314611cb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff1615611d885760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610ef9565b6001600160a01b038116301415611de15760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ef9565b602e80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615611e5e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054611e8090611784565b92915050565b6000546001600160a01b03163314611ed45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008054611eed916001600160a01b0390911690611c69565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611f845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b601d80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601e805493851693821693909317909255601f8054919093169116179055565b6000546001600160a01b0316331461201e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b806120c6576001600160a01b03828116600081815260036020526040808220805460ff19169055602e5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050505050565b6004541561212d576203f480600454426120e091906153e3565b1161212d5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ef9565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155602e5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b1580156120aa57600080fd5b6000546001600160a01b0316331461220b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6030805460ff1916911515919091179055565b600080546001600160a01b0316331461226d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6016546122879030906001600160a01b031660001961354b565b50600190565b6000546001600160a01b031633146122db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e5460ff161561232e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ef9565b602e54610100900460ff166123855760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ef9565b61239030600161111e565b6017546123a7906001600160a01b0316600161111e565b602e546201000090046001600160a01b03166123ed57602e80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b602e54601754600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561247e57600080fd5b505af192505050801561248f575060015b50602e805460ff19166001179055565b6000546001600160a01b031633146124ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6000818385876124fd8a8c61535f565b612507919061535f565b612511919061535f565b61251b919061535f565b612525919061535f565b60155490915061ffff90811690881611801590612552575060155461ffff62010000909104811690871611155b8015612570575060155461ffff640100000000909104811690861611155b8015612590575060155461ffff6601000000000000909104811690851611155b80156125b2575060155461ffff68010000000000000000909104811690841611155b80156125d6575060155461ffff6a0100000000000000000000909104811690831611155b6125df57600080fd5b610d7a8161ffff1611156125f257600080fd5b85601260000160026101000a81548161ffff021916908361ffff16021790555086601260000160006101000a81548161ffff021916908361ffff16021790555084601260000160046101000a81548161ffff021916908361ffff16021790555083601260000160066101000a81548161ffff021916908361ffff16021790555082601260000160086101000a81548161ffff021916908361ffff160217905550816012600001600a6101000a81548161ffff021916908361ffff16021790555083876126be919061535f565b6126c890826154a0565b6012805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916111159185906119849086906153e3565b6000612759338484613658565b5060019392505050565b6000546001600160a01b031633146127b15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008385600e546127c29190615415565b6127cc9190615434565b90506103e8600e546127de9190615434565b8110156128535760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ef9565b6026819055600c548490612868908790615415565b6128729190615434565b602755600e548290612885908590615415565b61288f9190615434565b90506103e8600e546128a19190615434565b8110156129165760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ef9565b6028819055600c54829061292b908590615415565b6129359190615434565b6029555050505050565b6000546001600160a01b0316331461298d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016110d3565b6000546001600160a01b03163314612a2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b601f80548215157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612aa790831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612b005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b600081838587612b108a8c61535f565b612b1a919061535f565b612b24919061535f565b612b2e919061535f565b612b38919061535f565b60155490915061ffff90811690881611801590612b65575060155461ffff62010000909104811690871611155b8015612b83575060155461ffff640100000000909104811690861611155b8015612ba3575060155461ffff6601000000000000909104811690851611155b8015612bc5575060155461ffff68010000000000000000909104811690841611155b8015612be9575060155461ffff6a0100000000000000000000909104811690831611155b612bf257600080fd5b610d7a8161ffff161115612c0557600080fd5b85601160000160026101000a81548161ffff021916908361ffff16021790555086601160000160006101000a81548161ffff021916908361ffff16021790555084601160000160046101000a81548161ffff021916908361ffff16021790555083601160000160066101000a81548161ffff021916908361ffff16021790555082601160000160086101000a81548161ffff021916908361ffff160217905550816011600001600a6101000a81548161ffff021916908361ffff1602179055508387612cd1919061535f565b612cdb90826154a0565b6011805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b6000546001600160a01b03163314612d765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf91906154c3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5091906154c3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed791906154c3565b90506001600160a01b03811661307557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4991906154c3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fba91906154c3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561301f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304391906154c3565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905561309e565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6016805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556114d390309060001961354b565b6000546001600160a01b031633146131255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b602e54610100900460ff161561317d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ef9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156131b7573d6000803e3d6000fd5b50565b6000546001600160a01b031633146132085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b6000818385876132188a8c61535f565b613222919061535f565b61322c919061535f565b613236919061535f565b613240919061535f565b60155490915061ffff9081169088161180159061326d575060155461ffff62010000909104811690871611155b801561328b575060155461ffff640100000000909104811690861611155b80156132ab575060155461ffff6601000000000000909104811690851611155b80156132cd575060155461ffff68010000000000000000909104811690841611155b80156132f1575060155461ffff6a0100000000000000000000909104811690831611155b6132fa57600080fd5b610d7a8161ffff16111561330d57600080fd5b85601360000160026101000a81548161ffff021916908361ffff16021790555086601360000160006101000a81548161ffff021916908361ffff16021790555084601360000160046101000a81548161ffff021916908361ffff16021790555083601360000160066101000a81548161ffff021916908361ffff16021790555082601360000160086101000a81548161ffff021916908361ffff160217905550816013600001600a6101000a81548161ffff021916908361ffff16021790555083876133d9919061535f565b6133e390826154a0565b6013805461ffff929092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff90921691909117905550505050505050565b6000546001600160a01b0316331461347e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ef9565b8284600e5461348d9190615415565b6134979190615434565b602c55600e5481906134aa908490615415565b6134b49190615434565b602d5550505050565b602e546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613527573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8091906154e0565b6001600160a01b0383166135a15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ef9565b6001600160a01b0382166135f75760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ef9565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef9565b6001600160a01b0383166137525760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef9565b600082116137c85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ef9565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106137fd576137fd6153b4565b6001600160a01b03928316602091820292909201810191909152601654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561386f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389391906154c3565b816001815181106138a6576138a66153b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506138d08585613db3565b15613b2557602e5460ff166139275760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ef9565b6001600160a01b03851660009081526003602052604090205460ff16156139c5576026548311156139c05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ef9565b613a5e565b6001600160a01b03841660009081526003602052604090205460ff1615613a5e57602854831115613a5e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ef9565b6018546001600160a01b03858116911614801590613a9557506001600160a01b03841660009081526003602052604090205460ff16155b15613b2557602a5483613aa786611e21565b613ab1919061546f565b1115613b255760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ef9565b6001600160a01b03851660009081526006602052604090205460019060ff1680613b6757506001600160a01b03851660009081526006602052604090205460ff165b15613b70575060005b6001600160a01b03851660009081526003602052604090205460ff1615613c0c57601f5474010000000000000000000000000000000000000000900460ff16158015613bd75750601f547501000000000000000000000000000000000000000000900460ff165b15613c0c576000613be730611e21565b9050602c548110613c0a57602d548110613c005750602d545b613c0a8184613e70565b505b613c1886868684614342565b9695505050505050565b600f54600e5460009190825b600854811015613d7a57826001600060088481548110613c5057613c506153b4565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613cbb5750816002600060088481548110613c9457613c946153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613cd857600e54600f54613cd09190615434565b935050505090565b6001600060088381548110613cef57613cef6153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d1e90846153e3565b92506002600060088381548110613d3757613d376153b4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613d6690836153e3565b915080613d72816153fa565b915050613c2e565b50600e54600f54613d8b9190615434565b821015613da957600e54600f54613da29190615434565b9250505090565b613da28183615434565b600080546001600160a01b03848116911614801590613de057506000546001600160a01b03838116911614155b8015613e0557506001600160a01b0382166000908152600b602052604090205460ff16155b8015613e2a57506001600160a01b0383166000908152600b602052604090205460ff16155b8015613e4157506001600160a01b03821661dead14155b8015613e5557506001600160a01b03821615155b801561181457506001600160a01b0383163014159392505050565b601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560145461ffff6801000000000000000090910416613ecc57614316565b3060009081526005602090815260408083206016546001600160a01b0316845290915290205460001914613f25573060009081526005602090815260408083206016546001600160a01b03168452909152902060001990555b60145460009060029061ffff680100000000000000008204811691613f4b911686615415565b613f559190615434565b613f5f9190615434565b90506000613f6d82856153e3565b6016546040517f791ac9470000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063791ac94790613fc09084906000908890309042906004016154fd565b600060405180830381600087803b158015613fda57600080fd5b505af1158015613fee573d6000803e3d6000fd5b505047603255505060145460009060029061ffff68010000000000000000820481169161401c911647615415565b6140269190615434565b6140309190615434565b60348190559050821561412e576016546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101859052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156140c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140e9919061556e565b505060408051858152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b471561431257601e5460145447916001600160a01b0316906108fc906141679061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916141849164010000000090041685615415565b61418e9190615434565b6040518115909202916000818181858888f193505050501580156141b6573d6000803e3d6000fd5b50601f546014546001600160a01b03909116906108fc906141ea9061ffff80821691680100000000000000009004166154a0565b60145461ffff9182169161420991660100000000000090041685615415565b6142139190615434565b6040518115909202916000818181858888f1935050505015801561423b573d6000803e3d6000fd5b5060145461425c9061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916142799164010000000090041683615415565b6142839190615434565b6035556014546142a69061ffff80821691680100000000000000009004166154a0565b60145461ffff918216916142c591660100000000000090041683615415565b6142cf9190615434565b60365547603355601d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561430f573d6000803e3d6000fd5b50505b5050505b5050601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b602e54600090610100900460ff166143ee5761435e8585614813565b602e54610100900460ff1615801561437b575061437b8585613db3565b156143ee5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ef9565b60006143fc868686866149bf565b60a08101516001600160a01b038816600090815260016020526040902054919250614426916153e3565b6001600160a01b038088166000908152600160205260408082209390935560808401519188168152919091205461445d919061546f565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff16156144cf576001600160a01b0386166000908152600260205260409020546144b59085906153e3565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526007602052604090205460ff161561452f5780516001600160a01b038616600090815260026020526040902054614515919061546f565b6001600160a01b0386166000908152600260205260409020555b60408101511561461157614541613c22565b81604001516145509190615415565b3060009081526001602052604090205461456a919061546f565b3060009081526001602090815260408083209390935560079052205460ff16156145bf57604080820151306000908152600260205291909120546145ae919061546f565b306000908152600260205260409020555b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161460891815260200190565b60405180910390a35b60608101511561477e57614623613c22565b81606001516146329190615415565b61dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54614669919061546f565b61dead6000527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5560076020527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d5460ff161561472a57606081015161dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546146fc919061546f565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc555b61dead6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161477591815260200190565b60405180910390a35b60008160c001511180614795575060008160200151115b156147b6578060c00151600f60008282546147b091906153e3565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516147ff91815260200190565b60405180910390a350600195945050505050565b602e54610100900460ff16156148915760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ef9565b61489b8282613db3565b1580156148b557506017546001600160a01b038281169116145b156114d5576001600160a01b038083166000908152600b60205260409020805460ff19166001179055602e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017908190556201000090041661494757602e80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6149ff6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b614a3f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000614a49613c22565b9050614a558186615415565b60a0830152614a648787613db3565b15614b3557602e546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015614b1e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252614b1b918101906154e0565b60015b614b2757600080fd5b905080614b3357600080fd5b505b8315614f22576001600160a01b03861660009081526003602052604090205460ff1615614bce576012546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1666010000000000009093041664010000000002919091179055614ccf565b6001600160a01b03871660009081526003602052604090205460ff1615614c61576011546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1666010000000000009093041664010000000002919091179055614ccf565b6013546010805461ffff80841663ffffffff19909216919091176c01000000000000000000000000840482166201000002177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16660100000000000090930416640100000000029190911790555b60305460ff168015614cf957506001600160a01b03861660009081526003602052604090205460ff165b15614dde576031546001600160a01b0388166000908152602f60205260409020544291614d259161546f565b10614dd9576010805460029190600090614d4490849061ffff1661559c565b92506101000a81548161ffff021916908361ffff1602179055506002601060000160028282829054906101000a900461ffff16614d81919061559c565b92506101000a81548161ffff021916908361ffff1602179055506002601060000160048282829054906101000a900461ffff16614dbe919061559c565b92506101000a81548161ffff021916908361ffff1602179055505b614e29565b60305460ff168015614e0857506001600160a01b03871660009081526003602052604090205460ff165b15614e29576001600160a01b0386166000908152602f602052604090204290555b60155460105461ffff6c01000000000000000000000000909204821691614e51911687615415565b614e5b9190615434565b602083015260155460105461ffff6c01000000000000000000000000909204821691614e8e916201000090041687615415565b614e989190615434565b604083015260155460105461ffff6c01000000000000000000000000909204821691614ecd9164010000000090041687615415565b614ed79190615434565b6060830181905260408301516020840151614ef2919061546f565b614efc919061546f565b614f0690866153e3565b82526020820151614f18908290615415565b60c0830152614f42565b600060208301819052604083018190526060830181905285835260c08301525b808260600151614f529190615415565b818360400151614f629190615415565b8360c00151614f71919061546f565b614f7b919061546f565b8260a00151614f8a91906153e3565b60808301525095945050505050565b600060208083528351808285015260005b81811015614fc657858101830151858201604001528201614faa565b81811115614fd8576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803561ffff8116811461501e57600080fd5b919050565b6000806000806080858703121561503957600080fd5b6150428561500c565b93506150506020860161500c565b925061505e6040860161500c565b915061506c6060860161500c565b905092959194509250565b60006020828403121561508957600080fd5b5035919050565b6001600160a01b03811681146131b757600080fd5b600080604083850312156150b857600080fd5b82356150c381615090565b946020939093013593505050565b80151581146131b757600080fd5b600080604083850312156150f257600080fd5b82356150fd81615090565b9150602083013561510d816150d1565b809150509250929050565b60008060006060848603121561512d57600080fd5b833561513881615090565b9250602084013561514881615090565b929592945050506040919091013590565b6000806040838503121561516c57600080fd5b50508035926020909101359150565b6000806000806080858703121561519157600080fd5b843561519c816150d1565b935060208501356151ac816150d1565b925060408501356151bc816150d1565b915060608501356151cc816150d1565b939692955090935050565b6000602082840312156151e957600080fd5b813561181481615090565b60008060006060848603121561520957600080fd5b833561521481615090565b9250602084013561522481615090565b9150604084013561523481615090565b809150509250925092565b60006020828403121561525157600080fd5b8135611814816150d1565b60008060008060008060c0878903121561527557600080fd5b61527e8761500c565b955061528c6020880161500c565b945061529a6040880161500c565b93506152a86060880161500c565b92506152b66080880161500c565b91506152c460a0880161500c565b90509295509295509295565b600080600080608085870312156152e657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561531557600080fd5b823561532081615090565b9150602083013561510d81615090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681851680830382111561537c5761537c615330565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156153f5576153f5615330565b500390565b600060001982141561540e5761540e615330565b5060010190565b600081600019048311821515161561542f5761542f615330565b500290565b60008261546a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561548257615482615330565b500190565b60006020828403121561549957600080fd5b5051919050565b600061ffff838116908316818110156154bb576154bb615330565b039392505050565b6000602082840312156154d557600080fd5b815161181481615090565b6000602082840312156154f257600080fd5b8151611814816150d1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561554d5784516001600160a01b031683529383019391830191600101615528565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561558357600080fd5b8351925060208401519150604084015190509250925092565b600061ffff808316818516818304811182151516156155bd576155bd615330565b0294935050505056fea26469706673582212205505bc8db0cc588da26e8feb8c24b704ff34b9a185260bf57f8e2bc269d22eab64736f6c634300080a0033

Deployed Bytecode Sourcemap

7804:30404:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11275:73;;;;;;;;;;;;11306:42;11275:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;11275:73:0;;;;;;;;16461:80;;;;;;;;;;-1:-1:-1;16533:5:0;;;;;;;;;;;;;;;;;16461:80;;;;;;;:::i;25210:310::-;;;;;;;;;;-1:-1:-1;25210:310:0;;;;;:::i;:::-;;:::i;:::-;;10762:35;;;;;;;;;;-1:-1:-1;10762:35:0;;;;-1:-1:-1;;;;;10762:35:0;;;22481:149;;;;;;;;;;-1:-1:-1;22481:149:0;;;;;:::i;:::-;;:::i;17155:161::-;;;;;;;;;;-1:-1:-1;17155:161:0;;;;;:::i;:::-;;:::i;:::-;;;2562:14:1;;2555:22;2537:41;;2525:2;2510:18;17155:161:0;2397:187:1;10834:28:0;;;;;;;;;;-1:-1:-1;10834:28:0;;;;-1:-1:-1;;;;;10834:28:0;;;20388:1139;;;;;;;;;;-1:-1:-1;20388:1139:0;;;;;:::i;:::-;;:::i;16196:83::-;;;;;;;;;;-1:-1:-1;16269:7:0;;16196:83;;;3245:25:1;;;3233:2;3218:18;16196:83:0;3099:177:1;10498:255:0;;;;;;;;;;-1:-1:-1;10498:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:6:1;3625:15;;;3607:34;;3677:15;;;3672:2;3657:18;;3650:43;3729:15;;;3709:18;;;3702:43;;;;3781:15;;;3776:2;3761:18;;3754:43;3834:15;;3828:3;3813:19;;3806:44;3887:15;;3881:3;3866:19;;3859:44;3940:15;;;3934:3;3919:19;;3912:44;3569:3;3554:19;10498:255:0;3281:681:1;11550:88:0;;;;;;;;;;-1:-1:-1;11550:88:0;;;;-1:-1:-1;;;;;11550:88:0;;;17822:306;;;;;;;;;;-1:-1:-1;17822:306:0;;;;;:::i;:::-;;:::i;26504:340::-;;;;;;;;;;-1:-1:-1;26504:340:0;;;;;:::i;:::-;;:::i;22278:195::-;;;;;;;;;;-1:-1:-1;22278:195:0;;;;;:::i;:::-;;:::i;19836:141::-;;;;;;;;;;;;;:::i;27903:250::-;;;;;;;;;;-1:-1:-1;27903:250:0;;;;;:::i;:::-;;:::i;12794:49::-;;;;;;;;;;;;;;;;16285:80;;;;;;;;;;-1:-1:-1;16353:9:0;;16285:80;;16353:9;;;;5722:36:1;;5710:2;5695:18;16285:80:0;5580:184:1;22162:108:0;;;;;;;;;;-1:-1:-1;22162:108:0;;;;;:::i;:::-;;:::i;19682:146::-;;;;;;;;;;-1:-1:-1;19682:146:0;;;;;:::i;:::-;;:::i;18136:215::-;;;;;;;;;;-1:-1:-1;18136:215:0;;;;;:::i;:::-;;:::i;10804:21::-;;;;;;;;;;-1:-1:-1;10804:21:0;;;;-1:-1:-1;;;;;10804:21:0;;;25661:152;;;;;;;;;;-1:-1:-1;25661:152:0;;;;;:::i;:::-;;:::i;12575:34::-;;;;;;;;;;-1:-1:-1;12575:34:0;;;;;;;;15050:590;;;;;;;;;;-1:-1:-1;15050:590:0;;;;;:::i;:::-;;:::i;19985:125::-;;;;;;;;;;-1:-1:-1;19985:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;20074:28:0;20050:4;20074:28;;;:19;:28;;;;;;;;;19985:125;12616:36;;;;;;;;;;-1:-1:-1;12616:36:0;;;;;;;;;;;22050:104;;;;;;;;;;;;;:::i;20118:134::-;;;;;;;;;;-1:-1:-1;20118:134:0;;;;;:::i;:::-;;:::i;21535:248::-;;;;;;;;;;-1:-1:-1;21535:248:0;;;;;:::i;:::-;;:::i;16774:198::-;;;;;;;;;;-1:-1:-1;16774:198:0;;;;;:::i;:::-;;:::i;15648:195::-;;;;;;;;;;;;;:::i;27149:242::-;;;;;;;;;;-1:-1:-1;27149:242:0;;;;;:::i;:::-;;:::i;12206:81::-;;;;;;;;;;;;;;;;12038:80;;;;;;;;;;;;;;;;9721:199;;;;;;;;;;-1:-1:-1;9721:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19174:500;;;;;;;;;;-1:-1:-1;19174:500:0;;;;;:::i;:::-;;:::i;25528:125::-;;;;;;;;;;-1:-1:-1;25528:125:0;;;;;:::i;:::-;;:::i;11455:88::-;;;;;;;;;;-1:-1:-1;11455:88:0;;;;-1:-1:-1;;;;;11455:88:0;;;20260:120;;;;;;;;;;-1:-1:-1;20260:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20352:20:0;20328:4;20352:20;;;:11;:20;;;;;;;;;20260:120;16547:80;;;;;;;;;;-1:-1:-1;16599:7:0;15028:6;-1:-1:-1;;;;;15028:6:0;16547:80;19836:141;17641:173;;;;;;;;;;;;;:::i;32613:528::-;;;;;;;;;;;;;:::i;23482:840::-;;;;;;;;;;-1:-1:-1;23482:840:0;;;;;:::i;:::-;;:::i;16371:84::-;;;;;;;;;;-1:-1:-1;16445:7:0;;;;;;;;;;;;;;;;;16371:84;;11355:93;;;;;;;;;;-1:-1:-1;11355:93:0;;;;-1:-1:-1;;;;;11355:93:0;;;18359:225;;;;;;;;;;-1:-1:-1;18359:225:0;;;;;:::i;:::-;;:::i;16980:167::-;;;;;;;;;;-1:-1:-1;16980:167:0;;;;;:::i;:::-;;:::i;25821:675::-;;;;;;;;;;-1:-1:-1;25821:675:0;;;;;:::i;:::-;;:::i;10138:198::-;;;;;;;;;;-1:-1:-1;10138:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30054:48;;;;;;;;;;-1:-1:-1;30054:48:0;;;;;;;;;;;;;;;;;;;;;;8026:25:1;;;8082:2;8067:18;;8060:34;;;;8110:18;;;8103:34;;;;8168:2;8153:18;;8146:34;8211:3;8196:19;;8189:35;8013:3;7998:19;30054:48:0;7767:463:1;9929:200:0;;;;;;;;;;-1:-1:-1;9929:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21791:118;;;;;;;;;;-1:-1:-1;21791:118:0;;;;;:::i;:::-;;:::i;27399:165::-;;;;;;;;;;-1:-1:-1;27399:165:0;;;;;:::i;:::-;;:::i;10345:144::-;;;;;;;;;;-1:-1:-1;10345:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8494:6:1;8527:15;;;8509:34;;8579:15;;;8574:2;8559:18;;8552:43;8631:15;;;8611:18;;;8604:43;;;;8683:15;;8678:2;8663:18;;8656:43;8736:15;;;8730:3;8715:19;;8708:44;8471:3;8456:19;10345:144:0;8235:523:1;12742:45:0;;;;;;;;;;-1:-1:-1;12742:45:0;;;;;;;;22642:832;;;;;;;;;;-1:-1:-1;22642:832:0;;;;;:::i;:::-;;:::i;16633:133::-;;;;;;;;;;-1:-1:-1;16633:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16735:19:0;;;16717:7;16735:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16633:133;18592:574;;;;;;;;;;-1:-1:-1;18592:574:0;;;;;:::i;:::-;;:::i;33149:183::-;;;;;;;;;;;;;:::i;24330:872::-;;;;;;;;;;-1:-1:-1;24330:872:0;;;;;:::i;:::-;;:::i;12371:77::-;;;;;;;;;;;;;;;;26852:289;;;;;;;;;;-1:-1:-1;26852:289:0;;;;;:::i;:::-;;:::i;11669:39::-;;;;;;;;;;-1:-1:-1;11669:39:0;;;;;;;;;;;21917:125;;;;;;;;;;-1:-1:-1;21917:125:0;;;;;:::i;:::-;;:::i;25210:310::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;;;;;;;;;25321:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;25361:29:0;;;;;;;;;;::::1;;;25431:19:::0;;25401;;;::::1;;25431::::0;;;;;;::::1;::::0;;;::::1;;::::0;;;25401;25477:21:::1;25361:29:::0;25321;25477:21:::1;:::i;:::-;:28;;;;:::i;:::-;:35;;;;:::i;:::-;25461:7;:51:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;25210:310:0:o;22481:149::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;22565:2:::1;22558:3;:9;;22550:30;;;::::0;-1:-1:-1;;;22550:30:0;;10122:2:1;22550:30:0::1;::::0;::::1;10104:21:1::0;10161:1;10141:18;;;10134:29;10199:10;10179:18;;;10172:38;10227:18;;22550:30:0::1;9920:331:1::0;22550:30:0::1;22591:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;3245:25:1::0;;;22591:9:0;;;::::1;-1:-1:-1::0;;;;;22591:9:0::1;::::0;:26:::1;::::0;3218:18:1;;22591:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22481:149:::0;:::o;17155:161::-;17230:4;17247:39;189:10;17270:7;17279:6;17247:8;:39::i;:::-;-1:-1:-1;17304:4:0;17155:161;;;;:::o;20388:1139::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;20493:4:::1;20482:15:::0;::::1;;;20478:1042;;;-1:-1:-1::0;;;;;20523:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20522:21;20514:62;;;::::0;-1:-1:-1;;;20514:62:0;;10458:2:1;20514:62:0::1;::::0;::::1;10440:21:1::0;10497:2;10477:18;;;10470:30;10536;10516:18;;;10509:58;10584:18;;20514:62:0::1;10256:352:1::0;20514:62:0::1;-1:-1:-1::0;;;;;20594:16:0;::::1;20613:1;20594:16:::0;;;:7:::1;:16;::::0;;;;;:20;20591:116:::1;;-1:-1:-1::0;;;;;20674:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20654:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20635:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20591:116:::1;-1:-1:-1::0;;;;;;20721:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20721:27:0::1;20744:4;20721:27:::0;;::::1;::::0;;;20763:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;20763:23:0::1;::::0;;::::1;::::0;;20388:1139::o;20478:1042::-:1;20808:16:::0;20804:716:::1;;-1:-1:-1::0;;;;;20849:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20841:61;;;::::0;-1:-1:-1;;;20841:61:0;;10815:2:1;20841:61:0::1;::::0;::::1;10797:21:1::0;10854:2;10834:18;;;10827:30;10893;10873:18;;;10866:58;10941:18;;20841:61:0::1;10613:352:1::0;20841:61:0::1;20920:9;:16:::0;20940:1:::1;20920:21;20917:592;;;-1:-1:-1::0;;;;;20961:16:0;::::1;20980:1;20961:16:::0;;;:7:::1;:16;::::0;;;;;;;:20;;;21000:11:::1;:20:::0;;;;;:28;;-1:-1:-1;;21000:28:0::1;::::0;;21047:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;21047:15:0;;;;;-1:-1:-1;;21047:15:0::1;::::0;;;;;20388:1139;;:::o;20917:592::-:1;21108:9;21103:391;21127:9;:16:::0;21123:20;::::1;21103:391;;;21193:7;-1:-1:-1::0;;;;;21177:23:0::1;:9;21187:1;21177:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;21177:12:0::1;:23;21173:302;;;21244:9;21254:16:::0;;:20:::1;::::0;21273:1:::1;::::0;21254:20:::1;:::i;:::-;21244:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;21229:9:::1;:12:::0;;-1:-1:-1;;;;;21244:31:0;;::::1;::::0;21239:1;;21229:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;21229:46:0::1;-1:-1:-1::0;;;;;21229:46:0;;::::1;;::::0;;21302:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;21349:11:::1;:20:::0;;;;:28;;-1:-1:-1;;21349:28:0::1;::::0;;21404:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;21404:15:0;;;;;-1:-1:-1;;21404:15:0::1;::::0;;;;;21446:5:::1;;21173:302;21145:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21103:391;;;;20917:592;20388:1139:::0;;:::o;17822:306::-;-1:-1:-1;;;;;17943:19:0;;17922:4;17943:19;;;:11;:19;;;;;;;;17963:10;17943:31;;;;;;;;-1:-1:-1;;17943:52:0;17939:126;;-1:-1:-1;;;;;18012:19:0;;;;;;:11;:19;;;;;;;;18032:10;18012:31;;;;;;;:41;;18047:6;;18012:19;:41;;18047:6;;18012:41;:::i;:::-;;;;-1:-1:-1;;17939:126:0;18084:36;18094:6;18102:9;18113:6;18084:9;:36::i;:::-;18077:43;17822:306;-1:-1:-1;;;;17822:306:0:o;26504:340::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;26594:13:::1;26632:7;26621;26611;;:17;;;;:::i;:::-;26610:29;;;;:::i;:::-;26594:45;;26678:4;26668:7;;:14;;;;:::i;:::-;26658:5;:25;;26650:88;;;::::0;-1:-1:-1;;;26650:88:0;;12392:2:1;26650:88:0::1;::::0;::::1;12374:21:1::0;12431:2;12411:18;;;12404:30;12470:34;12450:18;;;12443:62;12541:20;12521:18;;;12514:48;12579:19;;26650:88:0::1;12190:414:1::0;26650:88:0::1;26749:14;:22:::0;;;26801:14:::1;::::0;26829:7;;26801:24:::1;::::0;26818:7;;26801:24:::1;:::i;:::-;26800:36;;;;:::i;:::-;26782:15;:54:::0;-1:-1:-1;;;26504:340:0:o;22278:195::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;22400:9:::1;::::0;:65:::1;::::0;;;;12841:14:1;;12834:22;22400:65:0::1;::::0;::::1;12816:41:1::0;12900:14;;12893:22;12873:18;;;12866:50;12959:14;;12952:22;12932:18;;;12925:50;13018:14;;13011:22;12991:18;;;12984:50;22400:9:0;;;::::1;-1:-1:-1::0;;;;;22400:9:0::1;::::0;:24:::1;::::0;12788:19:1;;22400:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22278:195:::0;;;;:::o;19836:141::-;19889:7;19946:21;19964:1;19946:9;:21::i;:::-;19928:15;11306:42;19928:9;:15::i;:::-;:39;;;;:::i;:::-;19917:7;;:51;;;;:::i;:::-;19909:60;;19836:141;:::o;27903:250::-;27969:7;28008;;27997;:18;;27989:73;;;;-1:-1:-1;;;27989:73:0;;13380:2:1;27989:73:0;;;13362:21:1;13419:2;13399:18;;;13392:30;13458:34;13438:18;;;13431:62;13529:12;13509:18;;;13502:40;13559:19;;27989:73:0;13178:406:1;27989:73:0;28073:19;28096:10;:8;:10::i;:::-;28073:33;-1:-1:-1;28124:21:0;28073:33;28124:7;:21;:::i;:::-;28117:28;27903:250;-1:-1:-1;;;27903:250:0:o;22162:108::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;22231:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;22231:31:0::1;::::0;::::1;160:74:1::0;22231:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;22231:31:0::1;14:226:1::0;19682:146:0;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;19770:16:::1;::::0;::::1;::::0;::::1;;;19769:17;19761:26;;;::::0;::::1;;19798:13;:22:::0;;-1:-1:-1;;19798:22:0::1;-1:-1:-1::0;;;;;19798:22:0;;;::::1;::::0;;;::::1;::::0;;19682:146::o;18136:215::-;189:10;18224:4;18273:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18273:34:0;;;;;;;;;;18224:4;;18241:80;;18264:7;;18273:47;;18310:10;;18273:47;:::i;:::-;18241:8;:80::i;25661:152::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;25755:8:::1;25747:4;:16;;25739:25;;;::::0;::::1;;25775:23;:30:::0;25661:152::o;15050:590::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;-1:-1:-1;;;;;15131:22:0;::::1;15123:96;;;::::0;-1:-1:-1;;;15123:96:0;;13791:2:1;15123:96:0::1;::::0;::::1;13773:21:1::0;13830:2;13810:18;;;13803:30;13869:34;13849:18;;;13842:62;13940:31;13920:18;;;13913:59;13989:19;;15123:96:0::1;13589:425:1::0;15123:96:0::1;-1:-1:-1::0;;;;;15238:16:0;::::1;11306:42;15238:16;;15230:90;;;::::0;-1:-1:-1;;;15230:90:0;;13791:2:1;15230:90:0::1;::::0;::::1;13773:21:1::0;13830:2;13810:18;;;13803:30;13869:34;13849:18;;;13842:62;13940:31;13920:18;;;13913:59;13989:19;;15230:90:0::1;13589:425:1::0;15230:90:0::1;15351:6;::::0;;15331:34:::1;::::0;-1:-1:-1;;;;;15351:6:0;;::::1;::::0;15331:19:::1;:34::i;:::-;15376:35;15396:8;15406:4;15376:19;:35::i;:::-;15455:1;15445:6:::0;;15435:17:::1;::::0;-1:-1:-1;;;;;15445:6:0::1;15435:9;:17::i;:::-;:21;15432:99;;;15483:6;::::0;15473:46:::1;::::0;-1:-1:-1;;;;;15483:6:0::1;15491:8:::0;15501:17:::1;15483:6:::0;15501:9:::1;:17::i;:::-;15473:9;:46::i;:::-;;15432:99;15551:6;:17:::0;;-1:-1:-1;;15551:17:0::1;-1:-1:-1::0;;;;;15551:17:0;::::1;::::0;;::::1;::::0;;15584:38:::1;::::0;15551:17;;;;15584:38:::1;::::0;15551:6;15584:38:::1;15050:590:::0;:::o;22050:104::-;22095:7;22122:9;;;;;;;;;-1:-1:-1;;;;;22122:9:0;-1:-1:-1;;;;;22122:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20118:134::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;-1:-1:-1;;;;;20206:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;20206:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20118:134::o;21535:248::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;21619:16:::1;::::0;::::1;::::0;::::1;;;21618:17;21610:54;;;::::0;-1:-1:-1;;;21610:54:0;;14410:2:1;21610:54:0::1;::::0;::::1;14392:21:1::0;14449:2;14429:18;;;14422:30;14488:26;14468:18;;;14461:54;14532:18;;21610:54:0::1;14208:348:1::0;21610:54:0::1;-1:-1:-1::0;;;;;21683:28:0;::::1;21706:4;21683:28;;21675:55;;;::::0;-1:-1:-1;;;21675:55:0;;14763:2:1;21675:55:0::1;::::0;::::1;14745:21:1::0;14802:2;14782:18;;;14775:30;14841:16;14821:18;;;14814:44;14875:18;;21675:55:0::1;14561:338:1::0;21675:55:0::1;21741:9;:34:::0;;-1:-1:-1;;;;;21741:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;21535:248::o;16774:198::-;-1:-1:-1;;;;;16864:20:0;;16840:7;16864:20;;;:11;:20;;;;;;;;16860:49;;;-1:-1:-1;;;;;;16893:16:0;;;;;:7;:16;;;;;;;16774:198::o;16860:49::-;-1:-1:-1;;;;;16947:16:0;;;;;;:7;:16;;;;;;16927:37;;:19;:37::i;:::-;16920:44;16774:198;-1:-1:-1;;16774:198:0:o;15648:195::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;15735:6:::1;::::0;;15715:34:::1;::::0;-1:-1:-1;;;;;15735:6:0;;::::1;::::0;15715:19:::1;:34::i;:::-;15777:1;15760:19:::0;;-1:-1:-1;;15760:19:0::1;::::0;;15795:40:::1;::::0;15777:1;;15795:40:::1;::::0;15777:1;;15795:40:::1;15648:195::o:0;27149:242::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;27270:16:::1;:37:::0;;-1:-1:-1;;;;;27270:37:0;;::::1;-1:-1:-1::0;;27270:37:0;;::::1;;::::0;;;27318:11:::1;:27:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;27356:11:::1;:27:::0;;;;;::::1;::::0;::::1;;::::0;;27149:242::o;19174:500::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;19255:16;19251:416:::1;;-1:-1:-1::0;;;;;19288:13:0;;::::1;19304:5;19288:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;19288:21:0::1;::::0;;19324:9:::1;::::0;:32;;;;;::::1;::::0;::::1;15072:74:1::0;;;;15162:18;;;15155:50;;;;19324:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;15045:18:1;;19324:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20388:1139:::0;;:::o;19251:416::-:1;19393:17;::::0;:22;19389:136:::1;;19482:6;19462:17;;19444:15;:35;;;;:::i;:::-;:44;19436:73;;;::::0;-1:-1:-1;;;19436:73:0;;15418:2:1;19436:73:0::1;::::0;::::1;15400:21:1::0;15457:2;15437:18;;;15430:30;15496:18;15476;;;15469:46;15532:18;;19436:73:0::1;15216:340:1::0;19436:73:0::1;-1:-1:-1::0;;;;;19539:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;19539:20:0::1;19555:4;19539:20:::0;;::::1;::::0;;;19594:15:::1;19574:17;:35:::0;;;19624:9:::1;::::0;:31;;;;;;;::::1;15072:74:1::0;;;;15162:18;;;15155:50;19624:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;15045:18:1;;19624:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;25528:125:::0;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;25609:26:::1;:36:::0;;-1:-1:-1;;25609:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25528:125::o;17641:173::-;17705:4;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;17754:9:::1;::::0;17722:62:::1;::::0;17739:4:::1;::::0;-1:-1:-1;;;;;17754:9:0::1;-1:-1:-1::0;;17722:8:0::1;:62::i;:::-;-1:-1:-1::0;17802:4:0::1;17641:173:::0;:::o;32613:528::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;32675:14:::1;::::0;::::1;;32674:15;32666:52;;;::::0;-1:-1:-1;;;32666:52:0;;15763:2:1;32666:52:0::1;::::0;::::1;15745:21:1::0;15802:2;15782:18;;;15775:30;15841:26;15821:18;;;15814:54;15885:18;;32666:52:0::1;15561:348:1::0;32666:52:0::1;32737:16;::::0;::::1;::::0;::::1;;;32729:53;;;::::0;-1:-1:-1;;;32729:53:0;;16116:2:1;32729:53:0::1;::::0;::::1;16098:21:1::0;16155:2;16135:18;;;16128:30;16194:26;16174:18;;;16167:54;16238:18;;32729:53:0::1;15914:348:1::0;32729:53:0::1;32793:42;32823:4;32830;32793:21;:42::i;:::-;32868:6;::::0;32846:35:::1;::::0;-1:-1:-1;;;;;32868:6:0::1;::::0;32846:21:::1;:35::i;:::-;32903:9;::::0;;;::::1;-1:-1:-1::0;;;;;32903:9:0::1;32892:99;;32943:9;:36:::0;;;::::1;32973:4;32943:36:::0;::::1;;::::0;;32892:99:::1;33005:9;::::0;33025:6:::1;::::0;33080:9:::1;::::0;33005:85:::1;::::0;;;;-1:-1:-1;;;;;33025:6:0;;::::1;33005:85;::::0;::::1;16490:74:1::0;16612:10;33040:12:0::1;16600:23:1::0;16580:18;;;16573:51;16672:18;33062:15:0::1;16660:31:1::0;16640:18;;;16633:59;33080:9:0::1;::::0;;::::1;16708:18:1::0;;;16701:45;33005:9:0;;;::::1;;::::0;:19:::1;::::0;16462::1;;33005:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;33001:101:::0;33112:14:::1;:21:::0;;-1:-1:-1;;33112:21:0::1;33129:4;33112:21;::::0;;32613:528::o;23482:840::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;23625:12:::1;23688:4:::0;23681;23674;23662:9;23640:19:::1;23650:9:::0;23640:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:38;;;;:::i;:::-;:45;;;;:::i;:::-;:52;;;;:::i;:::-;23722:10;:21:::0;23625:67;;-1:-1:-1;23722:21:0::1;::::0;;::::1;23711:32:::0;;::::1;;::::0;::::1;::::0;:89:::1;;-1:-1:-1::0;23777:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;23764:36:::0;;::::1;;;23711:89;:146;;;;-1:-1:-1::0;23834:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;23821:36:::0;;::::1;;;23711:146;:193;;;;-1:-1:-1::0;23886:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23878:26:::0;;::::1;;;23711:193;:240;;;;-1:-1:-1::0;23933:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23925:26:::0;;::::1;;;23711:240;:287;;;;-1:-1:-1::0;23980:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23972:26:::0;;::::1;;;23711:287;23703:296;;;::::0;::::1;;24027:4;24018:5;:13;;;;24010:22;;;::::0;::::1;;24066:9;24043:10;:20;;;:32;;;;;;;;;;;;;;;;;;24107:7;24086:10;:18;;;:28;;;;;;;;;;;;;;;;;;24148:9;24125:10;:20;;;:32;;;;;;;;;;;;;;;;;;24186:4;24168:10;:15;;;:22;;;;;;;;;;;;;;;;;;24219:4;24201:10;:15;;;:22;;;;;;;;;;;;;;;;;;24252:4;24234:10;:15;;;:22;;;;;;;;;;;;;;;;;;24309:4;24299:7;:14;;;;:::i;:::-;24290:24;::::0;:5;:24:::1;:::i;:::-;24267:10;:47:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;;23482:840:0:o;18359:225::-;189:10;18452:4;18501:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18501:34:0;;;;;;;;;;18452:4;;18469:85;;18492:7;;18501:52;;18538:15;;18501:52;:::i;16980:167::-;17058:4;17075:42;189:10;17099:9;17110:6;17075:9;:42::i;:::-;-1:-1:-1;17135:4:0;;16980:167;-1:-1:-1;;;16980:167:0:o;25821:675::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;25957:13:::1;25998:10;25984;25974:7;;:20;;;;:::i;:::-;25973:35;;;;:::i;:::-;25957:51;;26047:4;26037:7;;:14;;;;:::i;:::-;26027:5;:25;;26019:93;;;::::0;-1:-1:-1;;;26019:93:0;;17181:2:1;26019:93:0::1;::::0;::::1;17163:21:1::0;17220:2;17200:18;;;17193:30;17259:34;17239:18;;;17232:62;17330:25;17310:18;;;17303:53;17373:19;;26019:93:0::1;16979:419:1::0;26019:93:0::1;26123:15;:23:::0;;;26177:14:::1;::::0;26208:10;;26177:27:::1;::::0;26194:10;;26177:27:::1;:::i;:::-;26176:42;;;;:::i;:::-;26157:16;:61:::0;26238:7:::1;::::0;26263:11;;26238:21:::1;::::0;26248:11;;26238:21:::1;:::i;:::-;26237:37;;;;:::i;:::-;26229:45;;26313:4;26303:7;;:14;;;;:::i;:::-;26293:5;:25;;26285:93;;;::::0;-1:-1:-1;;;26285:93:0;;17181:2:1;26285:93:0::1;::::0;::::1;17163:21:1::0;17220:2;17200:18;;;17193:30;17259:34;17239:18;;;17232:62;17330:25;17310:18;;;17303:53;17373:19;;26285:93:0::1;16979:419:1::0;26285:93:0::1;26389:16;:24:::0;;;26445:14:::1;::::0;26477:11;;26445:28:::1;::::0;26462:11;;26445:28:::1;:::i;:::-;26444:44;;;;:::i;:::-;26424:17;:64:::0;-1:-1:-1;;;;;25821:675:0:o;21791:118::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;21865:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;21865:36:0::1;::::0;::::1;160:74:1::0;21865:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;21865:36:0::1;14:226:1::0;27399:165:0;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;27474:19:::1;:30:::0;;;::::1;;::::0;::::1;::::0;;;::::1;;::::0;;27520:36:::1;::::0;::::1;::::0;::::1;::::0;27496:8;2562:14:1;2555:22;2537:41;;2525:2;2510:18;;2397:187;27520:36:0::1;;;;;;;;27399:165:::0;:::o;22642:832::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;22784:12:::1;22847:4:::0;22840;22833;22821:9;22799:19:::1;22809:9:::0;22799:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:38;;;;:::i;:::-;:45;;;;:::i;:::-;:52;;;;:::i;:::-;22881:10;:21:::0;22784:67;;-1:-1:-1;22881:21:0::1;::::0;;::::1;22870:32:::0;;::::1;;::::0;::::1;::::0;:89:::1;;-1:-1:-1::0;22936:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;22923:36:::0;;::::1;;;22870:89;:146;;;;-1:-1:-1::0;22993:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;22980:36:::0;;::::1;;;22870:146;:193;;;;-1:-1:-1::0;23045:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23037:26:::0;;::::1;;;22870:193;:240;;;;-1:-1:-1::0;23092:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23084:26:::0;;::::1;;;22870:240;:287;;;;-1:-1:-1::0;23139:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;23131:26:::0;;::::1;;;22870:287;22862:296;;;::::0;::::1;;23186:4;23177:5;:13;;;;23169:22;;;::::0;::::1;;23224:9;23202;:19;;;:31;;;;;;;;;;;;;;;;;;23264:7;23244:9;:17;;;:27;;;;;;;;;;;;;;;;;;23304:9;23282;:19;;;:31;;;;;;;;;;;;;;;;;;23341:4;23324:9;:14;;;:21;;;;;;;;;;;;;;;;;;23373:4;23356:9;:14;;;:21;;;;;;;;;;;;;;;;;;23405:4;23388:9;:14;;;:21;;;;;;;;;;;;;;;;;;23461:4;23451:7;:14;;;;:::i;:::-;23442:24;::::0;:5;:24:::1;:::i;:::-;23420:9;:46:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;;22642:832:0:o;18592:574::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;18663:29:::1;18714:9;18663:61;;18735:16;18772:10;-1:-1:-1::0;;;;;18772:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18754:47:0::1;;18810:4;18817:10;-1:-1:-1::0;;;;;18817:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18754:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;17912:15:1;;;18754:81:0::1;::::0;::::1;17894:34:1::0;17964:15;;17944:18;;;17937:43;17806:18;;18754:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18735:100:::0;-1:-1:-1;;;;;;18850:22:0;::::1;18846:207;;18916:10;-1:-1:-1::0;;;;;18916:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18898:50:0::1;;18957:4;18964:10;-1:-1:-1::0;;;;;18964:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18898:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;17912:15:1;;;18898:84:0::1;::::0;::::1;17894:34:1::0;17964:15;;17944:18;;;17937:43;17806:18;;18898:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18889:6;:93:::0;;-1:-1:-1;;18889:93:0::1;-1:-1:-1::0;;;;;18889:93:0;;;::::1;::::0;;;::::1;::::0;;18846:207:::1;;;19024:6;:17:::0;;-1:-1:-1;;19024:17:0::1;-1:-1:-1::0;;;;;19024:17:0;::::1;;::::0;;18846:207:::1;19063:9;:22:::0;;-1:-1:-1;;19063:22:0::1;-1:-1:-1::0;;;;;19063:22:0;::::1;::::0;;::::1;::::0;;;19096:62:::1;::::0;19113:4:::1;::::0;-1:-1:-1;;19096:8:0::1;:62::i;33149:183::-:0;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;33216:16:::1;::::0;::::1;::::0;::::1;;;33215:17;33207:58;;;::::0;-1:-1:-1;;;33207:58:0;;18193:2:1;33207:58:0::1;::::0;::::1;18175:21:1::0;18232:2;18212:18;;;18205:30;18271;18251:18;;;18244:58;18319:18;;33207:58:0::1;17991:352:1::0;33207:58:0::1;15001:7:::0;15028:6;;33276:48:::1;::::0;-1:-1:-1;;;;;15028:6:0;;;;33302:21:::1;33276:48:::0;::::1;;;::::0;33302:21;;33276:48;15001:7;33276:48;33302:21;15028:6;33276:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;33149:183::o:0;24330:872::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;24477:12:::1;24540:4:::0;24533;24526;24514:9;24492:19:::1;24502:9:::0;24492:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:38;;;;:::i;:::-;:45;;;;:::i;:::-;:52;;;;:::i;:::-;24574:10;:21:::0;24477:67;;-1:-1:-1;24574:21:0::1;::::0;;::::1;24563:32:::0;;::::1;;::::0;::::1;::::0;:89:::1;;-1:-1:-1::0;24629:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;24616:36:::0;;::::1;;;24563:89;:146;;;;-1:-1:-1::0;24686:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;24673:36:::0;;::::1;;;24563:146;:193;;;;-1:-1:-1::0;24738:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;24730:26:::0;;::::1;;;24563:193;:240;;;;-1:-1:-1::0;24785:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;24777:26:::0;;::::1;;;24563:240;:287;;;;-1:-1:-1::0;24832:10:0::1;:18:::0;::::1;::::0;;;::::1;::::0;::::1;24824:26:::0;;::::1;;;24563:287;24555:296;;;::::0;::::1;;24879:4;24870:5;:13;;;;24862:22;;;::::0;::::1;;24922:9;24895:14;:24;;;:36;;;;;;;;;;;;;;;;;;24967:7;24942:14;:22;;;:32;;;;;;;;;;;;;;;;;;25012:9;24985:14;:24;;;:36;;;;;;;;;;;;;;;;;;25054:4;25032:14;:19;;;:26;;;;;;;;;;;;;;;;;;25091:4;25069:14;:19;;;:26;;;;;;;;;;;;;;;;;;25128:4;25106:14;:19;;;:26;;;;;;;;;;;;;;;;;;25189:4;25179:7;:14;;;;:::i;:::-;25170:24;::::0;:5;:24:::1;:::i;:::-;25143:14;:51:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;;24330:872:0:o;26852:289::-;13388:6;;-1:-1:-1;;;;;13388:6:0;189:10;13388:22;13380:52;;;;-1:-1:-1;;;13380:52:0;;9358:2:1;13380:52:0;;;9340:21:1;9397:2;9377:18;;;9370:30;-1:-1:-1;;;9416:18:1;;;9409:47;9473:18;;13380:52:0;9156:341:1;13380:52:0;27052:16:::1;27032;27022:7;;:26;;;;:::i;:::-;27021:47;;;;:::i;:::-;27005:13;:63:::0;27093:7:::1;::::0;27120:13;;27093:23:::1;::::0;27103:13;;27093:23:::1;:::i;:::-;27092:41;;;;:::i;:::-;27079:10;:54:::0;-1:-1:-1;;;;26852:289:0:o;21917:125::-;22002:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;22002:32:0;;;160:74:1;21978:4:0;;22002:9;;;;;:23;;133:18:1;;22002:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17324:309::-;-1:-1:-1;;;;;17418:20:0;;17410:52;;;;-1:-1:-1;;;17410:52:0;;18800:2:1;17410:52:0;;;18782:21:1;18839:2;18819:18;;;18812:30;18878:21;18858:18;;;18851:49;18917:18;;17410:52:0;18598:343:1;17410:52:0;-1:-1:-1;;;;;17481:21:0;;17473:53;;;;-1:-1:-1;;;17473:53:0;;18800:2:1;17473:53:0;;;18782:21:1;18839:2;18819:18;;;18812:30;18878:21;18858:18;;;18851:49;18917:18;;17473:53:0;18598:343:1;17473:53:0;-1:-1:-1;;;;;17539:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;17592:33;;3245:25:1;;;17592:33:0;;3218:18:1;17592:33:0;;;;;;;17324:309;;;:::o;28161:1727::-;28240:4;-1:-1:-1;;;;;28265:18:0;;28257:68;;;;-1:-1:-1;;;28257:68:0;;19148:2:1;28257:68:0;;;19130:21:1;19187:2;19167:18;;;19160:30;19226:34;19206:18;;;19199:62;19297:7;19277:18;;;19270:35;19322:19;;28257:68:0;18946:401:1;28257:68:0;-1:-1:-1;;;;;28344:16:0;;28336:64;;;;-1:-1:-1;;;28336:64:0;;19554:2:1;28336:64:0;;;19536:21:1;19593:2;19573:18;;;19566:30;19632:34;19612:18;;;19605:62;19703:5;19683:18;;;19676:33;19726:19;;28336:64:0;19352:399:1;28336:64:0;28428:1;28419:6;:10;28411:64;;;;-1:-1:-1;;;28411:64:0;;19958:2:1;28411:64:0;;;19940:21:1;19997:2;19977:18;;;19970:30;20036:34;20016:18;;;20009:62;20107:11;20087:18;;;20080:39;20136:19;;28411:64:0;19756:405:1;28411:64:0;28512:16;;;28526:1;28512:16;;;;;;;;28488:21;;28512:16;;;;;;;;;;-1:-1:-1;28512:16:0;28488:40;;28557:4;28539;28544:1;28539:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28539:23:0;;;:7;;;;;;;;;;:23;;;;28583:9;;:16;;;;;;;;:9;;;;;:14;;:16;;;;;28539:7;;28583:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28573:4;28578:1;28573:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;28573:26:0;;;-1:-1:-1;;;;;28573:26:0;;;;;28615:20;28626:4;28632:2;28615:10;:20::i;:::-;28612:605;;;28656:14;;;;28652:89;;28691:34;;-1:-1:-1;;;28691:34:0;;20557:2:1;28691:34:0;;;20539:21:1;20596:2;20576:18;;;20569:30;20635:26;20615:18;;;20608:54;20679:18;;28691:34:0;20355:348:1;28652:89:0;-1:-1:-1;;;;;28758:13:0;;;;;;:7;:13;;;;;;;;28755:267;;;28809:15;;28799:6;:25;;28791:78;;;;-1:-1:-1;;;28791:78:0;;20910:2:1;28791:78:0;;;20892:21:1;20949:2;20929:18;;;20922:30;20988:34;20968:18;;;20961:62;21059:10;21039:18;;;21032:38;21087:19;;28791:78:0;20708:404:1;28791:78:0;28755:267;;;-1:-1:-1;;;;;28895:11:0;;;;;;:7;:11;;;;;;;;28891:131;;;28945:16;;28935:6;:26;;28927:79;;;;-1:-1:-1;;;28927:79:0;;20910:2:1;28927:79:0;;;20892:21:1;20949:2;20929:18;;;20922:30;20988:34;20968:18;;;20961:62;21059:10;21039:18;;;21032:38;21087:19;;28927:79:0;20708:404:1;28927:79:0;29045:13;;-1:-1:-1;;;;;29039:19:0;;;29045:13;;29039:19;;;;:35;;-1:-1:-1;;;;;;29063:11:0;;;;;;:7;:11;;;;;;;;29062:12;29039:35;29036:170;;;29129:14;;29119:6;29103:13;29113:2;29103:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;29095:95;;;;-1:-1:-1;;;29095:95:0;;21319:2:1;29095:95:0;;;21301:21:1;21358:2;21338:18;;;21331:30;21397:34;21377:18;;;21370:62;21468:12;21448:18;;;21441:40;21498:19;;29095:95:0;21117:406:1;29095:95:0;-1:-1:-1;;;;;29262:25:0;;29229:12;29262:25;;;:19;:25;;;;;;29244:4;;29262:25;;;:52;;-1:-1:-1;;;;;;29291:23:0;;;;;;:19;:23;;;;;;;;29262:52;29259:98;;;-1:-1:-1;29340:5:0;29259:98;-1:-1:-1;;;;;29373:11:0;;;;;;:7;:11;;;;;;;;29369:449;;;29406:6;;;;;;;29405:7;:47;;;;-1:-1:-1;29433:19:0;;;;;;;29405:47;29401:400;;;29487:28;29518:24;29536:4;29518:9;:24::i;:::-;29487:55;;29589:13;;29565:20;:37;29561:225;;29654:10;;29630:20;:34;29627:77;;-1:-1:-1;29691:10:0;;29627:77;29726:40;29739:20;29761:4;29726:12;:40::i;:::-;29468:333;29401:400;29836:44;29854:4;29860:2;29864:6;29872:7;29836:17;:44::i;:::-;29829:51;28161:1727;-1:-1:-1;;;;;;28161:1727:0:o;37679:526::-;37759:7;;37795;;37721;;37759;37721;37813:282;37837:9;:16;37833:20;;37813:282;;;37903:7;37879;:21;37887:9;37897:1;37887:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37887:12:0;37879:21;;;;;;;;;;;;;:31;;:66;;;37938:7;37914;:21;37922:9;37932:1;37922:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37922:12:0;37914:21;;;;;;;;;;;;;:31;37879:66;37875:96;;;37964:7;;37954;;:17;;;;:::i;:::-;37947:24;;;;;37679:526;:::o;37875:96::-;38006:7;:21;38014:9;38024:1;38014:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38014:12:0;38006:21;;;;;;;;;;;;;37996:31;;:7;:31;:::i;:::-;37986:41;;38062:7;:21;38070:9;38080:1;38070:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38070:12:0;38062:21;;;;;;;;;;;;;38052:31;;:7;:31;:::i;:::-;38042:41;-1:-1:-1;37855:3:0;;;;:::i;:::-;;;;37813:282;;;;38129:7;;38119;;:17;;;;:::i;:::-;38109:7;:27;38105:57;;;38155:7;;38145;;:17;;;;:::i;:::-;38138:24;;;;37679:526;:::o;38105:57::-;38180:17;38190:7;38180;:17;:::i;27572:323::-;27640:4;15028:6;;-1:-1:-1;;;;;27664:15:0;;;15028:6;;27664:15;;;;:45;;-1:-1:-1;15001:7:0;15028:6;-1:-1:-1;;;;;27696:13:0;;;15028:6;;27696:13;;27664:45;:84;;;;-1:-1:-1;;;;;;27727:21:0;;;;;;:17;:21;;;;;;;;27726:22;27664:84;:125;;;;-1:-1:-1;;;;;;27766:23:0;;;;;;:17;:23;;;;;;;;27765:24;27664:125;:152;;;;-1:-1:-1;;;;;;27806:10:0;;11306:42;27806:10;;27664:152;:185;;;;-1:-1:-1;;;;;;27833:16:0;;;;27664:185;:223;;;;-1:-1:-1;;;;;;27866:21:0;;27882:4;27866:21;;27657:230;27572:323;-1:-1:-1;;;27572:323:0:o;30111:1978::-;13282:6;:13;;;;;;;;:6;30221:13;::::1;::::0;;;::::1;;30217:44;;30254:7;;30217:44;30296:4;30276:26;::::0;;;:11:::1;:26;::::0;;;;;;;30311:9:::1;::::0;-1:-1:-1;;;;;30311:9:0::1;30276:46:::0;;;;;;;;-1:-1:-1;;30276:67:0::1;30273:165;;30380:4;30360:26;::::0;;;:11:::1;:26;::::0;;;;;;;30395:9:::1;::::0;-1:-1:-1;;;;;30395:9:0::1;30360:46:::0;;;;;;;-1:-1:-1;;30360:66:0;;30273:165:::1;30516:7;:13:::0;30450:17:::1;::::0;30533:1:::1;::::0;30516:13:::1;::::0;;::::1;::::0;::::1;::::0;30472:40:::1;::::0;30495:17:::1;30472:20:::0;:40:::1;:::i;:::-;30471:58;;;;:::i;:::-;30470:64;;;;:::i;:::-;30450:84:::0;-1:-1:-1;30547:20:0::1;30570:32;30450:84:::0;30570:20;:32:::1;:::i;:::-;30615:9;::::0;:219:::1;::::0;;;;30547:55;;-1:-1:-1;;;;;;30615:9:0::1;::::0;:60:::1;::::0;:219:::1;::::0;30547:55;;30615:9:::1;::::0;30761:4;;30788::::1;::::0;30808:15:::1;::::0;30615:219:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30866:21:0::1;30847:10;:40:::0;-1:-1:-1;;30974:7:0::1;:13:::0;30847:16:::1;::::0;30991:1:::1;::::0;30974:13:::1;::::0;;::::1;::::0;::::1;::::0;30929:41:::1;::::0;30953:17:::1;30929:21;:41;:::i;:::-;30928:59;;;;:::i;:::-;30927:65;;;;:::i;:::-;31003:20:::0;:39;;;30900:92;-1:-1:-1;31059:13:0;;31055:396:::1;;31089:9;::::0;:276:::1;::::0;;;;31166:4:::1;31089:276;::::0;::::1;22923:34:1::0;22973:18;;;22966:34;;;31089:9:0::1;23016:18:1::0;;;23009:34;;;23059:18;;;23052:34;11306:42:0::1;23102:19:1::0;;;23095:44;31335:15:0::1;23155:19:1::0;;;23148:35;-1:-1:-1;;;;;31089:9:0;;::::1;::::0;:25:::1;::::0;31122:16;;22834:19:1;;31089:276:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;31385:54:0::1;::::0;;23707:25:1;;;23763:2;23748:18;;23741:34;;;23791:18;;;23784:34;;;31385:54:0::1;::::0;-1:-1:-1;23695:2:1;23680:18;31385:54:0::1;;;;;;;31055:396;31465:21;:25:::0;31461:621:::1;;31563:11;::::0;31630:7:::1;:17:::0;31527:21:::1;::::0;-1:-1:-1;;;;;31563:11:0::1;::::0;:86:::1;::::0;31614:33:::1;::::0;31630:17:::1;::::0;;::::1;::::0;31614:13;;::::1;;:33;:::i;:::-;31597:7;:12:::0;31584:64:::1;::::0;;::::1;::::0;31585:24:::1;::::0;31597:12;;::::1;;31585:9:::0;:24:::1;:::i;:::-;31584:64;;;;:::i;:::-;31563:86;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;31664:11:0::1;::::0;31731:7:::1;:17:::0;-1:-1:-1;;;;;31664:11:0;;::::1;::::0;:86:::1;::::0;31715:33:::1;::::0;31731:17:::1;::::0;;::::1;::::0;31715:13;;::::1;;:33;:::i;:::-;31698:7;:12:::0;31685:64:::1;::::0;;::::1;::::0;31686:24:::1;::::0;31698:12;;::::1;;31686:9:::0;:24:::1;:::i;:::-;31685:64;;;;:::i;:::-;31664:86;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;31830:7:0::1;:17:::0;31814:33:::1;::::0;31830:17:::1;::::0;;::::1;::::0;31814:13;;::::1;;:33;:::i;:::-;31797:7;:12:::0;31784:64:::1;::::0;;::::1;::::0;31785:24:::1;::::0;31797:12;;::::1;;31785:9:::0;:24:::1;:::i;:::-;31784:64;;;;:::i;:::-;31765:15:::0;:84;31929:7:::1;:17:::0;31913:33:::1;::::0;31929:17:::1;::::0;;::::1;::::0;31913:13;;::::1;;:33;:::i;:::-;31896:7;:12:::0;31883:64:::1;::::0;;::::1;::::0;31884:24:::1;::::0;31896:12;;::::1;;31884:9:::0;:24:::1;:::i;:::-;31883:64;;;;:::i;:::-;31864:15:::0;:84;31986:21:::1;31963:20:::0;:44;32022:16:::1;::::0;:48:::1;::::0;-1:-1:-1;;;;;32022:16:0;;::::1;::::0;32048:21:::1;32022:48:::0;::::1;;;::::0;-1:-1:-1;32022:48:0;-1:-1:-1;32022:48:0;32048:21;32022:16;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31492:590;31461:621;30206:1883;;;13306:1;-1:-1:-1::0;;13318:6:0;:14;;;;;;30111:1978::o;33565:1615::-;33688:16;;33666:4;;33688:16;;;;;33683:221;;33721:28;33740:4;33746:2;33721:18;:28::i;:::-;33769:16;;;;;;;33768:17;:41;;;;;33789:20;33800:4;33806:2;33789:10;:20::i;:::-;33764:129;;;33830:47;;-1:-1:-1;;;33830:47:0;;24031:2:1;33830:47:0;;;24013:21:1;24070:2;24050:18;;;24043:30;24109:34;24089:18;;;24082:62;24180:7;24160:18;;;24153:35;24205:19;;33830:47:0;23829:401:1;33764:129:0;33916:25;33944:38;33955:4;33961:2;33965:7;33974;33944:10;:38::i;:::-;34027:14;;;;-1:-1:-1;;;;;34011:13:0;;;;;;:7;:13;;;;;;33916:66;;-1:-1:-1;34011:30:0;;;:::i;:::-;-1:-1:-1;;;;;33995:13:0;;;;;;;:7;:13;;;;;;:46;;;;34080:22;;;;34066:11;;;;;;;;;;:36;;34080:22;34066:36;:::i;:::-;-1:-1:-1;;;;;34052:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;34119:17;;;;;:11;:17;;;;;;;34115:89;;;-1:-1:-1;;;;;34169:13:0;;;;;;:7;:13;;;;;;:23;;34185:7;;34169:23;:::i;:::-;-1:-1:-1;;;;;34153:13:0;;;;;;:7;:13;;;;;:39;34115:89;-1:-1:-1;;;;;34218:15:0;;;;;;:11;:15;;;;;;;;34214:100;;;34278:22;;-1:-1:-1;;;;;34264:11:0;;34278:22;34264:11;;;:7;:11;;;;;;:36;;34278:22;34264:36;:::i;:::-;-1:-1:-1;;;;;34250:11:0;;;;;;:7;:11;;;;;:50;34214:100;34330:12;;;;:16;34326:353;;34429:10;:8;:10::i;:::-;34414:6;:12;;;:25;;;;:::i;:::-;34404:4;34388:22;;;;:7;:22;;;;;;:52;;;;:::i;:::-;34379:4;34363:22;;;;:7;:22;;;;;;;;:77;;;;34458:11;:26;;;;;;34455:110;;;34553:12;;;;;34544:4;34528:22;;;;:7;:22;;;;;;;:37;;34553:12;34528:37;:::i;:::-;34519:4;34503:22;;;;:7;:22;;;;;:62;34455:110;34608:4;-1:-1:-1;;;;;34585:43:0;34594:4;-1:-1:-1;;;;;34585:43:0;;34615:6;:12;;;34585:43;;;;3245:25:1;;3233:2;3218:18;;3099:177;34585:43:0;;;;;;;;34326:353;34695:12;;;;:16;34691:299;;34776:10;:8;:10::i;:::-;34761:6;:12;;;:25;;;;:::i;:::-;11306:42;34744:13;;:7;:13;;;;:43;;;;:::i;:::-;11306:42;34728:13;;;:59;34805:11;34728:13;34805:17;;;;;34802:83;;;34873:12;;;;11306:42;34857:13;;:7;:13;;;;:28;;34873:12;34857:28;:::i;:::-;11306:42;34841:13;;:7;:13;;;:44;34802:83;11306:42;-1:-1:-1;;;;;34905:34:0;34914:4;-1:-1:-1;;;;;34905:34:0;;34926:6;:12;;;34905:34;;;;3245:25:1;;3233:2;3218:18;;3099:177;34905:34:0;;;;;;;;34691:299;35020:1;35006:6;:11;;;:15;:34;;;;35039:1;35025:6;:11;;;:15;35006:34;35002:89;;;35068:6;:11;;;35057:7;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;35002:89:0;35123:2;-1:-1:-1;;;;;35108:42:0;35117:4;-1:-1:-1;;;;;35108:42:0;;35127:6;:22;;;35108:42;;;;3245:25:1;;3233:2;3218:18;;3099:177;35108:42:0;;;;;;;;-1:-1:-1;35168:4:0;;33565:1615;-1:-1:-1;;;;;33565:1615:0:o;32097:508::-;32179:16;;;;;;;32178:17;32170:65;;;;-1:-1:-1;;;32170:65:0;;24437:2:1;32170:65:0;;;24419:21:1;24476:2;24456:18;;;24449:30;24515:34;24495:18;;;24488:62;24586:5;24566:18;;;24559:33;24609:19;;32170:65:0;24235:399:1;32170:65:0;32251:20;32262:4;32268:2;32251:10;:20::i;:::-;32250:21;:37;;;;-1:-1:-1;32281:6:0;;-1:-1:-1;;;;;32275:12:0;;;32281:6;;32275:12;32250:37;32246:352;;;-1:-1:-1;;;;;32304:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;32304:30:0;32330:4;32304:30;;;32349:16;:23;;;;32304:30;32349:23;;;;;32398:9;;;;32387:107;;32442:9;:36;;;;32472:4;32442:36;;;;;32387:107;32508:19;:26;;;;;;;;32554:32;;-1:-1:-1;2537:41:1;;32554:32:0;;2525:2:1;2510:18;32554:32:0;;;;;;;32097:508;;:::o;35188:2483::-;35282:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35282:18:0;35313:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35313:25:0;35349:19;35371:10;:8;:10::i;:::-;35349:32;-1:-1:-1;35411:21:0;35349:32;35411:7;:21;:::i;:::-;35394:14;;;:38;35449:20;35460:4;35466:2;35449:10;:20::i;:::-;35445:315;;;35517:9;;:38;;;;;-1:-1:-1;;;;;24920:15:1;;;35517:38:0;;;24902:34:1;24972:15;;;24952:18;;;24945:43;25004:18;;;24997:34;;;35486:12:0;;35517:9;;;;;:19;;24814:18:1;;35517:38:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;35517:38:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35513:164;;35653:8;;;35513:164;35606:5;-1:-1:-1;35697:7:0;35693:56;;35725:8;;;35693:56;35471:289;35445:315;35775:7;35772:1740;;;-1:-1:-1;;;;;35803:11:0;;;;;;:7;:11;;;;;;;;35799:639;;;35858:10;:18;35835:12;:41;;35858:18;;;;-1:-1:-1;;35895:45:0;;;;;;;35920:20;;;;;35895:45;;;35959:35;;35979:15;;;;;35959:35;;;;;;;;35799:639;;;-1:-1:-1;;;;;36020:13:0;;;;;;:7;:13;;;;;;;;36016:422;;;36077:9;:17;36054:12;:40;;36077:17;;;;-1:-1:-1;;36113:44:0;;;;;;;36138:19;;;;;36113:44;;;36176:34;;36196:14;;;;;36176:34;;;;;;;;36016:422;;;36274:14;:22;36251:12;:45;;36274:22;;;;-1:-1:-1;;36315:49:0;;;;;;;36340:24;;;;;36315:49;;;36383:39;;36403:19;;;;;36383:39;;;;;;;;36016:422;36457:26;;;;:41;;;;-1:-1:-1;;;;;;36487:11:0;;;;;;:7;:11;;;;;;;;36457:41;36454:433;;;36542:23;;-1:-1:-1;;;;;36522:17:0;;;;;;:11;:17;;;;;;36569:15;;36522:43;;;:::i;:::-;:62;36519:230;;36609:12;:25;;36633:1;;36609:12;:20;;:25;;36633:1;;36609:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36683:1;36657:12;:22;;;:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36728:1;36707:12;:17;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36519:230;36454:433;;;36774:26;;;;:43;;;;-1:-1:-1;;;;;;36804:13:0;;;;;;:7;:13;;;;;;;;36774:43;36770:117;;;-1:-1:-1;;;;;36838:15:0;;;;;;:11;:15;;;;;36856;36838:33;;36770:117;36952:10;:27;36928:12;:20;36952:27;;;;;;;;36918:30;;36928:20;36918:7;:30;:::i;:::-;36917:62;;;;:::i;:::-;36903:11;;;:76;37046:10;:27;37020:12;:22;37046:27;;;;;;;;37010:32;;37020:22;;;;37010:7;:32;:::i;:::-;37009:64;;;;:::i;:::-;36994:12;;;:79;37135:10;:27;37114:12;:17;37135:27;;;;;;;;37104;;37114:17;;;;37104:7;:27;:::i;:::-;37103:59;;;;:::i;:::-;37088:12;;;:74;;;37227:12;;;;37213:11;;;;:26;;37227:12;37213:26;:::i;:::-;:41;;;;:::i;:::-;37202:53;;:7;:53;:::i;:::-;37177:78;;37286:11;;;;:25;;37300:11;;37286:25;:::i;:::-;37272:11;;;:39;35772:1740;;;37358:1;37344:11;;;:15;;;37374:12;;;:16;;;37405:12;;;:16;;;37436:32;;;37485:11;;;:15;35772:1740;37626:11;37611:6;:12;;;:26;;;;:::i;:::-;37595:11;37580:6;:12;;;:26;;;;:::i;:::-;37565:6;:11;;;:42;;;;:::i;:::-;:73;;;;:::i;:::-;37547:6;:14;;;:92;;;;:::i;:::-;37522:22;;;:117;-1:-1:-1;37522:22:0;35188:2483;-1:-1:-1;;;;;35188:2483:0:o;245:656:1:-;357:4;386:2;415;404:9;397:21;447:6;441:13;490:6;485:2;474:9;470:18;463:34;515:1;525:140;539:6;536:1;533:13;525:140;;;634:14;;;630:23;;624:30;600:17;;;619:2;596:26;589:66;554:10;;525:140;;;683:6;680:1;677:13;674:91;;;753:1;748:2;739:6;728:9;724:22;720:31;713:42;674:91;-1:-1:-1;817:2:1;805:15;822:66;801:88;786:104;;;;892:2;782:113;;245:656;-1:-1:-1;;;245:656:1:o;906:159::-;973:20;;1033:6;1022:18;;1012:29;;1002:57;;1055:1;1052;1045:12;1002:57;906:159;;;:::o;1070:401::-;1152:6;1160;1168;1176;1229:3;1217:9;1208:7;1204:23;1200:33;1197:53;;;1246:1;1243;1236:12;1197:53;1269:28;1287:9;1269:28;:::i;:::-;1259:38;;1316:37;1349:2;1338:9;1334:18;1316:37;:::i;:::-;1306:47;;1372:37;1405:2;1394:9;1390:18;1372:37;:::i;:::-;1362:47;;1428:37;1461:2;1450:9;1446:18;1428:37;:::i;:::-;1418:47;;1070:401;;;;;;;:::o;1733:180::-;1792:6;1845:2;1833:9;1824:7;1820:23;1816:32;1813:52;;;1861:1;1858;1851:12;1813:52;-1:-1:-1;1884:23:1;;1733:180;-1:-1:-1;1733:180:1:o;1918:154::-;-1:-1:-1;;;;;1997:5:1;1993:54;1986:5;1983:65;1973:93;;2062:1;2059;2052:12;2077:315;2145:6;2153;2206:2;2194:9;2185:7;2181:23;2177:32;2174:52;;;2222:1;2219;2212:12;2174:52;2261:9;2248:23;2280:31;2305:5;2280:31;:::i;:::-;2330:5;2382:2;2367:18;;;;2354:32;;-1:-1:-1;;;2077:315:1:o;2589:118::-;2675:5;2668:13;2661:21;2654:5;2651:32;2641:60;;2697:1;2694;2687:12;2712:382;2777:6;2785;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;2893:9;2880:23;2912:31;2937:5;2912:31;:::i;:::-;2962:5;-1:-1:-1;3019:2:1;3004:18;;2991:32;3032:30;2991:32;3032:30;:::i;:::-;3081:7;3071:17;;;2712:382;;;;;:::o;4214:456::-;4291:6;4299;4307;4360:2;4348:9;4339:7;4335:23;4331:32;4328:52;;;4376:1;4373;4366:12;4328:52;4415:9;4402:23;4434:31;4459:5;4434:31;:::i;:::-;4484:5;-1:-1:-1;4541:2:1;4526:18;;4513:32;4554:33;4513:32;4554:33;:::i;:::-;4214:456;;4606:7;;-1:-1:-1;;;4660:2:1;4645:18;;;;4632:32;;4214:456::o;4675:248::-;4743:6;4751;4804:2;4792:9;4783:7;4779:23;4775:32;4772:52;;;4820:1;4817;4810:12;4772:52;-1:-1:-1;;4843:23:1;;;4913:2;4898:18;;;4885:32;;-1:-1:-1;4675:248:1:o;4928:647::-;5002:6;5010;5018;5026;5079:3;5067:9;5058:7;5054:23;5050:33;5047:53;;;5096:1;5093;5086:12;5047:53;5135:9;5122:23;5154:28;5176:5;5154:28;:::i;:::-;5201:5;-1:-1:-1;5258:2:1;5243:18;;5230:32;5271:30;5230:32;5271:30;:::i;:::-;5320:7;-1:-1:-1;5379:2:1;5364:18;;5351:32;5392:30;5351:32;5392:30;:::i;:::-;5441:7;-1:-1:-1;5500:2:1;5485:18;;5472:32;5513:30;5472:32;5513:30;:::i;:::-;4928:647;;;;-1:-1:-1;4928:647:1;;-1:-1:-1;;4928:647:1:o;5769:247::-;5828:6;5881:2;5869:9;5860:7;5856:23;5852:32;5849:52;;;5897:1;5894;5887:12;5849:52;5936:9;5923:23;5955:31;5980:5;5955:31;:::i;6021:553::-;6122:6;6130;6138;6191:2;6179:9;6170:7;6166:23;6162:32;6159:52;;;6207:1;6204;6197:12;6159:52;6246:9;6233:23;6265:31;6290:5;6265:31;:::i;:::-;6315:5;-1:-1:-1;6372:2:1;6357:18;;6344:32;6385:33;6344:32;6385:33;:::i;:::-;6437:7;-1:-1:-1;6496:2:1;6481:18;;6468:32;6509:33;6468:32;6509:33;:::i;:::-;6561:7;6551:17;;;6021:553;;;;;:::o;6579:241::-;6635:6;6688:2;6676:9;6667:7;6663:23;6659:32;6656:52;;;6704:1;6701;6694:12;6656:52;6743:9;6730:23;6762:28;6784:5;6762:28;:::i;6825:547::-;6923:6;6931;6939;6947;6955;6963;7016:3;7004:9;6995:7;6991:23;6987:33;6984:53;;;7033:1;7030;7023:12;6984:53;7056:28;7074:9;7056:28;:::i;:::-;7046:38;;7103:37;7136:2;7125:9;7121:18;7103:37;:::i;:::-;7093:47;;7159:37;7192:2;7181:9;7177:18;7159:37;:::i;:::-;7149:47;;7215:37;7248:2;7237:9;7233:18;7215:37;:::i;:::-;7205:47;;7271:38;7304:3;7293:9;7289:19;7271:38;:::i;:::-;7261:48;;7328:38;7361:3;7350:9;7346:19;7328:38;:::i;:::-;7318:48;;6825:547;;;;;;;;:::o;7377:385::-;7463:6;7471;7479;7487;7540:3;7528:9;7519:7;7515:23;7511:33;7508:53;;;7557:1;7554;7547:12;7508:53;-1:-1:-1;;7580:23:1;;;7650:2;7635:18;;7622:32;;-1:-1:-1;7701:2:1;7686:18;;7673:32;;7752:2;7737:18;7724:32;;-1:-1:-1;7377:385:1;-1:-1:-1;7377:385:1:o;8763:388::-;8831:6;8839;8892:2;8880:9;8871:7;8867:23;8863:32;8860:52;;;8908:1;8905;8898:12;8860:52;8947:9;8934:23;8966:31;8991:5;8966:31;:::i;:::-;9016:5;-1:-1:-1;9073:2:1;9058:18;;9045:32;9086:33;9045:32;9086:33;:::i;9502:184::-;9554:77;9551:1;9544:88;9651:4;9648:1;9641:15;9675:4;9672:1;9665:15;9691:224;9730:3;9758:6;9791:2;9788:1;9784:10;9821:2;9818:1;9814:10;9852:3;9848:2;9844:12;9839:3;9836:21;9833:47;;;9860:18;;:::i;:::-;9896:13;;9691:224;-1:-1:-1;;;;9691:224:1:o;10970:184::-;11022:77;11019:1;11012:88;11119:4;11116:1;11109:15;11143:4;11140:1;11133:15;11159:184;11211:77;11208:1;11201:88;11308:4;11305:1;11298:15;11332:4;11329:1;11322:15;11348:125;11388:4;11416:1;11413;11410:8;11407:34;;;11421:18;;:::i;:::-;-1:-1:-1;11458:9:1;;11348:125::o;11478:195::-;11517:3;-1:-1:-1;;11541:5:1;11538:77;11535:103;;;11618:18;;:::i;:::-;-1:-1:-1;11665:1:1;11654:13;;11478:195::o;11678:228::-;11718:7;11844:1;-1:-1:-1;;11772:74:1;11769:1;11766:81;11761:1;11754:9;11747:17;11743:105;11740:131;;;11851:18;;:::i;:::-;-1:-1:-1;11891:9:1;;11678:228::o;11911:274::-;11951:1;11977;11967:189;;12012:77;12009:1;12002:88;12113:4;12110:1;12103:15;12141:4;12138:1;12131:15;11967:189;-1:-1:-1;12170:9:1;;11911:274::o;13045:128::-;13085:3;13116:1;13112:6;13109:1;13106:13;13103:39;;;13122:18;;:::i;:::-;-1:-1:-1;13158:9:1;;13045:128::o;14019:184::-;14089:6;14142:2;14130:9;14121:7;14117:23;14113:32;14110:52;;;14158:1;14155;14148:12;14110:52;-1:-1:-1;14181:16:1;;14019:184;-1:-1:-1;14019:184:1:o;16757:217::-;16796:4;16825:6;16881:10;;;;16851;;16903:12;;;16900:38;;;16918:18;;:::i;:::-;16955:13;;16757:217;-1:-1:-1;;;16757:217:1:o;17403:251::-;17473:6;17526:2;17514:9;17505:7;17501:23;17497:32;17494:52;;;17542:1;17539;17532:12;17494:52;17574:9;17568:16;17593:31;17618:5;17593:31;:::i;18348:245::-;18415:6;18468:2;18456:9;18447:7;18443:23;18439:32;18436:52;;;18484:1;18481;18474:12;18436:52;18516:9;18510:16;18535:28;18557:5;18535:28;:::i;21528:1026::-;21790:4;21838:3;21827:9;21823:19;21869:6;21858:9;21851:25;21895:2;21933:6;21928:2;21917:9;21913:18;21906:34;21976:3;21971:2;21960:9;21956:18;21949:31;22000:6;22035;22029:13;22066:6;22058;22051:22;22104:3;22093:9;22089:19;22082:26;;22143:2;22135:6;22131:15;22117:29;;22164:1;22174:218;22188:6;22185:1;22182:13;22174:218;;;22253:13;;-1:-1:-1;;;;;22249:62:1;22237:75;;22367:15;;;;22332:12;;;;22210:1;22203:9;22174:218;;;-1:-1:-1;;;;;;;22448:55:1;;;;22443:2;22428:18;;22421:83;-1:-1:-1;;;22535:3:1;22520:19;22513:35;22409:3;21528:1026;-1:-1:-1;;;21528:1026:1:o;23194:306::-;23282:6;23290;23298;23351:2;23339:9;23330:7;23326:23;23322:32;23319:52;;;23367:1;23364;23357:12;23319:52;23396:9;23390:16;23380:26;;23446:2;23435:9;23431:18;23425:25;23415:35;;23490:2;23479:9;23475:18;23469:25;23459:35;;23194:306;;;;;:::o;25042:258::-;25081:7;25113:6;25146:2;25143:1;25139:10;25176:2;25173:1;25169:10;25232:3;25228:2;25224:12;25219:3;25216:21;25209:3;25202:11;25195:19;25191:47;25188:73;;;25241:18;;:::i;:::-;25281:13;;25042:258;-1:-1:-1;;;;25042:258:1:o

Swarm Source

ipfs://5505bc8db0cc588da26e8feb8c24b704ff34b9a185260bf57f8e2bc269d22eab

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.