ETH Price: $3,956.41 (+1.53%)

Contract

0x8735DE175334949dB1A20ce8a46f6DF6b4893aAe
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve187799822023-12-13 21:40:11368 days ago1702503611IN
0x8735DE17...6b4893aAe
0 ETH0.001230950.67751989
Approve173309262023-05-24 18:48:11571 days ago1684954091IN
0x8735DE17...6b4893aAe
0 ETH0.002197647.247085
Approve167366082023-03-01 22:02:23655 days ago1677708143IN
0x8735DE17...6b4893aAe
0 ETH0.0016377235.21001065
Approve160741972022-11-29 7:36:47747 days ago1669707407IN
0x8735DE17...6b4893aAe
0 ETH0.0005400311.59553685
Approve155822392022-09-21 14:06:59816 days ago1663769219IN
0x8735DE17...6b4893aAe
0 ETH0.0005248511.2694414
Approve153038852022-08-08 21:03:04860 days ago1659992584IN
0x8735DE17...6b4893aAe
0 ETH0.0015212932.66477931
Approve148909132022-06-02 12:12:54927 days ago1654171974IN
0x8735DE17...6b4893aAe
0 ETH0.0014816931.8143637
Approve148501782022-05-26 21:06:01934 days ago1653599161IN
0x8735DE17...6b4893aAe
0 ETH0.0019114441.04197118
Approve148477992022-05-26 11:51:34934 days ago1653565894IN
0x8735DE17...6b4893aAe
0 ETH0.0014844231.87316135
Approve148441982022-05-25 21:34:20935 days ago1653514460IN
0x8735DE17...6b4893aAe
0 ETH0.0011100245.70067001
Approve148390202022-05-25 1:27:24936 days ago1653442044IN
0x8735DE17...6b4893aAe
0 ETH0.000881118.91871729
Transfer148381832022-05-24 22:00:20936 days ago1653429620IN
0x8735DE17...6b4893aAe
0 ETH0.0019905424.22388459
Approve148374222022-05-24 19:14:49936 days ago1653419689IN
0x8735DE17...6b4893aAe
0 ETH0.0015009532.22806548
Transfer148355292022-05-24 11:32:08936 days ago1653391928IN
0x8735DE17...6b4893aAe
0 ETH0.0050169422.3200704
Transfer148354632022-05-24 11:16:10936 days ago1653390970IN
0x8735DE17...6b4893aAe
0 ETH0.0039353717.50823896
Transfer148352392022-05-24 10:30:44936 days ago1653388244IN
0x8735DE17...6b4893aAe
0 ETH0.0018931323.80249953
Transfer148352392022-05-24 10:30:44936 days ago1653388244IN
0x8735DE17...6b4893aAe
0 ETH0.0053498723.80249953
Transfer148351672022-05-24 10:09:51936 days ago1653386991IN
0x8735DE17...6b4893aAe
0 ETH0.0028386812.62914059
Transfer148349672022-05-24 9:25:22936 days ago1653384322IN
0x8735DE17...6b4893aAe
0 ETH0.0021899914.56608739
Transfer148349442022-05-24 9:20:21936 days ago1653384021IN
0x8735DE17...6b4893aAe
0 ETH0.0029544613.91296753
Transfer148349392022-05-24 9:19:15936 days ago1653383955IN
0x8735DE17...6b4893aAe
0 ETH0.0042018815.71448515
Transfer148345882022-05-24 7:54:56936 days ago1653378896IN
0x8735DE17...6b4893aAe
0 ETH0.0040921318.20565437
Transfer148341032022-05-24 6:00:40936 days ago1653372040IN
0x8735DE17...6b4893aAe
0 ETH0.0032043213.04646246
Transfer148332312022-05-24 2:39:32937 days ago1653359972IN
0x8735DE17...6b4893aAe
0 ETH0.0064288328.3507113
Transfer148332272022-05-24 2:38:09937 days ago1653359889IN
0x8735DE17...6b4893aAe
0 ETH0.0060385526.62959985
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
158104152022-10-23 11:08:23784 days ago1666523303
0x8735DE17...6b4893aAe
0.0078781 ETH
158104152022-10-23 11:08:23784 days ago1666523303
0x8735DE17...6b4893aAe
0.00271658 ETH
158104152022-10-23 11:08:23784 days ago1666523303
0x8735DE17...6b4893aAe
0.00135829 ETH
158104152022-10-23 11:08:23784 days ago1666523303
0x8735DE17...6b4893aAe
0.01195299 ETH
156190612022-09-26 17:34:23811 days ago1664213663
0x8735DE17...6b4893aAe
0.00761295 ETH
156190612022-09-26 17:34:23811 days ago1664213663
0x8735DE17...6b4893aAe
0.00262515 ETH
156190612022-09-26 17:34:23811 days ago1664213663
0x8735DE17...6b4893aAe
0.00131257 ETH
156190612022-09-26 17:34:23811 days ago1664213663
0x8735DE17...6b4893aAe
0.01155069 ETH
148909162022-06-02 12:13:27927 days ago1654172007
0x8735DE17...6b4893aAe
0.00777207 ETH
148909162022-06-02 12:13:27927 days ago1654172007
0x8735DE17...6b4893aAe
0.00268002 ETH
148909162022-06-02 12:13:27927 days ago1654172007
0x8735DE17...6b4893aAe
0.00134001 ETH
148909162022-06-02 12:13:27927 days ago1654172007
0x8735DE17...6b4893aAe
0.01178266 ETH
148382382022-05-24 22:13:12936 days ago1653430392
0x8735DE17...6b4893aAe
0.0326617 ETH
148382382022-05-24 22:13:12936 days ago1653430392
0x8735DE17...6b4893aAe
0.01126265 ETH
148382382022-05-24 22:13:12936 days ago1653430392
0x8735DE17...6b4893aAe
0.00000945 ETH
148382382022-05-24 22:13:12936 days ago1653430392
0x8735DE17...6b4893aAe
0.00563132 ETH
148382382022-05-24 22:13:12936 days ago1653430392
0x8735DE17...6b4893aAe
0.04954508 ETH
148340002022-05-24 5:37:48936 days ago1653370668
0x8735DE17...6b4893aAe
0.03433816 ETH
148340002022-05-24 5:37:48936 days ago1653370668
0x8735DE17...6b4893aAe
0.01184074 ETH
148340002022-05-24 5:37:48936 days ago1653370668
0x8735DE17...6b4893aAe
0.0000106 ETH
148340002022-05-24 5:37:48936 days ago1653370668
0x8735DE17...6b4893aAe
0.00592037 ETH
148340002022-05-24 5:37:48936 days ago1653370668
0x8735DE17...6b4893aAe
0.05208828 ETH
148339082022-05-24 5:21:23936 days ago1653369683
0x8735DE17...6b4893aAe
0.03479727 ETH
148339082022-05-24 5:21:23936 days ago1653369683
0x8735DE17...6b4893aAe
0.01199905 ETH
148339082022-05-24 5:21:23936 days ago1653369683
0x8735DE17...6b4893aAe
0.000011 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnimeVerse

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-11
*/

// 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 AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function getInitializers() external returns (string memory, string memory, uint256, uint8);
}

interface Cashier {
    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address user, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
    function getUserInfo(address user) external view returns(string memory, string memory, string memory, string memory);
    function getUserRealizedRewards(address user) external view returns (uint256);
    function getPendingRewards(address user) external view returns (uint256);
    function initialize() external;
}

interface Migrator {
    function getTotalNecessaryTokens() external view returns (uint256);
}

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

    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    uint256 private _tTotal;

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

    struct Ratios {
        uint16 rewards;
        uint16 liquidity;
        uint16 marketing;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        rewards: 800,
        liquidity: 600,
        marketing: 2580,
        total: 800 + 600 + 2580
        });

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

    IRouter02 public dexRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;

    struct TaxWallets {
        address payable marketing;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xa7E83DbA467A88Caff9Fde901C2a6a6553E92A58)
        });

    uint256 private _maxTxAmountBuy;
    uint256 private _maxTxAmountSell;
    uint256 private _maxWalletSize;

    Cashier reflector;
    uint256 reflectorGas = 300000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent;

    bool public processReflect = false;

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

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);

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

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

    bool contractInitialized;

    function intializeContract(address[] calldata accounts, uint256[] calldata amounts, address _antiSnipe, address _cashier, address _migrator) external onlyOwner {
        require(!contractInitialized, "1");
        require(accounts.length == amounts.length, "2");
        antiSnipe = AntiSnipe(_antiSnipe);
        reflector = Cashier(_cashier);
        reflector.initialize();
        migrator = Migrator(_migrator);
        _approve(_owner, address(migrator), type(uint256).max);
        _liquidityHolders[_migrator] = true;
        _isExcludedFromDividends[_migrator] = true;
        _isExcludedFromFees[_migrator] = true;
        try antiSnipe.transfer(address(this)) {} catch {}
        try antiSnipe.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) {
            _name = initName;
            _symbol = initSymbol;
            startingSupply = initStartingSupply;
            _decimals = initDecimals;
            _tTotal = startingSupply * 10**_decimals;
        } catch {
            revert("3");
        }
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _isExcludedFromDividends[lpPair] = true;
        _maxTxAmountBuy = (_tTotal * 15) / 1000;
        _maxTxAmountSell = (_tTotal * 75) / 10000;
        _maxWalletSize = (_tTotal * 15) / 1000;
        contractInitialized = true;

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

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

        for(uint256 i = 0; i < accounts.length; i++){
            uint256 amount = amounts[i] * 10**_decimals;
            _finalizeTransfer(_owner, accounts[i], amount, false, false, true);
        }

        _finalizeTransfer(_owner, _migrator, migrator.getTotalNecessaryTokens(), false, false, true);
        _finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );

        enableTrading();
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function 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.");
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromDividends[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 {
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

    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) public onlyOwner {
        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 == false) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "Cannot set a new pair this week!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

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

    function isExcludedFromDividends(address account) external view returns(bool) {
        return _isExcludedFromDividends[account];
    }

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

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

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

    function setDividendExcluded(address holder, bool enabled) public onlyOwner {
        require(holder != address(this) && holder != lpPair);
        _isExcludedFromDividends[holder] = enabled;
        if (enabled) {
            reflector.tally(holder, 0);
        } else {
            reflector.tally(holder, _tOwned[holder]);
        }
    }

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

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

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

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
        for(uint256 i = 0; i < accounts.length; i++){
            setDividendExcluded(accounts[i], enabled);
        }
    }

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

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

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

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 300, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

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

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        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 rewards, uint16 liquidity, uint16 marketing) external onlyOwner {
        _ratios.rewards = rewards;
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.total = rewards + liquidity + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.total <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
    }

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

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

    function getMaxTXBuy() public view returns (uint256) {
        return _maxTxAmountBuy / (10**_decimals);
    }

    function getMaxTXSell() public view returns (uint256) {
        return _maxTxAmountSell / (10**_decimals);
    }

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

    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.");
    }

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

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

    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        reflector.setRewardsProperties(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        reflectorGas = gas;
    }

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

    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){
                if (!_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmountBuy, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(sell){
                if (!_isExcludedFromLimits[from]) {
                    require(amount <= _maxTxAmountSell, "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 _finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        if(_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.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 = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell, other);
        }
        _tOwned[to] += amountReceived;

        processRewards(from, to);

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function processRewards(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try reflector.tally(from, _tOwned[from]) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try reflector.tally(to, _tOwned[to]) {} catch {}
        }
        if (processReflect) {
            try reflector.cashout(reflectorGas) {} catch {}
        }
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell, bool other) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        if (currentFee == 0) {
            return amount;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }

    function contractSwap(uint256 contractTokenBalance) internal swapping {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }
        
        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / (ratios.total)) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

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

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

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        bool success;
        uint256 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance);

        if (ratios.rewards > 0) {
            try reflector.load{value: rewardsBalance}() {} catch {}
        }

        if(ratios.marketing > 0){
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
    }

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

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

    function manualDeposit() external onlyOwner {
        try reflector.load{value: address(this).balance}() {} catch {}
    }

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

//=====================================================================================
//            Reflector

    function giveMeWelfarePlease() external {
        reflector.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return reflector.getTotalDistributed();
    }

    function getUserInfo(address user) external view returns (string memory, string memory, string memory, string memory) {
        return reflector.getUserInfo(user);
    }

    function getUserRealizedGains(address user) external view returns (uint256) {
        return reflector.getUserRealizedRewards(user);
    }

    function getUserUnpaidEarnings(address user) external view returns (uint256) {
        return reflector.getPendingRewards(user);
    }
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","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":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"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":"view","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":"getMaxTXBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTXSell","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":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveMeWelfarePlease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"_antiSnipe","type":"address"},{"internalType":"address","name":"_cashier","type":"address"},{"internalType":"address","name":"_migrator","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","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":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","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":"view","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":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"processReflectEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentBuy","type":"uint256"},{"internalType":"uint256","name":"divisorBuy","type":"uint256"},{"internalType":"uint256","name":"percentSell","type":"uint256"},{"internalType":"uint256","name":"divisorSell","type":"uint256"}],"name":"setMaxTxPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"rewards","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":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setRewardsProperties","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"}]

