ETH Price: $3,397.73 (+1.49%)

Contract

0xd55231b619Ec464347d7b6eB12Cc7AE19fBbf37D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve204746212024-08-07 5:31:59144 days ago1723008719IN
0xd55231b6...19fBbf37D
0 ETH0.000056192.31051265
Approve204030272024-07-28 5:43:11154 days ago1722145391IN
0xd55231b6...19fBbf37D
0 ETH0.000094372.02501341
Approve201693782024-06-25 14:45:11186 days ago1719326711IN
0xd55231b6...19fBbf37D
0 ETH0.0006082113.06757714
Approve200377742024-06-07 5:11:23205 days ago1717737083IN
0xd55231b6...19fBbf37D
0 ETH0.000447979.62484432
Approve199582632024-05-27 2:36:23216 days ago1716777383IN
0xd55231b6...19fBbf37D
0 ETH0.000326477.04698013
Transfer199582552024-05-27 2:34:47216 days ago1716777287IN
0xd55231b6...19fBbf37D
0 ETH0.0011358.90309139
Approve197005262024-04-21 1:32:47252 days ago1713663167IN
0xd55231b6...19fBbf37D
0 ETH0.000166476.84534633
Approve189367722024-01-04 21:56:47359 days ago1704405407IN
0xd55231b6...19fBbf37D
0 ETH0.0004322717.77428451
Approve185486432023-11-11 12:18:59413 days ago1699705139IN
0xd55231b6...19fBbf37D
0 ETH0.00102321.9793598
Approve185258852023-11-08 7:55:59417 days ago1699430159IN
0xd55231b6...19fBbf37D
0 ETH0.0013541629.09427251
Approve183986382023-10-21 12:19:11434 days ago1697890751IN
0xd55231b6...19fBbf37D
0 ETH0.000194868.03222595
Approve182972092023-10-07 7:47:11449 days ago1696664831IN
0xd55231b6...19fBbf37D
0 ETH0.000346457.47828038
Approve182971882023-10-07 7:42:47449 days ago1696664567IN
0xd55231b6...19fBbf37D
0 ETH0.000195856.71462398
Approve182971552023-10-07 7:36:11449 days ago1696664171IN
0xd55231b6...19fBbf37D
0 ETH0.000263035.68803752
Approve182969932023-10-07 7:03:35449 days ago1696662215IN
0xd55231b6...19fBbf37D
0 ETH0.000362287.83019884
Approve182759012023-10-04 8:15:35452 days ago1696407335IN
0xd55231b6...19fBbf37D
0 ETH0.000358977.75863399
Approve181308392023-09-14 0:06:11472 days ago1694649971IN
0xd55231b6...19fBbf37D
0 ETH0.0005811412.48587178
Transfer181308352023-09-14 0:05:23472 days ago1694649923IN
0xd55231b6...19fBbf37D
0 ETH0.0037699229.57172379
Approve181044222023-09-10 7:16:11476 days ago1694330171IN
0xd55231b6...19fBbf37D
0 ETH0.00042579.14621138
Approve173880872023-06-01 19:39:59576 days ago1685648399IN
0xd55231b6...19fBbf37D
0 ETH0.0034153273.37841856
Approve172983422023-05-20 4:44:23589 days ago1684557863IN
0xd55231b6...19fBbf37D
0 ETH0.0007537431.06936734
Approve172523842023-05-13 16:58:47595 days ago1683997127IN
0xd55231b6...19fBbf37D
0 ETH0.001822939.16526735
Approve171474642023-04-28 22:01:11610 days ago1682719271IN
0xd55231b6...19fBbf37D
0 ETH0.0016449935.34280547
Transfer171424152023-04-28 5:00:47611 days ago1682658047IN
0xd55231b6...19fBbf37D
0 ETH0.0017357339.44141966
Approve171423812023-04-28 4:53:59611 days ago1682657639IN
0xd55231b6...19fBbf37D
0 ETH0.0016454935.35343987
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
182972232023-10-07 7:49:59449 days ago1696664999
0xd55231b6...19fBbf37D
0.02596372 ETH
182972232023-10-07 7:49:59449 days ago1696664999
0xd55231b6...19fBbf37D
0.00778911 ETH
182972232023-10-07 7:49:59449 days ago1696664999
0xd55231b6...19fBbf37D
0.03375284 ETH
171424182023-04-28 5:01:23611 days ago1682658083
0xd55231b6...19fBbf37D
0.12263668 ETH
171424182023-04-28 5:01:23611 days ago1682658083
0xd55231b6...19fBbf37D
0.00016774 ETH
171424182023-04-28 5:01:23611 days ago1682658083
0xd55231b6...19fBbf37D
0.03674068 ETH
171424182023-04-28 5:01:23611 days ago1682658083
0xd55231b6...19fBbf37D
0.15920963 ETH
171424152023-04-28 5:00:47611 days ago1682658047
0xd55231b6...19fBbf37D
0.17108514 ETH
171424152023-04-28 5:00:47611 days ago1682658047
0xd55231b6...19fBbf37D
0.00030484 ETH
171424152023-04-28 5:00:47611 days ago1682658047
0xd55231b6...19fBbf37D
0.05123409 ETH
171424152023-04-28 5:00:47611 days ago1682658047
0xd55231b6...19fBbf37D
0.2220144 ETH
171410972023-04-28 0:34:23611 days ago1682642063
0xd55231b6...19fBbf37D
0.1822303 ETH
171410972023-04-28 0:34:23611 days ago1682642063
0xd55231b6...19fBbf37D
0.00034141 ETH
171410972023-04-28 0:34:23611 days ago1682642063
0xd55231b6...19fBbf37D
0.05456666 ETH
171410972023-04-28 0:34:23611 days ago1682642063
0xd55231b6...19fBbf37D
0.23645555 ETH
171330962023-04-26 21:33:47612 days ago1682544827
0xd55231b6...19fBbf37D
0.07607069 ETH
171330962023-04-26 21:33:47612 days ago1682544827
0xd55231b6...19fBbf37D
0.00004391 ETH
171330962023-04-26 21:33:47612 days ago1682544827
0xd55231b6...19fBbf37D
0.02280803 ETH
171330962023-04-26 21:33:47612 days ago1682544827
0xd55231b6...19fBbf37D
0.09883481 ETH
171324612023-04-26 19:24:59612 days ago1682537099
0xd55231b6...19fBbf37D
0.13025553 ETH
171324612023-04-26 19:24:59612 days ago1682537099
0xd55231b6...19fBbf37D
0.00342469 ETH
171324612023-04-26 19:24:59612 days ago1682537099
0xd55231b6...19fBbf37D
0.03804925 ETH
171324612023-04-26 19:24:59612 days ago1682537099
0xd55231b6...19fBbf37D
0.15070575 ETH
167895312023-03-09 8:42:35661 days ago1678351355
0xd55231b6...19fBbf37D
0.05541326 ETH
167895312023-03-09 8:42:35661 days ago1678351355
0xd55231b6...19fBbf37D
0.00001148 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YANTRA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-16
*/

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

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

interface IFactoryV2 {
    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 IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    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 swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    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 IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    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 _ab) external;
    function removeSniper(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 YANTRA is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 333_333;
    string constant private _name = "YANTRA";
    string constant private _symbol = "$YANTRA";
    uint8 constant private _decimals = 18;
    uint256 private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 burn;
        uint16 liquidity;
        uint16 marketing;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 1200,
        sellFee: 1200,
        transferFee: 1200
    });

    Ratios public _ratios = Ratios({
        burn: 900,
        liquidity: 900,
        marketing: 600,
        totalSwap: 900 + 900 + 600
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 2500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address public USDCPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x43C2B1aDdE05Ec23b9BCBD4F10A7d5d9C111e6A1);
    address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 1) / 100;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
            USDC = 0x7ef95a0FEE0Dd31b22626fA2e10Ee6A223F8a684;
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        USDCPair = IFactoryV2(dexRouter.factory()).createPair(USDC, address(this));
        lpPairs[lpPair] = true;
        lpPairs[USDCPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

    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.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function 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) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        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() external 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 setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_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) {
            lpPairs[pair] = false;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

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

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

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

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

//================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        protections.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        protections.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return protections.isBlacklisted(account);
    }

