ETH Price: $2,516.00 (-0.27%)

Token

PAAL AI ($PAAL)
 

Overview

Max Total Supply

1,000,000,000 $PAAL

Holders

53,056 ( 0.107%)

Market

Price

$0.23 @ 0.000090 ETH (+0.39%)

Onchain Market Cap

$226,238,000.00

Circulating Supply Market Cap

$194,387,930.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
463.370961721 $PAAL

Value
$104.83 ( ~0.0416653813390137 Eth) [0.0000%]
0xc7f8236be8fdad8fb07283787e256ffb55b9696c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Paal is an advanced chatbot built on AI and ML technologies, designed to streamline tasks that typically require human intellect, such as natural language understanding, image recognition, decision-making, and problem-solving.

Market

Volume (24H):$1,789,570.00
Market Capitalization:$194,387,930.00
Circulating Supply:859,999,900.00 $PAAL
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
HTX
PAAL-USDT$0.2264
0.0000904 Eth
$412,726.00
1,882,735.173 PAAL
22.9601%
2
Gate.io
PAAL-USDT$0.2258
0.0000900 Eth
$377,801.00
1,739,370.340 PAAL
21.2117%
3
BingX
PAAL-USDT$0.2262
0.0000902 Eth
$375,915.00
1,727,114.840 PAAL
21.0623%
4
Uniswap V2 (Ethereum)
0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.22
0.0000878 Eth
$344,332.00
1,589,453.518 0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16
19.3835%
5
MEXC
PAAL-USDT$0.2256
0.0000900 Eth
$312,305.00
1,384,097.950 PAAL
16.8792%
6
XT.COM
PAAL-USDT$0.2264
0.0000899 Eth
$219,666.00
1,010,333.260 PAAL
12.3211%
7
Uniswap V3 (Ethereum)
0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.2231
0.0000890 Eth
$39,764.00
184,519.512 0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16
2.2502%
8
CoinEx
PAAL-USDT$0.2263
0.0000904 Eth
$32,404.00
147,983.283 PAAL
1.8047%
9
LATOKEN
PAAL-USDT$0.2257
0.0000900 Eth
$13,263.93
58,765.041 PAAL
0.7166%
10
Matcha (Ethereum)
0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.2389
0.0000904 Eth
$9,996.39
45,703.555 0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16
0.5574%
11
HitBTC
PAAL-USDT$0.2399
0.0000908 Eth
$4,533.18
18,895.600 PAAL
0.2304%
12
BitMart
PAAL-USDT$0.2078
0.0000829 Eth
$3,204.41
15,418.000 PAAL
0.1880%
13
SmarDex
0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.2173
0.0000867 Eth
$280.50
1,313.658 0X14FEE680690900BA0CCCFC76AD70FD1B95D10E16
0.0160%
14
Poloniex
PAAL-USDT$0.225
0.0000885 Eth
$112.18
515.625 PAAL
0.0063%

Contract Source Code Verified (Exact Match)

Contract Name:
PAALAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-18
*/

// 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 Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

contract PAALAI is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "PAAL AI";
    string constant private _symbol = "$PAAL";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 staking;
        uint16 externalBuyback;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 1,
        development: 1,
        staking: 1,
        externalBuyback: 1,
        totalSwap: 4
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable externalBuyback;
        address payable staking;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x54821d1B461aa887D37c449F3ace8dddDFCb8C0a),
        development: payable(0xda8C6C3F4c8E29aCBbFC2081f181722D05B19a60),
        externalBuyback: payable(0x45620f274ede76dB59586C45D9B4066c15DB2812),
        staking: payable(0x8B505E46fD52723430590A6f4F9d768618e29a4B)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

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

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

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

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

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

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

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

    function setWallets(address payable marketing, address payable staking, address payable development, address payable externalBuyback) external onlyOwner {
        require(marketing != address(0) && staking != address(0) && development != address(0) && externalBuyback != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.staking = payable(staking);
        _taxWallets.externalBuyback = payable(externalBuyback);
    }

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

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

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

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

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

    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) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
       
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 stakingBalance = (amtBalance * ratios.staking) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 externalBuybackBalance = (amtBalance * ratios.externalBuyback) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (stakingBalance + developmentBalance + externalBuybackBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.staking > 0) {
            (success,) = _taxWallets.staking.call{value: stakingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.externalBuyback > 0) {
            (success,) = _taxWallets.externalBuyback.call{value: externalBuybackBalance, gas: 55000}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

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

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

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

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

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) 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; }
        if (address(initializer) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"},{"internalType":"uint16","name":"externalBuyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"externalBuyback","type":"address"},{"internalType":"address payable","name":"staking","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":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"externalBuyback","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"staking","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"externalBuyback","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"}]