600060038190556103d460808190526109c460a05260c052600f805465ffffffffffff19166503d409c403d417905561032060e05261025861010052610a1461012052610f8c61014052601080546001600160401b031916670f8c0a1402580320179055610180604081905273a7e83dba467a88caff9fde901c2a6a6553e92a58610160819052601380546001600160a01b03199081169092179055620493e06018556019805461ff0019169055601e805462ffffff1916905582543391168117835591907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3466038036200011e57601180546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000205565b466061036200015357601180546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000205565b4660011480620001635750466004145b156200019557601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000205565b4661a86a03620001cb57601180546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000205565b4660fa036200020057601180546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000205565b600080fd5b600080546001600160a01b039081168252600660209081526040808420805460ff1990811660019081179092553080875283872080548316841790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548316841790558654909516865260089093528185208054841682179055928452832080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790559180527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909216179055615e1a80620002f36000396000f3fe6080604052600436106104695760003560e01c80636505079a11610243578063b7df8b3611610143578063ee5d9c2d116100bb578063f94aa1b41161008a578063fdb78c0e1161006f578063fdb78c0e14610d3d578063fe575a8714610d5c578063feadde9c14610d7c57600080fd5b8063f94aa1b414610cfd578063fb78680d14610d1d57600080fd5b8063ee5d9c2d14610c99578063eec2744e14610cae578063efe7dc9014610cce578063f7c245ea14610ce857600080fd5b8063d0b1449d11610112578063e455f68e116100f7578063e455f68e14610c39578063eafb5a3c14610c59578063eb50e70e14610c7957600080fd5b8063d0b1449d14610bd3578063dd62ed3e14610bf357600080fd5b8063b7df8b3614610af5578063c0488b5614610b0f578063c705c56914610b2f578063cf84770614610b6857600080fd5b80638a8c523c116101d6578063aa22b172116101a5578063b1b08f711161018a578063b1b08f71146106cf578063b3d514fb146106cf578063b421626c14610ad557600080fd5b8063aa22b17214610a95578063ab5cb5a614610ab557600080fd5b80638a8c523c14610a3657806395d89b4114610a4b5780639dc6761514610a60578063a9059cbb14610a7557600080fd5b8063715018a611610212578063715018a6146109ce57806380c581d1146109e3578063893d20e814610a035780638a63bd9b14610a2157600080fd5b80636505079a146109435780636ab86dc1146109635780636b639a251461097857806370a082311461099857600080fd5b80632e8fa821116103695780634be6ca13116102e157806350a8e016116102b05780635cce86cd116102955780635cce86cd146108ba5780636372c68f146108f35780636386c1c71461091357600080fd5b806350a8e0161461087a578063590ffdce1461089a57600080fd5b80634be6ca13146107ec5780634e718e48146108015780634fb2e45d146108215780634fbee1931461084157600080fd5b806336fddb0411610338578063452ed4f11161031d578063452ed4f11461079757806346ea7ac8146107b75780634ada218b146107cd57600080fd5b806336fddb041461076257806340f83bf71461078257600080fd5b80632e8fa821146106e5578063313ce567146106fb57806332cde6641461072257806333251a0b1461074257600080fd5b80630dcbcf1c116103fc57806326003957116103cb57806328577751116103b0578063285777511461069957806329dd8798146106af5780632b28fc7a146106cf57600080fd5b806326003957146106595780632610eaca1461067957600080fd5b80630dcbcf1c146105d65780630fa604e41461060f57806318160ddd1461062457806323b872dd1461063957600080fd5b806306fdde031161043857806306fdde03146105445780630758d924146105665780630923160214610586578063095ea7b3146105a657600080fd5b806303fd2a45146104755780630445b667146104a857806305bbedb6146104cc578063069d955f146104ee57600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b457600080fd5b506104be601a5481565b60405190815260200161049f565b3480156104d857600080fd5b506104ec6104e736600461533e565b610d9c565b005b3480156104fa57600080fd5b50600f5461051f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161049f565b34801561055057600080fd5b50610559610ec4565b60405161049f91906153e8565b34801561057257600080fd5b5060115461048b906001600160a01b031681565b34801561059257600080fd5b506104ec6105a13660046153fb565b610f56565b3480156105b257600080fd5b506105c66105c1366004615414565b611083565b604051901515815260200161049f565b3480156105e257600080fd5b506105c66105f1366004615440565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561061b57600080fd5b506104be6110f0565b34801561063057600080fd5b506104be611116565b34801561064557600080fd5b506105c661065436600461545d565b61112e565b34801561066557600080fd5b506104ec61067436600461549e565b6111a6565b34801561068557600080fd5b506104ec6106943660046154c0565b6112bd565b3480156106a557600080fd5b506104be601d5481565b3480156106bb57600080fd5b506104ec6106ca36600461557b565b611437565b3480156106db57600080fd5b506104be6107d081565b3480156106f157600080fd5b506104be601b5481565b34801561070757600080fd5b5061071061152d565b60405160ff909116815260200161049f565b34801561072e57600080fd5b506104ec61073d3660046155ee565b611548565b34801561074e57600080fd5b506104ec61075d366004615440565b6116ee565b34801561076e57600080fd5b506104ec61077d366004615631565b61179b565b34801561078e57600080fd5b506104be611820565b3480156107a357600080fd5b5060125461048b906001600160a01b031681565b3480156107c357600080fd5b506104be610bb881565b3480156107d957600080fd5b50601e546105c690610100900460ff1681565b3480156107f857600080fd5b506104be611841565b34801561080d57600080fd5b506104ec61081c3660046153fb565b611862565b34801561082d57600080fd5b506104ec61083c366004615440565b611912565b34801561084d57600080fd5b506105c661085c366004615440565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561088657600080fd5b50601e546105c69062010000900460ff1681565b3480156108a657600080fd5b506104ec6108b5366004615631565b611b7e565b3480156108c657600080fd5b506105c66108d5366004615440565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ff57600080fd5b506104be61090e366004615440565b611c03565b34801561091f57600080fd5b5061093361092e366004615440565b611c8c565b60405161049f949392919061565f565b34801561094f57600080fd5b506104ec61095e3660046156ac565b611d2d565b34801561096f57600080fd5b506104ec611df6565b34801561098457600080fd5b506104ec610993366004615631565b611eb5565b3480156109a457600080fd5b506104be6109b3366004615440565b6001600160a01b031660009081526001602052604090205490565b3480156109da57600080fd5b506104ec612056565b3480156109ef57600080fd5b506104ec6109fe366004615631565b61213a565b348015610a0f57600080fd5b506000546001600160a01b031661048b565b348015610a2d57600080fd5b506105c66122f3565b348015610a4257600080fd5b506104ec61236e565b348015610a5757600080fd5b50610559612645565b348015610a6c57600080fd5b506104ec612654565b348015610a8157600080fd5b506105c6610a90366004615414565b6126cc565b348015610aa157600080fd5b506104ec610ab03660046155ee565b6126e0565b348015610ac157600080fd5b506104be610ad0366004615440565b612898565b348015610ae157600080fd5b506104ec610af03660046156f7565b6128e4565b348015610b0157600080fd5b50601c546105c69060ff1681565b348015610b1b57600080fd5b506104ec610b2a366004615723565b6129d7565b348015610b3b57600080fd5b506105c6610b4a366004615440565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610b7457600080fd5b50601054610ba59061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161049f565b348015610bdf57600080fd5b506104ec610bee3660046153fb565b612baa565b348015610bff57600080fd5b506104be610c0e366004615755565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610c4557600080fd5b506104ec610c543660046157cf565b612c18565b348015610c6557600080fd5b506104ec610c74366004615440565b61356e565b348015610c8557600080fd5b506104ec610c94366004615440565b613929565b348015610ca557600080fd5b506104ec6139b2565b348015610cba57600080fd5b506104ec610cc9366004615631565b613a9f565b348015610cda57600080fd5b50601e546105c69060ff1681565b348015610cf457600080fd5b506104be613b8b565b348015610d0957600080fd5b5060135461048b906001600160a01b031681565b348015610d2957600080fd5b506104ec610d38366004615723565b613c12565b348015610d4957600080fd5b506019546105c690610100900460ff1681565b348015610d6857600080fd5b506105c6610d77366004615440565b613d1e565b348015610d8857600080fd5b506104ec610d97366004615631565b613dad565b6000546001600160a01b03163314610dfb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b601e546040517f05bbedb600000000000000000000000000000000000000000000000000000000815263010000009091046001600160a01b0316906305bbedb690610e4c90859085906004016158bc565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b5050505060005b8251811015610ebf57610ead838281518110610e9f57610e9f6158e0565b602002602001015183611eb5565b80610eb78161593e565b915050610e81565b505050565b6060600b8054610ed390615958565b80601f0160208091040260200160405190810160405280929190818152602001828054610eff90615958565b8015610f4c5780601f10610f2157610100808354040283529160200191610f4c565b820191906000526020600020905b815481529060010190602001808311610f2f57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610fb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b61012c8110156110025760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610df2565b601e546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b15801561106857600080fd5b505af115801561107c573d6000803e3d6000fd5b5050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110de9086815260200190565b60405180910390a35060015b92915050565b600d546000906111049060ff16600a615a8f565b6016546111119190615a9e565b905090565b6000600e5460000361112757600080fd5b50600e5490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914611193576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061118d908490615ad9565b90915550505b61119e848484613e32565b949350505050565b6000546001600160a01b031633146112005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6103e8600e546112109190615a9e565b8183600e5461121f9190615af0565b6112299190615a9e565b101561129d5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610df2565b8082600e546112ac9190615af0565b6112b69190615a9e565b6016555050565b6000546001600160a01b031633146113175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b80518251146113685760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df2565b60005b82518160ff161015610ebf57818160ff168151811061138c5761138c6158e0565b60200260200101516113b3336001600160a01b031660009081526001602052604090205490565b10156113be57600080fd5b61142433848360ff16815181106113d7576113d76158e0565b6020908102919091010151600d546113f39060ff16600a615a8f565b858560ff1681518110611408576114086158e0565b602002602001015161141a9190615af0565b6000806001614332565b508061142f81615b0f565b91505061136b565b6000546001600160a01b031633146114915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b5050505050505050565b6000600e5460000361153e57600080fd5b50600d5460ff1690565b6000546001600160a01b031633146115a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6107d08361ffff16111580156115be57506107d08261ffff1611155b80156115d057506107d08161ffff1611155b61161c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610df2565b610bb86116298385615b2e565b61ffff16111561167b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610df2565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146117485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b9060240161104e565b6000546001600160a01b031633146117f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600d546000906118349060ff16600a615a8f565b6015546111119190615a9e565b600d546000906118559060ff16600a615a8f565b6014546111119190615a9e565b6000546001600160a01b031633146118bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b60c881111561190d5760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610df2565b601d55565b6000546001600160a01b0316331461196c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611a865760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df2565b600080546001600160a01b039081168252600660208181526040808520805460ff1990811690915585548516865260088084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611b2157600080546001600160a01b03168082526001602052604090912054611b1f9190839061141a565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6017546040517ff5df70180000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190615b54565b6017546040517f6386c1c70000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d1e9190810190615bd1565b93509350935093509193509193565b6000546001600160a01b03163314611d875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6019805461ff00191661010085151590810291909117909155601e805460ff1990811685151517909155601c80549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6000546001600160a01b03163314611e505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601760009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea057600080fd5b505af193505050508015611eb2575060015b50565b6000546001600160a01b03163314611f0f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b0382163014801590611f3657506012546001600160a01b03838116911614155b611f3f57600080fd5b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155611ff0576017546040517fdf047e9e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611fd457600080fd5b505af1158015611fe8573d6000803e3d6000fd5b505050505050565b6017546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401611fba565b5050565b6000546001600160a01b031633146120b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b600080546001600160a01b039081168252600660209081526040808420805460ff1990811690915584548416855260089092528084208054909216909155825473ffffffffffffffffffffffffffffffffffffffff198116845590519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146121945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b801515600003612211576001600160a01b03828116600081815260026020526040808220805460ff19169055601e5490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d190604401611fba565b60035415612278576203f4806003544261222b9190615ad9565b116122785760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610df2565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601e5491517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483015263010000009004909116906380c581d190604401611fba565b600080546001600160a01b0316331461234e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6011546123689030906001600160a01b0316600019614616565b50600190565b6000546001600160a01b031633146123c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e54610100900460ff16156124205760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610df2565b601e5462010000900460ff166124785760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610df2565b601e54630100000090046001600160a01b03166124c057601e80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601e54601254600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff909116606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561255257600080fd5b505af1925050508015612563575060015b50601760009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125b457600080fd5b505af19250505080156125c5575060015b50601e805461ff0019166101001790556012546001600160a01b0316600090815260016020526040902054612710906125ff90600a615af0565b6126099190615a9e565b601a556012546001600160a01b031660009081526001602052604090205461271090612636906019615af0565b6126409190615a9e565b601b55565b6060600c8054610ed390615958565b6017546040517f2e6f0efd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b50505050565b60006126d9338484613e32565b9392505050565b6000546001600160a01b0316331461273a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806127b28385615b2e565b6127bc9190615b2e565b601080547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600f5460009161280d9162010000810482169116615b2e565b60105461ffff918216925066010000000000009004168110156126c65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610df2565b6017546040517ff6ed20170000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f6ed201790602401611c4b565b6000546001600160a01b0316331461293e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b61294981600a615c7e565b6129539083615af0565b6017546040517f155ad51800000000000000000000000000000000000000000000000000000000815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314612a315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6103e8600e54612a419190615a9e565b8385600e54612a509190615af0565b612a5a9190615a9e565b1015612ace5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df2565b6103e8600e54612ade9190615a9e565b8183600e54612aed9190615af0565b612af79190615a9e565b1015612b6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df2565b8284600e54612b7a9190615af0565b612b849190615a9e565b601455600e548190612b97908490615af0565b612ba19190615a9e565b60155550505050565b6000546001600160a01b03163314612c045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b620b71b08110612c1357600080fd5b601855565b6000546001600160a01b03163314612c725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601f5474010000000000000000000000000000000000000000900460ff1615612cdd5760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b858414612d2c5760405162461bcd60e51b815260206004820152600160248201527f32000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b601e80546001600160a01b038086166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179091556017805491841673ffffffffffffffffffffffffffffffffffffffff1990921682179055604080517f8129fc1c0000000000000000000000000000000000000000000000000000000081529051638129fc1c9160048082019260009290919082900301818387803b158015612de057600080fd5b505af1158015612df4573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03858116918217909255600054612e3794509091169150600019614616565b6001600160a01b0381811660009081526009602090815260408083208054600160ff19918216811790925560088452828520805482168317905560069093529281902080549092169092179055601e5490517f1a695230000000000000000000000000000000000000000000000000000000008152306004820152630100000090910490911690631a69523090602401600060405180830381600087803b158015612ee157600080fd5b505af1925050508015612ef2575060015b50601e60039054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015612f6957506040513d6000823e601f3d908101601f19168201604052612f669190810190615c8a565b60015b612fb55760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b8351612fc890600b90602087019061518a565b508251612fdc90600c90602086019061518a565b50600a828155600d805460ff191660ff8416908117909155612ffd91615a8f565b600a5461300a9190615af0565b600e5550505050601160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130889190615d05565b6001600160a01b031663c9c65396601160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310d9190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015613171573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131959190615d05565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831690811782556000908152600260209081526040808320805460ff199081166001908117909255945490951683526008909152902080549091169091179055600e546103e89061320b90600f615af0565b6132159190615a9e565b601455600e546127109061322a90604b615af0565b6132349190615a9e565b601555600e546103e89061324990600f615af0565b6132539190615a9e565b601655601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600e54600080546001600160a01b03908116825260016020526040808320849055825490519116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916132eb91815260200190565b60405180910390a360115461330d9030906001600160a01b0316600019614616565b60005460115461332c916001600160a01b039081169116600019614616565b60005b868110156133c857600d5460009061334b9060ff16600a615a8f565b87878481811061335d5761335d6158e0565b9050602002013561336e9190615af0565b6000549091506133b3906001600160a01b03168a8a85818110613393576133936158e0565b90506020020160208101906133a89190615440565b836000806001614332565b505080806133c09061593e565b91505061332f565b50600054601f54604080517f73902f33000000000000000000000000000000000000000000000000000000008152905161345c936001600160a01b039081169386939116916373902f33916004808201926020929091908290030181865afa158015613438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190615b54565b50600080546001600160a01b031680825260016020526040909120546134849190309061141a565b506011546001600160a01b031663f305d71947306134b7816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af115801561353e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135639190615d22565b5050506129ce61236e565b6000546001600160a01b031633146135c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136319190615d05565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a29190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137299190615d05565b90506001600160a01b0381166138c757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379b9190615d05565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380c9190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015613871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138959190615d05565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556138f0565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155610ebf903090600019614616565b6000546001600160a01b031633146139835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314613a0c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e5462010000900460ff1615613a655760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610df2565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611eb2573d6000803e3d6000fd5b6000546001600160a01b03163314613af95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152831515602483015263010000009092049091169063eec2744e90604401600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b505050506120528282611eb5565b601754604080517f5695fa5800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111119190615b54565b6000546001600160a01b03163314613c6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b8284600e54613c7b9190615af0565b613c859190615a9e565b601a55600e548190613c98908490615af0565b613ca29190615a9e565b601b819055601a5411156126c65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b601e546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190615d50565b6000546001600160a01b03163314613e075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006001600160a01b038416613eb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b038316613f2c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610df2565b60008211613fa25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b0384166000908152600260205260408120548190819060ff1615613fd05760019250613ffe565b6001600160a01b03861660009081526002602052604090205460ff1615613ffa5760019150613ffe565b5060015b614008878761476e565b1561428257601e54610100900460ff166140645760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610df2565b8215614102576001600160a01b03861660009081526007602052604090205460ff16614102576014548511156141025760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df2565b81156141a0576001600160a01b03871660009081526007602052604090205460ff166141a0576015548511156141a05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df2565b6011546001600160a01b038781169116148015906141bc575081155b15614282576001600160a01b03861660009081526007602052604090205460ff166142825760165485614204886001600160a01b031660009081526001602052604090205490565b61420e9190615d6d565b11156142825760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610df2565b81156143195760195460ff1661431957601954610100900460ff16156143195730600090815260016020526040902054601a54811061431757601b54601c5460ff161561430157601d546012546001600160a01b0316600090815260016020526040902054612710916142f491615af0565b6142fe9190615a9e565b90505b80821061430c578091505b6143158261483f565b505b505b614327878787868686614332565b979650505050505050565b601e5460009062010000900460ff166144345761434f8787614d0f565b601e5462010000900460ff1615801561436d575061436d878761476e565b801561439257506001600160a01b03871660009081526005602052604090205460ff16155b80156143b757506001600160a01b03861660009081526005602052604090205460ff16155b80156143c1575081155b156144345760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b61443e878761476e565b156144f257601e546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af19250505080156144db575060408051601f3d908101601f191682019092526144d891810190615d50565b60015b6144e457600080fd5b9050806144f057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061453457506001600160a01b03871660009081526006602052604090205460ff165b1561453d575060005b6001600160a01b03881660009081526001602052604081208054889290614565908490615ad9565b9091555086905081156145825761457f8988888888614ebe565b90505b6001600160a01b038816600090815260016020526040812080548392906145aa908490615d6d565b909155506145ba90508989614fa9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145ff91815260200190565b60405180910390a350600198975050505050505050565b6001600160a01b0383166146915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b03821661470d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061479b57506000546001600160a01b03838116911614155b80156147b257506000546001600160a01b03163214155b80156147d757506001600160a01b03821660009081526009602052604090205460ff16155b80156147fc57506001600160a01b03831660009081526009602052604090205460ff16155b801561481357506001600160a01b03821661dead14155b801561482757506001600160a01b03821615155b80156126d9575050506001600160a01b031630141590565b6019805460ff191660011790556040805160808101825260105461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036148a05750614d02565b3060009081526004602090815260408083206011546001600160a01b03168452909152902054600019146148f9573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff168561491a9190615af0565b6149249190615a9e565b61492e9190615a9e565b9050600061493c8285615ad9565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110614976576149766158e0565b6001600160a01b03928316602091820292909201810191909152601154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156149e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a0c9190615d05565b81600181518110614a1f57614a1f6158e0565b6001600160a01b0392831660209182029290920101526011546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790614a7e908590600090869030904290600401615d85565b600060405180830381600087803b158015614a9857600080fd5b505af1158015614aac573d6000803e3d6000fd5b5047925060009150849050614ac18684615af0565b614acb9190615a9e565b90508415614bbc576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614b5a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614b7f9190615d22565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b614bc68183615ad9565b9150856020015186606001818151614bde9190615dc1565b61ffff9081169091526060880151885160009350839291821691614c03911686615af0565b614c0d9190615a9e565b90506000614c1b8286615ad9565b895190915061ffff1615614c8d57601760009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614c7957600080fd5b505af193505050508015614c8b575060015b505b604089015161ffff1615614cf8576013546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114614ced576040519150601f19603f3d011682016040523d82523d6000602084013e614cf2565b606091505b50909350505b5050505050505050505b506019805460ff19169055565b601e5462010000900460ff1615614d8e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610df2565b614d98828261476e565b158015614db257506012546001600160a01b038281169116145b15612052576001600160a01b038083166000908152600960205260409020805460ff19166001179055601e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017908190556301000000900416614e4757601e80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6017546001600160a01b0316614e77576017805473ffffffffffffffffffffffffffffffffffffffff1916301790555b6019805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415614ed45750600f5461ffff16614efe565b8315614eed5750600f5462010000900461ffff16614efe565b50600f54640100000000900461ffff165b80600003614f0f5785915050614fa0565b6000612710614f1e8389615af0565b614f289190615a9e565b30600090815260016020526040812080549293508392909190614f4c908490615d6d565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3614f9b8188615ad9565b925050505b95945050505050565b6001600160a01b03821660009081526008602052604090205460ff16615053576017546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561504057600080fd5b505af1925050508015615051575060015b505b6001600160a01b03811660009081526008602052604090205460ff166150fd576017546001600160a01b03828116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b1580156150ea57600080fd5b505af19250505080156150fb575060015b505b601e5460ff1615612052576017546018546040517fa9e732bb0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163a9e732bb916151569160040190815260200190565b600060405180830381600087803b15801561517057600080fd5b505af1925050508015615181575060015b15612052575050565b82805461519690615958565b90600052602060002090601f0160209004810192826151b857600085556151fe565b82601f106151d157805160ff19168380011785556151fe565b828001600101855582156151fe579182015b828111156151fe5782518255916020019190600101906151e3565b5061520a92915061520e565b5090565b5b8082111561520a576000815560010161520f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561527b5761527b615223565b604052919050565b600067ffffffffffffffff82111561529d5761529d615223565b5060051b60200190565b6001600160a01b0381168114611eb257600080fd5b600082601f8301126152cd57600080fd5b813560206152e26152dd83615283565b615252565b82815260059290921b8401810191818101908684111561530157600080fd5b8286015b84811015615325578035615318816152a7565b8352918301918301615305565b509695505050505050565b8015158114611eb257600080fd5b6000806040838503121561535157600080fd5b823567ffffffffffffffff81111561536857600080fd5b615374858286016152bc565b925050602083013561538581615330565b809150509250929050565b60005b838110156153ab578181015183820152602001615393565b838111156126c65750506000910152565b600081518084526153d4816020860160208601615390565b601f01601f19169290920160200192915050565b6020815260006126d960208301846153bc565b60006020828403121561540d57600080fd5b5035919050565b6000806040838503121561542757600080fd5b8235615432816152a7565b946020939093013593505050565b60006020828403121561545257600080fd5b81356126d9816152a7565b60008060006060848603121561547257600080fd5b833561547d816152a7565b9250602084013561548d816152a7565b929592945050506040919091013590565b600080604083850312156154b157600080fd5b50508035926020909101359150565b600080604083850312156154d357600080fd5b823567ffffffffffffffff808211156154eb57600080fd5b6154f7868387016152bc565b935060209150818501358181111561550e57600080fd5b85019050601f8101861361552157600080fd5b803561552f6152dd82615283565b81815260059190911b8201830190838101908883111561554e57600080fd5b928401925b8284101561556c57833582529284019290840190615553565b80955050505050509250929050565b6000806000806080858703121561559157600080fd5b843561559c81615330565b935060208501356155ac81615330565b925060408501356155bc81615330565b915060608501356155cc81615330565b939692955090935050565b803561ffff811681146155e957600080fd5b919050565b60008060006060848603121561560357600080fd5b61560c846155d7565b925061561a602085016155d7565b9150615628604085016155d7565b90509250925092565b6000806040838503121561564457600080fd5b823561564f816152a7565b9150602083013561538581615330565b60808152600061567260808301876153bc565b828103602084015261568481876153bc565b9050828103604084015261569881866153bc565b9050828103606084015261432781856153bc565b6000806000606084860312156156c157600080fd5b83356156cc81615330565b925060208401356156dc81615330565b915060408401356156ec81615330565b809150509250925092565b60008060006060848603121561570c57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561573957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561576857600080fd5b8235615773816152a7565b91506020830135615385816152a7565b60008083601f84011261579557600080fd5b50813567ffffffffffffffff8111156157ad57600080fd5b6020830191508360208260051b85010111156157c857600080fd5b9250929050565b600080600080600080600060a0888a0312156157ea57600080fd5b873567ffffffffffffffff8082111561580257600080fd5b61580e8b838c01615783565b909950975060208a013591508082111561582757600080fd5b506158348a828b01615783565b9096509450506040880135615848816152a7565b92506060880135615858816152a7565b91506080880135615868816152a7565b8091505092959891949750929550565b600081518084526020808501945080840160005b838110156158b15781516001600160a01b03168752958201959082019060010161588c565b509495945050505050565b6040815260006158cf6040830185615878565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060001982036159515761595161590f565b5060010190565b600181811c9082168061596c57607f821691505b6020821081036159a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600181815b808511156159e65781600019048211156159cc576159cc61590f565b808516156159d957918102915b93841c93908002906159b0565b509250929050565b6000826159fd575060016110ea565b81615a0a575060006110ea565b8160018114615a205760028114615a2a57615a46565b60019150506110ea565b60ff841115615a3b57615a3b61590f565b50506001821b6110ea565b5060208310610133831016604e8410600b8410161715615a69575081810a6110ea565b615a7383836159ab565b8060001904821115615a8757615a8761590f565b029392505050565b60006126d960ff8416836159ee565b600082615ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015615aeb57615aeb61590f565b500390565b6000816000190483118215151615615b0a57615b0a61590f565b500290565b600060ff821660ff8103615b2557615b2561590f565b60010192915050565b600061ffff808316818516808303821115615b4b57615b4b61590f565b01949350505050565b600060208284031215615b6657600080fd5b5051919050565b600082601f830112615b7e57600080fd5b815167ffffffffffffffff811115615b9857615b98615223565b615bab6020601f19601f84011601615252565b818152846020838601011115615bc057600080fd5b61119e826020830160208701615390565b60008060008060808587031215615be757600080fd5b845167ffffffffffffffff80821115615bff57600080fd5b615c0b88838901615b6d565b95506020870151915080821115615c2157600080fd5b615c2d88838901615b6d565b94506040870151915080821115615c4357600080fd5b615c4f88838901615b6d565b93506060870151915080821115615c6557600080fd5b50615c7287828801615b6d565b91505092959194509250565b60006126d983836159ee565b60008060008060808587031215615ca057600080fd5b845167ffffffffffffffff80821115615cb857600080fd5b615cc488838901615b6d565b95506020870151915080821115615cda57600080fd5b50615ce787828801615b6d565b93505060408501519150606085015160ff811681146155cc57600080fd5b600060208284031215615d1757600080fd5b81516126d9816152a7565b600080600060608486031215615d3757600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215615d6257600080fd5b81516126d981615330565b60008219821115615d8057615d8061590f565b500190565b85815284602082015260a060408201526000615da460a0830186615878565b6001600160a01b0394909416606083015250608001529392505050565b600061ffff83811690831681811015615ddc57615ddc61590f565b03939250505056fea264697066735822122023b233c9a835acf7b31567459ef72e7dd0e826f070cdd86c8dc660ebbf9824fd64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106104695760003560e01c80636505079a11610243578063b7df8b3611610143578063ee5d9c2d116100bb578063f94aa1b41161008a578063fdb78c0e1161006f578063fdb78c0e14610d3d578063fe575a8714610d5c578063feadde9c14610d7c57600080fd5b8063f94aa1b414610cfd578063fb78680d14610d1d57600080fd5b8063ee5d9c2d14610c99578063eec2744e14610cae578063efe7dc9014610cce578063f7c245ea14610ce857600080fd5b8063d0b1449d11610112578063e455f68e116100f7578063e455f68e14610c39578063eafb5a3c14610c59578063eb50e70e14610c7957600080fd5b8063d0b1449d14610bd3578063dd62ed3e14610bf357600080fd5b8063b7df8b3614610af5578063c0488b5614610b0f578063c705c56914610b2f578063cf84770614610b6857600080fd5b80638a8c523c116101d6578063aa22b172116101a5578063b1b08f711161018a578063b1b08f71146106cf578063b3d514fb146106cf578063b421626c14610ad557600080fd5b8063aa22b17214610a95578063ab5cb5a614610ab557600080fd5b80638a8c523c14610a3657806395d89b4114610a4b5780639dc6761514610a60578063a9059cbb14610a7557600080fd5b8063715018a611610212578063715018a6146109ce57806380c581d1146109e3578063893d20e814610a035780638a63bd9b14610a2157600080fd5b80636505079a146109435780636ab86dc1146109635780636b639a251461097857806370a082311461099857600080fd5b80632e8fa821116103695780634be6ca13116102e157806350a8e016116102b05780635cce86cd116102955780635cce86cd146108ba5780636372c68f146108f35780636386c1c71461091357600080fd5b806350a8e0161461087a578063590ffdce1461089a57600080fd5b80634be6ca13146107ec5780634e718e48146108015780634fb2e45d146108215780634fbee1931461084157600080fd5b806336fddb0411610338578063452ed4f11161031d578063452ed4f11461079757806346ea7ac8146107b75780634ada218b146107cd57600080fd5b806336fddb041461076257806340f83bf71461078257600080fd5b80632e8fa821146106e5578063313ce567146106fb57806332cde6641461072257806333251a0b1461074257600080fd5b80630dcbcf1c116103fc57806326003957116103cb57806328577751116103b0578063285777511461069957806329dd8798146106af5780632b28fc7a146106cf57600080fd5b806326003957146106595780632610eaca1461067957600080fd5b80630dcbcf1c146105d65780630fa604e41461060f57806318160ddd1461062457806323b872dd1461063957600080fd5b806306fdde031161043857806306fdde03146105445780630758d924146105665780630923160214610586578063095ea7b3146105a657600080fd5b806303fd2a45146104755780630445b667146104a857806305bbedb6146104cc578063069d955f146104ee57600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b457600080fd5b506104be601a5481565b60405190815260200161049f565b3480156104d857600080fd5b506104ec6104e736600461533e565b610d9c565b005b3480156104fa57600080fd5b50600f5461051f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161049f565b34801561055057600080fd5b50610559610ec4565b60405161049f91906153e8565b34801561057257600080fd5b5060115461048b906001600160a01b031681565b34801561059257600080fd5b506104ec6105a13660046153fb565b610f56565b3480156105b257600080fd5b506105c66105c1366004615414565b611083565b604051901515815260200161049f565b3480156105e257600080fd5b506105c66105f1366004615440565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561061b57600080fd5b506104be6110f0565b34801561063057600080fd5b506104be611116565b34801561064557600080fd5b506105c661065436600461545d565b61112e565b34801561066557600080fd5b506104ec61067436600461549e565b6111a6565b34801561068557600080fd5b506104ec6106943660046154c0565b6112bd565b3480156106a557600080fd5b506104be601d5481565b3480156106bb57600080fd5b506104ec6106ca36600461557b565b611437565b3480156106db57600080fd5b506104be6107d081565b3480156106f157600080fd5b506104be601b5481565b34801561070757600080fd5b5061071061152d565b60405160ff909116815260200161049f565b34801561072e57600080fd5b506104ec61073d3660046155ee565b611548565b34801561074e57600080fd5b506104ec61075d366004615440565b6116ee565b34801561076e57600080fd5b506104ec61077d366004615631565b61179b565b34801561078e57600080fd5b506104be611820565b3480156107a357600080fd5b5060125461048b906001600160a01b031681565b3480156107c357600080fd5b506104be610bb881565b3480156107d957600080fd5b50601e546105c690610100900460ff1681565b3480156107f857600080fd5b506104be611841565b34801561080d57600080fd5b506104ec61081c3660046153fb565b611862565b34801561082d57600080fd5b506104ec61083c366004615440565b611912565b34801561084d57600080fd5b506105c661085c366004615440565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561088657600080fd5b50601e546105c69062010000900460ff1681565b3480156108a657600080fd5b506104ec6108b5366004615631565b611b7e565b3480156108c657600080fd5b506105c66108d5366004615440565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ff57600080fd5b506104be61090e366004615440565b611c03565b34801561091f57600080fd5b5061093361092e366004615440565b611c8c565b60405161049f949392919061565f565b34801561094f57600080fd5b506104ec61095e3660046156ac565b611d2d565b34801561096f57600080fd5b506104ec611df6565b34801561098457600080fd5b506104ec610993366004615631565b611eb5565b3480156109a457600080fd5b506104be6109b3366004615440565b6001600160a01b031660009081526001602052604090205490565b3480156109da57600080fd5b506104ec612056565b3480156109ef57600080fd5b506104ec6109fe366004615631565b61213a565b348015610a0f57600080fd5b506000546001600160a01b031661048b565b348015610a2d57600080fd5b506105c66122f3565b348015610a4257600080fd5b506104ec61236e565b348015610a5757600080fd5b50610559612645565b348015610a6c57600080fd5b506104ec612654565b348015610a8157600080fd5b506105c6610a90366004615414565b6126cc565b348015610aa157600080fd5b506104ec610ab03660046155ee565b6126e0565b348015610ac157600080fd5b506104be610ad0366004615440565b612898565b348015610ae157600080fd5b506104ec610af03660046156f7565b6128e4565b348015610b0157600080fd5b50601c546105c69060ff1681565b348015610b1b57600080fd5b506104ec610b2a366004615723565b6129d7565b348015610b3b57600080fd5b506105c6610b4a366004615440565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610b7457600080fd5b50601054610ba59061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161049f565b348015610bdf57600080fd5b506104ec610bee3660046153fb565b612baa565b348015610bff57600080fd5b506104be610c0e366004615755565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610c4557600080fd5b506104ec610c543660046157cf565b612c18565b348015610c6557600080fd5b506104ec610c74366004615440565b61356e565b348015610c8557600080fd5b506104ec610c94366004615440565b613929565b348015610ca557600080fd5b506104ec6139b2565b348015610cba57600080fd5b506104ec610cc9366004615631565b613a9f565b348015610cda57600080fd5b50601e546105c69060ff1681565b348015610cf457600080fd5b506104be613b8b565b348015610d0957600080fd5b5060135461048b906001600160a01b031681565b348015610d2957600080fd5b506104ec610d38366004615723565b613c12565b348015610d4957600080fd5b506019546105c690610100900460ff1681565b348015610d6857600080fd5b506105c6610d77366004615440565b613d1e565b348015610d8857600080fd5b506104ec610d97366004615631565b613dad565b6000546001600160a01b03163314610dfb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b601e546040517f05bbedb600000000000000000000000000000000000000000000000000000000815263010000009091046001600160a01b0316906305bbedb690610e4c90859085906004016158bc565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b5050505060005b8251811015610ebf57610ead838281518110610e9f57610e9f6158e0565b602002602001015183611eb5565b80610eb78161593e565b915050610e81565b505050565b6060600b8054610ed390615958565b80601f0160208091040260200160405190810160405280929190818152602001828054610eff90615958565b8015610f4c5780601f10610f2157610100808354040283529160200191610f4c565b820191906000526020600020905b815481529060010190602001808311610f2f57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610fb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b61012c8110156110025760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610df2565b601e546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b15801561106857600080fd5b505af115801561107c573d6000803e3d6000fd5b5050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110de9086815260200190565b60405180910390a35060015b92915050565b600d546000906111049060ff16600a615a8f565b6016546111119190615a9e565b905090565b6000600e5460000361112757600080fd5b50600e5490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914611193576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061118d908490615ad9565b90915550505b61119e848484613e32565b949350505050565b6000546001600160a01b031633146112005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6103e8600e546112109190615a9e565b8183600e5461121f9190615af0565b6112299190615a9e565b101561129d5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610df2565b8082600e546112ac9190615af0565b6112b69190615a9e565b6016555050565b6000546001600160a01b031633146113175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b80518251146113685760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df2565b60005b82518160ff161015610ebf57818160ff168151811061138c5761138c6158e0565b60200260200101516113b3336001600160a01b031660009081526001602052604090205490565b10156113be57600080fd5b61142433848360ff16815181106113d7576113d76158e0565b6020908102919091010151600d546113f39060ff16600a615a8f565b858560ff1681518110611408576114086158e0565b602002602001015161141a9190615af0565b6000806001614332565b508061142f81615b0f565b91505061136b565b6000546001600160a01b031633146114915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b5050505050505050565b6000600e5460000361153e57600080fd5b50600d5460ff1690565b6000546001600160a01b031633146115a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6107d08361ffff16111580156115be57506107d08261ffff1611155b80156115d057506107d08161ffff1611155b61161c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610df2565b610bb86116298385615b2e565b61ffff16111561167b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610df2565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146117485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b9060240161104e565b6000546001600160a01b031633146117f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600d546000906118349060ff16600a615a8f565b6015546111119190615a9e565b600d546000906118559060ff16600a615a8f565b6014546111119190615a9e565b6000546001600160a01b031633146118bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b60c881111561190d5760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610df2565b601d55565b6000546001600160a01b0316331461196c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611a865760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df2565b600080546001600160a01b039081168252600660208181526040808520805460ff1990811690915585548516865260088084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611b2157600080546001600160a01b03168082526001602052604090912054611b1f9190839061141a565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6017546040517ff5df70180000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190615b54565b6017546040517f6386c1c70000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d1e9190810190615bd1565b93509350935093509193509193565b6000546001600160a01b03163314611d875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6019805461ff00191661010085151590810291909117909155601e805460ff1990811685151517909155601c80549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6000546001600160a01b03163314611e505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601760009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea057600080fd5b505af193505050508015611eb2575060015b50565b6000546001600160a01b03163314611f0f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b0382163014801590611f3657506012546001600160a01b03838116911614155b611f3f57600080fd5b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155611ff0576017546040517fdf047e9e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611fd457600080fd5b505af1158015611fe8573d6000803e3d6000fd5b505050505050565b6017546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401611fba565b5050565b6000546001600160a01b031633146120b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b600080546001600160a01b039081168252600660209081526040808420805460ff1990811690915584548416855260089092528084208054909216909155825473ffffffffffffffffffffffffffffffffffffffff198116845590519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146121945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b801515600003612211576001600160a01b03828116600081815260026020526040808220805460ff19169055601e5490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d190604401611fba565b60035415612278576203f4806003544261222b9190615ad9565b116122785760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610df2565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601e5491517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483015263010000009004909116906380c581d190604401611fba565b600080546001600160a01b0316331461234e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6011546123689030906001600160a01b0316600019614616565b50600190565b6000546001600160a01b031633146123c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e54610100900460ff16156124205760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610df2565b601e5462010000900460ff166124785760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610df2565b601e54630100000090046001600160a01b03166124c057601e80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601e54601254600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff909116606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561255257600080fd5b505af1925050508015612563575060015b50601760009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125b457600080fd5b505af19250505080156125c5575060015b50601e805461ff0019166101001790556012546001600160a01b0316600090815260016020526040902054612710906125ff90600a615af0565b6126099190615a9e565b601a556012546001600160a01b031660009081526001602052604090205461271090612636906019615af0565b6126409190615a9e565b601b55565b6060600c8054610ed390615958565b6017546040517f2e6f0efd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b50505050565b60006126d9338484613e32565b9392505050565b6000546001600160a01b0316331461273a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806127b28385615b2e565b6127bc9190615b2e565b601080547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600f5460009161280d9162010000810482169116615b2e565b60105461ffff918216925066010000000000009004168110156126c65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610df2565b6017546040517ff6ed20170000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f6ed201790602401611c4b565b6000546001600160a01b0316331461293e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b61294981600a615c7e565b6129539083615af0565b6017546040517f155ad51800000000000000000000000000000000000000000000000000000000815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314612a315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6103e8600e54612a419190615a9e565b8385600e54612a509190615af0565b612a5a9190615a9e565b1015612ace5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df2565b6103e8600e54612ade9190615a9e565b8183600e54612aed9190615af0565b612af79190615a9e565b1015612b6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df2565b8284600e54612b7a9190615af0565b612b849190615a9e565b601455600e548190612b97908490615af0565b612ba19190615a9e565b60155550505050565b6000546001600160a01b03163314612c045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b620b71b08110612c1357600080fd5b601855565b6000546001600160a01b03163314612c725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601f5474010000000000000000000000000000000000000000900460ff1615612cdd5760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b858414612d2c5760405162461bcd60e51b815260206004820152600160248201527f32000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b601e80546001600160a01b038086166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179091556017805491841673ffffffffffffffffffffffffffffffffffffffff1990921682179055604080517f8129fc1c0000000000000000000000000000000000000000000000000000000081529051638129fc1c9160048082019260009290919082900301818387803b158015612de057600080fd5b505af1158015612df4573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03858116918217909255600054612e3794509091169150600019614616565b6001600160a01b0381811660009081526009602090815260408083208054600160ff19918216811790925560088452828520805482168317905560069093529281902080549092169092179055601e5490517f1a695230000000000000000000000000000000000000000000000000000000008152306004820152630100000090910490911690631a69523090602401600060405180830381600087803b158015612ee157600080fd5b505af1925050508015612ef2575060015b50601e60039054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015612f6957506040513d6000823e601f3d908101601f19168201604052612f669190810190615c8a565b60015b612fb55760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610df2565b8351612fc890600b90602087019061518a565b508251612fdc90600c90602086019061518a565b50600a828155600d805460ff191660ff8416908117909155612ffd91615a8f565b600a5461300a9190615af0565b600e5550505050601160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130889190615d05565b6001600160a01b031663c9c65396601160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310d9190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015613171573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131959190615d05565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831690811782556000908152600260209081526040808320805460ff199081166001908117909255945490951683526008909152902080549091169091179055600e546103e89061320b90600f615af0565b6132159190615a9e565b601455600e546127109061322a90604b615af0565b6132349190615a9e565b601555600e546103e89061324990600f615af0565b6132539190615a9e565b601655601f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600e54600080546001600160a01b03908116825260016020526040808320849055825490519116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916132eb91815260200190565b60405180910390a360115461330d9030906001600160a01b0316600019614616565b60005460115461332c916001600160a01b039081169116600019614616565b60005b868110156133c857600d5460009061334b9060ff16600a615a8f565b87878481811061335d5761335d6158e0565b9050602002013561336e9190615af0565b6000549091506133b3906001600160a01b03168a8a85818110613393576133936158e0565b90506020020160208101906133a89190615440565b836000806001614332565b505080806133c09061593e565b91505061332f565b50600054601f54604080517f73902f33000000000000000000000000000000000000000000000000000000008152905161345c936001600160a01b039081169386939116916373902f33916004808201926020929091908290030181865afa158015613438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190615b54565b50600080546001600160a01b031680825260016020526040909120546134849190309061141a565b506011546001600160a01b031663f305d71947306134b7816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af115801561353e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135639190615d22565b5050506129ce61236e565b6000546001600160a01b031633146135c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136319190615d05565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a29190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137299190615d05565b90506001600160a01b0381166138c757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379b9190615d05565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380c9190615d05565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015613871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138959190615d05565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556138f0565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155610ebf903090600019614616565b6000546001600160a01b031633146139835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314613a0c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e5462010000900460ff1615613a655760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610df2565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611eb2573d6000803e3d6000fd5b6000546001600160a01b03163314613af95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b601e546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152831515602483015263010000009092049091169063eec2744e90604401600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b505050506120528282611eb5565b601754604080517f5695fa5800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111119190615b54565b6000546001600160a01b03163314613c6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b8284600e54613c7b9190615af0565b613c859190615a9e565b601a55600e548190613c98908490615af0565b613ca29190615a9e565b601b819055601a5411156126c65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b601e546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190615d50565b6000546001600160a01b03163314613e075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610df2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006001600160a01b038416613eb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b038316613f2c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610df2565b60008211613fa25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b0384166000908152600260205260408120548190819060ff1615613fd05760019250613ffe565b6001600160a01b03861660009081526002602052604090205460ff1615613ffa5760019150613ffe565b5060015b614008878761476e565b1561428257601e54610100900460ff166140645760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610df2565b8215614102576001600160a01b03861660009081526007602052604090205460ff16614102576014548511156141025760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df2565b81156141a0576001600160a01b03871660009081526007602052604090205460ff166141a0576015548511156141a05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df2565b6011546001600160a01b038781169116148015906141bc575081155b15614282576001600160a01b03861660009081526007602052604090205460ff166142825760165485614204886001600160a01b031660009081526001602052604090205490565b61420e9190615d6d565b11156142825760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610df2565b81156143195760195460ff1661431957601954610100900460ff16156143195730600090815260016020526040902054601a54811061431757601b54601c5460ff161561430157601d546012546001600160a01b0316600090815260016020526040902054612710916142f491615af0565b6142fe9190615a9e565b90505b80821061430c578091505b6143158261483f565b505b505b614327878787868686614332565b979650505050505050565b601e5460009062010000900460ff166144345761434f8787614d0f565b601e5462010000900460ff1615801561436d575061436d878761476e565b801561439257506001600160a01b03871660009081526005602052604090205460ff16155b80156143b757506001600160a01b03861660009081526005602052604090205460ff16155b80156143c1575081155b156144345760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b61443e878761476e565b156144f257601e546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af19250505080156144db575060408051601f3d908101601f191682019092526144d891810190615d50565b60015b6144e457600080fd5b9050806144f057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061453457506001600160a01b03871660009081526006602052604090205460ff165b1561453d575060005b6001600160a01b03881660009081526001602052604081208054889290614565908490615ad9565b9091555086905081156145825761457f8988888888614ebe565b90505b6001600160a01b038816600090815260016020526040812080548392906145aa908490615d6d565b909155506145ba90508989614fa9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516145ff91815260200190565b60405180910390a350600198975050505050505050565b6001600160a01b0383166146915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b03821661470d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610df2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061479b57506000546001600160a01b03838116911614155b80156147b257506000546001600160a01b03163214155b80156147d757506001600160a01b03821660009081526009602052604090205460ff16155b80156147fc57506001600160a01b03831660009081526009602052604090205460ff16155b801561481357506001600160a01b03821661dead14155b801561482757506001600160a01b03821615155b80156126d9575050506001600160a01b031630141590565b6019805460ff191660011790556040805160808101825260105461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036148a05750614d02565b3060009081526004602090815260408083206011546001600160a01b03168452909152902054600019146148f9573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff168561491a9190615af0565b6149249190615a9e565b61492e9190615a9e565b9050600061493c8285615ad9565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110614976576149766158e0565b6001600160a01b03928316602091820292909201810191909152601154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156149e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a0c9190615d05565b81600181518110614a1f57614a1f6158e0565b6001600160a01b0392831660209182029290920101526011546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790614a7e908590600090869030904290600401615d85565b600060405180830381600087803b158015614a9857600080fd5b505af1158015614aac573d6000803e3d6000fd5b5047925060009150849050614ac18684615af0565b614acb9190615a9e565b90508415614bbc576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614b5a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614b7f9190615d22565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b614bc68183615ad9565b9150856020015186606001818151614bde9190615dc1565b61ffff9081169091526060880151885160009350839291821691614c03911686615af0565b614c0d9190615a9e565b90506000614c1b8286615ad9565b895190915061ffff1615614c8d57601760009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614c7957600080fd5b505af193505050508015614c8b575060015b505b604089015161ffff1615614cf8576013546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114614ced576040519150601f19603f3d011682016040523d82523d6000602084013e614cf2565b606091505b50909350505b5050505050505050505b506019805460ff19169055565b601e5462010000900460ff1615614d8e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610df2565b614d98828261476e565b158015614db257506012546001600160a01b038281169116145b15612052576001600160a01b038083166000908152600960205260409020805460ff19166001179055601e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017908190556301000000900416614e4757601e80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6017546001600160a01b0316614e77576017805473ffffffffffffffffffffffffffffffffffffffff1916301790555b6019805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415614ed45750600f5461ffff16614efe565b8315614eed5750600f5462010000900461ffff16614efe565b50600f54640100000000900461ffff165b80600003614f0f5785915050614fa0565b6000612710614f1e8389615af0565b614f289190615a9e565b30600090815260016020526040812080549293508392909190614f4c908490615d6d565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3614f9b8188615ad9565b925050505b95945050505050565b6001600160a01b03821660009081526008602052604090205460ff16615053576017546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561504057600080fd5b505af1925050508015615051575060015b505b6001600160a01b03811660009081526008602052604090205460ff166150fd576017546001600160a01b03828116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b1580156150ea57600080fd5b505af19250505080156150fb575060015b505b601e5460ff1615612052576017546018546040517fa9e732bb0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163a9e732bb916151569160040190815260200190565b600060405180830381600087803b15801561517057600080fd5b505af1925050508015615181575060015b15612052575050565b82805461519690615958565b90600052602060002090601f0160209004810192826151b857600085556151fe565b82601f106151d157805160ff19168380011785556151fe565b828001600101855582156151fe579182015b828111156151fe5782518255916020019190600101906151e3565b5061520a92915061520e565b5090565b5b8082111561520a576000815560010161520f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561527b5761527b615223565b604052919050565b600067ffffffffffffffff82111561529d5761529d615223565b5060051b60200190565b6001600160a01b0381168114611eb257600080fd5b600082601f8301126152cd57600080fd5b813560206152e26152dd83615283565b615252565b82815260059290921b8401810191818101908684111561530157600080fd5b8286015b84811015615325578035615318816152a7565b8352918301918301615305565b509695505050505050565b8015158114611eb257600080fd5b6000806040838503121561535157600080fd5b823567ffffffffffffffff81111561536857600080fd5b615374858286016152bc565b925050602083013561538581615330565b809150509250929050565b60005b838110156153ab578181015183820152602001615393565b838111156126c65750506000910152565b600081518084526153d4816020860160208601615390565b601f01601f19169290920160200192915050565b6020815260006126d960208301846153bc565b60006020828403121561540d57600080fd5b5035919050565b6000806040838503121561542757600080fd5b8235615432816152a7565b946020939093013593505050565b60006020828403121561545257600080fd5b81356126d9816152a7565b60008060006060848603121561547257600080fd5b833561547d816152a7565b9250602084013561548d816152a7565b929592945050506040919091013590565b600080604083850312156154b157600080fd5b50508035926020909101359150565b600080604083850312156154d357600080fd5b823567ffffffffffffffff808211156154eb57600080fd5b6154f7868387016152bc565b935060209150818501358181111561550e57600080fd5b85019050601f8101861361552157600080fd5b803561552f6152dd82615283565b81815260059190911b8201830190838101908883111561554e57600080fd5b928401925b8284101561556c57833582529284019290840190615553565b80955050505050509250929050565b6000806000806080858703121561559157600080fd5b843561559c81615330565b935060208501356155ac81615330565b925060408501356155bc81615330565b915060608501356155cc81615330565b939692955090935050565b803561ffff811681146155e957600080fd5b919050565b60008060006060848603121561560357600080fd5b61560c846155d7565b925061561a602085016155d7565b9150615628604085016155d7565b90509250925092565b6000806040838503121561564457600080fd5b823561564f816152a7565b9150602083013561538581615330565b60808152600061567260808301876153bc565b828103602084015261568481876153bc565b9050828103604084015261569881866153bc565b9050828103606084015261432781856153bc565b6000806000606084860312156156c157600080fd5b83356156cc81615330565b925060208401356156dc81615330565b915060408401356156ec81615330565b809150509250925092565b60008060006060848603121561570c57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561573957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561576857600080fd5b8235615773816152a7565b91506020830135615385816152a7565b60008083601f84011261579557600080fd5b50813567ffffffffffffffff8111156157ad57600080fd5b6020830191508360208260051b85010111156157c857600080fd5b9250929050565b600080600080600080600060a0888a0312156157ea57600080fd5b873567ffffffffffffffff8082111561580257600080fd5b61580e8b838c01615783565b909950975060208a013591508082111561582757600080fd5b506158348a828b01615783565b9096509450506040880135615848816152a7565b92506060880135615858816152a7565b91506080880135615868816152a7565b8091505092959891949750929550565b600081518084526020808501945080840160005b838110156158b15781516001600160a01b03168752958201959082019060010161588c565b509495945050505050565b6040815260006158cf6040830185615878565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060001982036159515761595161590f565b5060010190565b600181811c9082168061596c57607f821691505b6020821081036159a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600181815b808511156159e65781600019048211156159cc576159cc61590f565b808516156159d957918102915b93841c93908002906159b0565b509250929050565b6000826159fd575060016110ea565b81615a0a575060006110ea565b8160018114615a205760028114615a2a57615a46565b60019150506110ea565b60ff841115615a3b57615a3b61590f565b50506001821b6110ea565b5060208310610133831016604e8410600b8410161715615a69575081810a6110ea565b615a7383836159ab565b8060001904821115615a8757615a8761590f565b029392505050565b60006126d960ff8416836159ee565b600082615ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015615aeb57615aeb61590f565b500390565b6000816000190483118215151615615b0a57615b0a61590f565b500290565b600060ff821660ff8103615b2557615b2561590f565b60010192915050565b600061ffff808316818516808303821115615b4b57615b4b61590f565b01949350505050565b600060208284031215615b6657600080fd5b5051919050565b600082601f830112615b7e57600080fd5b815167ffffffffffffffff811115615b9857615b98615223565b615bab6020601f19601f84011601615252565b818152846020838601011115615bc057600080fd5b61119e826020830160208701615390565b60008060008060808587031215615be757600080fd5b845167ffffffffffffffff80821115615bff57600080fd5b615c0b88838901615b6d565b95506020870151915080821115615c2157600080fd5b615c2d88838901615b6d565b94506040870151915080821115615c4357600080fd5b615c4f88838901615b6d565b93506060870151915080821115615c6557600080fd5b50615c7287828801615b6d565b91505092959194509250565b60006126d983836159ee565b60008060008060808587031215615ca057600080fd5b845167ffffffffffffffff80821115615cb857600080fd5b615cc488838901615b6d565b95506020870151915080821115615cda57600080fd5b50615ce787828801615b6d565b93505060408501519150606085015160ff811681146155cc57600080fd5b600060208284031215615d1757600080fd5b81516126d9816152a7565b600080600060608486031215615d3757600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215615d6257600080fd5b81516126d981615330565b60008219821115615d8057615d8061590f565b500190565b85815284602082015260a060408201526000615da460a0830186615878565b6001600160a01b0394909416606083015250608001529392505050565b600061ffff83811690831681811015615ddc57615ddc61590f565b03939250505056fea264697066735822122023b233c9a835acf7b31567459ef72e7dd0e826f070cdd86c8dc660ebbf9824fd64736f6c634300080d0033