//================================================ BLACKLIST

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

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.setProtections(_antiSnipe, _antiBlock);
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 burn, uint16 liquidity, uint16 marketing) external onlyOwner {
        _ratios.burn = burn;
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.totalSwap = liquidity + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

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

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(protections)
            && to != address(protections);
    }

    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");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 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.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        launchStamp = block.timestamp;
    }

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

    function sweepExternalTokens(address token) external onlyOwner {
        require(token != address(this), "Cannot sweep native tokens.");
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        ratios.totalSwap += ratios.burn;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0 || ratios.totalSwap == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / ratios.totalSwap;
        uint256 swpAmt = feeAmount - burnAmount;
        if (swpAmt > 0) {
            _tOwned[address(this)] += swpAmt;
            emit Transfer(from, address(this), swpAmt);
        }
        if (burnAmount > 0) {
            _tTotal -= burnAmount;
            emit Transfer(from, address(0), burnAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"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":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDCPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","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":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"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":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","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":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","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":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","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":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","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":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60806040526000600255620000176012600a6200089e565b620000269062051615620008b6565b600881905560408051606080820183526104b0808352602080840182905292840152600980546504b004b004b065ffffffffffff1990911617905582516080810184526103848082529281019290925261025892820192909252610960910152600a80546709600258038403846001600160401b0319909116178155600e80546001600160a01b0319167343c2b1adde05ec23b9bcbd4f10a7d5d9c111e6a1179055600f8054600161ff0160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905560135560649062000102906001620008b6565b6200010e9190620008d0565b60145560646008546001620001249190620008b6565b620001309190620008d0565b6015556016805461ffff19169055601880546001600160a01b031916339081178255600854600091825260208281526040808420839055935493519182526001600160a01b03909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a346603803620001dc57600b8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e00179055620002ff565b466061036200023b57600b805474d99d1c33f9fc3444f8101754abc46c52416550d100610100600160a81b0319909116179055600f80546001600160a01b031916737ef95a0fee0dd31b22626fa2e10ee6a223f8a684179055620002ff565b46600114806200024b5750466004145b80620002575750466003145b156200028b57600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055620002ff565b4661a86a03620002c357600b8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d400179055620002ff565b4660fa03620002fa57600b8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c2900179055620002ff565b600080fd5b600b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000353573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003799190620008f3565b6001600160a01b031663c9c65396600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004019190620008f3565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004749190620008f3565b600c80546001600160a01b0319166001600160a01b03928316179055600b546040805163c45a015560e01b815290516101009092049092169163c45a01559160048083019260209291908290030181865afa158015620004d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fe9190620008f3565b600f546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000550573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005769190620008f3565b600d80546001600160a01b0319166001600160a01b03928316178155600c5482166000908152600160208190526040808320805460ff1990811684179091559354851683529091208054909216179055601854600b54620005e592918216916101009091041660001962000688565b600b546200060690309061010090046001600160a01b031660001962000688565b601880546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526004909152902080549092161790556200091e565b6001600160a01b038316620006da5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620007285760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620006d1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007e0578160001904821115620007c457620007c462000789565b80851615620007d257918102915b93841c9390800290620007a4565b509250929050565b600082620007f95750600162000898565b81620008085750600062000898565b81600181146200082157600281146200082c576200084c565b600191505062000898565b60ff84111562000840576200084062000789565b50506001821b62000898565b5060208310610133831016604e8410600b841016171562000871575081810a62000898565b6200087d83836200079f565b806000190482111562000894576200089462000789565b0290505b92915050565b6000620008af60ff841683620007e8565b9392505050565b808202811582820484141762000898576200089862000789565b600082620008ee57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200090657600080fd5b81516001600160a01b0381168114620008af57600080fd5b614922806200092e6000396000f3fe6080604052600436106103e25760003560e01c8063590ffdce1161020d578063aa22b17211610128578063eafb5a3c116100bb578063f7e9d1b71161008a578063fdb78c0e1161006f578063fdb78c0e14610c4b578063fe575a8714610c7e578063feadde9c14610c9e57600080fd5b8063f7e9d1b714610c0b578063fb78680d14610c2b57600080fd5b8063eafb5a3c14610b96578063eb50e70e14610bb6578063ee5d9c2d14610bd6578063eec2744e14610beb57600080fd5b8063b7df8b36116100f7578063b7df8b3614610aab578063bfc2fc3514610ac5578063cf84770614610ae5578063dd62ed3e14610b5057600080fd5b8063aa22b17214610a6b578063ab558e4d14610a8b578063b1b08f7114610689578063b3d514fb1461068957600080fd5b806378648edf116101a05780638a63bd9b1161016f5780638a63bd9b146109db5780638a8c523c146109f057806395d89b4114610a05578063a9059cbb14610a4b57600080fd5b806378648edf1461096857806380c581d11461097d578063893d20e81461099d57806389a30271146109bb57600080fd5b80636ebd0078116101dc5780636ebd0078146108e857806370a08231146108fd578063715018a61461093357806375f0a8741461094857600080fd5b8063590ffdce146108595780635a6f0918146108795780635c24b0741461088f5780635cce86cd146108af57600080fd5b80632b112e49116102fd578063452ed4f1116102905780634e718e481161025f5780634e718e48146107c15780634fb2e45d146107e15780634fbee1931461080157806350a8e0161461083a57600080fd5b8063452ed4f11461075157806346ea7ac8146107715780634ada218b146107875780634bbb93eb146107a157600080fd5b806332cde664116102cc57806332cde664146106d157806333251a0b146106f157806336fddb04146107115780633f3cf56c1461073157600080fd5b80632b112e49146106745780632b28fc7a146106895780632e8fa8211461069f578063313ce567146106b557600080fd5b8063095ea7b31161037557806323b872dd1161034457806323b872dd146105fe578063260039571461061e5780632610eaca1461063e578063285777511461065e57600080fd5b8063095ea7b31461057b5780630dcbcf1c1461059b5780630fa604e4146105d457806318160ddd146105e957600080fd5b8063069d955f116103b1578063069d955f1461048757806306fdde03146104dd5780630758d9241461052c57806307dd79e01461055157600080fd5b806303fd2a45146103ee5780630445b66714610421578063044df7261461044557806305bbedb61461046757600080fd5b366103e957005b600080fd5b3480156103fa57600080fd5b5061040461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042d57600080fd5b5061043760105481565b604051908152602001610418565b34801561045157600080fd5b50610465610460366004614188565b610cbe565b005b34801561047357600080fd5b506104656104823660046142ce565b610d9b565b34801561049357600080fd5b506009546104b89061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610418565b3480156104e957600080fd5b5060408051808201909152600681527f59414e545241000000000000000000000000000000000000000000000000000060208201525b6040516104189190614315565b34801561053857600080fd5b50600b546104049061010090046001600160a01b031681565b34801561055d57600080fd5b50600b5461056b9060ff1681565b6040519015158152602001610418565b34801561058757600080fd5b5061056b610596366004614363565b610e39565b3480156105a757600080fd5b5061056b6105b636600461438f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e057600080fd5b50610437610e50565b3480156105f557600080fd5b50600854610437565b34801561060a57600080fd5b5061056b6106193660046143ac565b610e70565b34801561062a57600080fd5b506104656106393660046143ed565b610ee8565b34801561064a57600080fd5b5061046561065936600461440f565b610ff2565b34801561066a57600080fd5b5061043760135481565b34801561068057600080fd5b506104376111ad565b34801561069557600080fd5b506104376107d081565b3480156106ab57600080fd5b5061043760115481565b3480156106c157600080fd5b5060405160128152602001610418565b3480156106dd57600080fd5b506104656106ec3660046144e1565b611214565b3480156106fd57600080fd5b5061046561070c36600461438f565b611401565b34801561071d57600080fd5b5061046561072c366004614524565b6114d1565b34801561073d57600080fd5b5061046561074c3660046143ed565b61154a565b34801561075d57600080fd5b50600c54610404906001600160a01b031681565b34801561077d57600080fd5b506104376109c481565b34801561079357600080fd5b5060165461056b9060ff1681565b3480156107ad57600080fd5b506104376107bc366004614542565b611661565b3480156107cd57600080fd5b506104656107dc366004614542565b611695565b3480156107ed57600080fd5b506104656107fc36600461438f565b611739565b34801561080d57600080fd5b5061056b61081c36600461438f565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084657600080fd5b5060165461056b90610100900460ff1681565b34801561086557600080fd5b50610465610874366004614524565b611976565b34801561088557600080fd5b5061043760175481565b34801561089b57600080fd5b506104656108aa36600461438f565b6119ef565b3480156108bb57600080fd5b5061056b6108ca36600461438f565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108f457600080fd5b50610437611ae5565b34801561090957600080fd5b5061043761091836600461438f565b6001600160a01b031660009081526020819052604090205490565b34801561093f57600080fd5b50610465611b00565b34801561095457600080fd5b50600e54610404906001600160a01b031681565b34801561097457600080fd5b50610465611bcb565b34801561098957600080fd5b50610465610998366004614524565b611c28565b3480156109a957600080fd5b506018546001600160a01b0316610404565b3480156109c757600080fd5b50600f54610404906001600160a01b031681565b3480156109e757600080fd5b5061056b611dd0565b3480156109fc57600080fd5b50610465611e46565b348015610a1157600080fd5b5060408051808201909152600781527f2459414e54524100000000000000000000000000000000000000000000000000602082015261051f565b348015610a5757600080fd5b5061056b610a66366004614363565b6120a2565b348015610a7757600080fd5b50610465610a863660046144e1565b6120b9565b348015610a9757600080fd5b50610465610aa636600461438f565b612273565b348015610ab757600080fd5b5060125461056b9060ff1681565b348015610ad157600080fd5b50610465610ae0366004614188565b612434565b348015610af157600080fd5b50600a54610b229061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610418565b348015610b5c57600080fd5b50610437610b6b36600461455b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ba257600080fd5b50610465610bb136600461438f565b612512565b348015610bc257600080fd5b50610465610bd136600461438f565b612946565b348015610be257600080fd5b50610465612a24565b348015610bf757600080fd5b50610465610c06366004614524565b612b06565b348015610c1757600080fd5b50600d54610404906001600160a01b031681565b348015610c3757600080fd5b50610465610c46366004614589565b612bae565b348015610c5757600080fd5b50600f5461056b907501000000000000000000000000000000000000000000900460ff1681565b348015610c8a57600080fd5b5061056b610c9936600461438f565b612e69565b348015610caa57600080fd5b50610465610cb9366004614524565b612ef7565b6018546001600160a01b03163314610d115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6016546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d7f57600080fd5b505af1158015610d93573d6000803e3d6000fd5b505050505050565b6018546001600160a01b03163314610de95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d6590859085906004016145ff565b6000610e46338484612f70565b5060015b92915050565b6000610e5e6012600a614736565b601554610e6b9190614745565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ed5576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ecf908490614780565b90915550505b610ee084848461307d565b949350505050565b6018546001600160a01b03163314610f365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6064600854610f459190614745565b8183600854610f549190614793565b610f5e9190614745565b1015610fd25760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610d08565b8082600854610fe19190614793565b610feb9190614745565b6015555050565b6018546001600160a01b031633146110405760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b80518251146110915760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610d08565b60005b82518161ffff1610156111a8576110ad6012600a614736565b828261ffff16815181106110c3576110c36147aa565b60200260200101516110d59190614793565b3360009081526020819052604090205410156111335760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610d08565b61119533848361ffff168151811061114d5761114d6147aa565b60200260200101516012600a6111639190614736565b858561ffff1681518110611179576111796147aa565b602002602001015161118b9190614793565b600080600161353a565b50806111a0816147d9565b915050611094565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461120791906147fa565b600854610e6b9190614780565b6018546001600160a01b031633146112625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b5460ff16156112b55760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610d08565b6107d08361ffff16111580156112d157506107d08261ffff1611155b80156112e357506107d08161ffff1611155b61132f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d08565b6109c461133c838561480d565b61ffff16111561138e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610d08565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6018546001600160a01b0316331461144f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050505050565b6018546001600160a01b0316331461151f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146115985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6103e860085460056115aa9190614793565b6115b49190614745565b81836008546115c39190614793565b6115cd9190614745565b10156116415760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610d08565b80826008546116509190614793565b61165a9190614745565b6014555050565b600c546001600160a01b03166000908152602081905260408120546127109061168b908490614793565b610e4a9190614745565b6018546001600160a01b031633146116e35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60968111156117345760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610d08565b601355565b6018546001600160a01b031633146117875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b0381166118035760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016118a15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d08565b6018546118b8906001600160a01b03166000611976565b6118c3816001611976565b6018546001600160a01b03166000908152602081905260409020541561190c576018546001600160a01b031660008181526020819052604090205461190a9190839061118b565b505b601880546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146119c45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b03163314611a3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60165460ff1615611a4d57600080fd5b306001600160a01b03821603611aa55760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610d08565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611af36012600a614736565b601454610e6b9190614745565b6018546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601854611b65906001600160a01b03166000611976565b601880547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611c195760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b805460ff19166001179055565b6018546001600160a01b03163314611c765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b80611ced576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610d65565b60025415611d54576203f48060025442611d079190614780565b11611d545760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610d08565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610d65565b5050565b6018546000906001600160a01b03163314611e215760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b54611e4090309061010090046001600160a01b0316600019612f70565b50600190565b6018546001600160a01b03163314611e945760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60165460ff1615611ee75760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d08565b601654610100900460ff16611f3e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d08565b6016546201000090046001600160a01b0316611f8457601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561200f57600080fd5b505af1925050508015612020575060015b506016805460ff19166001179055600c546001600160a01b03166000908152602081905260409020546127109061205890600a614793565b6120629190614745565b601055600c546001600160a01b03166000908152602081905260409020546127109061208f90601e614793565b6120999190614745565b60115542601755565b60006120af33848461307d565b5060019392505050565b6018546001600160a01b031633146121075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600a805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905561217e818361480d565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546000916121cf916201000081048216911661480d565b600a5461ffff918216925082916121f5918082169166010000000000009091041661480d565b61ffff16111561226d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610d08565b50505050565b6018546001600160a01b031633146122c15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b306001600160a01b038216036123195760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d08565b6018546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad919061482f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a89190614848565b6018546001600160a01b031633146124825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146125605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601654610100900460ff16156125b85760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d08565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126219190614865565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126929190614865565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190614865565b90506001600160a01b0381166128c257816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278b9190614865565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fc9190614865565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128859190614865565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556128f6565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03858116820292909217928390556111a892309291900416600019612f70565b6018546001600160a01b031633146129945760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b0381166129ea5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d08565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612a725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601654610100900460ff1615612aca5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d08565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612b03573d6000803e3d6000fd5b50565b6018546001600160a01b03163314612b545760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d65565b6018546001600160a01b03163314612bfc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b8284600854612c0b9190614793565b612c159190614745565b6010556008548190612c28908490614793565b612c329190614745565b60118190556010541115612cae5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610d08565b600c546001600160a01b031660009081526020819052604090205461271090612cd8906096614793565b612ce29190614745565b6011541115612d595760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610d08565b620f4240600854612d6a9190614745565b6011541015612de15760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610d08565b620f4240600854612df29190614745565b601054101561226d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610d08565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190614848565b6018546001600160a01b03163314612f455760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612fc65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610d08565b6001600160a01b03821661301c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610d08565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d08565b6001600160a01b0383166131775760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d08565b600082116131ed5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610d08565b6001600160a01b0384166000908152600160205260408120548190819060ff161561321b5760019250613249565b6001600160a01b03861660009081526001602052604090205460ff16156132455760019150613249565b5060015b6132538787613821565b1561345e5760165460ff166132aa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d08565b82806132b35750815b15613377576001600160a01b03871660009081526007602052604090205460ff161580156132fa57506001600160a01b03861660009081526007602052604090205460ff16155b15613377576014548511156133775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610d08565b600b546001600160a01b038781166101009092041614801590613398575081155b1561345e576001600160a01b03861660009081526007602052604090205460ff1661345e57601554856133e0886001600160a01b031660009081526020819052604090205490565b6133ea91906147fa565b111561345e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610d08565b811561352157600f5474010000000000000000000000000000000000000000900460ff1661352157600f547501000000000000000000000000000000000000000000900460ff16156135215730600090815260208190526040902054601054811061351f5760115460125460ff161561350957601354600c546001600160a01b0316600090815260208190526040902054612710916134fc91614793565b6135069190614745565b90505b808210613514578091505b61351d82613938565b505b505b61352f87878786868661353a565b979650505050505050565b60006135468787613821565b156135f9576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156135e2575060408051601f3d908101601f191682019092526135df91810190614848565b60015b6135eb57600080fd5b9050806135f757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061363b57506001600160a01b03871660009081526006602052604090205460ff165b15613644575060005b6001600160a01b0388166000908152602081905260408120805488929061366c908490614780565b90915550600090508161367f578661368b565b61368b8987878a613d94565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546136c191906147fa565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161370d91815260200190565b60405180910390a3601654610100900460ff166138125761372e8989613fbc565b601654610100900460ff1615801561374b575061374b8989613821565b801561377057506001600160a01b03891660009081526005602052604090205460ff16155b801561379557506001600160a01b03881660009081526005602052604090205460ff16155b801561379f575083155b156138125760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610d08565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061385057506018546001600160a01b03838116911614155b801561386757506018546001600160a01b03163214155b801561388c57506001600160a01b03821660009081526004602052604090205460ff16155b80156138b157506001600160a01b03831660009081526004602052604090205460ff16155b80156138c857506001600160a01b03821661dead14155b80156138dc57506001600160a01b03821615155b80156138f157506001600160a01b0383163014155b801561391157506016546001600160a01b03848116620100009092041614155b801561393157506016546001600160a01b03838116620100009092041614155b9392505050565b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036139cb5750613d69565b306000908152600360209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613a2e57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff1685613a4f9190614793565b613a599190614745565b613a639190614745565b90506000613a718285614780565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613aab57613aab6147aa565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b429190614865565b81600181518110613b5557613b556147aa565b6001600160a01b039283166020918202929092010152600b546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613bbb908590600090869030904290600401614882565b600060405180830381600087803b158015613bd557600080fd5b505af1925050508015613be6575060015b613bf35750505050613d69565b47600083613c018684614793565b613c0b9190614745565b90508415613d0757600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613cbb575060408051601f3d908101601f19168201909252613cb8918101906148be565b60015b613cca57505050505050613d69565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600e546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613d59576040519150601f19603f3d011682016040523d82523d6000602084013e613d5e565b606091505b505050505050505050505b50600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60408051608081018252600a5461ffff8082168084526201000083048216602085015264010000000083048216948401949094526601000000000000909104166060820181815260009391613dea90839061480d565b61ffff1690525060008515613e06575060095461ffff16613e30565b8415613e1f575060095462010000900461ffff16613e30565b50600954640100000000900461ffff165b801580613e435750606082015161ffff16155b15613e52578392505050610ee0565b6016546201000090046001600160a01b031630148015613e7c57504660011480613e7c5750466038145b15613e8657506111945b6000612710613e958387614793565b613e9f9190614745565b90506000836060015161ffff16846000015161ffff1683613ec09190614793565b613eca9190614745565b90506000613ed88284614780565b90508015613f45573060009081526020819052604081208054839290613eff9084906147fa565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613fa4578160086000828254613f5d9190614780565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613fae8388614780565b9a9950505050505050505050565b601654610100900460ff161561403a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610d08565b6140448282613821565b15801561405e5750600c546001600160a01b038281169116145b15611dcc576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017908190556201000090041661410957601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612506565b8015158114612b0357600080fd5b6000806040838503121561419b57600080fd5b82356141a68161417a565b915060208301356141b68161417a565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614219576142196141c1565b604052919050565b600067ffffffffffffffff82111561423b5761423b6141c1565b5060051b60200190565b6001600160a01b0381168114612b0357600080fd5b600082601f83011261426b57600080fd5b8135602061428061427b83614221565b6141f0565b82815260059290921b8401810191818101908684111561429f57600080fd5b8286015b848110156142c35780356142b681614245565b83529183019183016142a3565b509695505050505050565b600080604083850312156142e157600080fd5b823567ffffffffffffffff8111156142f857600080fd5b6143048582860161425a565b92505060208301356141b68161417a565b600060208083528351808285015260005b8181101561434257858101830151858201604001528201614326565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561437657600080fd5b823561438181614245565b946020939093013593505050565b6000602082840312156143a157600080fd5b813561393181614245565b6000806000606084860312156143c157600080fd5b83356143cc81614245565b925060208401356143dc81614245565b929592945050506040919091013590565b6000806040838503121561440057600080fd5b50508035926020909101359150565b6000806040838503121561442257600080fd5b823567ffffffffffffffff8082111561443a57600080fd5b6144468683870161425a565b935060209150818501358181111561445d57600080fd5b85019050601f8101861361447057600080fd5b803561447e61427b82614221565b81815260059190911b8201830190838101908883111561449d57600080fd5b928401925b828410156144bb578335825292840192908401906144a2565b80955050505050509250929050565b803561ffff811681146144dc57600080fd5b919050565b6000806000606084860312156144f657600080fd5b6144ff846144ca565b925061450d602085016144ca565b915061451b604085016144ca565b90509250925092565b6000806040838503121561453757600080fd5b82356141a681614245565b60006020828403121561455457600080fd5b5035919050565b6000806040838503121561456e57600080fd5b823561457981614245565b915060208301356141b681614245565b6000806000806080858703121561459f57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156145f45781516001600160a01b0316875295820195908201906001016145cf565b509495945050505050565b60408152600061461260408301856145bb565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561468d57816000190482111561467357614673614623565b8085161561468057918102915b93841c9390800290614657565b509250929050565b6000826146a457506001610e4a565b816146b157506000610e4a565b81600181146146c757600281146146d1576146ed565b6001915050610e4a565b60ff8411156146e2576146e2614623565b50506001821b610e4a565b5060208310610133831016604e8410600b8410161715614710575081810a610e4a565b61471a8383614652565b806000190482111561472e5761472e614623565b029392505050565b600061393160ff841683614695565b60008261477b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610e4a57610e4a614623565b8082028115828204841417610e4a57610e4a614623565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff8083168181036147f0576147f0614623565b6001019392505050565b80820180821115610e4a57610e4a614623565b61ffff81811683821601908082111561482857614828614623565b5092915050565b60006020828403121561484157600080fd5b5051919050565b60006020828403121561485a57600080fd5b81516139318161417a565b60006020828403121561487757600080fd5b815161393181614245565b85815284602082015260a0604082015260006148a160a08301866145bb565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156148d357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205b4537fbfd30302ce4b03fc4c2f8fc9f0d17b031aeab76ab912d8b4ebfdaaa6164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103e25760003560e01c8063590ffdce1161020d578063aa22b17211610128578063eafb5a3c116100bb578063f7e9d1b71161008a578063fdb78c0e1161006f578063fdb78c0e14610c4b578063fe575a8714610c7e578063feadde9c14610c9e57600080fd5b8063f7e9d1b714610c0b578063fb78680d14610c2b57600080fd5b8063eafb5a3c14610b96578063eb50e70e14610bb6578063ee5d9c2d14610bd6578063eec2744e14610beb57600080fd5b8063b7df8b36116100f7578063b7df8b3614610aab578063bfc2fc3514610ac5578063cf84770614610ae5578063dd62ed3e14610b5057600080fd5b8063aa22b17214610a6b578063ab558e4d14610a8b578063b1b08f7114610689578063b3d514fb1461068957600080fd5b806378648edf116101a05780638a63bd9b1161016f5780638a63bd9b146109db5780638a8c523c146109f057806395d89b4114610a05578063a9059cbb14610a4b57600080fd5b806378648edf1461096857806380c581d11461097d578063893d20e81461099d57806389a30271146109bb57600080fd5b80636ebd0078116101dc5780636ebd0078146108e857806370a08231146108fd578063715018a61461093357806375f0a8741461094857600080fd5b8063590ffdce146108595780635a6f0918146108795780635c24b0741461088f5780635cce86cd146108af57600080fd5b80632b112e49116102fd578063452ed4f1116102905780634e718e481161025f5780634e718e48146107c15780634fb2e45d146107e15780634fbee1931461080157806350a8e0161461083a57600080fd5b8063452ed4f11461075157806346ea7ac8146107715780634ada218b146107875780634bbb93eb146107a157600080fd5b806332cde664116102cc57806332cde664146106d157806333251a0b146106f157806336fddb04146107115780633f3cf56c1461073157600080fd5b80632b112e49146106745780632b28fc7a146106895780632e8fa8211461069f578063313ce567146106b557600080fd5b8063095ea7b31161037557806323b872dd1161034457806323b872dd146105fe578063260039571461061e5780632610eaca1461063e578063285777511461065e57600080fd5b8063095ea7b31461057b5780630dcbcf1c1461059b5780630fa604e4146105d457806318160ddd146105e957600080fd5b8063069d955f116103b1578063069d955f1461048757806306fdde03146104dd5780630758d9241461052c57806307dd79e01461055157600080fd5b806303fd2a45146103ee5780630445b66714610421578063044df7261461044557806305bbedb61461046757600080fd5b366103e957005b600080fd5b3480156103fa57600080fd5b5061040461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042d57600080fd5b5061043760105481565b604051908152602001610418565b34801561045157600080fd5b50610465610460366004614188565b610cbe565b005b34801561047357600080fd5b506104656104823660046142ce565b610d9b565b34801561049357600080fd5b506009546104b89061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610418565b3480156104e957600080fd5b5060408051808201909152600681527f59414e545241000000000000000000000000000000000000000000000000000060208201525b6040516104189190614315565b34801561053857600080fd5b50600b546104049061010090046001600160a01b031681565b34801561055d57600080fd5b50600b5461056b9060ff1681565b6040519015158152602001610418565b34801561058757600080fd5b5061056b610596366004614363565b610e39565b3480156105a757600080fd5b5061056b6105b636600461438f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e057600080fd5b50610437610e50565b3480156105f557600080fd5b50600854610437565b34801561060a57600080fd5b5061056b6106193660046143ac565b610e70565b34801561062a57600080fd5b506104656106393660046143ed565b610ee8565b34801561064a57600080fd5b5061046561065936600461440f565b610ff2565b34801561066a57600080fd5b5061043760135481565b34801561068057600080fd5b506104376111ad565b34801561069557600080fd5b506104376107d081565b3480156106ab57600080fd5b5061043760115481565b3480156106c157600080fd5b5060405160128152602001610418565b3480156106dd57600080fd5b506104656106ec3660046144e1565b611214565b3480156106fd57600080fd5b5061046561070c36600461438f565b611401565b34801561071d57600080fd5b5061046561072c366004614524565b6114d1565b34801561073d57600080fd5b5061046561074c3660046143ed565b61154a565b34801561075d57600080fd5b50600c54610404906001600160a01b031681565b34801561077d57600080fd5b506104376109c481565b34801561079357600080fd5b5060165461056b9060ff1681565b3480156107ad57600080fd5b506104376107bc366004614542565b611661565b3480156107cd57600080fd5b506104656107dc366004614542565b611695565b3480156107ed57600080fd5b506104656107fc36600461438f565b611739565b34801561080d57600080fd5b5061056b61081c36600461438f565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084657600080fd5b5060165461056b90610100900460ff1681565b34801561086557600080fd5b50610465610874366004614524565b611976565b34801561088557600080fd5b5061043760175481565b34801561089b57600080fd5b506104656108aa36600461438f565b6119ef565b3480156108bb57600080fd5b5061056b6108ca36600461438f565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108f457600080fd5b50610437611ae5565b34801561090957600080fd5b5061043761091836600461438f565b6001600160a01b031660009081526020819052604090205490565b34801561093f57600080fd5b50610465611b00565b34801561095457600080fd5b50600e54610404906001600160a01b031681565b34801561097457600080fd5b50610465611bcb565b34801561098957600080fd5b50610465610998366004614524565b611c28565b3480156109a957600080fd5b506018546001600160a01b0316610404565b3480156109c757600080fd5b50600f54610404906001600160a01b031681565b3480156109e757600080fd5b5061056b611dd0565b3480156109fc57600080fd5b50610465611e46565b348015610a1157600080fd5b5060408051808201909152600781527f2459414e54524100000000000000000000000000000000000000000000000000602082015261051f565b348015610a5757600080fd5b5061056b610a66366004614363565b6120a2565b348015610a7757600080fd5b50610465610a863660046144e1565b6120b9565b348015610a9757600080fd5b50610465610aa636600461438f565b612273565b348015610ab757600080fd5b5060125461056b9060ff1681565b348015610ad157600080fd5b50610465610ae0366004614188565b612434565b348015610af157600080fd5b50600a54610b229061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610418565b348015610b5c57600080fd5b50610437610b6b36600461455b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ba257600080fd5b50610465610bb136600461438f565b612512565b348015610bc257600080fd5b50610465610bd136600461438f565b612946565b348015610be257600080fd5b50610465612a24565b348015610bf757600080fd5b50610465610c06366004614524565b612b06565b348015610c1757600080fd5b50600d54610404906001600160a01b031681565b348015610c3757600080fd5b50610465610c46366004614589565b612bae565b348015610c5757600080fd5b50600f5461056b907501000000000000000000000000000000000000000000900460ff1681565b348015610c8a57600080fd5b5061056b610c9936600461438f565b612e69565b348015610caa57600080fd5b50610465610cb9366004614524565b612ef7565b6018546001600160a01b03163314610d115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6016546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d7f57600080fd5b505af1158015610d93573d6000803e3d6000fd5b505050505050565b6018546001600160a01b03163314610de95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d6590859085906004016145ff565b6000610e46338484612f70565b5060015b92915050565b6000610e5e6012600a614736565b601554610e6b9190614745565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ed5576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ecf908490614780565b90915550505b610ee084848461307d565b949350505050565b6018546001600160a01b03163314610f365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6064600854610f459190614745565b8183600854610f549190614793565b610f5e9190614745565b1015610fd25760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610d08565b8082600854610fe19190614793565b610feb9190614745565b6015555050565b6018546001600160a01b031633146110405760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b80518251146110915760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610d08565b60005b82518161ffff1610156111a8576110ad6012600a614736565b828261ffff16815181106110c3576110c36147aa565b60200260200101516110d59190614793565b3360009081526020819052604090205410156111335760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610d08565b61119533848361ffff168151811061114d5761114d6147aa565b60200260200101516012600a6111639190614736565b858561ffff1681518110611179576111796147aa565b602002602001015161118b9190614793565b600080600161353a565b50806111a0816147d9565b915050611094565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461120791906147fa565b600854610e6b9190614780565b6018546001600160a01b031633146112625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b5460ff16156112b55760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610d08565b6107d08361ffff16111580156112d157506107d08261ffff1611155b80156112e357506107d08161ffff1611155b61132f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d08565b6109c461133c838561480d565b61ffff16111561138e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610d08565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6018546001600160a01b0316331461144f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050505050565b6018546001600160a01b0316331461151f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146115985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6103e860085460056115aa9190614793565b6115b49190614745565b81836008546115c39190614793565b6115cd9190614745565b10156116415760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610d08565b80826008546116509190614793565b61165a9190614745565b6014555050565b600c546001600160a01b03166000908152602081905260408120546127109061168b908490614793565b610e4a9190614745565b6018546001600160a01b031633146116e35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60968111156117345760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610d08565b601355565b6018546001600160a01b031633146117875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b0381166118035760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016118a15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d08565b6018546118b8906001600160a01b03166000611976565b6118c3816001611976565b6018546001600160a01b03166000908152602081905260409020541561190c576018546001600160a01b031660008181526020819052604090205461190a9190839061118b565b505b601880546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146119c45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b03163314611a3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60165460ff1615611a4d57600080fd5b306001600160a01b03821603611aa55760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610d08565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611af36012600a614736565b601454610e6b9190614745565b6018546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601854611b65906001600160a01b03166000611976565b601880547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611c195760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b805460ff19166001179055565b6018546001600160a01b03163314611c765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b80611ced576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610d65565b60025415611d54576203f48060025442611d079190614780565b11611d545760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610d08565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610d65565b5050565b6018546000906001600160a01b03163314611e215760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600b54611e4090309061010090046001600160a01b0316600019612f70565b50600190565b6018546001600160a01b03163314611e945760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b60165460ff1615611ee75760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d08565b601654610100900460ff16611f3e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d08565b6016546201000090046001600160a01b0316611f8457601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561200f57600080fd5b505af1925050508015612020575060015b506016805460ff19166001179055600c546001600160a01b03166000908152602081905260409020546127109061205890600a614793565b6120629190614745565b601055600c546001600160a01b03166000908152602081905260409020546127109061208f90601e614793565b6120999190614745565b60115542601755565b60006120af33848461307d565b5060019392505050565b6018546001600160a01b031633146121075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600a805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905561217e818361480d565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546000916121cf916201000081048216911661480d565b600a5461ffff918216925082916121f5918082169166010000000000009091041661480d565b61ffff16111561226d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610d08565b50505050565b6018546001600160a01b031633146122c15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b306001600160a01b038216036123195760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d08565b6018546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad919061482f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a89190614848565b6018546001600160a01b031633146124825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146125605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601654610100900460ff16156125b85760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d08565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126219190614865565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126929190614865565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190614865565b90506001600160a01b0381166128c257816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278b9190614865565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fc9190614865565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128859190614865565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556128f6565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03858116820292909217928390556111a892309291900416600019612f70565b6018546001600160a01b031633146129945760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b0381166129ea5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d08565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612a725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b601654610100900460ff1615612aca5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d08565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612b03573d6000803e3d6000fd5b50565b6018546001600160a01b03163314612b545760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6016546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d65565b6018546001600160a01b03163314612bfc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b8284600854612c0b9190614793565b612c159190614745565b6010556008548190612c28908490614793565b612c329190614745565b60118190556010541115612cae5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610d08565b600c546001600160a01b031660009081526020819052604090205461271090612cd8906096614793565b612ce29190614745565b6011541115612d595760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610d08565b620f4240600854612d6a9190614745565b6011541015612de15760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610d08565b620f4240600854612df29190614745565b601054101561226d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610d08565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190614848565b6018546001600160a01b03163314612f455760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610d08565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612fc65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610d08565b6001600160a01b03821661301c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610d08565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d08565b6001600160a01b0383166131775760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d08565b600082116131ed5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610d08565b6001600160a01b0384166000908152600160205260408120548190819060ff161561321b5760019250613249565b6001600160a01b03861660009081526001602052604090205460ff16156132455760019150613249565b5060015b6132538787613821565b1561345e5760165460ff166132aa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d08565b82806132b35750815b15613377576001600160a01b03871660009081526007602052604090205460ff161580156132fa57506001600160a01b03861660009081526007602052604090205460ff16155b15613377576014548511156133775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610d08565b600b546001600160a01b038781166101009092041614801590613398575081155b1561345e576001600160a01b03861660009081526007602052604090205460ff1661345e57601554856133e0886001600160a01b031660009081526020819052604090205490565b6133ea91906147fa565b111561345e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610d08565b811561352157600f5474010000000000000000000000000000000000000000900460ff1661352157600f547501000000000000000000000000000000000000000000900460ff16156135215730600090815260208190526040902054601054811061351f5760115460125460ff161561350957601354600c546001600160a01b0316600090815260208190526040902054612710916134fc91614793565b6135069190614745565b90505b808210613514578091505b61351d82613938565b505b505b61352f87878786868661353a565b979650505050505050565b60006135468787613821565b156135f9576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156135e2575060408051601f3d908101601f191682019092526135df91810190614848565b60015b6135eb57600080fd5b9050806135f757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061363b57506001600160a01b03871660009081526006602052604090205460ff165b15613644575060005b6001600160a01b0388166000908152602081905260408120805488929061366c908490614780565b90915550600090508161367f578661368b565b61368b8987878a613d94565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546136c191906147fa565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161370d91815260200190565b60405180910390a3601654610100900460ff166138125761372e8989613fbc565b601654610100900460ff1615801561374b575061374b8989613821565b801561377057506001600160a01b03891660009081526005602052604090205460ff16155b801561379557506001600160a01b03881660009081526005602052604090205460ff16155b801561379f575083155b156138125760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610d08565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061385057506018546001600160a01b03838116911614155b801561386757506018546001600160a01b03163214155b801561388c57506001600160a01b03821660009081526004602052604090205460ff16155b80156138b157506001600160a01b03831660009081526004602052604090205460ff16155b80156138c857506001600160a01b03821661dead14155b80156138dc57506001600160a01b03821615155b80156138f157506001600160a01b0383163014155b801561391157506016546001600160a01b03848116620100009092041614155b801561393157506016546001600160a01b03838116620100009092041614155b9392505050565b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036139cb5750613d69565b306000908152600360209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613a2e57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff1685613a4f9190614793565b613a599190614745565b613a639190614745565b90506000613a718285614780565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613aab57613aab6147aa565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b429190614865565b81600181518110613b5557613b556147aa565b6001600160a01b039283166020918202929092010152600b546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613bbb908590600090869030904290600401614882565b600060405180830381600087803b158015613bd557600080fd5b505af1925050508015613be6575060015b613bf35750505050613d69565b47600083613c018684614793565b613c0b9190614745565b90508415613d0757600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613cbb575060408051601f3d908101601f19168201909252613cb8918101906148be565b60015b613cca57505050505050613d69565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600e546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613d59576040519150601f19603f3d011682016040523d82523d6000602084013e613d5e565b606091505b505050505050505050505b50600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60408051608081018252600a5461ffff8082168084526201000083048216602085015264010000000083048216948401949094526601000000000000909104166060820181815260009391613dea90839061480d565b61ffff1690525060008515613e06575060095461ffff16613e30565b8415613e1f575060095462010000900461ffff16613e30565b50600954640100000000900461ffff165b801580613e435750606082015161ffff16155b15613e52578392505050610ee0565b6016546201000090046001600160a01b031630148015613e7c57504660011480613e7c5750466038145b15613e8657506111945b6000612710613e958387614793565b613e9f9190614745565b90506000836060015161ffff16846000015161ffff1683613ec09190614793565b613eca9190614745565b90506000613ed88284614780565b90508015613f45573060009081526020819052604081208054839290613eff9084906147fa565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613fa4578160086000828254613f5d9190614780565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613fae8388614780565b9a9950505050505050505050565b601654610100900460ff161561403a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610d08565b6140448282613821565b15801561405e5750600c546001600160a01b038281169116145b15611dcc576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017908190556201000090041661410957601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612506565b8015158114612b0357600080fd5b6000806040838503121561419b57600080fd5b82356141a68161417a565b915060208301356141b68161417a565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614219576142196141c1565b604052919050565b600067ffffffffffffffff82111561423b5761423b6141c1565b5060051b60200190565b6001600160a01b0381168114612b0357600080fd5b600082601f83011261426b57600080fd5b8135602061428061427b83614221565b6141f0565b82815260059290921b8401810191818101908684111561429f57600080fd5b8286015b848110156142c35780356142b681614245565b83529183019183016142a3565b509695505050505050565b600080604083850312156142e157600080fd5b823567ffffffffffffffff8111156142f857600080fd5b6143048582860161425a565b92505060208301356141b68161417a565b600060208083528351808285015260005b8181101561434257858101830151858201604001528201614326565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561437657600080fd5b823561438181614245565b946020939093013593505050565b6000602082840312156143a157600080fd5b813561393181614245565b6000806000606084860312156143c157600080fd5b83356143cc81614245565b925060208401356143dc81614245565b929592945050506040919091013590565b6000806040838503121561440057600080fd5b50508035926020909101359150565b6000806040838503121561442257600080fd5b823567ffffffffffffffff8082111561443a57600080fd5b6144468683870161425a565b935060209150818501358181111561445d57600080fd5b85019050601f8101861361447057600080fd5b803561447e61427b82614221565b81815260059190911b8201830190838101908883111561449d57600080fd5b928401925b828410156144bb578335825292840192908401906144a2565b80955050505050509250929050565b803561ffff811681146144dc57600080fd5b919050565b6000806000606084860312156144f657600080fd5b6144ff846144ca565b925061450d602085016144ca565b915061451b604085016144ca565b90509250925092565b6000806040838503121561453757600080fd5b82356141a681614245565b60006020828403121561455457600080fd5b5035919050565b6000806040838503121561456e57600080fd5b823561457981614245565b915060208301356141b681614245565b6000806000806080858703121561459f57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156145f45781516001600160a01b0316875295820195908201906001016145cf565b509495945050505050565b60408152600061461260408301856145bb565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561468d57816000190482111561467357614673614623565b8085161561468057918102915b93841c9390800290614657565b509250929050565b6000826146a457506001610e4a565b816146b157506000610e4a565b81600181146146c757600281146146d1576146ed565b6001915050610e4a565b60ff8411156146e2576146e2614623565b50506001821b610e4a565b5060208310610133831016604e8410600b8410161715614710575081810a610e4a565b61471a8383614652565b806000190482111561472e5761472e614623565b029392505050565b600061393160ff841683614695565b60008261477b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610e4a57610e4a614623565b8082028115828204841417610e4a57610e4a614623565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff8083168181036147f0576147f0614623565b6001019392505050565b80820180821115610e4a57610e4a614623565b61ffff81811683821601908082111561482857614828614623565b5092915050565b60006020828403121561484157600080fd5b5051919050565b60006020828403121561485a57600080fd5b81516139318161417a565b60006020828403121561487757600080fd5b815161393181614245565b85815284602082015260a0604082015260006148a160a08301866145bb565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156148d357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205b4537fbfd30302ce4b03fc4c2f8fc9f0d17b031aeab76ab912d8b4ebfdaaa6164736f6c63430008110033

Deployed Bytecode Sourcemap

4194:23213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5846:73;;;;;;;;;;;;5877:42;5846:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5846:73:0;;;;;;;;6166:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6166:28:0;245:177:1;15402:153:0;;;;;;;;;;-1:-1:-1;15402:153:0;;;;;:::i;:::-;;:::i;:::-;;14901:174;;;;;;;;;;-1:-1:-1;14901:174:0;;;;;:::i;:::-;;:::i;5190:112::-;;;;;;;;;;-1:-1:-1;5190:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5190:112:0;3030:365:1;10718:80:0;;;;;;;;;;-1:-1:-1;10790:5:0;;;;;;;;;;;;;;;;;10718:80;;;;;;;:::i;5755:26::-;;;;;;;;;;-1:-1:-1;5755:26:0;;;;;;;-1:-1:-1;;;;;5755:26:0;;;5722;;;;;;;;;;-1:-1:-1;5722:26:0;;;;;;;;;;;4425:14:1;;4418:22;4400:41;;4388:2;4373:18;5722:26:0;4260:187:1;11326:161:0;;;;;;;;;;-1:-1:-1;11326:161:0;;;;;:::i;:::-;;:::i;14229:140::-;;;;;;;;;;-1:-1:-1;14229:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14327:34:0;14303:4;14327:34;;;:25;:34;;;;;;;;;14229:140;17605:114;;;;;;;;;;;;;:::i;10453:83::-;;;;;;;;;;-1:-1:-1;10526:7:0;;10453:83;;11996:306;;;;;;;;;;-1:-1:-1;11996:306:0;;;;;:::i;:::-;;:::i;17217:264::-;;;;;;;;;;-1:-1:-1;17217:264:0;;;;;:::i;:::-;;:::i;24721:447::-;;;;;;;;;;-1:-1:-1;24721:447:0;;;;;:::i;:::-;;:::i;6274:33::-;;;;;;;;;;;;;;;;14533:141;;;;;;;;;;;;;:::i;5466:42::-;;;;;;;;;;;;5504:4;5466:42;;6201:25;;;;;;;;;;;;;;;;10542:80;;;;;;;;;;-1:-1:-1;10542:80:0;;4877:2;7023:36:1;;7011:2;6996:18;10542:80:0;6881:184:1;15753:544:0;;;;;;;;;;-1:-1:-1;15753:544:0;;;;;:::i;:::-;;:::i;15284:110::-;;;;;;;;;;-1:-1:-1;15284:110:0;;;;;:::i;:::-;;:::i;13804:140::-;;;;;;;;;;-1:-1:-1;13804:140:0;;;;;:::i;:::-;;:::i;16936:273::-;;;;;;;;;;-1:-1:-1;16936:273:0;;;;;:::i;:::-;;:::i;5788:21::-;;;;;;;;;;-1:-1:-1;5788:21:0;;;;-1:-1:-1;;;;;5788:21:0;;;5619:46;;;;;;;;;;;;5661:4;5619:46;;6438:34;;;;;;;;;;-1:-1:-1;6438:34:0;;;;;;;;17727:189;;;;;;;;;;-1:-1:-1;17727:189:0;;;;;:::i;:::-;;:::i;18631:217::-;;;;;;;;;;-1:-1:-1;18631:217:0;;;;;:::i;:::-;;:::i;9211:654::-;;;;;;;;;;-1:-1:-1;9211:654:0;;;;;:::i;:::-;;:::i;13952:127::-;;;;;;;;;;-1:-1:-1;13952:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14043:28:0;14019:4;14043:28;;;:19;:28;;;;;;;;;13952:127;6479:36;;;;;;;;;;-1:-1:-1;6479:36:0;;;;;;;;;;;14087:134;;;;;;;;;;-1:-1:-1;14087:134:0;;;;;:::i;:::-;;:::i;6552:26::-;;;;;;;;;;;;;;;;13434:222;;;;;;;;;;-1:-1:-1;13434:222:0;;;;;:::i;:::-;;:::i;13664:132::-;;;;;;;;;;-1:-1:-1;13664:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13758:30:0;13734:4;13758:30;;;:21;:30;;;;;;;;;13664:132;17489:108;;;;;;;;;;;;;:::i;11028:117::-;;;;;;;;;;-1:-1:-1;11028:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11121:16:0;11094:7;11121:16;;;;;;;;;;;;11028:117;9873:225;;;;;;;;;;;;;:::i;5926:92::-;;;;;;;;;;-1:-1:-1;5926:92:0;;;;-1:-1:-1;;;;;5926:92:0;;;15563:182;;;;;;;;;;;;;:::i;12931:495::-;;;;;;;;;;-1:-1:-1;12931:495:0;;;;;:::i;:::-;;:::i;10804:79::-;;;;;;;;;;-1:-1:-1;10874:6:0;;-1:-1:-1;;;;;10874:6:0;10804:79;;6025:64;;;;;;;;;;-1:-1:-1;6025:64:0;;;;-1:-1:-1;;;;;6025:64:0;;;11813:175;;;;;;;;;;;;;:::i;23674:593::-;;;;;;;;;;;;;:::i;10628:84::-;;;;;;;;;;-1:-1:-1;10702:7:0;;;;;;;;;;;;;;;;;10628:84;;11153:165;;;;;;;;;;-1:-1:-1;11153:165:0;;;;;:::i;:::-;;:::i;16305:424::-;;;;;;;;;;-1:-1:-1;16305:424:0;;;;;:::i;:::-;;:::i;24465:248::-;;;;;;;;;;-1:-1:-1;24465:248:0;;;;;:::i;:::-;;:::i;6233:34::-;;;;;;;;;;-1:-1:-1;6233:34:0;;;;;;;;18856:263;;;;;;;;;;-1:-1:-1;18856:263:0;;;;;:::i;:::-;;:::i;5311:146::-;;;;;;;;;;-1:-1:-1;5311:146:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8619:6:1;8652:15;;;8634:34;;8704:15;;;8699:2;8684:18;;8677:43;8756:15;;;8736:18;;;8729:43;;;;8808:15;;;8803:2;8788:18;;8781:43;8596:3;8581:19;5311:146:0;8386:444:1;10889:133:0;;;;;;;;;;-1:-1:-1;10889:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10991:19:0;;;10973:7;10991:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10889:133;12310:613;;;;;;;;;;-1:-1:-1;12310:613:0;;;;;:::i;:::-;;:::i;16737:191::-;;;;;;;;;;-1:-1:-1;16737:191:0;;;;;:::i;:::-;;:::i;24275:182::-;;;;;;;;;;;;;:::i;14746:147::-;;;;;;;;;;-1:-1:-1;14746:147:0;;;;;:::i;:::-;;:::i;5816:23::-;;;;;;;;;;-1:-1:-1;5816:23:0;;;;-1:-1:-1;;;;;5816:23:0;;;17924:699;;;;;;;;;;-1:-1:-1;17924:699:0;;;;;:::i;:::-;;:::i;6120:39::-;;;;;;;;;;-1:-1:-1;6120:39:0;;;;;;;;;;;15083:129;;;;;;;;;;-1:-1:-1;15083:129:0;;;;;:::i;:::-;;:::i;14377:148::-;;;;;;;;;;-1:-1:-1;14377:148:0;;;;;:::i;:::-;;:::i;15402:153::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;;;;;;;;;15497:11:::1;::::0;:50:::1;::::0;;;;10411:14:1;;10404:22;15497:50:0::1;::::0;::::1;10386:41:1::0;10470:14;;10463:22;10443:18;;;10436:50;15497:11:0;;;::::1;-1:-1:-1::0;;;;;15497:11:0::1;::::0;:26:::1;::::0;10359:18:1;;15497:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15402:153:::0;;:::o;14901:174::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;15009:11:::1;::::0;:58:::1;::::0;;;;:11;;;::::1;-1:-1:-1::0;;;;;15009:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;15049:8;;15059:7;;15009:58:::1;;;:::i;11326:161::-:0;11403:4;11420:37;11429:10;11441:7;11450:6;11420:8;:37::i;:::-;-1:-1:-1;11475:4:0;11326:161;;;;;:::o;17605:114::-;17652:7;17697:13;4877:2;17697;:13;:::i;:::-;17679:14;;:32;;;;:::i;:::-;17672:39;;17605:114;:::o;11996:306::-;-1:-1:-1;;;;;12117:19:0;;12096:4;12117:19;;;:11;:19;;;;;;;;12137:10;12117:31;;;;;;;;-1:-1:-1;;12117:52:0;12113:126;;-1:-1:-1;;;;;12186:19:0;;;;;;:11;:19;;;;;;;;12206:10;12186:31;;;;;;;:41;;12221:6;;12186:19;:41;;12221:6;;12186:41;:::i;:::-;;;;-1:-1:-1;;12113:126:0;12258:36;12268:6;12276:9;12287:6;12258:9;:36::i;:::-;12251:43;11996:306;-1:-1:-1;;;;11996:306:0:o;17217:264::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;17359:3:::1;17349:7;;:13;;;;:::i;:::-;17337:7;17326;17316;;:17;;;;:::i;:::-;17315:29;;;;:::i;:::-;:48;;17307:109;;;::::0;-1:-1:-1;;;17307:109:0;;13812:2:1;17307:109:0::1;::::0;::::1;13794:21:1::0;13851:2;13831:18;;;13824:30;13890:34;13870:18;;;13863:62;13961:18;13941;;;13934:46;13997:19;;17307:109:0::1;13610:412:1::0;17307:109:0::1;17466:7;17455;17445;;:17;;;;:::i;:::-;17444:29;;;;:::i;:::-;17427:14;:46:::0;-1:-1:-1;;17217:264:0:o;24721:447::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;24856:7:::1;:14;24837:8;:15;:33;24829:67;;;::::0;-1:-1:-1;;;24829:67:0;;14229:2:1;24829:67:0::1;::::0;::::1;14211:21:1::0;14268:2;14248:18;;;14241:30;14307:23;14287:18;;;14280:51;14348:18;;24829:67:0::1;14027:345:1::0;24829:67:0::1;24912:8;24907:254;24930:8;:15;24926:1;:19;;;24907:254;;;25011:13;4877:2;25011;:13;:::i;:::-;25000:7;25008:1;25000:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24985:10;11094:7:::0;11121:16;;;;;;;;;;;24975:49:::1;;24967:80;;;::::0;-1:-1:-1;;;24967:80:0;;14768:2:1;24967:80:0::1;::::0;::::1;14750:21:1::0;14807:2;14787:18;;;14780:30;14846:20;14826:18;;;14819:48;14884:18;;24967:80:0::1;14566:342:1::0;24967:80:0::1;25062:87;25079:10;25091:8;25100:1;25091:11;;;;;;;;;;:::i;:::-;;;;;;;4877:2;25115;:13;;;;:::i;:::-;25104:7;25112:1;25104:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25130:5;25137::::0;25144:4:::1;25062:16;:87::i;:::-;-1:-1:-1::0;24947:3:0;::::1;::::0;::::1;:::i;:::-;;;;24907:254;;;;24721:447:::0;;:::o;14533:141::-;14586:7;11121:16;;;;;;5877:42;11121:16;;;;14625:39;;11121:16;14625:39;:::i;:::-;14614:7;;:51;;;;:::i;15753:544::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;15861:14:::1;::::0;::::1;;15860:15;15852:45;;;::::0;-1:-1:-1;;;15852:45:0;;15447:2:1;15852:45:0::1;::::0;::::1;15429:21:1::0;15486:2;15466:18;;;15459:30;15525:19;15505:18;;;15498:47;15562:18;;15852:45:0::1;15245:341:1::0;15852:45:0::1;5504:4;15916:6;:21;;;;:65;;;;;5554:4;15958:7;:23;;;;15916:65;:117;;;;;5608:4;16002:11;:31;;;;15916:117;15908:170;;;::::0;-1:-1:-1;;;15908:170:0;;15793:2:1;15908:170:0::1;::::0;::::1;15775:21:1::0;15832:2;15812:18;;;15805:30;15871:25;15851:18;;;15844:53;15914:18;;15908:170:0::1;15591:347:1::0;15908:170:0::1;5661:4;16097:16;16106:7:::0;16097:6;:16:::1;:::i;:::-;:35;;;;16089:80;;;::::0;-1:-1:-1;;;16089:80:0;;16318:2:1;16089:80:0::1;::::0;::::1;16300:21:1::0;;;16337:18;;;16330:30;16396:34;16376:18;;;16369:62;16448:18;;16089:80:0::1;16116:356:1::0;16089:80:0::1;16180:9;:25:::0;;::::1;::::0;;::::1;16216:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16254:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15753:544::o;15284:110::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;15353:11:::1;::::0;:33:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15353:33:0::1;::::0;::::1;160:74:1::0;15353:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;15353:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15284:110:::0;:::o;13804:140::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;-1:-1:-1;;;;;13896:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13896:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13804:140::o;16936:273::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;17081:4:::1;17067:7;;17077:1;17067:11;;;;:::i;:::-;:18;;;;:::i;:::-;17055:7;17044;17034;;:17;;;;:::i;:::-;17033:29;;;;:::i;:::-;:53;;17025:121;;;::::0;-1:-1:-1;;;17025:121:0;;16679:2:1;17025:121:0::1;::::0;::::1;16661:21:1::0;16718:2;16698:18;;;16691:30;16757:34;16737:18;;;16730:62;16828:25;16808:18;;;16801:53;16871:19;;17025:121:0::1;16477:419:1::0;17025:121:0::1;17194:7;17183;17173;;:17;;;;:::i;:::-;17172:29;;;;:::i;:::-;17157:12;:44:::0;-1:-1:-1;;16936:273:0:o;17727:189::-;17856:6;;-1:-1:-1;;;;;17856:6:0;17818:7;11121:16;;;;;;;;;;;5708:5;;17846:41;;17866:21;;17846:41;:::i;:::-;17845:62;;;;:::i;18631:217::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;18761:3:::1;18735:22;:29;;18727:64;;;::::0;-1:-1:-1;;;18727:64:0;;17103:2:1;18727:64:0::1;::::0;::::1;17085:21:1::0;17142:2;17122:18;;;17115:30;17181:24;17161:18;;;17154:52;17223:18;;18727:64:0::1;16901:346:1::0;18727:64:0::1;18802:13;:38:::0;18631:217::o;9211:654::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;-1:-1:-1;;;;;9290:22:0;::::1;9282:96;;;::::0;-1:-1:-1;;;9282:96:0;;17454:2:1;9282:96:0::1;::::0;::::1;17436:21:1::0;17493:2;17473:18;;;17466:30;17532:34;17512:18;;;17505:62;17603:31;17583:18;;;17576:59;17652:19;;9282:96:0::1;17252:425:1::0;9282:96:0::1;9397:16:::0;-1:-1:-1;;;;;9397:16:0;::::1;::::0;9389:90:::1;;;::::0;-1:-1:-1;;;9389:90:0;;17454:2:1;9389:90:0::1;::::0;::::1;17436:21:1::0;17493:2;17473:18;;;17466:30;17532:34;17512:18;;;17505:62;17603:31;17583:18;;;17576:59;17652:19;;9389:90:0::1;17252:425:1::0;9389:90:0::1;9510:6;::::0;9490:34:::1;::::0;-1:-1:-1;;;;;9510:6:0::1;;9490:19;:34::i;:::-;9535:35;9555:8;9565:4;9535:19;:35::i;:::-;9605:6;::::0;-1:-1:-1;;;;;9605:6:0::1;9615:1;11121:16:::0;;;;;;;;;;;9595:21;9591:127:::1;;9650:6;::::0;-1:-1:-1;;;;;9650:6:0::1;11094:7:::0;11121:16;;;;;;;;;;;9633:73:::1;::::0;9650:6;9658:8;;9668:17:::1;11028:117:::0;9633:73:::1;;9591:127;9757:6;::::0;;-1:-1:-1;;;;;9774:17:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;9807:40:::1;::::0;9757:6;::::1;::::0;9774:17;9757:6;;9807:40:::1;::::0;9738:16:::1;::::0;9807:40:::1;9271:594;9211:654:::0;:::o;14087:134::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;-1:-1:-1;;;;;14175:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14175:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14087:134::o;13434:222::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;13518:14:::1;::::0;::::1;;13517:15;13509:24;;;::::0;::::1;;13575:4;-1:-1:-1::0;;;;;13552:28:0;::::1;::::0;13544:55:::1;;;::::0;-1:-1:-1;;;13544:55:0;;17884:2:1;13544:55:0::1;::::0;::::1;17866:21:1::0;17923:2;17903:18;;;17896:30;17962:16;17942:18;;;17935:44;17996:18;;13544:55:0::1;17682:338:1::0;13544:55:0::1;13610:11;:38:::0;;-1:-1:-1;;;;;13610:38:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13434:222::o;17489:108::-;17532:7;17575:13;4877:2;17575;:13;:::i;:::-;17559:12;;:30;;;;:::i;9873:225::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;9952:6:::1;::::0;9932:34:::1;::::0;-1:-1:-1;;;;;9952:6:0::1;;9932:19;:34::i;:::-;9996:6;::::0;;10013:19;;::::1;::::0;;;10048:42:::1;::::0;-1:-1:-1;;;;;9996:6:0;;::::1;::::0;9977:16:::1;::::0;9996:6;;10048:42:::1;::::0;9977:16;;10048:42:::1;9921:177;9873:225::o:0;15563:182::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;15716:14:::1;:21:::0;;-1:-1:-1;;15716:21:0::1;15733:4;15716:21;::::0;;15563:182::o;12931:495::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;13013:7:::1;13008:411;;-1:-1:-1::0;;;;;13037:13:0;;::::1;13053:5;13037:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13037:21:0::1;::::0;;13073:11:::1;::::0;:34;;;;;::::1;::::0;::::1;18193:74:1::0;;;;18283:18;;;18276:50;;;;13073:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18166:18:1;;13073:34:0::1;18025:307:1::0;13008:411:0::1;13144:17;::::0;:22;13140:135:::1;;13233:6;13213:17;;13195:15;:35;;;;:::i;:::-;:44;13187:72;;;::::0;-1:-1:-1;;;13187:72:0;;18539:2:1;13187:72:0::1;::::0;::::1;18521:21:1::0;18578:2;18558:18;;;18551:30;18617:17;18597:18;;;18590:45;18652:18;;13187:72:0::1;18337:339:1::0;13187:72:0::1;-1:-1:-1::0;;;;;13289:13:0;;::::1;;::::0;;;13305:4:::1;13289:13;::::0;;;;;;;;:20;;-1:-1:-1;;13289:20:0::1;::::0;::::1;::::0;;13344:15:::1;13324:17;:35:::0;13374:11:::1;::::0;:33;;;;;::::1;::::0;::::1;18193:74:1::0;;;;18283:18;;;18276:50;13374:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18166:18:1;;13374:33:0::1;18025:307:1::0;13008:411:0::1;12931:495:::0;;:::o;11813:175::-;9065:6;;11879:4;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;11928:9:::1;::::0;11896:62:::1;::::0;11913:4:::1;::::0;11928:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11928:9:0::1;-1:-1:-1::0;;11896:8:0::1;:62::i;:::-;-1:-1:-1::0;11976:4:0::1;11813:175:::0;:::o;23674:593::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;23736:14:::1;::::0;::::1;;23735:15;23727:52;;;::::0;-1:-1:-1;;;23727:52:0;;18883:2:1;23727:52:0::1;::::0;::::1;18865:21:1::0;18922:2;18902:18;;;18895:30;18961:26;18941:18;;;18934:54;19005:18;;23727:52:0::1;18681:348:1::0;23727:52:0::1;23798:16;::::0;::::1;::::0;::::1;;;23790:53;;;::::0;-1:-1:-1;;;23790:53:0;;19236:2:1;23790:53:0::1;::::0;::::1;19218:21:1::0;19275:2;19255:18;;;19248:30;19314:26;19294:18;;;19287:54;19358:18;;23790:53:0::1;19034:348:1::0;23790:53:0::1;23866:11;::::0;;;::::1;-1:-1:-1::0;;;;;23866:11:0::1;23854:106;;23908:11;:40:::0;;;::::1;23942:4;23908:40:::0;::::1;;::::0;;23854:106:::1;23974:11;::::0;23996:6:::1;::::0;23974:87:::1;::::0;;;;-1:-1:-1;;;;;23996:6:0;;::::1;23974:87;::::0;::::1;19610:74:1::0;19732:10;24011:12:0::1;19720:23:1::0;19700:18;;;19693:51;19792:18;24033:15:0::1;19780:31:1::0;19760:18;;;19753:59;4877:2:0::1;19828:18:1::0;;;19821:45;23974:11:0;;;::::1;;::::0;:21:::1;::::0;19582:19:1;;23974:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;24083:14:0::1;:21:::0;;-1:-1:-1;;24083:21:0::1;24100:4;24083:21;::::0;;24142:6:::1;::::0;-1:-1:-1;;;;;24142:6:0::1;-1:-1:-1::0;11121:16:0;;;;;;;;;;;24158:5:::1;::::0;24132:22:::1;::::0;24152:2:::1;24132:22;:::i;:::-;24131:32;;;;:::i;:::-;24115:13;:48:::0;24198:6:::1;::::0;-1:-1:-1;;;;;24198:6:0::1;11094:7:::0;11121:16;;;;;;;;;;;24214:5:::1;::::0;24188:22:::1;::::0;24208:2:::1;24188:22;:::i;:::-;24187:32;;;;:::i;:::-;24174:10;:45:::0;24244:15:::1;24230:11;:29:::0;23674:593::o;11153:165::-;11231:4;11248:40;11258:10;11270:9;11281:6;11248:9;:40::i;:::-;-1:-1:-1;11306:4:0;;11153:165;-1:-1:-1;;;11153:165:0:o;16305:424::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;16403:7:::1;:19:::0;;::::1;16473:29:::0;;::::1;::::0;::::1;::::0;16433;;::::1;::::0;::::1;::::0;;;;16403:19;;::::1;16433:29:::0;;;;;;;::::1;16473;;::::0;;16533:21:::1;16493:9:::0;16453;16533:21:::1;:::i;:::-;16513:7;:41:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;16600:9:::1;:17:::0;-1:-1:-1;;16581:36:0::1;::::0;16600:17;;::::1;::::0;::::1;::::0;16581:16:::1;:36;:::i;:::-;16656:7;:12:::0;16565:52:::1;::::0;;::::1;::::0;-1:-1:-1;16565:52:0;;16636:32:::1;::::0;16656:12;;::::1;::::0;16636:17;;;::::1;;:32;:::i;:::-;:41;;;;16628:93;;;::::0;-1:-1:-1;;;16628:93:0;;20079:2:1;16628:93:0::1;::::0;::::1;20061:21:1::0;20118:2;20098:18;;;20091:30;20157:34;20137:18;;;20130:62;20228:9;20208:18;;;20201:37;20255:19;;16628:93:0::1;19877:403:1::0;16628:93:0::1;16392:337;16305:424:::0;;;:::o;24465:248::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;24564:4:::1;-1:-1:-1::0;;;;;24547:22:0;::::1;::::0;24539:62:::1;;;::::0;-1:-1:-1;;;24539:62:0;;20487:2:1;24539:62:0::1;::::0;::::1;20469:21:1::0;20526:2;20506:18;;;20499:30;20565:29;20545:18;;;20538:57;20612:18;;24539:62:0::1;20285:351:1::0;24539:62:0::1;24666:6;::::0;24674:30:::1;::::0;;;;24698:4:::1;24674:30;::::0;::::1;160:74:1::0;24634:5:0;;-1:-1:-1;;;;;24651:14:0;;::::1;::::0;::::1;::::0;24666:6;;;::::1;::::0;24651:14;;24674:15:::1;::::0;133:18:1;;24674:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24651:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;21022:55:1;;;24651:54:0::1;::::0;::::1;21004:74:1::0;21094:18;;;21087:34;20977:18;;24651:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18856:263::-:0;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;18965:19:::1;:33:::0;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19009:22:::1;:47:::0;;-1:-1:-1;;19009:47:0::1;::::0;::::1;;;::::0;;19072:39:::1;::::0;4400:41:1;;;19072:39:0::1;::::0;4388:2:1;4373:18;19072:39:0::1;;;;;;;;18856:263:::0;;:::o;12310:613::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;12390:16:::1;::::0;::::1;::::0;::::1;;;12389:17;12381:60;;;::::0;-1:-1:-1;;;12381:60:0;;21584:2:1;12381:60:0::1;::::0;::::1;21566:21:1::0;21623:2;21603:18;;;21596:30;21662:32;21642:18;;;21635:60;21712:18;;12381:60:0::1;21382:354:1::0;12381:60:0::1;12452:20;12485:9;12452:43;;12506:16;12536:10;-1:-1:-1::0;;;;;12536:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12525:40:0::1;;12574:4;12581:10;-1:-1:-1::0;;;;;12581:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12525:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22250:15:1;;;12525:74:0::1;::::0;::::1;22232:34:1::0;22302:15;;22282:18;;;22275:43;22144:18;;12525:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12506:93:::0;-1:-1:-1;;;;;;12614:22:0;::::1;12610:200;;12673:10;-1:-1:-1::0;;;;;12673:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12662:43:0::1;;12714:4;12721:10;-1:-1:-1::0;;;;;12721:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12662:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22250:15:1;;;12662:77:0::1;::::0;::::1;22232:34:1::0;22302:15;;22282:18;;;22275:43;22144:18;;12662:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12653:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12653:86:0;;;::::1;::::0;;;::::1;::::0;;12610:200:::1;;;12781:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12781:17:0;::::1;;::::0;;12610:200:::1;12820:9;:22:::0;;;::::1;;-1:-1:-1::0;;;;;12820:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12853:62:::1;::::0;12870:4:::1;::::0;12885:9;;::::1;;-1:-1:-1::0;;12853:8:0::1;:62::i;16737:191::-:0;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;-1:-1:-1;;;;;16822:23:0;::::1;16814:59;;;::::0;-1:-1:-1;;;16814:59:0;;22531:2:1;16814:59:0::1;::::0;::::1;22513:21:1::0;22570:2;22550:18;;;22543:30;22609:25;22589:18;;;22582:53;22652:18;;16814:59:0::1;22329:347:1::0;16814:59:0::1;16884:15;:36:::0;;;::::1;-1:-1:-1::0;;;;;16884:36:0;;;::::1;::::0;;;::::1;::::0;;16737:191::o;24275:182::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;24342:16:::1;::::0;::::1;::::0;::::1;;;24341:17;24333:58;;;::::0;-1:-1:-1;;;24333:58:0;;22883:2:1;24333:58:0::1;::::0;::::1;22865:21:1::0;22922:2;22902:18;;;22895:30;22961;22941:18;;;22934:58;23009:18;;24333:58:0::1;22681:352:1::0;24333:58:0::1;24410:6;::::0;24402:47:::1;::::0;-1:-1:-1;;;;;24410:6:0;;::::1;::::0;24427:21:::1;24402:47:::0;::::1;;;::::0;24410:6:::1;24402:47:::0;24410:6;24402:47;24427:21;24410:6;24402:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24275:182::o:0;14746:147::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;14836:11:::1;::::0;:49:::1;::::0;;;;-1:-1:-1;;;;;18211:55:1;;;14836:49:0::1;::::0;::::1;18193:74:1::0;18310:14;;18303:22;18283:18;;;18276:50;14836:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;18166:18:1;;14836:49:0::1;18025:307:1::0;17924:699:0;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;18124:16:::1;18104;18094:7;;:26;;;;:::i;:::-;18093:47;;;;:::i;:::-;18077:13;:63:::0;18165:7:::1;::::0;18192:13;;18165:23:::1;::::0;18175:13;;18165:23:::1;:::i;:::-;18164:41;;;;:::i;:::-;18151:10;:54:::0;;;18224:13:::1;::::0;:27:::1;;18216:73;;;::::0;-1:-1:-1;;;18216:73:0;;23240:2:1;18216:73:0::1;::::0;::::1;23222:21:1::0;23279:2;23259:18;;;23252:30;23318:34;23298:18;;;23291:62;23389:3;23369:18;;;23362:31;23410:19;;18216:73:0::1;23038:397:1::0;18216:73:0::1;18333:6;::::0;-1:-1:-1;;;;;18333:6:0::1;11094:7:::0;11121:16;;;;;;;;;;;5708:5:::1;::::0;18323:23:::1;::::0;18343:3:::1;18323:23;:::i;:::-;18322:44;;;;:::i;:::-;18308:10;;:58;;18300:106;;;::::0;-1:-1:-1;;;18300:106:0;;23642:2:1;18300:106:0::1;::::0;::::1;23624:21:1::0;23681:2;23661:18;;;23654:30;23720:34;23700:18;;;23693:62;23791:5;23771:18;;;23764:33;23814:19;;18300:106:0::1;23440:399:1::0;18300:106:0::1;18449:9;18439:7;;:19;;;;:::i;:::-;18425:10;;:33;;18417:92;;;::::0;-1:-1:-1;;;18417:92:0;;24046:2:1;18417:92:0::1;::::0;::::1;24028:21:1::0;24085:2;24065:18;;;24058:30;24124:34;24104:18;;;24097:62;24195:16;24175:18;;;24168:44;24229:19;;18417:92:0::1;23844:410:1::0;18417:92:0::1;18555:9;18545:7;;:19;;;;:::i;:::-;18528:13;;:36;;18520:95;;;::::0;-1:-1:-1;;;18520:95:0;;24046:2:1;18520:95:0::1;::::0;::::1;24028:21:1::0;24085:2;24065:18;;;24058:30;24124:34;24104:18;;;24097:62;24195:16;24175:18;;;24168:44;24229:19;;18520:95:0::1;23844:410:1::0;15083:129:0;15170:11;;:34;;;;;-1:-1:-1;;;;;178:55:1;;;15170:34:0;;;160:74:1;15146:4:0;;15170:11;;;;;:25;;133:18:1;;15170:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14377:148::-;9065:6;;-1:-1:-1;;;;;9065:6:0;9075:10;9065:20;9057:50;;;;-1:-1:-1;;;9057:50:0;;10080:2:1;9057:50:0;;;10062:21:1;10119:2;10099:18;;;10092:30;-1:-1:-1;;;10138:18:1;;;10131:47;10195:18;;9057:50:0;9878:341:1;9057:50:0;-1:-1:-1;;;;;14473:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14473:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14377:148::o;11495:310::-;-1:-1:-1;;;;;11590:20:0;;11582:52;;;;-1:-1:-1;;;11582:52:0;;24461:2:1;11582:52:0;;;24443:21:1;24500:2;24480:18;;;24473:30;24539:21;24519:18;;;24512:49;24578:18;;11582:52:0;24259:343:1;11582:52:0;-1:-1:-1;;;;;11653:21:0;;11645:53;;;;-1:-1:-1;;;11645:53:0;;24461:2:1;11645:53:0;;;24443:21:1;24500:2;24480:18;;;24473:30;24539:21;24519:18;;;24512:49;24578:18;;11645:53:0;24259:343:1;11645:53:0;-1:-1:-1;;;;;11711:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11764:33;;391:25:1;;;11764:33:0;;364:18:1;11764:33:0;;;;;;;11495:310;;;:::o;19581:1946::-;19660:4;-1:-1:-1;;;;;19685:18:0;;19677:68;;;;-1:-1:-1;;;19677:68:0;;24809:2:1;19677:68:0;;;24791:21:1;24848:2;24828:18;;;24821:30;24887:34;24867:18;;;24860:62;24958:7;24938:18;;;24931:35;24983:19;;19677:68:0;24607:401:1;19677:68:0;-1:-1:-1;;;;;19764:16:0;;19756:64;;;;-1:-1:-1;;;19756:64:0;;25215:2:1;19756:64:0;;;25197:21:1;25254:2;25234:18;;;25227:30;25293:34;25273:18;;;25266:62;25364:5;25344:18;;;25337:33;25387:19;;19756:64:0;25013:399:1;19756:64:0;19848:1;19839:6;:10;19831:64;;;;-1:-1:-1;;;19831:64:0;;25619:2:1;19831:64:0;;;25601:21:1;25658:2;25638:18;;;25631:30;25697:34;25677:18;;;25670:62;25768:11;25748:18;;;25741:39;25797:19;;19831:64:0;25417:405:1;19831:64:0;-1:-1:-1;;;;;19994:13:0;;19906:8;19994:13;;;:7;:13;;;;;;19906:8;;;;19994:13;;19990:162;;;20030:4;20024:10;;19990:162;;;-1:-1:-1;;;;;20056:11:0;;;;;;:7;:11;;;;;;;;20052:100;;;20091:4;20084:11;;20052:100;;;-1:-1:-1;20136:4:0;20052:100;20166:20;20177:4;20183:2;20166:10;:20::i;:::-;20162:644;;;20207:14;;;;20203:89;;20242:34;;-1:-1:-1;;;20242:34:0;;26029:2:1;20242:34:0;;;26011:21:1;26068:2;26048:18;;;26041:30;26107:26;26087:18;;;26080:54;26151:18;;20242:34:0;25827:348:1;20203:89:0;20310:3;:11;;;;20317:4;20310:11;20306:232;;;-1:-1:-1;;;;;20346:27:0;;;;;;:21;:27;;;;;;;;20345:28;:58;;;;-1:-1:-1;;;;;;20378:25:0;;;;;;:21;:25;;;;;;;;20377:26;20345:58;20341:182;;;20446:12;;20436:6;:22;;20428:75;;;;-1:-1:-1;;;20428:75:0;;26382:2:1;20428:75:0;;;26364:21:1;26421:2;26401:18;;;26394:30;26460:34;26440:18;;;26433:62;26531:10;26511:18;;;26504:38;26559:19;;20428:75:0;26180:404:1;20428:75:0;20570:9;;-1:-1:-1;;;;;20556:24:0;;;20570:9;;;;;20556:24;;;;:33;;;20585:4;20584:5;20556:33;20552:243;;;-1:-1:-1;;;;;20615:25:0;;;;;;:21;:25;;;;;;;;20610:170;;20699:14;;20689:6;20673:13;20683:2;-1:-1:-1;;;;;11121:16:0;11094:7;11121:16;;;;;;;;;;;;11028:117;20673:13;:22;;;;:::i;:::-;:40;;20665:95;;;;-1:-1:-1;;;20665:95:0;;26791:2:1;20665:95:0;;;26773:21:1;26830:2;26810:18;;;26803:30;26869:34;26849:18;;;26842:62;26940:12;26920:18;;;26913:40;26970:19;;20665:95:0;26589:406:1;20665:95:0;20822:4;20818:632;;;20848:6;;;;;;;20843:596;;20879:19;;;;;;;20875:549;;;20972:4;20923:28;11121:16;;;;;;;;;;;21029:13;;21005:37;;21001:404;;21089:10;;21130:22;;;;21126:97;;;21187:13;;21177:6;;-1:-1:-1;;;;;21177:6:0;11094:7;11121:16;;;;;;;;;;;5708:5;;21167:33;;;:::i;:::-;21166:54;;;;:::i;:::-;21156:64;;21126:97;21277:7;21253:20;:31;21249:72;;21311:7;21288:30;;21249:72;21347:34;21360:20;21347:12;:34::i;:::-;21044:361;21001:404;20900:524;20875:549;21467:52;21484:4;21490:2;21494:6;21502:3;21507:4;21513:5;21467:16;:52::i;:::-;21460:59;19581:1946;-1:-1:-1;;;;;;;19581:1946:0:o;25176:1055::-;25295:4;25316:20;25327:4;25333:2;25316:10;:20::i;:::-;25312:228;;;25371:11;;:39;;;;;-1:-1:-1;;;;;27281:15:1;;;25371:39:0;;;27263:34:1;27333:15;;;27313:18;;;27306:43;27365:18;;;27358:34;;;25340:12:0;;25371:11;;;;;:21;;27175:18:1;;25371:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25371:39:0;;;;;;;;-1:-1:-1;;25371:39:0;;;;;;;;;;;;:::i;:::-;;;25367:122;;25478:8;;;25367:122;25461:5;-1:-1:-1;25507:7:0;25503:26;;25518:8;;;25503:26;25338:202;25312:228;-1:-1:-1;;;;;25584:25:0;;25550:12;25584:25;;;:19;:25;;;;;;25565:4;;25584:25;;;:52;;-1:-1:-1;;;;;;25613:23:0;;;;;;:19;:23;;;;;;;;25584:52;25580:99;;;-1:-1:-1;25662:5:0;25580:99;-1:-1:-1;;;;;25689:13:0;;:7;:13;;;;;;;;;;:23;;25706:6;;25689:7;:23;;25706:6;;25689:23;:::i;:::-;;;;-1:-1:-1;25723:22:0;;-1:-1:-1;25749:7:0;25748:55;;25797:6;25748:55;;;25760:34;25770:4;25776:3;25781:4;25787:6;25760:9;:34::i;:::-;25723:80;;25829:14;25814:7;:11;25822:2;-1:-1:-1;;;;;25814:11:0;-1:-1:-1;;;;;25814:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25874:2;-1:-1:-1;;;;;25859:34:0;25868:4;-1:-1:-1;;;;;25859:34:0;;25878:14;25859:34;;;;391:25:1;;379:2;364:18;;245:177;25859:34:0;;;;;;;;25909:16;;;;;;;25904:298;;25942:28;25961:4;25967:2;25942:18;:28::i;:::-;25990:16;;;;;;;25989:17;:41;;;;;26010:20;26021:4;26027:2;26010:10;:20::i;:::-;25989:77;;;;-1:-1:-1;;;;;;26035:31:0;;;;;;:25;:31;;;;;;;;26034:32;25989:77;:111;;;;-1:-1:-1;;;;;;26071:29:0;;;;;;:25;:29;;;;;;;;26070:30;25989:111;:121;;;;;26105:5;26104:6;25989:121;25985:206;;;26131:44;;-1:-1:-1;;;26131:44:0;;27605:2:1;26131:44:0;;;27587:21:1;27644:2;27624:18;;;27617:30;27683:34;27663:18;;;27656:62;27754:4;27734:18;;;27727:32;27776:19;;26131:44:0;27403:398:1;25985:206:0;-1:-1:-1;26219:4:0;;25176:1055;-1:-1:-1;;;;;;;;25176:1055:0:o;19127:446::-;19228:6;;19196:4;;-1:-1:-1;;;;;19220:14:0;;;19228:6;;19220:14;;;;:43;;-1:-1:-1;19257:6:0;;-1:-1:-1;;;;;19251:12:0;;;19257:6;;19251:12;;19220:43;:79;;;;-1:-1:-1;19293:6:0;;-1:-1:-1;;;;;19293:6:0;19280:9;:19;;19220:79;:118;;;;-1:-1:-1;;;;;;19317:21:0;;;;;;:17;:21;;;;;;;;19316:22;19220:118;:159;;;;-1:-1:-1;;;;;;19356:23:0;;;;;;:17;:23;;;;;;;;19355:24;19220:159;:186;;;;-1:-1:-1;;;;;;19396:10:0;;5877:42;19396:10;;19220:186;:219;;;;-1:-1:-1;;;;;;19423:16:0;;;;19220:219;:257;;;;-1:-1:-1;;;;;;19456:21:0;;19472:4;19456:21;;19220:257;:302;;;;-1:-1:-1;19510:11:0;;-1:-1:-1;;;;;19494:28:0;;;19510:11;;;;;19494:28;;19220:302;:345;;;;-1:-1:-1;19553:11:0;;-1:-1:-1;;;;;19539:26:0;;;19553:11;;;;;19539:26;;19220:345;19213:352;19127:446;-1:-1:-1;;;19127:446:0:o;21535:1560::-;6747:6;:13;;;;;;;;21618:30:::1;::::0;;::::1;::::0;::::1;::::0;;21641:7:::1;21618:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;6747:13;21663:21;21659:60:::1;;21701:7;;;21659:60;21755:4;21735:26;::::0;;;:11:::1;:26;::::0;;;;;;;21770:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21770:9:0::1;21735:46:::0;;;;;;;;-1:-1:-1;;21735:67:0::1;21731:166;;21839:4;21819:26;::::0;;;:11:::1;:26;::::0;;;;;;;21854:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21854:9:0::1;21819:46:::0;;;;;;;-1:-1:-1;;21819:66:0;;21731:166:::1;21909:17;21994:1;21974:6;:16;;;21930:60;;21954:6;:16;;;21931:39;;:20;:39;;;;:::i;:::-;21930:60;;;;:::i;:::-;21929:66;;;;:::i;:::-;21909:86:::0;-1:-1:-1;22006:15:0::1;22024:32;21909:86:::0;22024:20;:32:::1;:::i;:::-;22101:16;::::0;;22115:1:::1;22101:16:::0;;;;;::::1;::::0;;22006:50;;-1:-1:-1;22077:21:0::1;::::0;22101:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22101:16:0::1;22077:40;;22146:4;22128;22133:1;22128:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22128:23:0::1;;;-1:-1:-1::0;;;;;22128:23:0::1;;;::::0;::::1;22172:9;;;;;;;;;-1:-1:-1::0;;;;;22172:9:0::1;-1:-1:-1::0;;;;;22172:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22162:4;22167:1;22162:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22162:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22205:9:::1;::::0;:186:::1;::::0;;;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;22280:7;;22302:1:::1;::::0;22318:4;;22345::::1;::::0;22365:15:::1;::::0;22205:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22201:233;;22416:7;;;;;;22201:233;22467:21;22446:18;22553:7:::0;22527:22:::1;22540:9:::0;22467:21;22527:22:::1;:::i;:::-;22526:34;;;;:::i;:::-;22499:61:::0;-1:-1:-1;22577:13:0;;22573:400:::1;;22611:9;::::0;:222:::1;::::0;;;;22688:4:::1;22611:222;::::0;::::1;28780:34:1::0;28830:18;;;28823:34;;;22740:1:0::1;28873:18:1::0;;;28866:34;;;28916:18;;;28909:34;5877:42:0::1;28959:19:1::0;;;28952:44;22803:15:0::1;29012:19:1::0;;;29005:35;22611:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;22611:9:0::1;::::0;:25:::1;::::0;22644:16;;28691:19:1;;22611:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22611:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22611:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22607:355;;22940:7;;;;;;;;22607:355;-1:-1:-1::0;;22858:40:0::1;::::0;;29536:25:1;;;29592:2;29577:18;;29570:34;;;22858:40:0::1;::::0;-1:-1:-1;29509:18:1;22858:40:0::1;;;;;;;22607:355;23021:15;::::0;:66:::1;::::0;22985:12:::1;::::0;-1:-1:-1;;;;;23021:15:0::1;::::0;23077:5:::1;::::0;23049:21:::1;::::0;22985:12;23021:66;22985:12;23021:66;23049:21;23021:15;23077:5;23021:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;6771:1:0::1;-1:-1:-1::0;6783:6:0;:14;;;;;;21535:1560::o;26239:1165::-;26347:30;;;;;;;;26370:7;26347:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26327:7;;26347:30;26388:31;;26347:30;;26388:31;:::i;:::-;;;;;-1:-1:-1;26430:18:0;26459:205;;;;-1:-1:-1;26496:9:0;:16;;;26459:205;;;26534:4;26530:134;;;-1:-1:-1;26568:9:0;:17;;;;;;26530:134;;;-1:-1:-1;26631:9:0;:21;;;;;;26530:134;26678:15;;;:40;;-1:-1:-1;26697:16:0;;;;:21;;;26678:40;26674:64;;;26729:6;26722:13;;;;;;26674:64;26760:11;;;;;-1:-1:-1;;;;;26760:11:0;26784:4;26752:37;:110;;;;;26807:13;26824:1;26807:18;:54;;;;26842:13;26859:2;26842:19;26807:54;26748:138;;;-1:-1:-1;26879:4:0;26748:138;26896:17;5708:5;26916:19;26925:10;26916:6;:19;:::i;:::-;:38;;;;:::i;:::-;26896:58;;26965:18;27014:6;:16;;;26986:44;;26999:6;:11;;;26987:23;;:9;:23;;;;:::i;:::-;26986:44;;;;:::i;:::-;26965:65;-1:-1:-1;27041:14:0;27058:22;26965:65;27058:9;:22;:::i;:::-;27041:39;-1:-1:-1;27095:10:0;;27091:132;;27138:4;27122:7;:22;;;;;;;;;;:32;;27148:6;;27122:7;:32;;27148:6;;27122:32;:::i;:::-;;;;-1:-1:-1;;27174:37:0;;391:25:1;;;27197:4:0;;-1:-1:-1;;;;;27174:37:0;;;;;379:2:1;364:18;27174:37:0;;;;;;;27091:132;27237:14;;27233:126;;27279:10;27268:7;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27309:38:0;;391:25:1;;;27332:1:0;;-1:-1:-1;;;;;27309:38:0;;;;;379:2:1;364:18;27309:38:0;;;;;;;27233:126;27378:18;27387:9;27378:6;:18;:::i;:::-;27371:25;26239:1165;-1:-1:-1;;;;;;;;;;26239:1165:0:o;23103:563::-;23186:16;;;;;;;23185:17;23177:65;;;;-1:-1:-1;;;23177:65:0;;30027:2:1;23177:65:0;;;30009:21:1;30066:2;30046:18;;;30039:30;30105:34;30085:18;;;30078:62;30176:5;30156:18;;;30149:33;30199:19;;23177:65:0;29825:399:1;23177:65:0;23258:20;23269:4;23275:2;23258:10;:20::i;:::-;23257:21;:37;;;;-1:-1:-1;23288:6:0;;-1:-1:-1;;;;;23282:12:0;;;23288:6;;23282:12;23257:37;23253:406;;;-1:-1:-1;;;;;23311:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;23311:30:0;;;23337:4;23311:30;;;;;;23356:19;:25;;;;;:32;;;;;;;;;;23403:16;:23;;;;23311:30;23403:23;;;;;23453:11;;;;23441:114;;23499:11;:40;;;;23533:4;23499:40;;;;;23441:114;23569:19;:26;;;;;;;;23615:32;;-1:-1:-1;4400:41:1;;23615:32:0;;4388:2:1;4373:18;23615:32:0;4260:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:607::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3684:3;3869:1;3864:2;3855:6;3844:9;3840:22;3836:31;3829:42;3998:2;-1:-1:-1;;3923:2:1;3915:6;3911:15;3907:88;3896:9;3892:104;3888:113;3880:121;;;;3400:607;;;;:::o;4452:315::-;4520:6;4528;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:31;4680:5;4655:31;:::i;:::-;4705:5;4757:2;4742:18;;;;4729:32;;-1:-1:-1;;;4452:315:1:o;4772:247::-;4831:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:52;;;4900:1;4897;4890:12;4852:52;4939:9;4926:23;4958:31;4983:5;4958:31;:::i;5024:456::-;5101:6;5109;5117;5170:2;5158:9;5149:7;5145:23;5141:32;5138:52;;;5186:1;5183;5176:12;5138:52;5225:9;5212:23;5244:31;5269:5;5244:31;:::i;:::-;5294:5;-1:-1:-1;5351:2:1;5336:18;;5323:32;5364:33;5323:32;5364:33;:::i;:::-;5024:456;;5416:7;;-1:-1:-1;;;5470:2:1;5455:18;;;;5442:32;;5024:456::o;5485:248::-;5553:6;5561;5614:2;5602:9;5593:7;5589:23;5585:32;5582:52;;;5630:1;5627;5620:12;5582:52;-1:-1:-1;;5653:23:1;;;5723:2;5708:18;;;5695:32;;-1:-1:-1;5485:248:1:o;5738:1138::-;5856:6;5864;5917:2;5905:9;5896:7;5892:23;5888:32;5885:52;;;5933:1;5930;5923:12;5885:52;5973:9;5960:23;6002:18;6043:2;6035:6;6032:14;6029:34;;;6059:1;6056;6049:12;6029:34;6082:61;6135:7;6126:6;6115:9;6111:22;6082:61;:::i;:::-;6072:71;;6162:2;6152:12;;6217:2;6206:9;6202:18;6189:32;6246:2;6236:8;6233:16;6230:36;;;6262:1;6259;6252:12;6230:36;6285:24;;;-1:-1:-1;6340:4:1;6332:13;;6328:27;-1:-1:-1;6318:55:1;;6369:1;6366;6359:12;6318:55;6405:2;6392:16;6428:60;6444:43;6484:2;6444:43;:::i;6428:60::-;6522:15;;;6604:1;6600:10;;;;6592:19;;6588:28;;;6553:12;;;;6628:19;;;6625:39;;;6660:1;6657;6650:12;6625:39;6684:11;;;;6704:142;6720:6;6715:3;6712:15;6704:142;;;6786:17;;6774:30;;6737:12;;;;6824;;;;6704:142;;;6865:5;6855:15;;;;;;;5738:1138;;;;;:::o;7070:159::-;7137:20;;7197:6;7186:18;;7176:29;;7166:57;;7219:1;7216;7209:12;7166:57;7070:159;;;:::o;7234:328::-;7308:6;7316;7324;7377:2;7365:9;7356:7;7352:23;7348:32;7345:52;;;7393:1;7390;7383:12;7345:52;7416:28;7434:9;7416:28;:::i;:::-;7406:38;;7463:37;7496:2;7485:9;7481:18;7463:37;:::i;:::-;7453:47;;7519:37;7552:2;7541:9;7537:18;7519:37;:::i;:::-;7509:47;;7234:328;;;;;:::o;7567:382::-;7632:6;7640;7693:2;7681:9;7672:7;7668:23;7664:32;7661:52;;;7709:1;7706;7699:12;7661:52;7748:9;7735:23;7767:31;7792:5;7767:31;:::i;7954:180::-;8013:6;8066:2;8054:9;8045:7;8041:23;8037:32;8034:52;;;8082:1;8079;8072:12;8034:52;-1:-1:-1;8105:23:1;;7954:180;-1:-1:-1;7954:180:1:o;8835:388::-;8903:6;8911;8964:2;8952:9;8943:7;8939:23;8935:32;8932:52;;;8980:1;8977;8970:12;8932:52;9019:9;9006:23;9038:31;9063:5;9038:31;:::i;:::-;9088:5;-1:-1:-1;9145:2:1;9130:18;;9117:32;9158:33;9117:32;9158:33;:::i;9488:385::-;9574:6;9582;9590;9598;9651:3;9639:9;9630:7;9626:23;9622:33;9619:53;;;9668:1;9665;9658:12;9619:53;-1:-1:-1;;9691:23:1;;;9761:2;9746:18;;9733:32;;-1:-1:-1;9812:2:1;9797:18;;9784:32;;9863:2;9848:18;9835:32;;-1:-1:-1;9488:385:1;-1:-1:-1;9488:385:1:o;10497:484::-;10550:3;10588:5;10582:12;10615:6;10610:3;10603:19;10641:4;10670:2;10665:3;10661:12;10654:19;;10707:2;10700:5;10696:14;10728:1;10738:218;10752:6;10749:1;10746:13;10738:218;;;10817:13;;-1:-1:-1;;;;;10813:62:1;10801:75;;10896:12;;;;10931:15;;;;10774:1;10767:9;10738:218;;;-1:-1:-1;10972:3:1;;10497:484;-1:-1:-1;;;;;10497:484:1:o;10986:342::-;11187:2;11176:9;11169:21;11150:4;11207:56;11259:2;11248:9;11244:18;11236:6;11207:56;:::i;:::-;11199:64;;11313:6;11306:14;11299:22;11294:2;11283:9;11279:18;11272:50;10986:342;;;;;:::o;11333:184::-;11385:77;11382:1;11375:88;11482:4;11479:1;11472:15;11506:4;11503:1;11496:15;11522:482;11611:1;11654:5;11611:1;11668:330;11689:7;11679:8;11676:21;11668:330;;;11808:4;-1:-1:-1;;11736:77:1;11730:4;11727:87;11724:113;;;11817:18;;:::i;:::-;11867:7;11857:8;11853:22;11850:55;;;11887:16;;;;11850:55;11966:22;;;;11926:15;;;;11668:330;;;11672:3;11522:482;;;;;:::o;12009:866::-;12058:5;12088:8;12078:80;;-1:-1:-1;12129:1:1;12143:5;;12078:80;12177:4;12167:76;;-1:-1:-1;12214:1:1;12228:5;;12167:76;12259:4;12277:1;12272:59;;;;12345:1;12340:130;;;;12252:218;;12272:59;12302:1;12293:10;;12316:5;;;12340:130;12377:3;12367:8;12364:17;12361:43;;;12384:18;;:::i;:::-;-1:-1:-1;;12440:1:1;12426:16;;12455:5;;12252:218;;12554:2;12544:8;12541:16;12535:3;12529:4;12526:13;12522:36;12516:2;12506:8;12503:16;12498:2;12492:4;12489:12;12485:35;12482:77;12479:159;;;-1:-1:-1;12591:19:1;;;12623:5;;12479:159;12670:34;12695:8;12689:4;12670:34;:::i;:::-;12800:6;-1:-1:-1;;12728:79:1;12719:7;12716:92;12713:118;;;12811:18;;:::i;:::-;12849:20;;12009:866;-1:-1:-1;;;12009:866:1:o;12880:140::-;12938:5;12967:47;13008:4;12998:8;12994:19;12988:4;12967:47;:::i;13025:274::-;13065:1;13091;13081:189;;13126:77;13123:1;13116:88;13227:4;13224:1;13217:15;13255:4;13252:1;13245:15;13081:189;-1:-1:-1;13284:9:1;;13025:274::o;13304:128::-;13371:9;;;13392:11;;;13389:37;;;13406:18;;:::i;13437:168::-;13510:9;;;13541;;13558:15;;;13552:22;;13538:37;13528:71;;13579:18;;:::i;14377:184::-;14429:77;14426:1;14419:88;14526:4;14523:1;14516:15;14550:4;14547:1;14540:15;14913:197;14951:3;14979:6;15020:2;15013:5;15009:14;15047:2;15038:7;15035:15;15032:41;;15053:18;;:::i;:::-;15102:1;15089:15;;14913:197;-1:-1:-1;;;14913:197:1:o;15115:125::-;15180:9;;;15201:10;;;15198:36;;;15214:18;;:::i;15943:168::-;16010:6;16036:10;;;16048;;;16032:27;;16071:11;;;16068:37;;;16085:18;;:::i;:::-;16068:37;15943:168;;;;:::o;20641:184::-;20711:6;20764:2;20752:9;20743:7;20739:23;20735:32;20732:52;;;20780:1;20777;20770:12;20732:52;-1:-1:-1;20803:16:1;;20641:184;-1:-1:-1;20641:184:1:o;21132:245::-;21199:6;21252:2;21240:9;21231:7;21227:23;21223:32;21220:52;;;21268:1;21265;21258:12;21220:52;21300:9;21294:16;21319:28;21341:5;21319:28;:::i;21741:251::-;21811:6;21864:2;21852:9;21843:7;21839:23;21835:32;21832:52;;;21880:1;21877;21870:12;21832:52;21912:9;21906:16;21931:31;21956:5;21931:31;:::i;27806:605::-;28105:6;28094:9;28087:25;28148:6;28143:2;28132:9;28128:18;28121:34;28191:3;28186:2;28175:9;28171:18;28164:31;28068:4;28212:57;28264:3;28253:9;28249:19;28241:6;28212:57;:::i;:::-;-1:-1:-1;;;;;28305:55:1;;;;28300:2;28285:18;;28278:83;-1:-1:-1;28392:3:1;28377:19;28370:35;28204:65;27806:605;-1:-1:-1;;;27806:605:1:o;29051:306::-;29139:6;29147;29155;29208:2;29196:9;29187:7;29183:23;29179:32;29176:52;;;29224:1;29221;29214:12;29176:52;29253:9;29247:16;29237:26;;29303:2;29292:9;29288:18;29282:25;29272:35;;29347:2;29336:9;29332:18;29326:25;29316:35;;29051:306;;;;;:::o

Swarm Source

ipfs://5b4537fbfd30302ce4b03fc4c2f8fc9f0d17b031aeab76ab912d8b4ebfdaaa61

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.