60006002819055610190608081905260a05260c0526007805465ffffffffffff19166301900190179055600160e08190526101008190526101208190526101405260046101605260088054680400010001000100016001600160501b03199091161790556102006040527354821d1b461aa887d37c449f3ace8ddddfcb8c0a61018081905273da8c6c3f4c8e29acbbfc2081f181722d05b19a606101a08190527345620f274ede76db59586c45d9b4066c15db28126101c0819052738b505e46fd52723430590a6f4f9d768618e29a4b6101e0819052600b80546001600160a01b03199081169095179055600c80548516909317909255600d805484169091179055600e805483169091179055600f805461ff0019169055600a60138190556014805461ffff191690556016805490921633179091556200014390600990620003f1565b6200015390633b9aca0062000409565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001a76009600a620003f1565b620001b790633b9aca0062000409565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490921617905562000423565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000333578160001904821115620003175762000317620002dc565b808516156200032557918102915b93841c9390800290620002f7565b509250929050565b6000826200034c57506001620003eb565b816200035b57506000620003eb565b81600181146200037457600281146200037f576200039f565b6001915050620003eb565b60ff841115620003935762000393620002dc565b50506001821b620003eb565b5060208310610133831016604e8410600b8410161715620003c4575081810a620003eb565b620003d08383620002f2565b8060001904821115620003e757620003e7620002dc565b0290505b92915050565b60006200040260ff8416836200033b565b9392505050565b8082028115828204841417620003eb57620003eb620002dc565b613cfc80620004336000396000f3fe6080604052600436106103385760003560e01c8063590ffdce116101b0578063ab558e4d116100ec578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109ac578063fb78680d14610a12578063fdb78c0e14610a32578063feadde9c14610a5157600080fd5b8063dd62ed3e14610931578063eafb5a3c14610977578063ee5d9c2d1461099757600080fd5b8063b7df8b36116100c6578063b7df8b361461087a578063bfc2fc3514610894578063cf847706146108b457600080fd5b8063ab558e4d1461085a578063b1b08f7114610574578063b3d514fb1461057457600080fd5b806380c581d1116101595780638a63bd9b116101335780638a63bd9b146107e25780638a8c523c146107f757806395d89b411461080c578063a9059cbb1461083a57600080fd5b806380c581d11461078457806383672f3e146107a4578063893d20e8146107c457600080fd5b806370a082311161018a57806370a0823114610724578063715018a61461075a57806378648edf1461076f57600080fd5b8063590ffdce146106ce5780635a6f0918146106ee5780635c24b0741461070457600080fd5b8063285777511161027f578063452ed4f1116102285780634e718e48116102025780634e718e48146106365780634fb2e45d146106565780634fbee1931461067657806350a8e016146106af57600080fd5b8063452ed4f1146105dc5780634ada218b146105fc5780634bbb93eb1461061657600080fd5b80632e8fa821116102595780632e8fa8211461058a578063313ce567146105a057806332cde664146105bc57600080fd5b806328577751146105495780632b112e491461055f5780632b28fc7a1461057457600080fd5b806307dd79e0116102e157806318160ddd116102bb57806318160ddd146104f457806323b872dd146105095780632610eaca1461052957600080fd5b806307dd79e014610471578063095ea7b31461049b5780630dcbcf1c146104bb57600080fd5b806306fdde031161031257806306fdde03146103f15780630712d1651461042a5780630758d9241461044c57600080fd5b806303fd2a45146103445780630445b66714610377578063069d955f1461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d60105481565b60405190815260200161036e565b3480156103a757600080fd5b506007546103cc9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b3480156103fd57600080fd5b506040805180820190915260078152665041414c20414960c81b60208201525b60405161036e9190613561565b34801561043657600080fd5b5061044a6104453660046135c6565b610a71565b005b34801561045857600080fd5b5060095461035a9061010090046001600160a01b031681565b34801561047d57600080fd5b5060095461048b9060ff1681565b604051901515815260200161036e565b3480156104a757600080fd5b5061048b6104b636600461362f565b610be1565b3480156104c757600080fd5b5061048b6104d636600461365b565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050057600080fd5b5061038d610bf8565b34801561051557600080fd5b5061048b610524366004613678565b610c19565b34801561053557600080fd5b5061044a61054436600461378f565b610c91565b34801561055557600080fd5b5061038d60135481565b34801561056b57600080fd5b5061038d610e46565b34801561058057600080fd5b5061038d6103e881565b34801561059657600080fd5b5061038d60115481565b3480156105ac57600080fd5b506040516009815260200161036e565b3480156105c857600080fd5b5061044a6105d7366004613851565b610ec4565b3480156105e857600080fd5b50600a5461035a906001600160a01b031681565b34801561060857600080fd5b5060145461048b9060ff1681565b34801561062257600080fd5b5061038d610631366004613894565b611018565b34801561064257600080fd5b5061044a610651366004613894565b61104c565b34801561066257600080fd5b5061044a61067136600461365b565b6110ea565b34801561068257600080fd5b5061048b61069136600461365b565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106bb57600080fd5b5060145461048b90610100900460ff1681565b3480156106da57600080fd5b5061044a6106e93660046138bb565b6112ec565b3480156106fa57600080fd5b5061038d60155481565b34801561071057600080fd5b5061044a61071f36600461365b565b61135f565b34801561073057600080fd5b5061038d61073f36600461365b565b6001600160a01b031660009081526020819052604090205490565b34801561076657600080fd5b5061044a61153d565b34801561077b57600080fd5b5061044a611662565b34801561079057600080fd5b5061044a61079f3660046138bb565b6116b9565b3480156107b057600080fd5b5061044a6107bf3660046138f4565b6118c4565b3480156107d057600080fd5b506016546001600160a01b031661035a565b3480156107ee57600080fd5b5061048b6119ef565b34801561080357600080fd5b5061044a611a5f565b34801561081857600080fd5b50604080518082019091526005815264091410505360da1b602082015261041d565b34801561084657600080fd5b5061048b61085536600461362f565b611ca9565b34801561086657600080fd5b5061044a61087536600461365b565b611cc0565b34801561088657600080fd5b5060125461048b9060ff1681565b3480156108a057600080fd5b5061044a6108af366004613950565b611e5a565b3480156108c057600080fd5b506008546108fc9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161036e565b34801561093d57600080fd5b5061038d61094c36600461396e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561098357600080fd5b5061044a61099236600461365b565b611f01565b3480156109a357600080fd5b5061044a612302565b3480156109b857600080fd5b50600b54600c54600d54600e546109df936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036e565b348015610a1e57600080fd5b5061044a610a2d36600461399c565b6123db565b348015610a3e57600080fd5b50600f5461048b90610100900460ff1681565b348015610a5d57600080fd5b5061044a610a6c3660046138bb565b61269d565b6016546001600160a01b03163314610abe5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca783398151915260448201526064015b60405180910390fd5b6008805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff00000000191666010000000000008583160265ffff00000000191617640100000000918416919091021790558183610b1b83876139e4565b610b2591906139e4565b610b2f91906139e4565b6008805469ffff00000000000000001916600160401b61ffff93841602179055600754600091610b6891620100008104821691166139e4565b60085461ffff9182169250600160401b900416811015610bda5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ab5565b5050505050565b6000610bee338484612710565b5060015b92915050565b6000610c066009600a613aea565b610c1490633b9aca00613af9565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610c7e576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610c78908490613b10565b90915550505b610c89848484612809565b949350505050565b6016546001600160a01b03163314610cd95760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b8051825114610d2a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ab5565b60005b82518161ffff161015610e4157610d466009600a613aea565b828261ffff1681518110610d5c57610d5c613b23565b6020026020010151610d6e9190613af9565b336000908152602081905260409020541015610dcc5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ab5565b610e2e33848361ffff1681518110610de657610de6613b23565b60200260200101516009600a610dfc9190613aea565b858561ffff1681518110610e1257610e12613b23565b6020026020010151610e249190613af9565b6000806001612b4a565b5080610e3981613b39565b915050610d2d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ea09190613b5a565b610eac6009600a613aea565b610eba90633b9aca00613af9565b610c149190613b10565b6016546001600160a01b03163314610f0c5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60095460ff1615610f5f5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ab5565b6103e88361ffff1611158015610f7b57506103e88261ffff1611155b8015610f8d57506103e88161ffff1611155b610fd95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ab5565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a546001600160a01b031660009081526020819052604081205461271090611042908490613af9565b610bf29190613b6d565b6016546001600160a01b031633146110945760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60968111156110e55760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ab5565b601355565b6016546001600160a01b031633146111325760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b0381166111ae5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab5565b61deac196001600160a01b0382160161122f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab5565b601654611246906001600160a01b031660006112ec565b6112518160016112ec565b6016546001600160a01b03166000908152602081905260409020541561129a576016546001600160a01b031660008181526020819052604090205461129891908390610e24565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146113345760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146113a75760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff16156113b757600080fd5b306001600160a01b0382160361140f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ab5565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611495575060408051601f3d908101601f1916820190925261149291810190613b8f565b60015b61149e57600080fd5b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601654925461151b9383169291900416600019612710565b600954610e4190309061010090046001600160a01b0316600019612710565b50565b6016546001600160a01b031633146115855760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff166115fd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ab5565b601654611614906001600160a01b031660006112ec565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b031633146116aa5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6009805460ff19166001179055565b6016546001600160a01b031633146117015760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b80611791576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561177557600080fd5b505af1158015611789573d6000803e3d6000fd5b505050505050565b600254156117f8576203f480600254426117ab9190613b10565b116117f85760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ab5565b6001600160a01b03821660009081526001602052604090205460ff16156118615760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ab5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d19060440161175b565b5050565b6016546001600160a01b0316331461190c5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b0384161580159061192c57506001600160a01b03831615155b801561194057506001600160a01b03821615155b801561195457506001600160a01b03811615155b6119a05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ab5565b600b80546001600160a01b03199081166001600160a01b0396871617909155600c8054821693861693909317909255600e8054831693851693909317909255600d805490911691909216179055565b6016546000906001600160a01b03163314611a3a5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b600954611a5990309061010090046001600160a01b0316600019612710565b50600190565b6016546001600160a01b03163314611aa75760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff1615611afa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ab5565b601454610100900460ff16611b515760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ab5565b6014546201000090046001600160a01b0316611b81576014805462010000600160b01b0319163062010000021790555b601454600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bf357600080fd5b505af1925050508015611c04575060015b50601454600a546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c87575060408051601f3d908101601f19168201909252611c8491810190613bbe565b60015b15611c96576010919091556011555b6014805460ff1916600117905542601555565b6000611cb6338484612809565b5060019392505050565b6016546001600160a01b03163314611d085760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff1615611d7057306001600160a01b03821603611d705760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ab5565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190613be2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e419190613bfb565b6016546001600160a01b03163314611ea25760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b03163314611f495760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff1615611fa15760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ab5565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200a9190613c18565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b9190613c18565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190613c18565b600a546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661228057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121799190613c18565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190613c18565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190613c18565b600a80546001600160a01b0319166001600160a01b039290921691909117905561229c565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610e41923092910416600019612710565b6016546001600160a01b0316331461234a5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff16156123a25760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ab5565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561153a573d6000803e3d6000fd5b6016546001600160a01b031633146124235760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b82846124316009600a613aea565b61243f90633b9aca00613af9565b6124499190613af9565b6124539190613b6d565b60105580826124646009600a613aea565b61247290633b9aca00613af9565b61247c9190613af9565b6124869190613b6d565b601181905560105411156124e65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ab5565b600a546001600160a01b031660009081526020819052604090205461271090612510906096613af9565b61251a9190613b6d565b60115411156125775760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ab5565b620f42406125876009600a613aea565b61259590633b9aca00613af9565b61259f9190613b6d565b60115410156126075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ab5565b620f42406126176009600a613aea565b61262590633b9aca00613af9565b61262f9190613b6d565b60105410156126975760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ab5565b50505050565b6016546001600160a01b031633146126e55760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661275c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ab5565b6001600160a01b0382166127a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ab5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661286f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab5565b6001600160a01b0383166128d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab5565b600082116129335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ab5565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612961576001925061298f565b6001600160a01b03861660009081526001602052604090205460ff161561298b576001915061298f565b5060015b6129998787612d57565b15612a9a5760145460ff16612a9a57806129f55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ab5565b6001600160a01b03871660009081526005602052604090205460ff16158015612a3757506001600160a01b03861660009081526005602052604090205460ff16155b15612a9a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ab5565b8115612b3157600f5460ff16612b3157600f54610100900460ff1615612b3157306000908152602081905260409020546010548110612b2f5760115460125460ff1615612b1957601354600a546001600160a01b031660009081526020819052604090205461271091612b0c91613af9565b612b169190613b6d565b90505b808210612b24578091505b612b2d82612e6e565b505b505b612b3f878787868686612b4a565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff1680612b8c57506001600160a01b03871660009081526006602052604090205460ff165b15612b95575060005b6001600160a01b03881660009081526020819052604081208054889290612bbd908490613b10565b909155506000905081612bd05786612bdc565b612bdc8988888861330c565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612c129190613b5a565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5e91815260200190565b60405180910390a3601454610100900460ff16612d4857612c7f8989613421565b601454610100900460ff16158015612c9c5750612c9c8989612d57565b8015612cc157506001600160a01b03891660009081526005602052604090205460ff16155b8015612ce657506001600160a01b03881660009081526005602052604090205460ff16155b8015612cf0575083155b15612d485760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ab5565b50600198975050505050505050565b6016546000906001600160a01b03848116911614801590612d8657506016546001600160a01b03838116911614155b8015612d9d57506016546001600160a01b03163214155b8015612dc257506001600160a01b03821660009081526004602052604090205460ff16155b8015612de757506001600160a01b03831660009081526004602052604090205460ff16155b8015612dfe57506001600160a01b03821661dead14155b8015612e1257506001600160a01b03821615155b8015612e2757506001600160a01b0383163014155b8015612e4757506014546001600160a01b03848116620100009092041614155b8015612e6757506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160a08101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152600160401b900490911660808201819052600003612edd57506132ff565b30600090815260036020908152604080832060095461010090046001600160a01b0316845290915290205460001914612f405730600090815260036020908152604080832060095461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f7557612f75613b23565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190613c18565b8160018151811061301f5761301f613b23565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac9479061306c908690600090869030904290600401613c35565b600060405180830381600087803b15801561308657600080fd5b505af1925050508015613097575060015b6130a25750506132ff565b6000479050600080846080015161ffff16856040015161ffff16846130c79190613af9565b6130d19190613b6d565b90506000856080015161ffff16866020015161ffff16856130f29190613af9565b6130fc9190613b6d565b90506000866080015161ffff16876060015161ffff168661311d9190613af9565b6131279190613b6d565b90506000816131368486613b5a565b6131409190613b5a565b61314a9087613b10565b885190915061ffff16156131b557600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146131aa576040519150601f19603f3d011682016040523d82523d6000602084013e6131af565b606091505b50909550505b604088015161ffff161561322057600e546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613215576040519150601f19603f3d011682016040523d82523d6000602084013e61321a565b606091505b50909550505b602088015161ffff161561328b57600c546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b50909550505b606088015161ffff16156132f657600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146132eb576040519150601f19603f3d011682016040523d82523d6000602084013e6132f0565b606091505b50909550505b50505050505050505b50600f805460ff19169055565b6000808315613322575060075461ffff1661334c565b821561333b575060075462010000900461ffff1661334c565b50600754640100000000900461ffff165b8060000361335d5784915050610c89565b6014546201000090046001600160a01b031630148015613387575046600114806133875750466038145b1561339157506111945b60006127106133a08388613af9565b6133aa9190613b6d565b905080156134175730600090815260208190526040812080548392906133d1908490613b5a565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b3f8187613b10565b601454610100900460ff16156134855760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ab5565b61348f8282612d57565b1580156134a95750600a546001600160a01b038281169116145b156118c0576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613521576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611ef5565b600060208083528351808285015260005b8181101561358e57858101830151858201604001528201613572565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146135c157600080fd5b919050565b600080600080608085870312156135dc57600080fd5b6135e5856135af565b93506135f3602086016135af565b9250613601604086016135af565b915061360f606086016135af565b905092959194509250565b6001600160a01b038116811461153a57600080fd5b6000806040838503121561364257600080fd5b823561364d8161361a565b946020939093013593505050565b60006020828403121561366d57600080fd5b8135612e678161361a565b60008060006060848603121561368d57600080fd5b83356136988161361a565b925060208401356136a88161361a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136f8576136f86136b9565b604052919050565b600067ffffffffffffffff82111561371a5761371a6136b9565b5060051b60200190565b600082601f83011261373557600080fd5b8135602061374a61374583613700565b6136cf565b82815260059290921b8401810191818101908684111561376957600080fd5b8286015b84811015613784578035835291830191830161376d565b509695505050505050565b600080604083850312156137a257600080fd5b823567ffffffffffffffff808211156137ba57600080fd5b818501915085601f8301126137ce57600080fd5b813560206137de61374583613700565b82815260059290921b840181019181810190898411156137fd57600080fd5b948201945b838610156138245785356138158161361a565b82529482019490820190613802565b9650508601359250508082111561383a57600080fd5b5061384785828601613724565b9150509250929050565b60008060006060848603121561386657600080fd5b61386f846135af565b925061387d602085016135af565b915061388b604085016135af565b90509250925092565b6000602082840312156138a657600080fd5b5035919050565b801515811461153a57600080fd5b600080604083850312156138ce57600080fd5b82356138d98161361a565b915060208301356138e9816138ad565b809150509250929050565b6000806000806080858703121561390a57600080fd5b84356139158161361a565b935060208501356139258161361a565b925060408501356139358161361a565b915060608501356139458161361a565b939692955090935050565b6000806040838503121561396357600080fd5b82356138d9816138ad565b6000806040838503121561398157600080fd5b823561398c8161361a565b915060208301356138e98161361a565b600080600080608085870312156139b257600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156139ff576139ff6139ce565b5092915050565b600181815b80851115613a41578160001904821115613a2757613a276139ce565b80851615613a3457918102915b93841c9390800290613a0b565b509250929050565b600082613a5857506001610bf2565b81613a6557506000610bf2565b8160018114613a7b5760028114613a8557613aa1565b6001915050610bf2565b60ff841115613a9657613a966139ce565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715613ac4575081810a610bf2565b613ace8383613a06565b8060001904821115613ae257613ae26139ce565b029392505050565b6000612e6760ff841683613a49565b8082028115828204841417610bf257610bf26139ce565b81810381811115610bf257610bf26139ce565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613b5057613b506139ce565b6001019392505050565b80820180821115610bf257610bf26139ce565b600082613b8a57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613ba257600080fd5b8251613bad8161361a565b60208401519092506138e98161361a565b60008060408385031215613bd157600080fd5b505080516020909101519092909150565b600060208284031215613bf457600080fd5b5051919050565b600060208284031215613c0d57600080fd5b8151612e67816138ad565b600060208284031215613c2a57600080fd5b8151612e678161361a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c855784516001600160a01b031683529383019391830191600101613c60565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220202a724c17493630d4613ec102ea9cb7d903ca33dce5d818196e814f2bac465a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103385760003560e01c8063590ffdce116101b0578063ab558e4d116100ec578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109ac578063fb78680d14610a12578063fdb78c0e14610a32578063feadde9c14610a5157600080fd5b8063dd62ed3e14610931578063eafb5a3c14610977578063ee5d9c2d1461099757600080fd5b8063b7df8b36116100c6578063b7df8b361461087a578063bfc2fc3514610894578063cf847706146108b457600080fd5b8063ab558e4d1461085a578063b1b08f7114610574578063b3d514fb1461057457600080fd5b806380c581d1116101595780638a63bd9b116101335780638a63bd9b146107e25780638a8c523c146107f757806395d89b411461080c578063a9059cbb1461083a57600080fd5b806380c581d11461078457806383672f3e146107a4578063893d20e8146107c457600080fd5b806370a082311161018a57806370a0823114610724578063715018a61461075a57806378648edf1461076f57600080fd5b8063590ffdce146106ce5780635a6f0918146106ee5780635c24b0741461070457600080fd5b8063285777511161027f578063452ed4f1116102285780634e718e48116102025780634e718e48146106365780634fb2e45d146106565780634fbee1931461067657806350a8e016146106af57600080fd5b8063452ed4f1146105dc5780634ada218b146105fc5780634bbb93eb1461061657600080fd5b80632e8fa821116102595780632e8fa8211461058a578063313ce567146105a057806332cde664146105bc57600080fd5b806328577751146105495780632b112e491461055f5780632b28fc7a1461057457600080fd5b806307dd79e0116102e157806318160ddd116102bb57806318160ddd146104f457806323b872dd146105095780632610eaca1461052957600080fd5b806307dd79e014610471578063095ea7b31461049b5780630dcbcf1c146104bb57600080fd5b806306fdde031161031257806306fdde03146103f15780630712d1651461042a5780630758d9241461044c57600080fd5b806303fd2a45146103445780630445b66714610377578063069d955f1461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d60105481565b60405190815260200161036e565b3480156103a757600080fd5b506007546103cc9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b3480156103fd57600080fd5b506040805180820190915260078152665041414c20414960c81b60208201525b60405161036e9190613561565b34801561043657600080fd5b5061044a6104453660046135c6565b610a71565b005b34801561045857600080fd5b5060095461035a9061010090046001600160a01b031681565b34801561047d57600080fd5b5060095461048b9060ff1681565b604051901515815260200161036e565b3480156104a757600080fd5b5061048b6104b636600461362f565b610be1565b3480156104c757600080fd5b5061048b6104d636600461365b565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050057600080fd5b5061038d610bf8565b34801561051557600080fd5b5061048b610524366004613678565b610c19565b34801561053557600080fd5b5061044a61054436600461378f565b610c91565b34801561055557600080fd5b5061038d60135481565b34801561056b57600080fd5b5061038d610e46565b34801561058057600080fd5b5061038d6103e881565b34801561059657600080fd5b5061038d60115481565b3480156105ac57600080fd5b506040516009815260200161036e565b3480156105c857600080fd5b5061044a6105d7366004613851565b610ec4565b3480156105e857600080fd5b50600a5461035a906001600160a01b031681565b34801561060857600080fd5b5060145461048b9060ff1681565b34801561062257600080fd5b5061038d610631366004613894565b611018565b34801561064257600080fd5b5061044a610651366004613894565b61104c565b34801561066257600080fd5b5061044a61067136600461365b565b6110ea565b34801561068257600080fd5b5061048b61069136600461365b565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106bb57600080fd5b5060145461048b90610100900460ff1681565b3480156106da57600080fd5b5061044a6106e93660046138bb565b6112ec565b3480156106fa57600080fd5b5061038d60155481565b34801561071057600080fd5b5061044a61071f36600461365b565b61135f565b34801561073057600080fd5b5061038d61073f36600461365b565b6001600160a01b031660009081526020819052604090205490565b34801561076657600080fd5b5061044a61153d565b34801561077b57600080fd5b5061044a611662565b34801561079057600080fd5b5061044a61079f3660046138bb565b6116b9565b3480156107b057600080fd5b5061044a6107bf3660046138f4565b6118c4565b3480156107d057600080fd5b506016546001600160a01b031661035a565b3480156107ee57600080fd5b5061048b6119ef565b34801561080357600080fd5b5061044a611a5f565b34801561081857600080fd5b50604080518082019091526005815264091410505360da1b602082015261041d565b34801561084657600080fd5b5061048b61085536600461362f565b611ca9565b34801561086657600080fd5b5061044a61087536600461365b565b611cc0565b34801561088657600080fd5b5060125461048b9060ff1681565b3480156108a057600080fd5b5061044a6108af366004613950565b611e5a565b3480156108c057600080fd5b506008546108fc9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161036e565b34801561093d57600080fd5b5061038d61094c36600461396e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561098357600080fd5b5061044a61099236600461365b565b611f01565b3480156109a357600080fd5b5061044a612302565b3480156109b857600080fd5b50600b54600c54600d54600e546109df936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036e565b348015610a1e57600080fd5b5061044a610a2d36600461399c565b6123db565b348015610a3e57600080fd5b50600f5461048b90610100900460ff1681565b348015610a5d57600080fd5b5061044a610a6c3660046138bb565b61269d565b6016546001600160a01b03163314610abe5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca783398151915260448201526064015b60405180910390fd5b6008805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff00000000191666010000000000008583160265ffff00000000191617640100000000918416919091021790558183610b1b83876139e4565b610b2591906139e4565b610b2f91906139e4565b6008805469ffff00000000000000001916600160401b61ffff93841602179055600754600091610b6891620100008104821691166139e4565b60085461ffff9182169250600160401b900416811015610bda5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ab5565b5050505050565b6000610bee338484612710565b5060015b92915050565b6000610c066009600a613aea565b610c1490633b9aca00613af9565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610c7e576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610c78908490613b10565b90915550505b610c89848484612809565b949350505050565b6016546001600160a01b03163314610cd95760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b8051825114610d2a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ab5565b60005b82518161ffff161015610e4157610d466009600a613aea565b828261ffff1681518110610d5c57610d5c613b23565b6020026020010151610d6e9190613af9565b336000908152602081905260409020541015610dcc5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ab5565b610e2e33848361ffff1681518110610de657610de6613b23565b60200260200101516009600a610dfc9190613aea565b858561ffff1681518110610e1257610e12613b23565b6020026020010151610e249190613af9565b6000806001612b4a565b5080610e3981613b39565b915050610d2d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ea09190613b5a565b610eac6009600a613aea565b610eba90633b9aca00613af9565b610c149190613b10565b6016546001600160a01b03163314610f0c5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60095460ff1615610f5f5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ab5565b6103e88361ffff1611158015610f7b57506103e88261ffff1611155b8015610f8d57506103e88161ffff1611155b610fd95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ab5565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a546001600160a01b031660009081526020819052604081205461271090611042908490613af9565b610bf29190613b6d565b6016546001600160a01b031633146110945760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60968111156110e55760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ab5565b601355565b6016546001600160a01b031633146111325760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b0381166111ae5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab5565b61deac196001600160a01b0382160161122f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ab5565b601654611246906001600160a01b031660006112ec565b6112518160016112ec565b6016546001600160a01b03166000908152602081905260409020541561129a576016546001600160a01b031660008181526020819052604090205461129891908390610e24565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146113345760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146113a75760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff16156113b757600080fd5b306001600160a01b0382160361140f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ab5565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611495575060408051601f3d908101601f1916820190925261149291810190613b8f565b60015b61149e57600080fd5b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601654925461151b9383169291900416600019612710565b600954610e4190309061010090046001600160a01b0316600019612710565b50565b6016546001600160a01b031633146115855760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff166115fd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ab5565b601654611614906001600160a01b031660006112ec565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b031633146116aa5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6009805460ff19166001179055565b6016546001600160a01b031633146117015760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b80611791576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561177557600080fd5b505af1158015611789573d6000803e3d6000fd5b505050505050565b600254156117f8576203f480600254426117ab9190613b10565b116117f85760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ab5565b6001600160a01b03821660009081526001602052604090205460ff16156118615760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ab5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d19060440161175b565b5050565b6016546001600160a01b0316331461190c5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b0384161580159061192c57506001600160a01b03831615155b801561194057506001600160a01b03821615155b801561195457506001600160a01b03811615155b6119a05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ab5565b600b80546001600160a01b03199081166001600160a01b0396871617909155600c8054821693861693909317909255600e8054831693851693909317909255600d805490911691909216179055565b6016546000906001600160a01b03163314611a3a5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b600954611a5990309061010090046001600160a01b0316600019612710565b50600190565b6016546001600160a01b03163314611aa75760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b60145460ff1615611afa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ab5565b601454610100900460ff16611b515760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ab5565b6014546201000090046001600160a01b0316611b81576014805462010000600160b01b0319163062010000021790555b601454600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bf357600080fd5b505af1925050508015611c04575060015b50601454600a546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c87575060408051601f3d908101601f19168201909252611c8491810190613bbe565b60015b15611c96576010919091556011555b6014805460ff1916600117905542601555565b6000611cb6338484612809565b5060019392505050565b6016546001600160a01b03163314611d085760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff1615611d7057306001600160a01b03821603611d705760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ab5565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190613be2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e419190613bfb565b6016546001600160a01b03163314611ea25760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b03163314611f495760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff1615611fa15760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ab5565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200a9190613c18565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b9190613c18565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190613c18565b600a546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661228057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121799190613c18565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190613c18565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190613c18565b600a80546001600160a01b0319166001600160a01b039290921691909117905561229c565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610e41923092910416600019612710565b6016546001600160a01b0316331461234a5760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b601454610100900460ff16156123a25760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ab5565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561153a573d6000803e3d6000fd5b6016546001600160a01b031633146124235760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b82846124316009600a613aea565b61243f90633b9aca00613af9565b6124499190613af9565b6124539190613b6d565b60105580826124646009600a613aea565b61247290633b9aca00613af9565b61247c9190613af9565b6124869190613b6d565b601181905560105411156124e65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ab5565b600a546001600160a01b031660009081526020819052604090205461271090612510906096613af9565b61251a9190613b6d565b60115411156125775760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ab5565b620f42406125876009600a613aea565b61259590633b9aca00613af9565b61259f9190613b6d565b60115410156126075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ab5565b620f42406126176009600a613aea565b61262590633b9aca00613af9565b61262f9190613b6d565b60105410156126975760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ab5565b50505050565b6016546001600160a01b031633146126e55760405162461bcd60e51b81526020600482015260116024820152600080516020613ca78339815191526044820152606401610ab5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661275c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ab5565b6001600160a01b0382166127a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ab5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661286f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab5565b6001600160a01b0383166128d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab5565b600082116129335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ab5565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612961576001925061298f565b6001600160a01b03861660009081526001602052604090205460ff161561298b576001915061298f565b5060015b6129998787612d57565b15612a9a5760145460ff16612a9a57806129f55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ab5565b6001600160a01b03871660009081526005602052604090205460ff16158015612a3757506001600160a01b03861660009081526005602052604090205460ff16155b15612a9a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ab5565b8115612b3157600f5460ff16612b3157600f54610100900460ff1615612b3157306000908152602081905260409020546010548110612b2f5760115460125460ff1615612b1957601354600a546001600160a01b031660009081526020819052604090205461271091612b0c91613af9565b612b169190613b6d565b90505b808210612b24578091505b612b2d82612e6e565b505b505b612b3f878787868686612b4a565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff1680612b8c57506001600160a01b03871660009081526006602052604090205460ff165b15612b95575060005b6001600160a01b03881660009081526020819052604081208054889290612bbd908490613b10565b909155506000905081612bd05786612bdc565b612bdc8988888861330c565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612c129190613b5a565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5e91815260200190565b60405180910390a3601454610100900460ff16612d4857612c7f8989613421565b601454610100900460ff16158015612c9c5750612c9c8989612d57565b8015612cc157506001600160a01b03891660009081526005602052604090205460ff16155b8015612ce657506001600160a01b03881660009081526005602052604090205460ff16155b8015612cf0575083155b15612d485760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ab5565b50600198975050505050505050565b6016546000906001600160a01b03848116911614801590612d8657506016546001600160a01b03838116911614155b8015612d9d57506016546001600160a01b03163214155b8015612dc257506001600160a01b03821660009081526004602052604090205460ff16155b8015612de757506001600160a01b03831660009081526004602052604090205460ff16155b8015612dfe57506001600160a01b03821661dead14155b8015612e1257506001600160a01b03821615155b8015612e2757506001600160a01b0383163014155b8015612e4757506014546001600160a01b03848116620100009092041614155b8015612e6757506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160a08101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152600160401b900490911660808201819052600003612edd57506132ff565b30600090815260036020908152604080832060095461010090046001600160a01b0316845290915290205460001914612f405730600090815260036020908152604080832060095461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f7557612f75613b23565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190613c18565b8160018151811061301f5761301f613b23565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac9479061306c908690600090869030904290600401613c35565b600060405180830381600087803b15801561308657600080fd5b505af1925050508015613097575060015b6130a25750506132ff565b6000479050600080846080015161ffff16856040015161ffff16846130c79190613af9565b6130d19190613b6d565b90506000856080015161ffff16866020015161ffff16856130f29190613af9565b6130fc9190613b6d565b90506000866080015161ffff16876060015161ffff168661311d9190613af9565b6131279190613b6d565b90506000816131368486613b5a565b6131409190613b5a565b61314a9087613b10565b885190915061ffff16156131b557600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146131aa576040519150601f19603f3d011682016040523d82523d6000602084013e6131af565b606091505b50909550505b604088015161ffff161561322057600e546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613215576040519150601f19603f3d011682016040523d82523d6000602084013e61321a565b606091505b50909550505b602088015161ffff161561328b57600c546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b50909550505b606088015161ffff16156132f657600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146132eb576040519150601f19603f3d011682016040523d82523d6000602084013e6132f0565b606091505b50909550505b50505050505050505b50600f805460ff19169055565b6000808315613322575060075461ffff1661334c565b821561333b575060075462010000900461ffff1661334c565b50600754640100000000900461ffff165b8060000361335d5784915050610c89565b6014546201000090046001600160a01b031630148015613387575046600114806133875750466038145b1561339157506111945b60006127106133a08388613af9565b6133aa9190613b6d565b905080156134175730600090815260208190526040812080548392906133d1908490613b5a565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b3f8187613b10565b601454610100900460ff16156134855760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ab5565b61348f8282612d57565b1580156134a95750600a546001600160a01b038281169116145b156118c0576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613521576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611ef5565b600060208083528351808285015260005b8181101561358e57858101830151858201604001528201613572565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146135c157600080fd5b919050565b600080600080608085870312156135dc57600080fd5b6135e5856135af565b93506135f3602086016135af565b9250613601604086016135af565b915061360f606086016135af565b905092959194509250565b6001600160a01b038116811461153a57600080fd5b6000806040838503121561364257600080fd5b823561364d8161361a565b946020939093013593505050565b60006020828403121561366d57600080fd5b8135612e678161361a565b60008060006060848603121561368d57600080fd5b83356136988161361a565b925060208401356136a88161361a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136f8576136f86136b9565b604052919050565b600067ffffffffffffffff82111561371a5761371a6136b9565b5060051b60200190565b600082601f83011261373557600080fd5b8135602061374a61374583613700565b6136cf565b82815260059290921b8401810191818101908684111561376957600080fd5b8286015b84811015613784578035835291830191830161376d565b509695505050505050565b600080604083850312156137a257600080fd5b823567ffffffffffffffff808211156137ba57600080fd5b818501915085601f8301126137ce57600080fd5b813560206137de61374583613700565b82815260059290921b840181019181810190898411156137fd57600080fd5b948201945b838610156138245785356138158161361a565b82529482019490820190613802565b9650508601359250508082111561383a57600080fd5b5061384785828601613724565b9150509250929050565b60008060006060848603121561386657600080fd5b61386f846135af565b925061387d602085016135af565b915061388b604085016135af565b90509250925092565b6000602082840312156138a657600080fd5b5035919050565b801515811461153a57600080fd5b600080604083850312156138ce57600080fd5b82356138d98161361a565b915060208301356138e9816138ad565b809150509250929050565b6000806000806080858703121561390a57600080fd5b84356139158161361a565b935060208501356139258161361a565b925060408501356139358161361a565b915060608501356139458161361a565b939692955090935050565b6000806040838503121561396357600080fd5b82356138d9816138ad565b6000806040838503121561398157600080fd5b823561398c8161361a565b915060208301356138e98161361a565b600080600080608085870312156139b257600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156139ff576139ff6139ce565b5092915050565b600181815b80851115613a41578160001904821115613a2757613a276139ce565b80851615613a3457918102915b93841c9390800290613a0b565b509250929050565b600082613a5857506001610bf2565b81613a6557506000610bf2565b8160018114613a7b5760028114613a8557613aa1565b6001915050610bf2565b60ff841115613a9657613a966139ce565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715613ac4575081810a610bf2565b613ace8383613a06565b8060001904821115613ae257613ae26139ce565b029392505050565b6000612e6760ff841683613a49565b8082028115828204841417610bf257610bf26139ce565b81810381811115610bf257610bf26139ce565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613b5057613b506139ce565b6001019392505050565b80820180821115610bf257610bf26139ce565b600082613b8a57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613ba257600080fd5b8251613bad8161361a565b60208401519092506138e98161361a565b60008060408385031215613bd157600080fd5b505080516020909101519092909150565b600060208284031215613bf457600080fd5b5051919050565b600060208284031215613c0d57600080fd5b8151612e67816138ad565b600060208284031215613c2a57600080fd5b8151612e678161361a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c855784516001600160a01b031683529383019391830191600101613c60565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220202a724c17493630d4613ec102ea9cb7d903ca33dce5d818196e814f2bac465a64736f6c63430008130033