Deployed Bytecode Sourcemap

5198:27324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:73;;;;;;;;;;;;6862:42;6831:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6831:73:0;;;;;;;;7443:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;7443:28:0;245:177:1;18518:294:0;;;;;;;;;;-1:-1:-1;18518:294:0;;;;;:::i;:::-;;:::i;:::-;;6229:114;;;;;;;;;;-1:-1:-1;6229:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;2855:6:1;2888:15;;;2870:34;;2940:15;;;2935:2;2920:18;;2913:43;2992:15;;2972:18;;;2965:43;;;;2833:2;2818:18;6229:114:0;2649:365:1;14225:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6768:26::-;;;;;;;;;;-1:-1:-1;6768:26:0;;;;-1:-1:-1;;;;;6768:26:0;;;19272:150;;;;;;;;;;-1:-1:-1;19272:150:0;;;;;:::i;:::-;;:::i;14646:216::-;;;;;;;;;;-1:-1:-1;14646:216:0;;;;;:::i;:::-;;:::i;:::-;;;4747:14:1;;4740:22;4722:41;;4710:2;4695:18;14646:216:0;4582:187:1;17366:140:0;;;;;;;;;;-1:-1:-1;17366:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;17464:34:0;17440:4;17464:34;;;:25;:34;;;;;;;;;17366:140;22150:112;;;;;;;;;;;;;:::i;13896:115::-;;;;;;;;;;;;;:::i;15560:306::-;;;;;;;;;;-1:-1:-1;15560:306:0;;;;;:::i;:::-;;:::i;21633:267::-;;;;;;;;;;-1:-1:-1;21633:267:0;;;;;:::i;:::-;;:::i;30965:411::-;;;;;;;;;;-1:-1:-1;30965:411:0;;;;;:::i;:::-;;:::i;7551:28::-;;;;;;;;;;;;;;;;19069:195;;;;;;;;;;-1:-1:-1;19069:195:0;;;;;:::i;:::-;;:::i;6512:42::-;;;;;;;;;;;;6550:4;6512:42;;7478:25;;;;;;;;;;;;;;;;14017:112;;;;;;;;;;;;;:::i;:::-;;;7707:4:1;7695:17;;;7677:36;;7665:2;7650:18;14017:112:0;7535:184:1;20030:488:0;;;;;;;;;;-1:-1:-1;20030:488:0;;;;;:::i;:::-;;:::i;18953:108::-;;;;;;;;;;-1:-1:-1;18953:108:0;;;;;:::i;:::-;;:::i;17514:140::-;;;;;;;;;;-1:-1:-1;17514:140:0;;;;;:::i;:::-;;:::i;22028:114::-;;;;;;;;;;;;;:::i;6801:21::-;;;;;;;;;;-1:-1:-1;6801:21:0;;;;-1:-1:-1;;;;;6801:21:0;;;6665:46;;;;;;;;;;;;6707:4;6665:46;;7631:34;;;;;;;;;;-1:-1:-1;7631:34:0;;;;;;;;;;;21908:112;;;;;;;;;;;;;:::i;22651:215::-;;;;;;;;;;-1:-1:-1;22651:215:0;;;;;:::i;:::-;;:::i;12460:759::-;;;;;;;;;;-1:-1:-1;12460:759:0;;;;;:::i;:::-;;:::i;16946:127::-;;;;;;;;;;-1:-1:-1;16946:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;17037:28:0;17013:4;17037:28;;;:19;:28;;;;;;;;;16946:127;7672:36;;;;;;;;;;-1:-1:-1;7672:36:0;;;;;;;;;;;18019:134;;;;;;;;;;-1:-1:-1;18019:134:0;;;;;:::i;:::-;;:::i;17226:132::-;;;;;;;;;;-1:-1:-1;17226:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;17320:30:0;17296:4;17320:30;;;:21;:30;;;;;;;;;17226:132;32235:140;;;;;;;;;;-1:-1:-1;32235:140:0;;;;;:::i;:::-;;:::i;32056:171::-;;;;;;;;;;-1:-1:-1;32056:171:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;22874:340::-;;;;;;;;;;-1:-1:-1;22874:340:0;;;;;:::i;:::-;;:::i;31384:124::-;;;;;;;;;;;;;:::i;17662:349::-;;;;;;;;;;-1:-1:-1;17662:349:0;;;;;:::i;:::-;;:::i;14396:103::-;;;;;;;;;;-1:-1:-1;14396:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;14480:16:0;14462:7;14480:16;;;:7;:16;;;;;;;14396:103;13227:277;;;;;;;;;;;;;:::i;16422:516::-;;;;;;;;;;-1:-1:-1;16422:516:0;;;;;:::i;:::-;;:::i;14311:79::-;;;;;;;;;;-1:-1:-1;14363:7:0;14381:6;-1:-1:-1;;;;;14381:6:0;14311:79;;15219:173;;;;;;;;;;;;;:::i;19430:592::-;;;;;;;;;;;;;:::i;14135:84::-;;;;;;;;;;;;;:::i;31822:100::-;;;;;;;;;;;;;:::i;15400:152::-;;;;;;;;;;-1:-1:-1;15400:152:0;;;;;:::i;:::-;;:::i;20526:420::-;;;;;;;;;;-1:-1:-1;20526:420:0;;;;;:::i;:::-;;:::i;32383:136::-;;;;;;;;;;-1:-1:-1;32383:136:0;;;;;:::i;:::-;;:::i;23222:275::-;;;;;;;;;;-1:-1:-1;23222:275:0;;;;;:::i;:::-;;:::i;7510:34::-;;;;;;;;;;-1:-1:-1;7510:34:0;;;;;;;;21089:536;;;;;;;;;;-1:-1:-1;21089:536:0;;;;;:::i;:::-;;:::i;17081:137::-;;;;;;;;;;-1:-1:-1;17081:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;17177:33:0;17153:4;17177:33;;;:24;:33;;;;;;;;;17081:137;6352:151;;;;;;;;;;-1:-1:-1;6352:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10784:6:1;10817:15;;;10799:34;;10869:15;;;10864:2;10849:18;;10842:43;10921:15;;;10901:18;;;10894:43;;;;10973:15;;;10968:2;10953:18;;10946:43;10761:3;10746:19;6352:151:0;10551:444:1;23505:131:0;;;;;;;;;;-1:-1:-1;23505:131:0;;;;;:::i;:::-;;:::i;14505:133::-;;;;;;;;;;-1:-1:-1;14505:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14607:19:0;;;14589:7;14607:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14505:133;9481:2427;;;;;;;;;;-1:-1:-1;9481:2427:0;;;;;:::i;:::-;;:::i;15874:540::-;;;;;;;;;;-1:-1:-1;15874:540:0;;;;;:::i;:::-;;:::i;20954:127::-;;;;;;;;;;-1:-1:-1;20954:127:0;;;;;:::i;:::-;;:::i;31516:182::-;;;;;;;;;;;;;:::i;18317:193::-;;;;;;;;;;-1:-1:-1;18317:193:0;;;;;:::i;:::-;;:::i;7588:34::-;;;;;;;;;;-1:-1:-1;7588:34:0;;;;;;;;31930:118;;;;;;;;;;;;;:::i;7064:128::-;;;;;;;;;;-1:-1:-1;7064:128:0;;;;-1:-1:-1;;;;;7064:128:0;;;22270:373;;;;;;;;;;-1:-1:-1;22270:373:0;;;;;:::i;:::-;;:::i;7397:39::-;;;;;;;;;;-1:-1:-1;7397:39:0;;;;;;;;;;;18820:125;;;;;;;;;;-1:-1:-1;18820:125:0;;;;;:::i;:::-;;:::i;18161:148::-;;;;;;;;;;-1:-1:-1;18161:148:0;;;;;:::i;:::-;;:::i;18518:294::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;;;;;;;;;18626:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;18626:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;18664:8;;18674:7;;18626:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18697:9;18693:112;18716:8;:15;18712:1;:19;18693:112;;;18752:41;18772:8;18781:1;18772:11;;;;;;;;:::i;:::-;;;;;;;18785:7;18752:19;:41::i;:::-;18733:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18693:112;;;;18518:294:::0;;:::o;14225:80::-;14273:13;14297:5;14290:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14225:80;:::o;19272:150::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;19356:3:::1;19349;:10;;19341:31;;;::::0;-1:-1:-1;;;19341:31:0;;15888:2:1;19341:31:0::1;::::0;::::1;15870:21:1::0;15927:1;15907:18;;;15900:29;15965:10;15945:18;;;15938:38;15993:18;;19341:31:0::1;15686:331:1::0;19341:31:0::1;19383:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;19383:9:0;;;::::1;-1:-1:-1::0;;;;;19383:9:0::1;::::0;:26:::1;::::0;364:18:1;;19383:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19272:150:::0;:::o;14646:216::-;14750:10;14721:4;14738:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14738:32:0;;;;;;;;;;:41;;;14795:37;14721:4;;14738:32;;14795:37;;;;14773:6;391:25:1;;379:2;364:18;;245:177;14795:37:0;;;;;;;;-1:-1:-1;14850:4:0;14646:216;;;;;:::o;22150:112::-;22244:9;;22195:7;;22240:13;;22244:9;;22240:2;:13;:::i;:::-;22222:14;;:32;;;;:::i;:::-;22215:39;;22150:112;:::o;13896:115::-;13951:7;13966;;13977:1;13966:12;13962:31;;13982:8;;;13962:31;-1:-1:-1;14001:7:0;;;13896:115::o;15560:306::-;-1:-1:-1;;;;;15681:19:0;;15660:4;15681:19;;;:11;:19;;;;;;;;15701:10;15681:31;;;;;;;;-1:-1:-1;;15681:52:0;15677:126;;-1:-1:-1;;;;;15750:19:0;;;;;;:11;:19;;;;;;;;15770:10;15750:31;;;;;;;:41;;15785:6;;15750:19;:41;;15785:6;;15750:41;:::i;:::-;;;;-1:-1:-1;;15677:126:0;15822:36;15832:6;15840:9;15851:6;15822:9;:36::i;:::-;15815:43;15560:306;-1:-1:-1;;;;15560:306:0:o;21633:267::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;21775:4:::1;21765:7;;:14;;;;:::i;:::-;21753:7;21742;21732;;:17;;;;:::i;:::-;21731:29;;;;:::i;:::-;:49;;21723:112;;;::::0;-1:-1:-1;;;21723:112:0;;18369:2:1;21723:112:0::1;::::0;::::1;18351:21:1::0;18408:2;18388:18;;;18381:30;18447:34;18427:18;;;18420:62;18518:20;18498:18;;;18491:48;18556:19;;21723:112:0::1;18167:414:1::0;21723:112:0::1;21885:7;21874;21864;;:17;;;;:::i;:::-;21863:29;;;;:::i;:::-;21846:14;:46:::0;-1:-1:-1;;21633:267:0:o;30965:411::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;31100:7:::1;:14;31081:8;:15;:33;31073:67;;;::::0;-1:-1:-1;;;31073:67:0;;18788:2:1;31073:67:0::1;::::0;::::1;18770:21:1::0;18827:2;18807:18;;;18800:30;18866:23;18846:18;;;18839:51;18907:18;;31073:67:0::1;18586:345:1::0;31073:67:0::1;31156:7;31151:218;31173:8;:15;31169:1;:19;;;31151:218;;;31243:7;31251:1;31243:10;;;;;;;;;;:::i;:::-;;;;;;;31218:21;31228:10;-1:-1:-1::0;;;;;14480:16:0;14462:7;14480:16;;;:7;:16;;;;;;;14396:103;31218:21:::1;:35;;31210:44;;;::::0;::::1;;31269:88;31287:10;31299:8;31308:1;31299:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;31327:9:::1;::::0;31323:13:::1;::::0;31327:9:::1;;31323:2;:13;:::i;:::-;31312:7;31320:1;31312:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;31338:5;31345::::0;31352:4:::1;31269:17;:88::i;:::-;-1:-1:-1::0;31190:3:0;::::1;::::0;::::1;:::i;:::-;;;;31151:218;;19069:195:::0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;19191:9:::1;::::0;:65:::1;::::0;;;;19348:14:1;;19341:22;19191:65:0::1;::::0;::::1;19323:41:1::0;19407:14;;19400:22;19380:18;;;19373:50;19466:14;;19459:22;19439:18;;;19432:50;19525:14;;19518:22;19498:18;;;19491:50;19191:9:0;;;::::1;-1:-1:-1::0;;;;;19191:9:0::1;::::0;:24:::1;::::0;19295:19:1;;19191:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19069:195:::0;;;;:::o;14017:112::-;14069:5;14082:7;;14093:1;14082:12;14078:31;;14098:8;;;14078:31;-1:-1:-1;14117:9:0;;;;;14017:112::o;20030:488::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;6550:4:::1;20137:6;:21;;;;:65;;;;;6600:4;20179:7;:23;;;;20137:65;:117;;;;;6654:4;20223:11;:31;;;;20137:117;20129:170;;;::::0;-1:-1:-1;;;20129:170:0;;19754:2:1;20129:170:0::1;::::0;::::1;19736:21:1::0;19793:2;19773:18;;;19766:30;19832:25;19812:18;;;19805:53;19875:18;;20129:170:0::1;19552:347:1::0;20129:170:0::1;6707:4;20318:16;20327:7:::0;20318:6;:16:::1;:::i;:::-;:35;;;;20310:80;;;::::0;-1:-1:-1;;;20310:80:0;;20335:2:1;20310:80:0::1;::::0;::::1;20317:21:1::0;;;20354:18;;;20347:30;20413:34;20393:18;;;20386:62;20465:18;;20310:80:0::1;20133:356:1::0;20310:80:0::1;20401:9;:25:::0;;::::1;::::0;;::::1;20437:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;20475:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;20030:488::o;18953:108::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;19022:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;19022:31:0::1;::::0;::::1;160:74:1::0;19022:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;19022:31:0::1;14:226:1::0;17514:140:0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;-1:-1:-1;;;;;17606:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;17606:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17514:140::o;22028:114::-;22124:9;;22073:7;;22120:13;;22124:9;;22120:2;:13;:::i;:::-;22100:16;;:34;;;;:::i;21908:112::-;22002:9;;21952:7;;21998:13;;22002:9;;21998:2;:13;:::i;:::-;21979:15;;:33;;;;:::i;22651:215::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;22781:3:::1;22755:22;:29;;22747:62;;;::::0;-1:-1:-1;;;22747:62:0;;20696:2:1;22747:62:0::1;::::0;::::1;20678:21:1::0;20735:2;20715:18;;;20708:30;20774:22;20754:18;;;20747:50;20814:18;;22747:62:0::1;20494:344:1::0;22747:62:0::1;22820:13;:38:::0;22651:215::o;12460:759::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;-1:-1:-1;;;;;12539:22:0;::::1;12531:96;;;::::0;-1:-1:-1;;;12531:96:0;;21045:2:1;12531:96:0::1;::::0;::::1;21027:21:1::0;21084:2;21064:18;;;21057:30;21123:34;21103:18;;;21096:62;21194:31;21174:18;;;21167:59;21243:19;;12531:96:0::1;20843:425:1::0;12531:96:0::1;12646:16:::0;-1:-1:-1;;;;;12646:16:0;::::1;::::0;12638:90:::1;;;::::0;-1:-1:-1;;;12638:90:0;;21045:2:1;12638:90:0::1;::::0;::::1;21027:21:1::0;21084:2;21064:18;;;21057:30;21123:34;21103:18;;;21096:62;21194:31;21174:18;;;21167:59;21243:19;;12638:90:0::1;20843:425:1::0;12638:90:0::1;12769:5;12759:6:::0;;-1:-1:-1;;;;;12759:6:0;;::::1;12739:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;12739:35:0;;::::1;::::0;;;12810:6;;;::::1;12785:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;12836:29;;::::1;::::0;;;;;;;;:36;;;::::1;-1:-1:-1::0;12836:36:0;;::::1;::::0;;;12883:34;;;;;;:41;;;;::::1;::::0;::::1;::::0;;12958:6;;;;::::1;14480:16:::0;;;;;;12948:21;12945:127:::1;;13004:6;::::0;;-1:-1:-1;;;;;13004:6:0::1;14480:16:::0;;;:7;:16;;;;;;;12986:74:::1;::::0;13004:6;13012:8;;13022:17:::1;14396:103:::0;12986:74:::1;;12945:127;13092:16;13111:6:::0;;-1:-1:-1;;;;;13128:17:0;;::::1;-1:-1:-1::0;;13128:17:0;::::1;::::0;::::1;::::0;;13161:40:::1;::::0;13111:6;;;::::1;::::0;;;13161:40:::1;::::0;13092:16;13161:40:::1;12520:699;12460:759:::0;:::o;18019:134::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;-1:-1:-1;;;;;18107:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;18107:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18019:134::o;32235:140::-;32329:9;;:38;;;;;-1:-1:-1;;;;;178:55:1;;;32329:38:0;;;160:74:1;32302:7:0;;32329:9;;:32;;133:18:1;;32329:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32056:171::-;32192:9;;:27;;;;;-1:-1:-1;;;;;178:55:1;;;32192:27:0;;;160:74:1;32114:13:0;;;;;;;;32192:9;;:21;;133:18:1;;32192:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32192:27:0;;;;;;;;;;;;:::i;:::-;32185:34;;;;;;;;32056:171;;;;;:::o;22874:340::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;23011:19:::1;:33:::0;;-1:-1:-1;;23011:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;23055:14:::1;:38:::0;;-1:-1:-1;;23055:38:0;;::::1;::::0;::::1;;;::::0;;;23104:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;23167:39:::1;::::0;4722:41:1;;;23167:39:0::1;::::0;4710:2:1;4695:18;23167:39:0::1;;;;;;;22874:340:::0;;;:::o;31384:124::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;31443:9:::1;;;;;;;;;-1:-1:-1::0;;;;;31443:9:0::1;-1:-1:-1::0;;;;;31443:14:0::1;;31465:21;31443:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;31439:62:::0;31384:124::o;17662:349::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;-1:-1:-1;;;;;17757:23:0;::::1;17775:4;17757:23;::::0;::::1;::::0;:43:::1;;-1:-1:-1::0;17794:6:0::1;::::0;-1:-1:-1;;;;;17784:16:0;;::::1;17794:6:::0;::::1;17784:16;;17757:43;17749:52;;;::::0;::::1;;-1:-1:-1::0;;;;;17812:32:0;::::1;;::::0;;;:24:::1;:32;::::0;;;;:42;;-1:-1:-1;;17812:42:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;17865:139:::1;;17893:9;::::0;:26:::1;::::0;;;;-1:-1:-1;;;;;23199:55:1;;;17893:26:0::1;::::0;::::1;23181:74:1::0;17893:9:0::1;23271:18:1::0;;;23264:34;17893:9:0;;::::1;::::0;:15:::1;::::0;23154:18:1;;17893:26:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17662:349:::0;;:::o;17865:139::-:1;17952:9;::::0;-1:-1:-1;;;;;17976:15:0;;::::1;17952:9;17976:15:::0;;;17952:9;17976:15:::1;::::0;;;;;;;17952:40;;;;;::::1;::::0;::::1;23181:74:1::0;;;;23271:18;;;23264:34;17952:9:0;::::1;::::0;:15:::1;::::0;23154:18:1;;17952:40:0::1;22999:305:1::0;17865:139:0::1;17662:349:::0;;:::o;13227:277::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;13316:5:::1;13306:6:::0;;-1:-1:-1;;;;;13306:6:0;;::::1;13286:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;13286:35:0;;::::1;::::0;;;13357:6;;;::::1;13332:32:::0;;:24:::1;:32:::0;;;;;;:40;;;;::::1;::::0;;;13402:6;;-1:-1:-1;;13419:19:0;::::1;::::0;;13454:42;;13402:6;::::1;::::0;13316:5;13402:6;;13454:42:::1;::::0;13316:5;;13454:42:::1;13275:229;13227:277::o:0;16422:516::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;16503:16;::::1;;16514:5;16503:16:::0;16499:432:::1;;-1:-1:-1::0;;;;;16536:13:0;;::::1;16552:5;16536:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;16536:21:0::1;::::0;;16572:9:::1;::::0;:32;;;;;::::1;::::0;::::1;23779:74:1::0;;;;23869:18;;;23862:50;;;;16572:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;23752:18:1;;16572:32:0::1;23611:307:1::0;16499:432:0::1;16641:17;::::0;:22;16637:152:::1;;16730:6;16710:17;;16692:15;:35;;;;:::i;:::-;:44;16684:89;;;::::0;-1:-1:-1;;;16684:89:0;;24125:2:1;16684:89:0::1;::::0;::::1;24107:21:1::0;;;24144:18;;;24137:30;24203:34;24183:18;;;24176:62;24255:18;;16684:89:0::1;23923:356:1::0;16684:89:0::1;-1:-1:-1::0;;;;;16803:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;16803:20:0::1;16819:4;16803:20:::0;;::::1;::::0;;;16858:15:::1;16838:17;:35:::0;16888:9:::1;::::0;:31;;;;;::::1;::::0;::::1;23779:74:1::0;;;;23869:18;;;23862:50;16888:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;23752:18:1;;16888:31:0::1;23611:307:1::0;15219:173:0;15283:4;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;15332:9:::1;::::0;15300:62:::1;::::0;15317:4:::1;::::0;-1:-1:-1;;;;;15332:9:0::1;-1:-1:-1::0;;15300:8:0::1;:62::i;:::-;-1:-1:-1::0;15380:4:0::1;15219:173:::0;:::o;19430:592::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;19492:14:::1;::::0;::::1;::::0;::::1;;;19491:15;19483:52;;;::::0;-1:-1:-1;;;19483:52:0;;24486:2:1;19483:52:0::1;::::0;::::1;24468:21:1::0;24525:2;24505:18;;;24498:30;24564:26;24544:18;;;24537:54;24608:18;;19483:52:0::1;24284:348:1::0;19483:52:0::1;19554:16;::::0;;;::::1;;;19546:53;;;::::0;-1:-1:-1;;;19546:53:0;;24839:2:1;19546:53:0::1;::::0;::::1;24821:21:1::0;24878:2;24858:18;;;24851:30;24917:26;24897:18;;;24890:54;24961:18;;19546:53:0::1;24637:348:1::0;19546:53:0::1;19621:9;::::0;;;::::1;-1:-1:-1::0;;;;;19621:9:0::1;19610:99;;19661:9;:36:::0;;;::::1;19691:4;19661:36:::0;::::1;;::::0;;19610:99:::1;19723:9;::::0;19743:6:::1;::::0;19798:9:::1;::::0;19723:85:::1;::::0;;;;-1:-1:-1;;;;;19743:6:0;;::::1;19723:85;::::0;::::1;25213:74:1::0;25335:10;19758:12:0::1;25323:23:1::0;25303:18;;;25296:51;25395:18;19780:15:0::1;25383:31:1::0;25363:18;;;25356:59;19798:9:0::1;::::0;;::::1;25431:18:1::0;;;25424:45;19723:9:0;;;::::1;;::::0;:19:::1;::::0;25185::1;;19723:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19719:101:::0;19834:9:::1;;;;;;;;;-1:-1:-1::0;;;;;19834:9:0::1;-1:-1:-1::0;;;;;19834:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;19878:14:0::1;:21:::0;;-1:-1:-1;;19878:21:0::1;;;::::0;;19937:6:::1;::::0;-1:-1:-1;;;;;19937:6:0::1;-1:-1:-1::0;14480:16:0;;;-1:-1:-1;14480:16:0;;;;;;19953:5:::1;::::0;19927:22:::1;::::0;19947:2:::1;19927:22;:::i;:::-;19926:32;;;;:::i;:::-;19910:13;:48:::0;19993:6:::1;::::0;-1:-1:-1;;;;;19993:6:0::1;14462:7:::0;14480:16;;;:7;:16;;;;;;20009:5:::1;::::0;19983:22:::1;::::0;20003:2:::1;19983:22;:::i;:::-;19982:32;;;;:::i;:::-;19969:10;:45:::0;19430:592::o;14135:84::-;14185:13;14209:7;14202:14;;;;;:::i;31822:100::-;31873:9;;:41;;;;;31903:10;31873:41;;;160:74:1;-1:-1:-1;;;;;31873:9:0;;;;:29;;133:18:1;;31873:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31822:100::o;15400:152::-;15480:4;15504:40;15514:10;15526:9;15537:6;15504:9;:40::i;:::-;15497:47;15400:152;-1:-1:-1;;;15400:152:0:o;20526:420::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;20627:7:::1;:25:::0;;::::1;20703:29:::0;;::::1;::::0;::::1;::::0;20663;;::::1;::::0;::::1;::::0;;;;20627:25;;::::1;20663:29:::0;;;;;;;::::1;20703;;::::0;;20723:9;20759:19:::1;20683:9:::0;20645:7;20759:19:::1;:::i;:::-;:31;;;;:::i;:::-;20743:7;:47:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;20836:9:::1;:17:::0;-1:-1:-1;;20817:36:0::1;::::0;20836:17;;::::1;::::0;::::1;::::0;20817:16:::1;:36;:::i;:::-;20872:7;:13:::0;20801:52:::1;::::0;;::::1;::::0;-1:-1:-1;20872:13:0;;::::1;;:22:::0;-1:-1:-1;20872:22:0::1;20864:74;;;::::0;-1:-1:-1;;;20864:74:0;;25682:2:1;20864:74:0::1;::::0;::::1;25664:21:1::0;25721:2;25701:18;;;25694:30;25760:34;25740:18;;;25733:62;25831:9;25811:18;;;25804:37;25858:19;;20864:74:0::1;25480:403:1::0;32383:136:0;32478:9;;:33;;;;;-1:-1:-1;;;;;178:55:1;;;32478:33:0;;;160:74:1;32451:7:0;;32478:9;;:27;;133:18:1;;32478:33:0;14:226:1;23222:275:0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;23393:27:::1;23397:23:::0;23393:2:::1;:27;:::i;:::-;23376:44;::::0;:14;:44:::1;:::i;:::-;23431:9;::::0;:58:::1;::::0;;;;::::1;::::0;::::1;26198:25:1::0;;;26239:18;;;26232:34;;;23359:61:0;;-1:-1:-1;;;;;;23431:9:0::1;::::0;:30:::1;::::0;26171:18:1;;23431:58:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23222:275:::0;;;:::o;21089:536::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;21285:4:::1;21275:7;;:14;;;;:::i;:::-;21260:10;21246;21236:7;;:20;;;;:::i;:::-;21235:35;;;;:::i;:::-;:55;;21227:123;;;::::0;-1:-1:-1;;;21227:123:0;;26479:2:1;21227:123:0::1;::::0;::::1;26461:21:1::0;26518:2;26498:18;;;26491:30;26557:34;26537:18;;;26530:62;26628:25;26608:18;;;26601:53;26671:19;;21227:123:0::1;26277:419:1::0;21227:123:0::1;21421:4;21411:7;;:14;;;;:::i;:::-;21395:11;21380;21370:7;;:21;;;;:::i;:::-;21369:37;;;;:::i;:::-;:57;;21361:125;;;::::0;-1:-1:-1;;;21361:125:0;;26479:2:1;21361:125:0::1;::::0;::::1;26461:21:1::0;26518:2;26498:18;;;26491:30;26557:34;26537:18;;;26530:62;26628:25;26608:18;;;26601:53;26671:19;;21361:125:0::1;26277:419:1::0;21361:125:0::1;21540:10;21526;21516:7;;:20;;;;:::i;:::-;21515:35;;;;:::i;:::-;21497:15;:53:::0;21581:7:::1;::::0;21606:11;;21581:21:::1;::::0;21591:11;;21581:21:::1;:::i;:::-;21580:37;;;;:::i;:::-;21561:16;:56:::0;-1:-1:-1;;;;21089:536:0:o;23505:131::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;23592:6:::1;23586:3;:12;23578:21;;;::::0;::::1;;23610:12;:18:::0;23505:131::o;9481:2427::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;9661:19:::1;::::0;;;::::1;;;9660:20;9652:34;;;::::0;-1:-1:-1;;;9652:34:0;;26903:2:1;9652:34:0::1;::::0;::::1;26885:21:1::0;26942:1;26922:18;;;26915:29;26980:3;26960:18;;;26953:31;27001:18;;9652:34:0::1;26701:324:1::0;9652:34:0::1;9705:33:::0;;::::1;9697:47;;;::::0;-1:-1:-1;;;9697:47:0;;27232:2:1;9697:47:0::1;::::0;::::1;27214:21:1::0;27271:1;27251:18;;;27244:29;27309:3;27289:18;;;27282:31;27330:18;;9697:47:0::1;27030:324:1::0;9697:47:0::1;9755:9;:33:::0;;-1:-1:-1;;;;;9755:33:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;9799:9:::1;:29:::0;;;;::::1;-1:-1:-1::0;;9799:29:0;;::::1;::::0;::::1;::::0;;9839:22:::1;::::0;;;;;;;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;-1:-1:-1;;9839:22:0;;;;;;;;-1:-1:-1;9799:29:0;9839:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9872:8:0::1;:30:::0;;-1:-1:-1;;9872:30:0::1;-1:-1:-1::0;;;;;9872:30:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9922:6:0;9913:54:::1;::::0;-1:-1:-1;9922:6:0;;::::1;::::0;-1:-1:-1;;;9913:8:0::1;:54::i;:::-;-1:-1:-1::0;;;;;9978:28:0;;::::1;;::::0;;;:17:::1;:28;::::0;;;;;;;:35;;10009:4:::1;-1:-1:-1::0;;9978:35:0;;::::1;::::0;::::1;::::0;;;10024:24:::1;:35:::0;;;;;:42;;;::::1;::::0;::::1;::::0;;10077:19:::1;:30:::0;;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;10129:9:::1;::::0;:33;;;;;10156:4:::1;10129:33;::::0;::::1;160:74:1::0;10129:9:0;;;::::1;::::0;;::::1;::::0;:18:::1;::::0;133::1;;10129:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;10125:49:::0;10188:9:::1;;;;;;;;;-1:-1:-1::0;;;;;10188:9:0::1;-1:-1:-1::0;;;;;10188:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;10188:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;10184:406;;10567:11;::::0;-1:-1:-1;;;10567:11:0;;28340:2:1;10567:11:0::1;::::0;::::1;28322:21:1::0;28379:1;28359:18;;;28352:29;28417:3;28397:18;;;28390:31;28438:18;;10567:11:0::1;28138:324:1::0;10184:406:0::1;10338:16:::0;;::::1;::::0;:5:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10369:20:0;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10404:14:0::1;:35:::0;;;10454:9:::1;:24:::0;;-1:-1:-1;;10454:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;;10520:13:::1;::::0;::::1;:::i;:::-;10503:14;;:30;;;;:::i;:::-;10493:7;:40:::0;-1:-1:-1;;;;10620:9:0::1;;;;;;;;;-1:-1:-1::0;;;;;10620:9:0::1;-1:-1:-1::0;;;;;10620:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10609:42:0::1;;10652:9;;;;;;;;;-1:-1:-1::0;;;;;10652:9:0::1;-1:-1:-1::0;;;;;10652:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10609:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;28976:15:1;;;10609:75:0::1;::::0;::::1;28958:34:1::0;10678:4:0::1;29008:18:1::0;;;29001:43;28870:18;;10609:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10600:6;:84:::0;;-1:-1:-1;;10600:84:0::1;-1:-1:-1::0;;;;;10600:84:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;10695:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;10695:22:0;;::::1;-1:-1:-1::0;10695:22:0;;::::1;::::0;;;10753:6;;;;::::1;10728:32:::0;;:24:::1;:32:::0;;;;;:39;;;;::::1;::::0;;::::1;::::0;;10797:7:::1;::::0;10813:4:::1;::::0;10797:12:::1;::::0;10807:2:::1;10797:12;:::i;:::-;10796:21;;;;:::i;:::-;10778:15;:39:::0;10848:7:::1;::::0;10864:5:::1;::::0;10848:12:::1;::::0;10858:2:::1;10848:12;:::i;:::-;10847:22;;;;:::i;:::-;10828:16;:41:::0;10898:7:::1;::::0;10914:4:::1;::::0;10898:12:::1;::::0;10908:2:::1;10898:12;:::i;:::-;10897:21;;;;:::i;:::-;10880:14;:38:::0;10929:19:::1;:26:::0;;;::::1;::::0;::::1;::::0;;10986:7:::1;::::0;10929:26;10976:6;;-1:-1:-1;;;;;10976:6:0;;::::1;10968:15:::0;;10951:4:::1;10968:15;::::0;;;;;:25;;;11030:6;;11009:37;;11030:6;::::1;::::0;11009:37:::1;::::0;::::1;::::0;391:25:1;;379:2;364:18;;245:177;11009:37:0::1;;;;;;;;11091:9;::::0;11059:62:::1;::::0;11076:4:::1;::::0;-1:-1:-1;;;;;11091:9:0::1;-1:-1:-1::0;;11059:8:0::1;:62::i;:::-;11141:6;::::0;11157:9:::1;::::0;11132:55:::1;::::0;-1:-1:-1;;;;;11141:6:0;;::::1;::::0;11157:9:::1;-1:-1:-1::0;;11132:8:0::1;:55::i;:::-;11204:9;11200:195;11219:19:::0;;::::1;11200:195;;;11293:9;::::0;11259:14:::1;::::0;11289:13:::1;::::0;11293:9:::1;;11289:2;:13;:::i;:::-;11276:7;;11284:1;11276:10;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;11335:6;::::0;11259:43;;-1:-1:-1;11317:66:0::1;::::0;-1:-1:-1;;;;;11335:6:0::1;11343:8:::0;;11352:1;11343:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11356:6;11364:5;11371::::0;11378:4:::1;11317:17;:66::i;:::-;;11244:151;11240:3;;;;;:::i;:::-;;;;11200:195;;;-1:-1:-1::0;11425:6:0::1;::::0;11444:8:::1;::::0;:34:::1;::::0;;;;;;;11407:92:::1;::::0;-1:-1:-1;;;;;11425:6:0;;::::1;::::0;11433:9;;11444:8;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:34:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11407:92::-;-1:-1:-1::0;11528:6:0::1;::::0;;-1:-1:-1;;;;;11528:6:0::1;14480:16:::0;;;:7;:16;;;;;;;11510:79:::1;::::0;11528:6;11544:4:::1;::::0;11551:17:::1;14396:103:::0;11510:79:::1;-1:-1:-1::0;11602:9:0::1;::::0;-1:-1:-1;;;;;11602:9:0::1;:25;11635:21;11680:4;11700:24;11680:4:::0;-1:-1:-1;;;;;14480:16:0;14462:7;14480:16;;;:7;:16;;;;;;;14396:103;11700:24:::1;11739:1;11825:6:::0;;11602:270:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;29437:15:1;;;11602:270:0::1;::::0;::::1;29419:34:1::0;29469:18;;;29462:34;;;;29512:18;;;29505:34;;;29555:18;;;29548:34;;;;11825:6:0;;;::::1;29598:19:1::0;;;29591:44;11846:15:0::1;29651:19:1::0;;;29644:35;29330:19;;11602:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11885:15;:13;:15::i;15874:540::-:0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;15943:20:::1;15976:9;15943:43;;15997:16;16027:10;-1:-1:-1::0;;;;;16027:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16016:40:0::1;;16065:4;16072:10;-1:-1:-1::0;;;;;16072:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16016:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;28976:15:1;;;16016:74:0::1;::::0;::::1;28958:34:1::0;29028:15;;29008:18;;;29001:43;28870:18;;16016:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15997:93:::0;-1:-1:-1;;;;;;16105:22:0;::::1;16101:200;;16164:10;-1:-1:-1::0;;;;;16164:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16153:43:0::1;;16205:4;16212:10;-1:-1:-1::0;;;;;16212:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16153:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;28976:15:1;;;16153:77:0::1;::::0;::::1;28958:34:1::0;29028:15;;29008:18;;;29001:43;28870:18;;16153:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16144:6;:86:::0;;-1:-1:-1;;16144:86:0::1;-1:-1:-1::0;;;;;16144:86:0;;;::::1;::::0;;;::::1;::::0;;16101:200:::1;;;16272:6;:17:::0;;-1:-1:-1;;16272:17:0::1;-1:-1:-1::0;;;;;16272:17:0;::::1;;::::0;;16101:200:::1;16311:9;:22:::0;;-1:-1:-1;;16311:22:0::1;-1:-1:-1::0;;;;;16311:22:0;::::1;::::0;;::::1;::::0;;;16344:62:::1;::::0;16361:4:::1;::::0;-1:-1:-1;;16344:8:0::1;:62::i;20954:127::-:0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;21031:11:::1;:42:::0;;-1:-1:-1;;21031:42:0::1;-1:-1:-1::0;;;;;21031:42:0;;;::::1;::::0;;;::::1;::::0;;20954:127::o;31516:182::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;31583:16:::1;::::0;;;::::1;;;31582:17;31574:58;;;::::0;-1:-1:-1;;;31574:58:0;;30203:2:1;31574:58:0::1;::::0;::::1;30185:21:1::0;30242:2;30222:18;;;30215:30;30281;30261:18;;;30254:58;30329:18;;31574:58:0::1;30001:352:1::0;31574:58:0::1;31651:6;::::0;;31643:47:::1;::::0;-1:-1:-1;;;;;31651:6:0;;::::1;::::0;31668:21:::1;31643:47:::0;::::1;;;::::0;31668:21;;31643:47;31651:6;31643:47;31668:21;31651:6;31643:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;18317:193:::0;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;18407:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;23797:55:1;;;18407:47:0::1;::::0;::::1;23779:74:1::0;23896:14;;23889:22;23869:18;;;23862:50;18407:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;23752:18:1;;18407:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18465:37;18485:7;18494;18465:19;:37::i;31930:118::-:0;32009:9;;:31;;;;;;;;31982:7;;-1:-1:-1;;;;;32009:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22270:373::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;22470:16:::1;22450;22440:7;;:26;;;;:::i;:::-;22439:47;;;;:::i;:::-;22423:13;:63:::0;22511:7:::1;::::0;22538:13;;22511:23:::1;::::0;22521:13;;22511:23:::1;:::i;:::-;22510:41;;;;:::i;:::-;22497:10;:54:::0;;;22570:13:::1;::::0;:27:::1;;22562:73;;;::::0;-1:-1:-1;;;22562:73:0;;30560:2:1;22562:73:0::1;::::0;::::1;30542:21:1::0;30599:2;30579:18;;;30572:30;30638:34;30618:18;;;30611:62;30709:3;30689:18;;;30682:31;30730:19;;22562:73:0::1;30358:397:1::0;18820:125:0;18905:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;18905:32:0;;;160:74:1;18881:4:0;;18905:9;;;;;:23;;133:18:1;;18905:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18161:148::-;7904:6;;-1:-1:-1;;;;;7904:6:0;7914:10;7904:20;7896:65;;;;-1:-1:-1;;;7896:65:0;;13671:2:1;7896:65:0;;;13653:21:1;;;13690:18;;;13683:30;13749:34;13729:18;;;13722:62;13801:18;;7896:65:0;13469:356:1;7896:65:0;-1:-1:-1;;;;;18257:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;18257:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18161:148::o;24009:2139::-;24088:4;-1:-1:-1;;;;;24113:18:0;;24105:68;;;;-1:-1:-1;;;24105:68:0;;31212:2:1;24105:68:0;;;31194:21:1;31251:2;31231:18;;;31224:30;31290:34;31270:18;;;31263:62;31361:7;31341:18;;;31334:35;31386:19;;24105:68:0;31010:401:1;24105:68:0;-1:-1:-1;;;;;24192:16:0;;24184:64;;;;-1:-1:-1;;;24184:64:0;;31618:2:1;24184:64:0;;;31600:21:1;31657:2;31637:18;;;31630:30;31696:34;31676:18;;;31669:62;31767:5;31747:18;;;31740:33;31790:19;;24184:64:0;31416:399:1;24184:64:0;24276:1;24267:6;:10;24259:64;;;;-1:-1:-1;;;24259:64:0;;32022:2:1;24259:64:0;;;32004:21:1;32061:2;32041:18;;;32034:30;32100:34;32080:18;;;32073:62;32171:11;32151:18;;;32144:39;32200:19;;24259:64:0;31820:405:1;24259:64:0;-1:-1:-1;;;;;24422:13:0;;24334:8;24422:13;;;:7;:13;;;;;;24334:8;;;;24422:13;;24418:162;;;24458:4;24452:10;;24418:162;;;-1:-1:-1;;;;;24484:11:0;;;;;;:7;:11;;;;;;;;24480:100;;;24519:4;24512:11;;24480:100;;;-1:-1:-1;24564:4:0;24480:100;24593:20;24604:4;24610:2;24593:10;:20::i;:::-;24590:816;;;24634:14;;;;;;;24630:89;;24669:34;;-1:-1:-1;;;24669:34:0;;32432:2:1;24669:34:0;;;32414:21:1;32471:2;32451:18;;;32444:30;32510:26;32490:18;;;32483:54;32554:18;;24669:34:0;32230:348:1;24630:89:0;24736:3;24733:194;;;-1:-1:-1;;;;;24764:25:0;;;;;;:21;:25;;;;;;;;24759:153;;24832:15;;24822:6;:25;;24814:78;;;;-1:-1:-1;;;24814:78:0;;32785:2:1;24814:78:0;;;32767:21:1;32824:2;32804:18;;;32797:30;32863:34;32843:18;;;32836:62;32934:10;32914:18;;;32907:38;32962:19;;24814:78:0;32583:404:1;24814:78:0;24944:4;24941:198;;;-1:-1:-1;;;;;24973:27:0;;;;;;:21;:27;;;;;;;;24968:156;;25043:16;;25033:6;:26;;25025:79;;;;-1:-1:-1;;;25025:79:0;;32785:2:1;25025:79:0;;;32767:21:1;32824:2;32804:18;;;32797:30;32863:34;32843:18;;;32836:62;32934:10;32914:18;;;32907:38;32962:19;;25025:79:0;32583:404:1;25025:79:0;25170:9;;-1:-1:-1;;;;;25156:24:0;;;25170:9;;25156:24;;;;:33;;;25185:4;25184:5;25156:33;25153:242;;;-1:-1:-1;;;;;25215:25:0;;;;;;:21;:25;;;;;;;;25210:170;;25299:14;;25289:6;25273:13;25283:2;-1:-1:-1;;;;;14480:16:0;14462:7;14480:16;;;:7;:16;;;;;;;14396:103;25273:13;:22;;;;:::i;:::-;:40;;25265:95;;;;-1:-1:-1;;;25265:95:0;;33327:2:1;25265:95:0;;;33309:21:1;33366:2;33346:18;;;33339:30;33405:34;33385:18;;;33378:62;33476:12;33456:18;;;33449:40;33506:19;;25265:95:0;33125:406:1;25265:95:0;25422:4;25418:651;;;25448:6;;;;25443:615;;25478:19;;;;;;;25475:568;;;25593:4;25544:28;14480:16;;;:7;:16;;;;;;25650:13;;25626:37;;25622:402;;25710:10;;25750:22;;;;25747:96;;;25807:13;;25797:6;;-1:-1:-1;;;;;25797:6:0;14462:7;14480:16;;;:7;:16;;;;;;6754:5;;25787:33;;;:::i;:::-;25786:54;;;;:::i;:::-;25776:64;;25747:96;25896:7;25872:20;:31;25869:71;;25930:7;25907:30;;25869:71;25966:34;25979:20;25966:12;:34::i;:::-;25665:359;25622:402;25521:522;25475:568;26087:53;26105:4;26111:2;26115:6;26123:3;26128:4;26134:5;26087:17;:53::i;:::-;26080:60;24009:2139;-1:-1:-1;;;;;;;24009:2139:0:o;26156:1244::-;26298:16;;26276:4;;26298:16;;;;;26293:298;;26331:28;26350:4;26356:2;26331:18;:28::i;:::-;26379:16;;;;;;;26378:17;:41;;;;;26399:20;26410:4;26416:2;26399:10;:20::i;:::-;26378:77;;;;-1:-1:-1;;;;;;26424:31:0;;;;;;:25;:31;;;;;;;;26423:32;26378:77;:111;;;;-1:-1:-1;;;;;;26460:29:0;;;;;;:25;:29;;;;;;;;26459:30;26378:111;:121;;;;;26494:5;26493:6;26378:121;26374:206;;;26520:44;;-1:-1:-1;;;26520:44:0;;33738:2:1;26520:44:0;;;33720:21:1;33777:2;33757:18;;;33750:30;33816:34;33796:18;;;33789:62;33887:4;33867:18;;;33860:32;33909:19;;26520:44:0;33536:398:1;26374:206:0;26606:20;26617:4;26623:2;26606:10;:20::i;:::-;26603:313;;;26674:9;;:37;;;;;-1:-1:-1;;;;;34220:15:1;;;26674:37:0;;;34202:34:1;34272:15;;;34252:18;;;34245:43;34304:18;;;34297:34;;;26643:12:0;;26674:9;;;;;:19;;34114:18:1;;26674:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;26674:37:0;;;;;;;;-1:-1:-1;;26674:37:0;;;;;;;;;;;;:::i;:::-;;;26670:163;;26809:8;;;26670:163;26762:5;-1:-1:-1;26853:7:0;26849:56;;26881:8;;;26849:56;26628:288;26603:313;-1:-1:-1;;;;;26961:25:0;;26928:12;26961:25;;;:19;:25;;;;;;26943:4;;26961:25;;;:52;;-1:-1:-1;;;;;;26990:23:0;;;;;;:19;:23;;;;;;;;26961:52;26958:98;;;-1:-1:-1;27039:5:0;26958:98;-1:-1:-1;;;;;27068:13:0;;;;;;:7;:13;;;;;:23;;27085:6;;27068:13;:23;;27085:6;;27068:23;:::i;:::-;;;;-1:-1:-1;27127:6:0;;-1:-1:-1;27144:98:0;;;;27189:41;27199:4;27205:6;27213:3;27218:4;27224:5;27189:9;:41::i;:::-;27172:58;;27144:98;-1:-1:-1;;;;;27252:11:0;;;;;;:7;:11;;;;;:29;;27267:14;;27252:11;:29;;27267:14;;27252:29;:::i;:::-;;;;-1:-1:-1;27294:24:0;;-1:-1:-1;27309:4:0;27315:2;27294:14;:24::i;:::-;27351:2;-1:-1:-1;;;;;27336:34:0;27345:4;-1:-1:-1;;;;;27336:34:0;;27355:14;27336:34;;;;391:25:1;;379:2;364:18;;245:177;27336:34:0;;;;;;;;-1:-1:-1;27388:4:0;;26156:1244;-1:-1:-1;;;;;;;;26156:1244:0:o;14870:341::-;-1:-1:-1;;;;;14964:20:0;;14956:69;;;;-1:-1:-1;;;14956:69:0;;34544:2:1;14956:69:0;;;34526:21:1;34583:2;34563:18;;;34556:30;34622:34;34602:18;;;34595:62;34693:6;34673:18;;;34666:34;34717:19;;14956:69:0;34342:400:1;14956:69:0;-1:-1:-1;;;;;15044:21:0;;15036:68;;;;-1:-1:-1;;;15036:68:0;;34949:2:1;15036:68:0;;;34931:21:1;34988:2;34968:18;;;34961:30;35027:34;35007:18;;;35000:62;35098:4;35078:18;;;35071:32;35120:19;;15036:68:0;34747:398:1;15036:68:0;-1:-1:-1;;;;;15117:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;15170:33;;391:25:1;;;15170:33:0;;364:18:1;15170:33:0;;;;;;;14870:341;;;:::o;23644:357::-;23712:4;23744:6;;-1:-1:-1;;;;;23736:14:0;;;23744:6;;23736:14;;;;:43;;-1:-1:-1;23773:6:0;;-1:-1:-1;;;;;23767:12:0;;;23773:6;;23767:12;;23736:43;:79;;;;-1:-1:-1;23809:6:0;;-1:-1:-1;;;;;23809:6:0;23796:9;:19;;23736:79;:118;;;;-1:-1:-1;;;;;;23833:21:0;;;;;;:17;:21;;;;;;;;23832:22;23736:118;:159;;;;-1:-1:-1;;;;;;23872:23:0;;;;;;:17;:23;;;;;;;;23871:24;23736:159;:186;;;;-1:-1:-1;;;;;;23912:10:0;;6862:42;23912:10;;23736:186;:219;;;;-1:-1:-1;;;;;;23939:16:0;;;;23736:219;:257;;;;-1:-1:-1;;;;;;;;23972:21:0;23988:4;23972:21;;;23644:357::o;28485:1834::-;7798:6;:13;;-1:-1:-1;;7798:13:0;7807:4;7798:13;;;28566:30:::1;::::0;;::::1;::::0;::::1;::::0;;28589:7:::1;28566:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;7798:6;28611:17;28607:56:::1;;28645:7;;;28607:56;28706:4;28686:26;::::0;;;:11:::1;:26;::::0;;;;;;;28721:9:::1;::::0;-1:-1:-1;;;;;28721:9:0::1;28686:46:::0;;;;;;;;-1:-1:-1;;28686:67:0::1;28683:165;;28790:4;28770:26;::::0;;;:11:::1;:26;::::0;;;;;;;28805:9:::1;::::0;-1:-1:-1;;;;;28805:9:0::1;28770:46:::0;;;;;;;-1:-1:-1;;28770:66:0;;28683:165:::1;28860:17;28943:1;28926:6;:12;;;28881:58;;28905:6;:16;;;28882:39;;:20;:39;;;;:::i;:::-;28881:58;;;;:::i;:::-;28880:64;;;;:::i;:::-;28860:84:::0;-1:-1:-1;28955:15:0::1;28973:32;28860:84:::0;28973:20;:32:::1;:::i;:::-;29042:16;::::0;;29056:1:::1;29042:16:::0;;;;;::::1;::::0;;28955:50;;-1:-1:-1;29018:21:0::1;::::0;29042:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;29042:16:0::1;29018:40;;29087:4;29069;29074:1;29069:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29069:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;29113:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;29069:7;;29113:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29103:4;29108:1;29103:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29103:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;29142:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;29217:7;;29142:9:::1;::::0;29255:4;;29282::::1;::::0;29302:15:::1;::::0;29142:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29362:21:0::1;::::0;-1:-1:-1;29341:18:0::1;::::0;-1:-1:-1;29448:7:0;;-1:-1:-1;29422:22:0::1;29435:9:::0;29362:21;29422:22:::1;:::i;:::-;29421:34;;;;:::i;:::-;29394:61:::0;-1:-1:-1;29472:13:0;;29468:328:::1;;29502:9;::::0;:222:::1;::::0;;;;29579:4:::1;29502:222;::::0;::::1;29419:34:1::0;29469:18;;;29462:34;;;29502:9:0::1;29512:18:1::0;;;29505:34;;;29555:18;;;29548:34;6862:42:0::1;29598:19:1::0;;;29591:44;29694:15:0::1;29651:19:1::0;;;29644:35;-1:-1:-1;;;;;29502:9:0;;::::1;::::0;:25:::1;::::0;29535:16;;29330:19:1;;29502:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29744:40:0::1;::::0;;26198:25:1;;;26254:2;26239:18;;26232:34;;;29744:40:0::1;::::0;-1:-1:-1;26171:18:1;29744:40:0::1;;;;;;;29468:328;29808:30;29822:16:::0;29808:30;::::1;:::i;:::-;;;29865:6;:16;;;29849:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;29972:12:::1;::::0;::::1;::::0;29954:14;;29892:12:::1;::::0;-1:-1:-1;29892:12:0;;29940:44;;::::1;::::0;29941:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;29940:44;;;;:::i;:::-;29915:69:::0;-1:-1:-1;29995:24:0::1;30022:29;29915:69:::0;30022:10;:29:::1;:::i;:::-;30068:14:::0;;29995:56;;-1:-1:-1;30068:18:0::1;;::::0;30064:105:::1;;30107:9;;;;;;;;;-1:-1:-1::0;;;;;30107:9:0::1;-1:-1:-1::0;;;;;30107:14:0::1;;30129;30107:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;30103:55:::0;::::1;30184:16;::::0;::::1;::::0;:20:::1;;::::0;30181:131:::1;;30233:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;30233:21:0;;::::1;::::0;30290:5:::1;::::0;30267:16;;30233:67:::1;::::0;;;30267:16;30233:21;30290:5;30233:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;30220:80:0;;-1:-1:-1;;30181:131:0::1;28555:1764;;;;;;;;;7822:1;-1:-1:-1::0;7834:6:0;:14;;-1:-1:-1;;7834:14:0;;;28485:1834::o;30327:630::-;30409:16;;;;;;;30408:17;30400:65;;;;-1:-1:-1;;;30400:65:0;;36394:2:1;30400:65:0;;;36376:21:1;36433:2;36413:18;;;36406:30;36472:34;36452:18;;;36445:62;36543:5;36523:18;;;36516:33;36566:19;;30400:65:0;36192:399:1;30400:65:0;30481:20;30492:4;30498:2;30481:10;:20::i;:::-;30480:21;:37;;;;-1:-1:-1;30511:6:0;;-1:-1:-1;;;;;30505:12:0;;;30511:6;;30505:12;30480:37;30476:474;;;-1:-1:-1;;;;;30534:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;30534:30:0;30560:4;30534:30;;;30579:16;:23;;;;;;;;;;30628:9;;;;30617:108;;30673:9;:36;;;;30703:4;30673:36;;;;;30617:108;30750:9;;-1:-1:-1;;;;;30750:9:0;30739:107;;30796:9;:34;;-1:-1:-1;;30796:34:0;30824:4;30796:34;;;30739:107;30860:19;:26;;-1:-1:-1;;30860:26:0;;;;;30906:32;;-1:-1:-1;4722:41:1;;30906:32:0;;4710:2:1;4695:18;30906:32:0;;;;;;;30327:630;;:::o;27830:647::-;27930:7;27950:18;27983:3;27979:205;;;-1:-1:-1;28016:9:0;:16;;;27979:205;;;28054:4;28050:134;;;-1:-1:-1;28088:9:0;:17;;;;;;28050:134;;;-1:-1:-1;28151:9:0;:21;;;;;;28050:134;28200:10;28214:1;28200:15;28196:61;;28239:6;28232:13;;;;;28196:61;28269:17;6754:5;28289:19;28298:10;28289:6;:19;:::i;:::-;:38;;;;:::i;:::-;28356:4;28340:22;;;;:7;:22;;;;;:35;;28269:58;;-1:-1:-1;28269:58:0;;28340:22;;;:35;;28269:58;;28340:35;:::i;:::-;;;;-1:-1:-1;;28391:40:0;;391:25:1;;;28414:4:0;;-1:-1:-1;;;;;28391:40:0;;;;;379:2:1;364:18;28391:40:0;;;;;;;28451:18;28460:9;28451:6;:18;:::i;:::-;28444:25;;;;27830:647;;;;;;;;:::o;27408:414::-;-1:-1:-1;;;;;27483:30:0;;;;;;:24;:30;;;;;;;;27478:115;;27534:9;;-1:-1:-1;;;;;27556:13:0;;;27534:9;27556:13;;;27534:9;27556:13;;;;;;;;27534:36;;;;;;;;23181:74:1;;;;23271:18;;;23264:34;27534:9:0;;;:15;;23154:18:1;;27534:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27530:52;;-1:-1:-1;;;;;27608:28:0;;;;;;:24;:28;;;;;;;;27603:109;;27657:9;;-1:-1:-1;;;;;27677:11:0;;;27657:9;27677:11;;;27657:9;27677:11;;;;;;;;27657:32;;;;;;;;23181:74:1;;;;23271:18;;;23264:34;27657:9:0;;;:15;;23154:18:1;;27657:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27653:48;;27726:14;;;;27722:93;;;27761:9;;27779:12;;27761:31;;;;;-1:-1:-1;;;;;27761:9:0;;;;:17;;:31;;;;391:25:1;;;379:2;364:18;;245:177;27761:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27757:47;;;27408:414;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;427:184:1;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;3019:258::-;3091:1;3101:113;3115:6;3112:1;3109:13;3101:113;;;3191:11;;;3185:18;3172:11;;;3165:39;3137:2;3130:10;3101:113;;;3232:6;3229:1;3226:13;3223:48;;;-1:-1:-1;;3267:1:1;3249:16;;3242:27;3019:258::o;3282:317::-;3324:3;3362:5;3356:12;3389:6;3384:3;3377:19;3405:63;3461:6;3454:4;3449:3;3445:14;3438:4;3431:5;3427:16;3405:63;:::i;:::-;3513:2;3501:15;-1:-1:-1;;3497:88:1;3488:98;;;;3588:4;3484:109;;3282:317;-1:-1:-1;;3282:317:1:o;3604:220::-;3753:2;3742:9;3735:21;3716:4;3773:45;3814:2;3803:9;3799:18;3791:6;3773:45;:::i;4077:180::-;4136:6;4189:2;4177:9;4168:7;4164:23;4160:32;4157:52;;;4205:1;4202;4195:12;4157:52;-1:-1:-1;4228:23:1;;4077:180;-1:-1:-1;4077:180:1:o;4262:315::-;4330:6;4338;4391:2;4379:9;4370:7;4366:23;4362:32;4359:52;;;4407:1;4404;4397:12;4359:52;4446:9;4433:23;4465:31;4490:5;4465:31;:::i;:::-;4515:5;4567:2;4552:18;;;;4539:32;;-1:-1:-1;;;4262:315:1:o;4774:247::-;4833:6;4886:2;4874:9;4865:7;4861:23;4857:32;4854:52;;;4902:1;4899;4892:12;4854:52;4941:9;4928:23;4960:31;4985:5;4960:31;:::i;5026:456::-;5103:6;5111;5119;5172:2;5160:9;5151:7;5147:23;5143:32;5140:52;;;5188:1;5185;5178:12;5140:52;5227:9;5214:23;5246:31;5271:5;5246:31;:::i;:::-;5296:5;-1:-1:-1;5353:2:1;5338:18;;5325:32;5366:33;5325:32;5366:33;:::i;:::-;5026:456;;5418:7;;-1:-1:-1;;;5472:2:1;5457:18;;;;5444:32;;5026:456::o;5487:248::-;5555:6;5563;5616:2;5604:9;5595:7;5591:23;5587:32;5584:52;;;5632:1;5629;5622:12;5584:52;-1:-1:-1;;5655:23:1;;;5725:2;5710:18;;;5697:32;;-1:-1:-1;5487:248:1:o;5740:1138::-;5858:6;5866;5919:2;5907:9;5898:7;5894:23;5890:32;5887:52;;;5935:1;5932;5925:12;5887:52;5975:9;5962:23;6004:18;6045:2;6037:6;6034:14;6031:34;;;6061:1;6058;6051:12;6031:34;6084:61;6137:7;6128:6;6117:9;6113:22;6084:61;:::i;:::-;6074:71;;6164:2;6154:12;;6219:2;6208:9;6204:18;6191:32;6248:2;6238:8;6235:16;6232:36;;;6264:1;6261;6254:12;6232:36;6287:24;;;-1:-1:-1;6342:4:1;6334:13;;6330:27;-1:-1:-1;6320:55:1;;6371:1;6368;6361:12;6320:55;6407:2;6394:16;6430:60;6446:43;6486:2;6446:43;:::i;6430:60::-;6524:15;;;6606:1;6602:10;;;;6594:19;;6590:28;;;6555:12;;;;6630:19;;;6627:39;;;6662:1;6659;6652:12;6627:39;6686:11;;;;6706:142;6722:6;6717:3;6714:15;6706:142;;;6788:17;;6776:30;;6739:12;;;;6826;;;;6706:142;;;6867:5;6857:15;;;;;;;5740:1138;;;;;:::o;6883:647::-;6957:6;6965;6973;6981;7034:3;7022:9;7013:7;7009:23;7005:33;7002:53;;;7051:1;7048;7041:12;7002:53;7090:9;7077:23;7109:28;7131:5;7109:28;:::i;:::-;7156:5;-1:-1:-1;7213:2:1;7198:18;;7185:32;7226:30;7185:32;7226:30;:::i;:::-;7275:7;-1:-1:-1;7334:2:1;7319:18;;7306:32;7347:30;7306:32;7347:30;:::i;:::-;7396:7;-1:-1:-1;7455:2:1;7440:18;;7427:32;7468:30;7427:32;7468:30;:::i;:::-;6883:647;;;;-1:-1:-1;6883:647:1;;-1:-1:-1;;6883:647:1:o;7724:159::-;7791:20;;7851:6;7840:18;;7830:29;;7820:57;;7873:1;7870;7863:12;7820:57;7724:159;;;:::o;7888:328::-;7962:6;7970;7978;8031:2;8019:9;8010:7;8006:23;8002:32;7999:52;;;8047:1;8044;8037:12;7999:52;8070:28;8088:9;8070:28;:::i;:::-;8060:38;;8117:37;8150:2;8139:9;8135:18;8117:37;:::i;:::-;8107:47;;8173:37;8206:2;8195:9;8191:18;8173:37;:::i;:::-;8163:47;;7888:328;;;;;:::o;8221:382::-;8286:6;8294;8347:2;8335:9;8326:7;8322:23;8318:32;8315:52;;;8363:1;8360;8353:12;8315:52;8402:9;8389:23;8421:31;8446:5;8421:31;:::i;:::-;8471:5;-1:-1:-1;8528:2:1;8513:18;;8500:32;8541:30;8500:32;8541:30;:::i;8608:711::-;8901:3;8890:9;8883:22;8864:4;8928:46;8969:3;8958:9;8954:19;8946:6;8928:46;:::i;:::-;9022:9;9014:6;9010:22;9005:2;8994:9;8990:18;8983:50;9056:33;9082:6;9074;9056:33;:::i;:::-;9042:47;;9137:9;9129:6;9125:22;9120:2;9109:9;9105:18;9098:50;9171:33;9197:6;9189;9171:33;:::i;:::-;9157:47;;9252:9;9244:6;9240:22;9235:2;9224:9;9220:18;9213:50;9280:33;9306:6;9298;9280:33;:::i;9324:511::-;9392:6;9400;9408;9461:2;9449:9;9440:7;9436:23;9432:32;9429:52;;;9477:1;9474;9467:12;9429:52;9516:9;9503:23;9535:28;9557:5;9535:28;:::i;:::-;9582:5;-1:-1:-1;9639:2:1;9624:18;;9611:32;9652:30;9611:32;9652:30;:::i;:::-;9701:7;-1:-1:-1;9760:2:1;9745:18;;9732:32;9773:30;9732:32;9773:30;:::i;:::-;9822:7;9812:17;;;9324:511;;;;;:::o;9840:316::-;9917:6;9925;9933;9986:2;9974:9;9965:7;9961:23;9957:32;9954:52;;;10002:1;9999;9992:12;9954:52;-1:-1:-1;;10025:23:1;;;10095:2;10080:18;;10067:32;;-1:-1:-1;10146:2:1;10131:18;;;10118:32;;9840:316;-1:-1:-1;9840:316:1:o;10161:385::-;10247:6;10255;10263;10271;10324:3;10312:9;10303:7;10299:23;10295:33;10292:53;;;10341:1;10338;10331:12;10292:53;-1:-1:-1;;10364:23:1;;;10434:2;10419:18;;10406:32;;-1:-1:-1;10485:2:1;10470:18;;10457:32;;10536:2;10521:18;10508:32;;-1:-1:-1;10161:385:1;-1:-1:-1;10161:385:1:o;11000:388::-;11068:6;11076;11129:2;11117:9;11108:7;11104:23;11100:32;11097:52;;;11145:1;11142;11135:12;11097:52;11184:9;11171:23;11203:31;11228:5;11203:31;:::i;:::-;11253:5;-1:-1:-1;11310:2:1;11295:18;;11282:32;11323:33;11282:32;11323:33;:::i;11393:367::-;11456:8;11466:6;11520:3;11513:4;11505:6;11501:17;11497:27;11487:55;;11538:1;11535;11528:12;11487:55;-1:-1:-1;11561:20:1;;11604:18;11593:30;;11590:50;;;11636:1;11633;11626:12;11590:50;11673:4;11665:6;11661:17;11649:29;;11733:3;11726:4;11716:6;11713:1;11709:14;11701:6;11697:27;11693:38;11690:47;11687:67;;;11750:1;11747;11740:12;11687:67;11393:367;;;;;:::o;11765:1192::-;11914:6;11922;11930;11938;11946;11954;11962;12015:3;12003:9;11994:7;11990:23;11986:33;11983:53;;;12032:1;12029;12022:12;11983:53;12072:9;12059:23;12101:18;12142:2;12134:6;12131:14;12128:34;;;12158:1;12155;12148:12;12128:34;12197:70;12259:7;12250:6;12239:9;12235:22;12197:70;:::i;:::-;12286:8;;-1:-1:-1;12171:96:1;-1:-1:-1;12374:2:1;12359:18;;12346:32;;-1:-1:-1;12390:16:1;;;12387:36;;;12419:1;12416;12409:12;12387:36;;12458:72;12522:7;12511:8;12500:9;12496:24;12458:72;:::i;:::-;12549:8;;-1:-1:-1;12432:98:1;-1:-1:-1;;12634:2:1;12619:18;;12606:32;12647:31;12606:32;12647:31;:::i;:::-;12697:5;-1:-1:-1;12754:2:1;12739:18;;12726:32;12767:33;12726:32;12767:33;:::i;:::-;12819:7;-1:-1:-1;12878:3:1;12863:19;;12850:33;12892;12850;12892;:::i;:::-;12944:7;12934:17;;;11765:1192;;;;;;;;;;:::o;13830:484::-;13883:3;13921:5;13915:12;13948:6;13943:3;13936:19;13974:4;14003:2;13998:3;13994:12;13987:19;;14040:2;14033:5;14029:14;14061:1;14071:218;14085:6;14082:1;14079:13;14071:218;;;14150:13;;-1:-1:-1;;;;;14146:62:1;14134:75;;14229:12;;;;14264:15;;;;14107:1;14100:9;14071:218;;;-1:-1:-1;14305:3:1;;13830:484;-1:-1:-1;;;;;13830:484:1:o;14319:342::-;14520:2;14509:9;14502:21;14483:4;14540:56;14592:2;14581:9;14577:18;14569:6;14540:56;:::i;:::-;14532:64;;14646:6;14639:14;14632:22;14627:2;14616:9;14612:18;14605:50;14319:342;;;;;:::o;14666:184::-;14718:77;14715:1;14708:88;14815:4;14812:1;14805:15;14839:4;14836:1;14829:15;14855:184;14907:77;14904:1;14897:88;15004:4;15001:1;14994:15;15028:4;15025:1;15018:15;15044:195;15083:3;-1:-1:-1;;15107:5:1;15104:77;15101:103;;15184:18;;:::i;:::-;-1:-1:-1;15231:1:1;15220:13;;15044:195::o;15244:437::-;15323:1;15319:12;;;;15366;;;15387:61;;15441:4;15433:6;15429:17;15419:27;;15387:61;15494:2;15486:6;15483:14;15463:18;15460:38;15457:218;;15531:77;15528:1;15521:88;15632:4;15629:1;15622:15;15660:4;15657:1;15650:15;15457:218;;15244:437;;;:::o;16022:482::-;16111:1;16154:5;16111:1;16168:330;16189:7;16179:8;16176:21;16168:330;;;16308:4;-1:-1:-1;;16236:77:1;16230:4;16227:87;16224:113;;;16317:18;;:::i;:::-;16367:7;16357:8;16353:22;16350:55;;;16387:16;;;;16350:55;16466:22;;;;16426:15;;;;16168:330;;;16172:3;16022:482;;;;;:::o;16509:866::-;16558:5;16588:8;16578:80;;-1:-1:-1;16629:1:1;16643:5;;16578:80;16677:4;16667:76;;-1:-1:-1;16714:1:1;16728:5;;16667:76;16759:4;16777:1;16772:59;;;;16845:1;16840:130;;;;16752:218;;16772:59;16802:1;16793:10;;16816:5;;;16840:130;16877:3;16867:8;16864:17;16861:43;;;16884:18;;:::i;:::-;-1:-1:-1;;16940:1:1;16926:16;;16955:5;;16752:218;;17054:2;17044:8;17041:16;17035:3;17029:4;17026:13;17022:36;17016:2;17006:8;17003:16;16998:2;16992:4;16989:12;16985:35;16982:77;16979:159;;;-1:-1:-1;17091:19:1;;;17123:5;;16979:159;17170:34;17195:8;17189:4;17170:34;:::i;:::-;17300:6;-1:-1:-1;;17228:79:1;17219:7;17216:92;17213:118;;;17311:18;;:::i;:::-;17349:20;;16509:866;-1:-1:-1;;;16509:866:1:o;17380:140::-;17438:5;17467:47;17508:4;17498:8;17494:19;17488:4;17467:47;:::i;17525:274::-;17565:1;17591;17581:189;;17626:77;17623:1;17616:88;17727:4;17724:1;17717:15;17755:4;17752:1;17745:15;17581:189;-1:-1:-1;17784:9:1;;17525:274::o;17804:125::-;17844:4;17872:1;17869;17866:8;17863:34;;;17877:18;;:::i;:::-;-1:-1:-1;17914:9:1;;17804:125::o;17934:228::-;17974:7;18100:1;-1:-1:-1;;18028:74:1;18025:1;18022:81;18017:1;18010:9;18003:17;17999:105;17996:131;;;18107:18;;:::i;:::-;-1:-1:-1;18147:9:1;;17934:228::o;18936:175::-;18973:3;19017:4;19010:5;19006:16;19046:4;19037:7;19034:17;19031:43;;19054:18;;:::i;:::-;19103:1;19090:15;;18936:175;-1:-1:-1;;18936:175:1:o;19904:224::-;19943:3;19971:6;20004:2;20001:1;19997:10;20034:2;20031:1;20027:10;20065:3;20061:2;20057:12;20052:3;20049:21;20046:47;;;20073:18;;:::i;:::-;20109:13;;19904:224;-1:-1:-1;;;;19904:224:1:o;21273:184::-;21343:6;21396:2;21384:9;21375:7;21371:23;21367:32;21364:52;;;21412:1;21409;21402:12;21364:52;-1:-1:-1;21435:16:1;;21273:184;-1:-1:-1;21273:184:1:o;21462:556::-;21516:5;21569:3;21562:4;21554:6;21550:17;21546:27;21536:55;;21587:1;21584;21577:12;21536:55;21616:6;21610:13;21642:18;21638:2;21635:26;21632:52;;;21664:18;;:::i;:::-;21708:114;21816:4;-1:-1:-1;;21740:4:1;21736:2;21732:13;21728:86;21724:97;21708:114;:::i;:::-;21847:2;21838:7;21831:19;21893:3;21886:4;21881:2;21873:6;21869:15;21865:26;21862:35;21859:55;;;21910:1;21907;21900:12;21859:55;21923:64;21984:2;21977:4;21968:7;21964:18;21957:4;21949:6;21945:17;21923:64;:::i;22023:971::-;22160:6;22168;22176;22184;22237:3;22225:9;22216:7;22212:23;22208:33;22205:53;;;22254:1;22251;22244:12;22205:53;22287:9;22281:16;22316:18;22357:2;22349:6;22346:14;22343:34;;;22373:1;22370;22363:12;22343:34;22396:61;22449:7;22440:6;22429:9;22425:22;22396:61;:::i;:::-;22386:71;;22503:2;22492:9;22488:18;22482:25;22466:41;;22532:2;22522:8;22519:16;22516:36;;;22548:1;22545;22538:12;22516:36;22571:63;22626:7;22615:8;22604:9;22600:24;22571:63;:::i;:::-;22561:73;;22680:2;22669:9;22665:18;22659:25;22643:41;;22709:2;22699:8;22696:16;22693:36;;;22725:1;22722;22715:12;22693:36;22748:63;22803:7;22792:8;22781:9;22777:24;22748:63;:::i;:::-;22738:73;;22857:2;22846:9;22842:18;22836:25;22820:41;;22886:2;22876:8;22873:16;22870:36;;;22902:1;22899;22892:12;22870:36;;22925:63;22980:7;22969:8;22958:9;22954:24;22925:63;:::i;:::-;22915:73;;;22023:971;;;;;;;:::o;25888:131::-;25948:5;25977:36;26004:8;25998:4;25977:36;:::i;27359:774::-;27474:6;27482;27490;27498;27551:3;27539:9;27530:7;27526:23;27522:33;27519:53;;;27568:1;27565;27558:12;27519:53;27601:9;27595:16;27630:18;27671:2;27663:6;27660:14;27657:34;;;27687:1;27684;27677:12;27657:34;27710:61;27763:7;27754:6;27743:9;27739:22;27710:61;:::i;:::-;27700:71;;27817:2;27806:9;27802:18;27796:25;27780:41;;27846:2;27836:8;27833:16;27830:36;;;27862:1;27859;27852:12;27830:36;;27885:63;27940:7;27929:8;27918:9;27914:24;27885:63;:::i;:::-;27875:73;;;27988:2;27977:9;27973:18;27967:25;27957:35;;28035:2;28024:9;28020:18;28014:25;28079:4;28072:5;28068:16;28061:5;28058:27;28048:55;;28099:1;28096;28089:12;28467:251;28537:6;28590:2;28578:9;28569:7;28565:23;28561:32;28558:52;;;28606:1;28603;28596:12;28558:52;28638:9;28632:16;28657:31;28682:5;28657:31;:::i;29690:306::-;29778:6;29786;29794;29847:2;29835:9;29826:7;29822:23;29818:32;29815:52;;;29863:1;29860;29853:12;29815:52;29892:9;29886:16;29876:26;;29942:2;29931:9;29927:18;29921:25;29911:35;;29986:2;29975:9;29971:18;29965:25;29955:35;;29690:306;;;;;:::o;30760:245::-;30827:6;30880:2;30868:9;30859:7;30855:23;30851:32;30848:52;;;30896:1;30893;30886:12;30848:52;30928:9;30922:16;30947:28;30969:5;30947:28;:::i;32992:128::-;33032:3;33063:1;33059:6;33056:1;33053:13;33050:39;;;33069:18;;:::i;:::-;-1:-1:-1;33105:9:1;;32992:128::o;35150:605::-;35449:6;35438:9;35431:25;35492:6;35487:2;35476:9;35472:18;35465:34;35535:3;35530:2;35519:9;35515:18;35508:31;35412:4;35556:57;35608:3;35597:9;35593:19;35585:6;35556:57;:::i;:::-;-1:-1:-1;;;;;35649:55:1;;;;35644:2;35629:18;;35622:83;-1:-1:-1;35736:3:1;35721:19;35714:35;35548:65;35150:605;-1:-1:-1;;;35150:605:1:o;35760:217::-;35799:4;35828:6;35884:10;;;;35854;;35906:12;;;35903:38;;;35921:18;;:::i;:::-;35958:13;;35760:217;-1:-1:-1;;;35760:217:1:o

Swarm Source

ipfs://23b233c9a835acf7b31567459ef72e7dd0e826f070cdd86c8dc660ebbf9824fd

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.