Deployed Bytecode Sourcemap

3889:20918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5451:73;;;;;;;;;;;;5482:42;5451:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5451:73:0;;;;;;;;6143:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6143:28:0;245:177:1;4869:107:0;;;;;;;;;;-1:-1:-1;4869:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;4869:107:0;427:365:1;9708:80:0;;;;;;;;;;-1:-1:-1;9780:5:0;;;;;;;;;;;;-1:-1:-1;;;9780:5:0;;;;9708:80;;;;;;;:::i;14506:530::-;;;;;;;;;;-1:-1:-1;14506:530:0;;;;;:::i;:::-;;:::i;:::-;;5390:26;;;;;;;;;;-1:-1:-1;5390:26:0;;;;;;;-1:-1:-1;;;;;5390:26:0;;;5357;;;;;;;;;;-1:-1:-1;5357:26:0;;;;;;;;;;;2333:14:1;;2326:22;2308:41;;2296:2;2281:18;5357:26:0;2168:187:1;10316:161:0;;;;;;;;;;-1:-1:-1;10316:161:0;;;;;:::i;:::-;;:::i;13402:140::-;;;;;;;;;;-1:-1:-1;13402:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13500:34:0;13476:4;13500:34;;;:25;:34;;;;;;;;;13402:140;9443:83;;;;;;;;;;;;;:::i;10986:306::-;;;;;;;;;;-1:-1:-1;10986:306:0;;;;;:::i;:::-;;:::i;22720:447::-;;;;;;;;;;-1:-1:-1;22720:447:0;;;;;:::i;:::-;;:::i;6251:33::-;;;;;;;;;;;;;;;;13706:141;;;;;;;;;;;;;:::i;5154:42::-;;;;;;;;;;;;5192:4;5154:42;;6178:25;;;;;;;;;;;;;;;;9532:80;;;;;;;;;;-1:-1:-1;9532:80:0;;4510:1;6181:36:1;;6169:2;6154:18;9532:80:0;6039:184:1;14045:453:0;;;;;;;;;;-1:-1:-1;14045:453:0;;;;;:::i;:::-;;:::i;5423:21::-;;;;;;;;;;-1:-1:-1;5423:21:0;;;;-1:-1:-1;;;;;5423:21:0;;;6291:34;;;;;;;;;;-1:-1:-1;6291:34:0;;;;;;;;15594:189;;;;;;;;;;-1:-1:-1;15594:189:0;;;;;:::i;:::-;;:::i;16498:217::-;;;;;;;;;;-1:-1:-1;16498:217:0;;;;;:::i;:::-;;:::i;8081:654::-;;;;;;;;;;-1:-1:-1;8081:654:0;;;;;:::i;:::-;;:::i;13125:127::-;;;;;;;;;;-1:-1:-1;13125:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13216:28:0;13192:4;13216:28;;;:19;:28;;;;;;;;;13125:127;6332:36;;;;;;;;;;-1:-1:-1;6332:36:0;;;;;;;;;;;13260:134;;;;;;;;;;-1:-1:-1;13260:134:0;;;;;:::i;:::-;;:::i;6405:26::-;;;;;;;;;;;;;;;;12560:557;;;;;;;;;;-1:-1:-1;12560:557:0;;;;;:::i;:::-;;:::i;10018:117::-;;;;;;;;;;-1:-1:-1;10018:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10111:16:0;10084:7;10111:16;;;;;;;;;;;;10018:117;8743:310;;;;;;;;;;;;;:::i;13855:182::-;;;;;;;;;;;;;:::i;11988:564::-;;;;;;;;;;-1:-1:-1;11988:564:0;;;;;:::i;:::-;;:::i;15044:542::-;;;;;;;;;;-1:-1:-1;15044:542:0;;;;;:::i;:::-;;:::i;9794:79::-;;;;;;;;;;-1:-1:-1;9864:6:0;;-1:-1:-1;;;;;9864:6:0;9794:79;;10803:175;;;;;;;;;;;;;:::i;21523:695::-;;;;;;;;;;;;;:::i;9618:84::-;;;;;;;;;;-1:-1:-1;9692:7:0;;;;;;;;;;;;-1:-1:-1;;;9692:7:0;;;;9618:84;;10143:165;;;;;;;;;;-1:-1:-1;10143:165:0;;;;;:::i;:::-;;:::i;22416:296::-;;;;;;;;;;-1:-1:-1;22416:296:0;;;;;:::i;:::-;;:::i;6210:34::-;;;;;;;;;;-1:-1:-1;6210:34:0;;;;;;;;16723:263;;;;;;;;;;-1:-1:-1;16723:263:0;;;;;:::i;:::-;;:::i;4985:160::-;;;;;;;;;;-1:-1:-1;4985:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4985:160:0;;;;;;;;;;8604:6:1;8637:15;;;8619:34;;8689:15;;;8684:2;8669:18;;8662:43;8741:15;;;8721:18;;;8714:43;;;;8793:15;;8788:2;8773:18;;8766:43;8846:15;;;8840:3;8825:19;;8818:44;8581:3;8566:19;4985:160:0;8345:523:1;9879:133:0;;;;;;;;;;-1:-1:-1;9879:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9981:19:0;;;9963:7;9981:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9879:133;11300:680;;;;;;;;;;-1:-1:-1;11300:680:0;;;;;:::i;:::-;;:::i;22226:182::-;;;;;;;;;;;;;:::i;5717:349::-;;;;;;;;;;-1:-1:-1;5717:349:0;;;;;;;;;;-1:-1:-1;;;;;5717:349:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9640:15:1;;;9622:34;;9692:15;;;9687:2;9672:18;;9665:43;9744:15;;;9724:18;;;9717:43;;;;9796:15;;;9791:2;9776:18;;9769:43;9548:3;9533:19;5717:349:0;9266:552:1;15791:699:0;;;;;;;;;;-1:-1:-1;15791:699:0;;;;;:::i;:::-;;:::i;6097:39::-;;;;;;;;;;-1:-1:-1;6097:39:0;;;;;;;;;;;13550:148;;;;;;;;;;-1:-1:-1;13550:148:0;;;;;:::i;:::-;;:::i;14506:530::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;;;;;;;;;14633:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14673:33:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;14769:25:0;14717:41;;;::::1;;-1:-1:-1::0;;14769:25:0;;;;;::::1;::::0;;;::::1;;::::0;;14717:41;14673:33;14825:19:::1;14769:25:::0;14633:29;14825:19:::1;:::i;:::-;:33;;;;:::i;:::-;:51;;;;:::i;:::-;14805:7;:71:::0;;-1:-1:-1;;14805:71:0::1;-1:-1:-1::0;;;14805:71:0::1;::::0;;::::1;;;::::0;;14922:9:::1;:17:::0;-1:-1:-1;;14903:36:0::1;::::0;14922:17;;::::1;::::0;::::1;::::0;14903:16:::1;:36;:::i;:::-;14958:7;:17:::0;14887:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;14958:17:0;::::1;;:26:::0;-1:-1:-1;14958:26:0::1;14950:78;;;::::0;-1:-1:-1;;;14950:78:0;;11066:2:1;14950:78:0::1;::::0;::::1;11048:21:1::0;11105:2;11085:18;;;11078:30;11144:34;11124:18;;;11117:62;-1:-1:-1;;;11195:18:1;;;11188:37;11242:19;;14950:78:0::1;10864:403:1::0;14950:78:0::1;14622:414;14506:530:::0;;;;:::o;10316:161::-;10393:4;10410:37;10419:10;10431:7;10440:6;10410:8;:37::i;:::-;-1:-1:-1;10465:4:0;10316:161;;;;;:::o;9443:83::-;9498:7;4570:13;4510:1;4570:2;:13;:::i;:::-;4553:30;;4359:13;4553:30;:::i;:::-;9509:14;;9443:83;:::o;10986:306::-;-1:-1:-1;;;;;11107:19:0;;11086:4;11107:19;;;:11;:19;;;;;;;;11127:10;11107:31;;;;;;;;-1:-1:-1;;11107:52:0;11103:126;;-1:-1:-1;;;;;11176:19:0;;;;;;:11;:19;;;;;;;;11196:10;11176:31;;;;;;;:41;;11211:6;;11176:19;:41;;11211:6;;11176:41;:::i;:::-;;;;-1:-1:-1;;11103:126:0;11248:36;11258:6;11266:9;11277:6;11248:9;:36::i;:::-;11241:43;10986:306;-1:-1:-1;;;;10986:306:0:o;22720:447::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;22855:7:::1;:14;22836:8;:15;:33;22828:67;;;::::0;-1:-1:-1;;;22828:67:0;;13163:2:1;22828:67:0::1;::::0;::::1;13145:21:1::0;13202:2;13182:18;;;13175:30;13241:23;13221:18;;;13214:51;13282:18;;22828:67:0::1;12961:345:1::0;22828:67:0::1;22911:8;22906:254;22929:8;:15;22925:1;:19;;;22906:254;;;23010:13;4510:1;23010:2;:13;:::i;:::-;22999:7;23007:1;22999:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22984:10;10084:7:::0;10111:16;;;;;;;;;;;22974:49:::1;;22966:80;;;::::0;-1:-1:-1;;;22966:80:0;;13645:2:1;22966:80:0::1;::::0;::::1;13627:21:1::0;13684:2;13664:18;;;13657:30;13723:20;13703:18;;;13696:48;13761:18;;22966:80:0::1;13443:342:1::0;22966:80:0::1;23061:87;23078:10;23090:8;23099:1;23090:11;;;;;;;;;;:::i;:::-;;;;;;;4510:1;23114:2;:13;;;;:::i;:::-;23103:7;23111:1;23103:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23129:5;23136::::0;23143:4:::1;23061:16;:87::i;:::-;-1:-1:-1::0;22946:3:0;::::1;::::0;::::1;:::i;:::-;;;;22906:254;;;;22720:447:::0;;:::o;13706:141::-;13759:7;10111:16;;;;;;5482:42;10111:16;;;;13798:39;;10111:16;13798:39;:::i;:::-;4570:13;4510:1;4570:2;:13;:::i;:::-;4553:30;;4359:13;4553:30;:::i;:::-;13787:51;;;;:::i;14045:453::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;14153:14:::1;::::0;::::1;;14152:15;14144:45;;;::::0;-1:-1:-1;;;14144:45:0;;14324:2:1;14144:45:0::1;::::0;::::1;14306:21:1::0;14363:2;14343:18;;;14336:30;14402:19;14382:18;;;14375:47;14439:18;;14144:45:0::1;14122:341:1::0;14144:45:0::1;5192:4;14208:6;:21;;;;:65;;;;;5242:4;14250:7;:23;;;;14208:65;:117;;;;;5296:4;14294:11;:31;;;;14208:117;14200:170;;;::::0;-1:-1:-1;;;14200:170:0;;14670:2:1;14200:170:0::1;::::0;::::1;14652:21:1::0;14709:2;14689:18;;;14682:30;14748:25;14728:18;;;14721:53;14791:18;;14200:170:0::1;14468:347:1::0;14200:170:0::1;14381:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14417:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14455:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14045:453::o;15594:189::-;15723:6;;-1:-1:-1;;;;;15723:6:0;15685:7;10111:16;;;;;;;;;;;5343:5;;15713:41;;15733:21;;15713:41;:::i;:::-;15712:62;;;;:::i;16498:217::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;16628:3:::1;16602:22;:29;;16594:64;;;::::0;-1:-1:-1;;;16594:64:0;;15244:2:1;16594:64:0::1;::::0;::::1;15226:21:1::0;15283:2;15263:18;;;15256:30;15322:24;15302:18;;;15295:52;15364:18;;16594:64:0::1;15042:346:1::0;16594:64:0::1;16669:13;:38:::0;16498:217::o;8081:654::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;-1:-1:-1;;;;;8160:22:0;::::1;8152:96;;;::::0;-1:-1:-1;;;8152:96:0;;15595:2:1;8152:96:0::1;::::0;::::1;15577:21:1::0;15634:2;15614:18;;;15607:30;15673:34;15653:18;;;15646:62;15744:31;15724:18;;;15717:59;15793:19;;8152:96:0::1;15393:425:1::0;8152:96:0::1;-1:-1:-1::0;;;;;;;8267:16:0;::::1;::::0;8259:90:::1;;;::::0;-1:-1:-1;;;8259:90:0;;15595:2:1;8259:90:0::1;::::0;::::1;15577:21:1::0;15634:2;15614:18;;;15607:30;15673:34;15653:18;;;15646:62;15744:31;15724:18;;;15717:59;15793:19;;8259:90:0::1;15393:425:1::0;8259:90:0::1;8380:6;::::0;8360:34:::1;::::0;-1:-1:-1;;;;;8380:6:0::1;;8360:19;:34::i;:::-;8405:35;8425:8;8435:4;8405:19;:35::i;:::-;8475:6;::::0;-1:-1:-1;;;;;8475:6:0::1;8485:1;10111:16:::0;;;;;;;;;;;8465:21;8461:127:::1;;8520:6;::::0;-1:-1:-1;;;;;8520:6:0::1;10084:7:::0;10111:16;;;;;;;;;;;8503:73:::1;::::0;8520:6;8528:8;;8538:17:::1;10018:117:::0;8503:73:::1;;8461:127;8627:6;::::0;;-1:-1:-1;;;;;8644:17:0;;::::1;-1:-1:-1::0;;;;;;8644:17:0;::::1;::::0;::::1;::::0;;;8677:40:::1;::::0;8627:6;::::1;::::0;8644:17;8627:6;;8677:40:::1;::::0;8608:16:::1;::::0;8677:40:::1;8141:594;8081:654:::0;:::o;13260:134::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;-1:-1:-1;;;;;13348:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13348:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13260:134::o;12560:557::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;12635:14:::1;::::0;::::1;;12634:15;12626:24;;;::::0;::::1;;12685:4;-1:-1:-1::0;;;;;12669:21:0;::::1;::::0;12661:48:::1;;;::::0;-1:-1:-1;;;12661:48:0;;16025:2:1;12661:48:0::1;::::0;::::1;16007:21:1::0;16064:2;16044:18;;;16037:30;16103:16;16083:18;;;16076:44;16137:18;;12661:48:0::1;15823:338:1::0;12661:48:0::1;12720:11;:31:::0;;-1:-1:-1;;;;;;12720:31:0::1;::::0;-1:-1:-1;;;;;12720:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12766:23:::1;::::0;;-1:-1:-1;;;12766:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12766:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12766:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12766:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12762:348;;13099:8;::::0;::::1;12762:348;12853:9;:29:::0;;-1:-1:-1;;12853:29:0::1;;-1:-1:-1::0;;;;;12853:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12884:6:::1;:22:::0;;-1:-1:-1;;;;;;12884:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12908:15:0;;;-1:-1:-1;12908:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12908:22:0::1;::::0;;::::1;::::0;;12955:6:::1;::::0;12971:9;;12946:55:::1;::::0;12955:6;::::1;::::0;12971:9;;::::1;;-1:-1:-1::0;;12946:8:0::1;:55::i;:::-;13048:9;::::0;13016:62:::1;::::0;13033:4:::1;::::0;13048:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13048:9:0::1;-1:-1:-1::0;;13016:8:0::1;:62::i;12762:348::-;12560:557:::0;:::o;8743:310::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;8810:14:::1;::::0;::::1;;8802:74;;;::::0;-1:-1:-1;;;8802:74:0;;16758:2:1;8802:74:0::1;::::0;::::1;16740:21:1::0;16797:2;16777:18;;;16770:30;16836:34;16816:18;;;16809:62;16907:17;16887:18;;;16880:45;16942:19;;8802:74:0::1;16556:411:1::0;8802:74:0::1;8907:6;::::0;8887:34:::1;::::0;-1:-1:-1;;;;;8907:6:0::1;;8887:19;:34::i;:::-;8951:6;::::0;;-1:-1:-1;;;;;;8968:19:0;::::1;::::0;;;9003:42:::1;::::0;-1:-1:-1;;;;;8951:6:0;;::::1;::::0;8932:16:::1;::::0;8951:6;;9003:42:::1;::::0;8932:16;;9003:42:::1;8791:262;8743:310::o:0;13855:182::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;14008:14:::1;:21:::0;;-1:-1:-1;;14008:21:0::1;14025:4;14008:21;::::0;;13855:182::o;11988:564::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;12070:7:::1;12065:480;;-1:-1:-1::0;;;;;12094:13:0;;::::1;12110:5;12094:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12094:21:0::1;::::0;;12130:11:::1;::::0;:34;;-1:-1:-1;;;12130:34:0;;::::1;::::0;::::1;17140:74:1::0;;;;17230:18;;;17223:50;;;;12130:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17113:18:1;;12130:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11988:564:::0;;:::o;12065:480::-:1;12201:17;::::0;:22;12197:135:::1;;12290:6;12270:17;;12252:15;:35;;;;:::i;:::-;:44;12244:72;;;::::0;-1:-1:-1;;;12244:72:0;;17486:2:1;12244:72:0::1;::::0;::::1;17468:21:1::0;17525:2;17505:18;;;17498:30;17564:17;17544:18;;;17537:45;17599:18;;12244:72:0::1;17284:339:1::0;12244:72:0::1;-1:-1:-1::0;;;;;12355:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12354:14;12346:54;;;::::0;-1:-1:-1;;;12346:54:0;;17830:2:1;12346:54:0::1;::::0;::::1;17812:21:1::0;17869:2;17849:18;;;17842:30;17908:29;17888:18;;;17881:57;17955:18;;12346:54:0::1;17628:351:1::0;12346:54:0::1;-1:-1:-1::0;;;;;12415:13:0;;::::1;;::::0;;;12431:4:::1;12415:13;::::0;;;;;;;;:20;;-1:-1:-1;;12415:20:0::1;::::0;::::1;::::0;;12470:15:::1;12450:17;:35:::0;12500:11:::1;::::0;:33;;-1:-1:-1;;;12500:33:0;;::::1;::::0;::::1;17140:74:1::0;;;;17230:18;;;17223:50;12500:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17113:18:1;;12500:33:0::1;16972:307:1::0;12065:480:0::1;11988:564:::0;;:::o;15044:542::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;-1:-1:-1;;;;;15216:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;15243:21:0;::::1;::::0;::::1;15216:48;:77;;;;-1:-1:-1::0;;;;;;15268:25:0;::::1;::::0;::::1;15216:77;:110;;;;-1:-1:-1::0;;;;;;15297:29:0;::::1;::::0;::::1;15216:110;15208:146;;;::::0;-1:-1:-1;;;15208:146:0;;18186:2:1;15208:146:0::1;::::0;::::1;18168:21:1::0;18225:2;18205:18;;;18198:30;18264:25;18244:18;;;18237:53;18307:18;;15208:146:0::1;17984:347:1::0;15208:146:0::1;15365:11;:42:::0;;-1:-1:-1;;;;;;15365:42:0;;::::1;-1:-1:-1::0;;;;;15365:42:0;;::::1;;::::0;;;15418:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15475:19;:38;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15524:27;:54;;;;::::1;::::0;;;::::1;;::::0;;15044:542::o;10803:175::-;7935:6;;10869:4;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;10918:9:::1;::::0;10886:62:::1;::::0;10903:4:::1;::::0;10918:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10918:9:0::1;-1:-1:-1::0;;10886:8:0::1;:62::i;:::-;-1:-1:-1::0;10966:4:0::1;10803:175:::0;:::o;21523:695::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;21585:14:::1;::::0;::::1;;21584:15;21576:52;;;::::0;-1:-1:-1;;;21576:52:0;;18538:2:1;21576:52:0::1;::::0;::::1;18520:21:1::0;18577:2;18557:18;;;18550:30;18616:26;18596:18;;;18589:54;18660:18;;21576:52:0::1;18336:348:1::0;21576:52:0::1;21647:16;::::0;::::1;::::0;::::1;;;21639:53;;;::::0;-1:-1:-1;;;21639:53:0;;18891:2:1;21639:53:0::1;::::0;::::1;18873:21:1::0;18930:2;18910:18;;;18903:30;18969:26;18949:18;;;18942:54;19013:18;;21639:53:0::1;18689:348:1::0;21639:53:0::1;21715:11;::::0;;;::::1;-1:-1:-1::0;;;;;21715:11:0::1;21703:106;;21757:11;:40:::0;;-1:-1:-1;;;;;;21757:40:0::1;21791:4;21757:40:::0;::::1;;::::0;;21703:106:::1;21823:11;::::0;21845:6:::1;::::0;21823:87:::1;::::0;-1:-1:-1;;;21823:87:0;;-1:-1:-1;;;;;21845:6:0;;::::1;21823:87;::::0;::::1;19265:74:1::0;19387:10;21860:12:0::1;19375:23:1::0;19355:18;;;19348:51;19447:18;21882:15:0::1;19435:31:1::0;19415:18;;;19408:59;4510:1:0::1;19483:18:1::0;;;19476:45;21823:11:0;;;::::1;;::::0;:21:::1;::::0;19237:19:1;;21823:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;21936:11:0::1;::::0;21967:6:::1;::::0;-1:-1:-1;;;;;21967:6:0;;::::1;10084:7:::0;10111:16;;;;;;;;;;;;;21936:39;;-1:-1:-1;;;21936:39:0;;::::1;::::0;::::1;391:25:1::0;;;;21936:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;21936:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;21936:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;21936:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21932:207:::0;::::1;;22047:13;:29:::0;;;;22091:10:::1;:27:::0;21932:207:::1;22149:14;:21:::0;;-1:-1:-1;;22149:21:0::1;22166:4;22149:21;::::0;;22195:15:::1;22181:11;:29:::0;21523:695::o;10143:165::-;10221:4;10238:40;10248:10;10260:9;10271:6;10238:9;:40::i;:::-;-1:-1:-1;10296:4:0;;10143:165;-1:-1:-1;;;10143:165:0:o;22416:296::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;22494:16:::1;::::0;::::1;::::0;::::1;;;22490:111;;;22552:4;-1:-1:-1::0;;;;;22535:22:0;::::1;::::0;22527:62:::1;;;::::0;-1:-1:-1;;;22527:62:0;;19984:2:1;22527:62:0::1;::::0;::::1;19966:21:1::0;20023:2;20003:18;;;19996:30;20062:29;20042:18;;;20035:57;20109:18;;22527:62:0::1;19782:351:1::0;22527:62:0::1;22665:6;::::0;22673:30:::1;::::0;-1:-1:-1;;;22673:30:0;;22697:4:::1;22673:30;::::0;::::1;160:74:1::0;22633:5:0;;-1:-1:-1;;;;;22650:14:0;;::::1;::::0;::::1;::::0;22665:6;;;::::1;::::0;22650:14;;22673:15:::1;::::0;133:18:1;;22673:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22650:54;::::0;-1:-1:-1;;;;;;22650:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20519:55:1;;;22650:54:0::1;::::0;::::1;20501:74:1::0;20591:18;;;20584:34;20474:18;;22650:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16723:263::-:0;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;16832:19:::1;:33:::0;;-1:-1:-1;;16832:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;16876:22:::1;:47:::0;;-1:-1:-1;;16876:47:0::1;::::0;::::1;;;::::0;;16939:39:::1;::::0;2308:41:1;;;16939:39:0::1;::::0;2296:2:1;2281:18;16939:39:0::1;;;;;;;;16723:263:::0;;:::o;11300:680::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;11380:16:::1;::::0;::::1;::::0;::::1;;;11379:17;11371:60;;;::::0;-1:-1:-1;;;11371:60:0;;21081:2:1;11371:60:0::1;::::0;::::1;21063:21:1::0;21120:2;21100:18;;;21093:30;21159:32;21139:18;;;21132:60;21209:18;;11371:60:0::1;20879:354:1::0;11371:60:0::1;11442:20;11475:9;11442:43;;11496:16;11526:10;-1:-1:-1::0;;;;;11526:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11515:40:0::1;;11564:4;11571:10;-1:-1:-1::0;;;;;11571:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11515:74;::::0;-1:-1:-1;;;;;;11515:74:0::1;::::0;;;;;;-1:-1:-1;;;;;21747:15:1;;;11515:74:0::1;::::0;::::1;21729:34:1::0;21799:15;;21779:18;;;21772:43;21641:18;;11515:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11608:6;::::0;-1:-1:-1;;;;;11608:6:0;;::::1;11618:5;11600:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11600:23:0::1;::::0;;11496:93;;-1:-1:-1;11638:22:0;::::1;11634:200;;11697:10;-1:-1:-1::0;;;;;11697:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11686:43:0::1;;11738:4;11745:10;-1:-1:-1::0;;;;;11745:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11686:77;::::0;-1:-1:-1;;;;;;11686:77:0::1;::::0;;;;;;-1:-1:-1;;;;;21747:15:1;;;11686:77:0::1;::::0;::::1;21729:34:1::0;21799:15;;21779:18;;;21772:43;21641:18;;11686:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11677:6;:86:::0;;-1:-1:-1;;;;;;11677:86:0::1;-1:-1:-1::0;;;;;11677:86:0;;;::::1;::::0;;;::::1;::::0;;11634:200:::1;;;11805:6;:17:::0;;-1:-1:-1;;;;;;11805:17:0::1;-1:-1:-1::0;;;;;11805:17:0;::::1;;::::0;;11634:200:::1;11844:9;:22:::0;;-1:-1:-1;;11844:22:0::1;;-1:-1:-1::0;;;;;11844:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11885:6:::1;::::0;;::::1;-1:-1:-1::0;11877:15:0;;;-1:-1:-1;11877:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11877:22:0::1;::::0;;::::1;::::0;;11942:9;;11910:62:::1;::::0;11927:4:::1;::::0;11942:9;::::1;;-1:-1:-1::0;;11910:8:0::1;:62::i;22226:182::-:0;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;22293:16:::1;::::0;::::1;::::0;::::1;;;22292:17;22284:58;;;::::0;-1:-1:-1;;;22284:58:0;;22028:2:1;22284:58:0::1;::::0;::::1;22010:21:1::0;22067:2;22047:18;;;22040:30;22106;22086:18;;;22079:58;22154:18;;22284:58:0::1;21826:352:1::0;22284:58:0::1;22361:6;::::0;22353:47:::1;::::0;-1:-1:-1;;;;;22361:6:0;;::::1;::::0;22378:21:::1;22353:47:::0;::::1;;;::::0;22361:6:::1;22353:47:::0;22361:6;22353:47;22378:21;22361:6;22353:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15791:699:::0;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;15991:16;15971;4570:13:::1;4510:1;4570:2;:13;:::i;:::-;4553:30;::::0;4359:13:::1;4553:30;:::i;:::-;15961:26;;;;:::i;:::-;15960:47;;;;:::i;:::-;15944:13;:63:::0;16059:13;16042;4570::::1;4510:1;4570:2;:13;:::i;:::-;4553:30;::::0;4359:13:::1;4553:30;:::i;:::-;16032:23;;;;:::i;:::-;16031:41;;;;:::i;:::-;16018:10;:54:::0;;;16091:13:::1;::::0;:27:::1;;16083:73;;;::::0;-1:-1:-1;;;16083:73:0;;22385:2:1;16083:73:0::1;::::0;::::1;22367:21:1::0;22424:2;22404:18;;;22397:30;22463:34;22443:18;;;22436:62;-1:-1:-1;;;22514:18:1;;;22507:31;22555:19;;16083:73:0::1;22183:397:1::0;16083:73:0::1;16200:6;::::0;-1:-1:-1;;;;;16200:6:0::1;10084:7:::0;10111:16;;;;;;;;;;;5343:5:::1;::::0;16190:23:::1;::::0;16210:3:::1;16190:23;:::i;:::-;16189:44;;;;:::i;:::-;16175:10;;:58;;16167:106;;;::::0;-1:-1:-1;;;16167:106:0;;22787:2:1;16167:106:0::1;::::0;::::1;22769:21:1::0;22826:2;22806:18;;;22799:30;22865:34;22845:18;;;22838:62;-1:-1:-1;;;22916:18:1;;;22909:33;22959:19;;16167:106:0::1;22585:399:1::0;16167:106:0::1;16316:9;4570:13;4510:1;4570:2;:13;:::i;:::-;4553:30;::::0;4359:13:::1;4553:30;:::i;:::-;16306:19;;;;:::i;:::-;16292:10;;:33;;16284:92;;;::::0;-1:-1:-1;;;16284:92:0;;23191:2:1;16284:92:0::1;::::0;::::1;23173:21:1::0;23230:2;23210:18;;;23203:30;23269:34;23249:18;;;23242:62;-1:-1:-1;;;23320:18:1;;;23313:44;23374:19;;16284:92:0::1;22989:410:1::0;16284:92:0::1;16422:9;4570:13;4510:1;4570:2;:13;:::i;:::-;4553:30;::::0;4359:13:::1;4553:30;:::i;:::-;16412:19;;;;:::i;:::-;16395:13;;:36;;16387:95;;;::::0;-1:-1:-1;;;16387:95:0;;23191:2:1;16387:95:0::1;::::0;::::1;23173:21:1::0;23230:2;23210:18;;;23203:30;23269:34;23249:18;;;23242:62;-1:-1:-1;;;23320:18:1;;;23313:44;23374:19;;16387:95:0::1;22989:410:1::0;16387:95:0::1;15791:699:::0;;;;:::o;13550:148::-;7935:6;;-1:-1:-1;;;;;7935:6:0;7945:10;7935:20;7927:50;;;;-1:-1:-1;;;7927:50:0;;10415:2:1;7927:50:0;;;10397:21:1;10454:2;10434:18;;;10427:30;-1:-1:-1;;;;;;;;;;;10473:18:1;;;10466:47;10530:18;;7927:50:0;10213:341:1;7927:50:0;-1:-1:-1;;;;;13646:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13646:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13550:148::o;10485:310::-;-1:-1:-1;;;;;10580:20:0;;10572:52;;;;-1:-1:-1;;;10572:52:0;;23606:2:1;10572:52:0;;;23588:21:1;23645:2;23625:18;;;23618:30;-1:-1:-1;;;23664:18:1;;;23657:49;23723:18;;10572:52:0;23404:343:1;10572:52:0;-1:-1:-1;;;;;10643:21:0;;10635:53;;;;-1:-1:-1;;;10635:53:0;;23606:2:1;10635:53:0;;;23588:21:1;23645:2;23625:18;;;23618:30;-1:-1:-1;;;23664:18:1;;;23657:49;23723:18;;10635:53:0;23404:343:1;10635:53:0;-1:-1:-1;;;;;10701:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10754:33;;391:25:1;;;10754:33:0;;364:18:1;10754:33:0;;;;;;;10485:310;;;:::o;17448:1673::-;17527:4;-1:-1:-1;;;;;17552:18:0;;17544:68;;;;-1:-1:-1;;;17544:68:0;;23954:2:1;17544:68:0;;;23936:21:1;23993:2;23973:18;;;23966:30;24032:34;24012:18;;;24005:62;-1:-1:-1;;;24083:18:1;;;24076:35;24128:19;;17544:68:0;23752:401:1;17544:68:0;-1:-1:-1;;;;;17631:16:0;;17623:64;;;;-1:-1:-1;;;17623:64:0;;24360:2:1;17623:64:0;;;24342:21:1;24399:2;24379:18;;;24372:30;24438:34;24418:18;;;24411:62;-1:-1:-1;;;24489:18:1;;;24482:33;24532:19;;17623:64:0;24158:399:1;17623:64:0;17715:1;17706:6;:10;17698:64;;;;-1:-1:-1;;;17698:64:0;;24764:2:1;17698:64:0;;;24746:21:1;24803:2;24783:18;;;24776:30;24842:34;24822:18;;;24815:62;-1:-1:-1;;;24893:18:1;;;24886:39;24942:19;;17698:64:0;24562:405:1;17698:64:0;-1:-1:-1;;;;;17861:13:0;;17773:8;17861:13;;;:7;:13;;;;;;17773:8;;;;17861:13;;17857:162;;;17897:4;17891:10;;17857:162;;;-1:-1:-1;;;;;17923:11:0;;;;;;:7;:11;;;;;;;;17919:100;;;17958:4;17951:11;;17919:100;;;-1:-1:-1;18003:4:0;17919:100;18033:20;18044:4;18050:2;18033:10;:20::i;:::-;18029:371;;;18074:14;;;;18070:319;;18114:5;18109:265;;18144:34;;-1:-1:-1;;;18144:34:0;;25174:2:1;18144:34:0;;;25156:21:1;25213:2;25193:18;;;25186:30;25252:26;25232:18;;;25225:54;25296:18;;18144:34:0;24972:348:1;18109:265:0;-1:-1:-1;;;;;18209:31:0;;;;;;:25;:31;;;;;;;;18208:32;:66;;;;-1:-1:-1;;;;;;18245:29:0;;;;;;:25;:29;;;;;;;;18244:30;18208:66;18204:170;;;18299:55;;-1:-1:-1;;;18299:55:0;;25527:2:1;18299:55:0;;;25509:21:1;25566:2;25546:18;;;25539:30;25605:34;25585:18;;;25578:62;-1:-1:-1;;;25656:18:1;;;25649:43;25709:19;;18299:55:0;25325:409:1;18204:170:0;18416:4;18412:632;;;18442:6;;;;18437:596;;18473:19;;;;;;;18469:549;;;18566:4;18517:28;10111:16;;;;;;;;;;;18623:13;;18599:37;;18595:404;;18683:10;;18724:22;;;;18720:97;;;18781:13;;18771:6;;-1:-1:-1;;;;;18771:6:0;10084:7;10111:16;;;;;;;;;;;5343:5;;18761:33;;;:::i;:::-;18760:54;;;;:::i;:::-;18750:64;;18720:97;18871:7;18847:20;:31;18843:72;;18905:7;18882:30;;18843:72;18941:34;18954:20;18941:12;:34::i;:::-;18638:361;18595:404;18494:524;18469:549;19061:52;19078:4;19084:2;19088:6;19096:3;19101:4;19107:5;19061:16;:52::i;:::-;19054:59;17448:1673;-1:-1:-1;;;;;;;17448:1673:0:o;23175:817::-;-1:-1:-1;;;;;23345:25:0;;23294:4;23345:25;;;:19;:25;;;;;;23326:4;;23345:25;;;:52;;-1:-1:-1;;;;;;23374:23:0;;;;;;:19;:23;;;;;;;;23345:52;23341:99;;;-1:-1:-1;23423:5:0;23341:99;-1:-1:-1;;;;;23450:13:0;;:7;:13;;;;;;;;;;:23;;23467:6;;23450:7;:23;;23467:6;;23450:23;:::i;:::-;;;;-1:-1:-1;23484:22:0;;-1:-1:-1;23510:7:0;23509:55;;23558:6;23509:55;;;23521:34;23531:4;23537:6;23545:3;23550:4;23521:9;:34::i;:::-;23484:80;;23590:14;23575:7;:11;23583:2;-1:-1:-1;;;;;23575:11:0;-1:-1:-1;;;;;23575:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23635:2;-1:-1:-1;;;;;23620:34:0;23629:4;-1:-1:-1;;;;;23620:34:0;;23639:14;23620:34;;;;391:25:1;;379:2;364:18;;245:177;23620:34:0;;;;;;;;23670:16;;;;;;;23665:298;;23703:28;23722:4;23728:2;23703:18;:28::i;:::-;23751:16;;;;;;;23750:17;:41;;;;;23771:20;23782:4;23788:2;23771:10;:20::i;:::-;23750:77;;;;-1:-1:-1;;;;;;23796:31:0;;;;;;:25;:31;;;;;;;;23795:32;23750:77;:111;;;;-1:-1:-1;;;;;;23832:29:0;;;;;;:25;:29;;;;;;;;23831:30;23750:111;:121;;;;;23866:5;23865:6;23750:121;23746:206;;;23892:44;;-1:-1:-1;;;23892:44:0;;25941:2:1;23892:44:0;;;25923:21:1;25980:2;25960:18;;;25953:30;26019:34;25999:18;;;25992:62;-1:-1:-1;;;26070:18:1;;;26063:32;26112:19;;23892:44:0;25739:398:1;23746:206:0;-1:-1:-1;23980:4:0;;23175:817;-1:-1:-1;;;;;;;;23175:817:0:o;16994:446::-;17095:6;;17063:4;;-1:-1:-1;;;;;17087:14:0;;;17095:6;;17087:14;;;;:43;;-1:-1:-1;17124:6:0;;-1:-1:-1;;;;;17118:12:0;;;17124:6;;17118:12;;17087:43;:79;;;;-1:-1:-1;17160:6:0;;-1:-1:-1;;;;;17160:6:0;17147:9;:19;;17087:79;:118;;;;-1:-1:-1;;;;;;17184:21:0;;;;;;:17;:21;;;;;;;;17183:22;17087:118;:159;;;;-1:-1:-1;;;;;;17223:23:0;;;;;;:17;:23;;;;;;;;17222:24;17087:159;:186;;;;-1:-1:-1;;;;;;17263:10:0;;5482:42;17263:10;;17087:186;:219;;;;-1:-1:-1;;;;;;17290:16:0;;;;17087:219;:257;;;;-1:-1:-1;;;;;;17323:21:0;;17339:4;17323:21;;17087:257;:302;;;;-1:-1:-1;17377:11:0;;-1:-1:-1;;;;;17361:28:0;;;17377:11;;;;;17361:28;;17087:302;:345;;;;-1:-1:-1;17420:11:0;;-1:-1:-1;;;;;17406:26:0;;;17420:11;;;;;17406:26;;17087:345;17080:352;16994:446;-1:-1:-1;;;16994:446:0:o;19129:1815::-;6596:6;:13;;-1:-1:-1;;6596:13:0;6605:4;6596:13;;;19212:30:::1;::::0;;::::1;::::0;::::1;::::0;;19235:7:::1;19212:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19212:30:0;::::1;::::0;;::::1;::::0;;;;;;6596:6;19257:21;19253:60:::1;;19295:7;;;19253:60;19349:4;19329:26;::::0;;;:11:::1;:26;::::0;;;;;;;19364:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19364:9:0::1;19329:46:::0;;;;;;;;-1:-1:-1;;19329:67:0::1;19325:166;;19433:4;19413:26;::::0;;;:11:::1;:26;::::0;;;;;;;19448:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19448:9:0::1;19413:46:::0;;;;;;;-1:-1:-1;;19413:66:0;;19325:166:::1;19534:16;::::0;;19548:1:::1;19534:16:::0;;;;;::::1;::::0;;19510:21:::1;::::0;19534:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19534:16:0::1;19510:40;;19579:4;19561;19566:1;19561:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19561:23:0::1;;;-1:-1:-1::0;;;;;19561:23:0::1;;;::::0;::::1;19605:9;;;;;;;;;-1:-1:-1::0;;;;;19605:9:0::1;-1:-1:-1::0;;;;;19605:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19595:4;19600:1;19595:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19595:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19638:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19638:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19713:20;;19748:1:::1;::::0;19764:4;;19791::::1;::::0;19811:15:::1;::::0;19638:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19634:246;;19862:7;;;;19634:246;19892:18;19913:21;19892:42;;19945:12;19968:22:::0;20025:6:::1;:16;;;19993:48;;20007:6;:14;;;19994:27;;:10;:27;;;;:::i;:::-;19993:48;;;;:::i;:::-;19968:73;;20052:26;20117:6;:16;;;20081:52;;20095:6;:18;;;20082:31;;:10;:31;;;;:::i;:::-;20081:52;;;;:::i;:::-;20052:81;;20144:30;20217:6;:16;;;20177:56;;20191:6;:22;;;20178:35;;:10;:35;;;;:::i;:::-;20177:56;;;;:::i;:::-;20144:89:::0;-1:-1:-1;20244:24:0::1;20144:89:::0;20285:35:::1;20302:18:::0;20285:14;:35:::1;:::i;:::-;:60;;;;:::i;:::-;20271:75;::::0;:10;:75:::1;:::i;:::-;20361:16:::0;;20244:102;;-1:-1:-1;20361:20:0::1;;::::0;20357:133:::1;;20411:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20411:21:0;;::::1;::::0;20468:5:::1;::::0;20445:16;;20411:67:::1;::::0;;;20445:16;20411:21;20468:5;20411:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20398:80:0;;-1:-1:-1;;20357:133:0::1;20504:14;::::0;::::1;::::0;:18:::1;;::::0;20500:127:::1;;20552:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;20552:19:0;;::::1;::::0;20605:5:::1;::::0;20584:14;;20552:63:::1;::::0;;;20584:14;20552:19;20605:5;20552:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20539:76:0;;-1:-1:-1;;20500:127:0::1;20641:18;::::0;::::1;::::0;:22:::1;;::::0;20637:139:::1;;20693:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;20693:23:0;;::::1;::::0;20754:5:::1;::::0;20729:18;;20693:71:::1;::::0;;;20729:18;20693:23;20754:5;20693:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20680:84:0;;-1:-1:-1;;20637:139:0::1;20790:22;::::0;::::1;::::0;:26:::1;;::::0;20786:151:::1;;20846:27:::0;;:79:::1;::::0;-1:-1:-1;;;;;20846:27:0;;::::1;::::0;20915:5:::1;::::0;20886:22;;20846:79:::1;::::0;;;20886:22;20846:27;20915:5;20846:79:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20833:92:0;;-1:-1:-1;;20786:151:0::1;19201:1743;;;;;;;;6620:1;-1:-1:-1::0;6632:6:0;:14;;-1:-1:-1;;6632:14:0;;;19129:1815::o;24000:804::-;24088:7;24108:18;24141:3;24137:205;;;-1:-1:-1;24174:9:0;:16;;;24137:205;;;24212:4;24208:134;;;-1:-1:-1;24246:9:0;:17;;;;;;24208:134;;;-1:-1:-1;24309:9:0;:21;;;;;;24208:134;24356:10;24370:1;24356:15;24352:39;;24382:6;24375:13;;;;;24352:39;24413:11;;;;;-1:-1:-1;;;;;24413:11:0;24437:4;24405:37;:110;;;;;24460:13;24477:1;24460:18;:54;;;;24495:13;24512:2;24495:19;24460:54;24401:138;;;-1:-1:-1;24532:4:0;24401:138;24549:17;5343:5;24569:19;24578:10;24569:6;:19;:::i;:::-;:38;;;;:::i;:::-;24549:58;-1:-1:-1;24622:13:0;;24618:141;;24668:4;24652:7;:22;;;;;;;;;;:35;;24678:9;;24652:7;:35;;24678:9;;24652:35;:::i;:::-;;;;-1:-1:-1;;24707:40:0;;391:25:1;;;24730:4:0;;-1:-1:-1;;;;;24707:40:0;;;;;379:2:1;364:18;24707:40:0;;;;;;;24618:141;24778:18;24787:9;24778:6;:18;:::i;20952:563::-;21035:16;;;;;;;21034:17;21026:65;;;;-1:-1:-1;;;21026:65:0;;27585:2:1;21026:65:0;;;27567:21:1;27624:2;27604:18;;;27597:30;27663:34;27643:18;;;27636:62;-1:-1:-1;;;27714:18:1;;;27707:33;27757:19;;21026:65:0;27383:399:1;21026:65:0;21107:20;21118:4;21124:2;21107:10;:20::i;:::-;21106:21;:37;;;;-1:-1:-1;21137:6:0;;-1:-1:-1;;;;;21131:12:0;;;21137:6;;21131:12;21106:37;21102:406;;;-1:-1:-1;;;;;21160:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21160:30:0;;;21186:4;21160:30;;;;;;21205:19;:25;;;;;:32;;;;;;;;;;21252:16;:23;;-1:-1:-1;;21252:23:0;21160:30;21252:23;;;;;21302:11;;;;21290:114;;21348:11;:40;;-1:-1:-1;;;;;;21348:40:0;21382:4;21348:40;;;;;21290:114;21418:19;:26;;-1:-1:-1;;21418:26:0;;;;;21464:32;;-1:-1:-1;2308:41:1;;21464:32:0;;2296:2:1;2281:18;21464:32:0;2168:187:1;797:548;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1081:3;1266:1;1261:2;1252:6;1241:9;1237:22;1233:31;1226:42;1336:2;1329;1325:7;1320:2;1312:6;1308:15;1304:29;1293:9;1289:45;1285:54;1277:62;;;;797:548;;;;:::o;1350:159::-;1417:20;;1477:6;1466:18;;1456:29;;1446:57;;1499:1;1496;1489:12;1446:57;1350:159;;;:::o;1514:401::-;1596:6;1604;1612;1620;1673:3;1661:9;1652:7;1648:23;1644:33;1641:53;;;1690:1;1687;1680:12;1641:53;1713:28;1731:9;1713:28;:::i;:::-;1703:38;;1760:37;1793:2;1782:9;1778:18;1760:37;:::i;:::-;1750:47;;1816:37;1849:2;1838:9;1834:18;1816:37;:::i;:::-;1806:47;;1872:37;1905:2;1894:9;1890:18;1872:37;:::i;:::-;1862:47;;1514:401;;;;;;;:::o;2360:154::-;-1:-1:-1;;;;;2439:5:1;2435:54;2428:5;2425:65;2415:93;;2504:1;2501;2494:12;2519:315;2587:6;2595;2648:2;2636:9;2627:7;2623:23;2619:32;2616:52;;;2664:1;2661;2654:12;2616:52;2703:9;2690:23;2722:31;2747:5;2722:31;:::i;:::-;2772:5;2824:2;2809:18;;;;2796:32;;-1:-1:-1;;;2519:315:1:o;2839:247::-;2898:6;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;3006:9;2993:23;3025:31;3050:5;3025:31;:::i;3091:456::-;3168:6;3176;3184;3237:2;3225:9;3216:7;3212:23;3208:32;3205:52;;;3253:1;3250;3243:12;3205:52;3292:9;3279:23;3311:31;3336:5;3311:31;:::i;:::-;3361:5;-1:-1:-1;3418:2:1;3403:18;;3390:32;3431:33;3390:32;3431:33;:::i;:::-;3091:456;;3483:7;;-1:-1:-1;;;3537:2:1;3522:18;;;;3509:32;;3091:456::o;3552:127::-;3613:10;3608:3;3604:20;3601:1;3594:31;3644:4;3641:1;3634:15;3668:4;3665:1;3658:15;3684:275;3755:2;3749:9;3820:2;3801:13;;-1:-1:-1;;3797:27:1;3785:40;;3855:18;3840:34;;3876:22;;;3837:62;3834:88;;;3902:18;;:::i;:::-;3938:2;3931:22;3684:275;;-1:-1:-1;3684:275:1:o;3964:183::-;4024:4;4057:18;4049:6;4046:30;4043:56;;;4079:18;;:::i;:::-;-1:-1:-1;4124:1:1;4120:14;4136:4;4116:25;;3964:183::o;4152:662::-;4206:5;4259:3;4252:4;4244:6;4240:17;4236:27;4226:55;;4277:1;4274;4267:12;4226:55;4313:6;4300:20;4339:4;4363:60;4379:43;4419:2;4379:43;:::i;:::-;4363:60;:::i;:::-;4457:15;;;4543:1;4539:10;;;;4527:23;;4523:32;;;4488:12;;;;4567:15;;;4564:35;;;4595:1;4592;4585:12;4564:35;4631:2;4623:6;4619:15;4643:142;4659:6;4654:3;4651:15;4643:142;;;4725:17;;4713:30;;4763:12;;;;4676;;4643:142;;;-1:-1:-1;4803:5:1;4152:662;-1:-1:-1;;;;;;4152:662:1:o;4819:1215::-;4937:6;4945;4998:2;4986:9;4977:7;4973:23;4969:32;4966:52;;;5014:1;5011;5004:12;4966:52;5054:9;5041:23;5083:18;5124:2;5116:6;5113:14;5110:34;;;5140:1;5137;5130:12;5110:34;5178:6;5167:9;5163:22;5153:32;;5223:7;5216:4;5212:2;5208:13;5204:27;5194:55;;5245:1;5242;5235:12;5194:55;5281:2;5268:16;5303:4;5327:60;5343:43;5383:2;5343:43;:::i;5327:60::-;5421:15;;;5503:1;5499:10;;;;5491:19;;5487:28;;;5452:12;;;;5527:19;;;5524:39;;;5559:1;5556;5549:12;5524:39;5583:11;;;;5603:217;5619:6;5614:3;5611:15;5603:217;;;5699:3;5686:17;5716:31;5741:5;5716:31;:::i;:::-;5760:18;;5636:12;;;;5798;;;;5603:217;;;5839:5;-1:-1:-1;;5882:18:1;;5869:32;;-1:-1:-1;;5913:16:1;;;5910:36;;;5942:1;5939;5932:12;5910:36;;5965:63;6020:7;6009:8;5998:9;5994:24;5965:63;:::i;:::-;5955:73;;;4819:1215;;;;;:::o;6228:328::-;6302:6;6310;6318;6371:2;6359:9;6350:7;6346:23;6342:32;6339:52;;;6387:1;6384;6377:12;6339:52;6410:28;6428:9;6410:28;:::i;:::-;6400:38;;6457:37;6490:2;6479:9;6475:18;6457:37;:::i;:::-;6447:47;;6513:37;6546:2;6535:9;6531:18;6513:37;:::i;:::-;6503:47;;6228:328;;;;;:::o;6561:180::-;6620:6;6673:2;6661:9;6652:7;6648:23;6644:32;6641:52;;;6689:1;6686;6679:12;6641:52;-1:-1:-1;6712:23:1;;6561:180;-1:-1:-1;6561:180:1:o;6746:118::-;6832:5;6825:13;6818:21;6811:5;6808:32;6798:60;;6854:1;6851;6844:12;6869:382;6934:6;6942;6995:2;6983:9;6974:7;6970:23;6966:32;6963:52;;;7011:1;7008;7001:12;6963:52;7050:9;7037:23;7069:31;7094:5;7069:31;:::i;:::-;7119:5;-1:-1:-1;7176:2:1;7161:18;;7148:32;7189:30;7148:32;7189:30;:::i;:::-;7238:7;7228:17;;;6869:382;;;;;:::o;7256:703::-;7374:6;7382;7390;7398;7451:3;7439:9;7430:7;7426:23;7422:33;7419:53;;;7468:1;7465;7458:12;7419:53;7507:9;7494:23;7526:31;7551:5;7526:31;:::i;:::-;7576:5;-1:-1:-1;7633:2:1;7618:18;;7605:32;7646:33;7605:32;7646:33;:::i;:::-;7698:7;-1:-1:-1;7757:2:1;7742:18;;7729:32;7770:33;7729:32;7770:33;:::i;:::-;7822:7;-1:-1:-1;7881:2:1;7866:18;;7853:32;7894:33;7853:32;7894:33;:::i;:::-;7256:703;;;;-1:-1:-1;7256:703:1;;-1:-1:-1;;7256:703:1:o;7964:376::-;8026:6;8034;8087:2;8075:9;8066:7;8062:23;8058:32;8055:52;;;8103:1;8100;8093:12;8055:52;8142:9;8129:23;8161:28;8183:5;8161:28;:::i;8873:388::-;8941:6;8949;9002:2;8990:9;8981:7;8977:23;8973:32;8970:52;;;9018:1;9015;9008:12;8970:52;9057:9;9044:23;9076:31;9101:5;9076:31;:::i;:::-;9126:5;-1:-1:-1;9183:2:1;9168:18;;9155:32;9196:33;9155:32;9196:33;:::i;9823:385::-;9909:6;9917;9925;9933;9986:3;9974:9;9965:7;9961:23;9957:33;9954:53;;;10003:1;10000;9993:12;9954:53;-1:-1:-1;;10026:23:1;;;10096:2;10081:18;;10068:32;;-1:-1:-1;10147:2:1;10132:18;;10119:32;;10198:2;10183:18;10170:32;;-1:-1:-1;9823:385:1;-1:-1:-1;9823:385:1:o;10559:127::-;10620:10;10615:3;10611:20;10608:1;10601:31;10651:4;10648:1;10641:15;10675:4;10672:1;10665:15;10691:168;10758:6;10784:10;;;10796;;;10780:27;;10819:11;;;10816:37;;;10833:18;;:::i;:::-;10816:37;10691:168;;;;:::o;11272:422::-;11361:1;11404:5;11361:1;11418:270;11439:7;11429:8;11426:21;11418:270;;;11498:4;11494:1;11490:6;11486:17;11480:4;11477:27;11474:53;;;11507:18;;:::i;:::-;11557:7;11547:8;11543:22;11540:55;;;11577:16;;;;11540:55;11656:22;;;;11616:15;;;;11418:270;;;11422:3;11272:422;;;;;:::o;11699:806::-;11748:5;11778:8;11768:80;;-1:-1:-1;11819:1:1;11833:5;;11768:80;11867:4;11857:76;;-1:-1:-1;11904:1:1;11918:5;;11857:76;11949:4;11967:1;11962:59;;;;12035:1;12030:130;;;;11942:218;;11962:59;11992:1;11983:10;;12006:5;;;12030:130;12067:3;12057:8;12054:17;12051:43;;;12074:18;;:::i;:::-;-1:-1:-1;;12130:1:1;12116:16;;12145:5;;11942:218;;12244:2;12234:8;12231:16;12225:3;12219:4;12216:13;12212:36;12206:2;12196:8;12193:16;12188:2;12182:4;12179:12;12175:35;12172:77;12169:159;;;-1:-1:-1;12281:19:1;;;12313:5;;12169:159;12360:34;12385:8;12379:4;12360:34;:::i;:::-;12430:6;12426:1;12422:6;12418:19;12409:7;12406:32;12403:58;;;12441:18;;:::i;:::-;12479:20;;11699:806;-1:-1:-1;;;11699:806:1:o;12510:140::-;12568:5;12597:47;12638:4;12628:8;12624:19;12618:4;12597:47;:::i;12655:168::-;12728:9;;;12759;;12776:15;;;12770:22;;12756:37;12746:71;;12797:18;;:::i;12828:128::-;12895:9;;;12916:11;;;12913:37;;;12930:18;;:::i;13311:127::-;13372:10;13367:3;13363:20;13360:1;13353:31;13403:4;13400:1;13393:15;13427:4;13424:1;13417:15;13790:197;13828:3;13856:6;13897:2;13890:5;13886:14;13924:2;13915:7;13912:15;13909:41;;13930:18;;:::i;:::-;13979:1;13966:15;;13790:197;-1:-1:-1;;;13790:197:1:o;13992:125::-;14057:9;;;14078:10;;;14075:36;;;14091:18;;:::i;14820:217::-;14860:1;14886;14876:132;;14930:10;14925:3;14921:20;14918:1;14911:31;14965:4;14962:1;14955:15;14993:4;14990:1;14983:15;14876:132;-1:-1:-1;15022:9:1;;14820:217::o;16166:385::-;16245:6;16253;16306:2;16294:9;16285:7;16281:23;16277:32;16274:52;;;16322:1;16319;16312:12;16274:52;16354:9;16348:16;16373:31;16398:5;16373:31;:::i;:::-;16473:2;16458:18;;16452:25;16423:5;;-1:-1:-1;16486:33:1;16452:25;16486:33;:::i;19532:245::-;19611:6;19619;19672:2;19660:9;19651:7;19647:23;19643:32;19640:52;;;19688:1;19685;19678:12;19640:52;-1:-1:-1;;19711:16:1;;19767:2;19752:18;;;19746:25;19711:16;;19746:25;;-1:-1:-1;19532:245:1:o;20138:184::-;20208:6;20261:2;20249:9;20240:7;20236:23;20232:32;20229:52;;;20277:1;20274;20267:12;20229:52;-1:-1:-1;20300:16:1;;20138:184;-1:-1:-1;20138:184:1:o;20629:245::-;20696:6;20749:2;20737:9;20728:7;20724:23;20720:32;20717:52;;;20765:1;20762;20755:12;20717:52;20797:9;20791:16;20816:28;20838:5;20816:28;:::i;21238:251::-;21308:6;21361:2;21349:9;21340:7;21336:23;21332:32;21329:52;;;21377:1;21374;21367:12;21329:52;21409:9;21403:16;21428:31;21453:5;21428:31;:::i;26142:1026::-;26404:4;26452:3;26441:9;26437:19;26483:6;26472:9;26465:25;26509:2;26547:6;26542:2;26531:9;26527:18;26520:34;26590:3;26585:2;26574:9;26570:18;26563:31;26614:6;26649;26643:13;26680:6;26672;26665:22;26718:3;26707:9;26703:19;26696:26;;26757:2;26749:6;26745:15;26731:29;;26778:1;26788:218;26802:6;26799:1;26796:13;26788:218;;;26867:13;;-1:-1:-1;;;;;26863:62:1;26851:75;;26981:15;;;;26946:12;;;;26824:1;26817:9;26788:218;;;-1:-1:-1;;;;;;;27062:55:1;;;;27057:2;27042:18;;27035:83;-1:-1:-1;;;27149:3:1;27134:19;27127:35;27023:3;26142:1026;-1:-1:-1;;;26142:1026:1:o

Swarm Source

ipfs://202a724c17493630d4613ec102ea9cb7d903ca33dce5d818196e814f2bac465a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.